CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1. Tổng quan đề tài 1. Lý do chọn đề tài Kiểm thử phần mềm là một phần quan trọng trong quy trình phát triển phần mềm vì nó đảm bảo rằng sản phẩm hoạt động như mong đợi và đáp ứng được yêu cầu của người dùng. Kiểm thử phần mềm giúp đảm bảo rằng sản phẩm được phát triển đáp ứng được các tiêu chí chất lượng như độ tin cậy, hiệu suất và tính sẵn sàng.
Ngoài ra kiểm thử phần mềm giúp đảm bảo rằng sản phẩm được phát triển đáp ứng được các tiêu chí chất lượng như độ tin cậy, hiệu suất và tính sẵn sàng. Qua quá trình kiểm thử, các lỗi và vấn đề trong phần mềm có thể được phát hiện và sửa chữa trước khi sản phẩm được phát hành ra thị trường. Điều này giúp giảm thiểu rủi ro và chi phí sửa chữa sau này.Vì vậy phần mềm đã được kiểm thử kỹ lưỡng hơn có khả năng hoạt động một cách ổn định và đáng tin cậy hơn trong môi trường sản xuất. Để đảm bảo độ tin cậy cuối cùng, việc kiểm thử cẩn thận giúp giảm thiểu rủi ro liên quan đến việc phát hành sản phẩm không ổn định hoặc có lỗi.
Có nhiều phương pháp kiểm thử phần mềm như kiểm thử phân vùng tương đương, kiểm thử phân tích giá trị biên, kiểm thử theo bảng quyết định,… nhóm chúng em đã quyết định chọn phương pháp kiểm thử phân vùng tương đương để làm đề tài cho môn học “Kiểm thử và đảm bảo chất lượng phần mềm”. Mục tiêu đề tài Mục tiêu bọn em hướng đến cho đề tài này là: - Nắm chắc về cái khái niệm liên quan đến kiểm thử phần mềm, quy trình kiểm thử và đảm bảo chất lượng phần mềm - Khai phá tối đa được công dụng của kỹ thuật kiểm thử phân vùng tương đương - Ứng dụng được kỹ thuật kiểm thử phân vùng tương đương để xây dựng, thiết kế các testcase - Kiểm thử được một số chức năng trên website nhờ vào các testcase vừa thiết kế 1. Tổng quan về kiểm thử phần mềm 1. Khái niệm kiểm thử phần mềm Kiểm thử phần mềm (Software testing) là một cuộc kiểm tra được tiến hành để cung cấp cho các bên liên quan thông tin về chất lượng của sản phẩm hoặc dịch vụ được kiểm thử.
Kiểm thử có thể cung cấp cho doanh nghiệp một quan điểm, một cách nhìn độc lập về phần mềm để từ đó cho phép đánh giá và thấu hiểu được những rủi ro trong quá trình triển khai phần mềm. Downloaded by mon hon (monmon1@gmail.com) lOMoARcPSD|39211872 Kiểm thử phần mềm là phương pháp kiểm tra xem sản phẩm phần mềm đó trên thực tế có phù hợp với các yêu cầu đã đặt ra hay không, và đảm bảo rằng không có lỗi hay khiếm khuyết. Testing bao gồm việc kiểm tra, phân tích, quan sát và đánh giá các khía cạnh khác nhau của sản phẩm. Tester sử dụng kết hợp các công cụ thủ công và tự động.
Sau khi kiểm thử, Tester báo cáo kết quả cho team phát triển để xác định các lỗi, khiếm khuyết hoặc các yêu cầu còn thiếu so với yêu cầu thực tế. Tại sao kiểm thử lại cần thiết? Kiểm thử phần mềm là rất cần thiết bởi vì tất cả chúng ta đều có thể mắc sai lầm. Một số tại lầm có thể không quan trọng nhưng có một số sai lầm lại rất nguy hiểm và phải trả giá đắt nếu không được phát hiện. Chúng ta cần kiểm tra mọi thứ và bất cứ thứ gì chúng ta tạo ra bởi vì mọi thứ luôn có thể sai.
Con người gây ra nhiều lỗi ở mọi lúc. Giá định công việc của mình có thể có sai sót, nên chúng ta cần kiểm tra lại công việc đó. Tuy nhiên, một số sai lầm đến từ những giả định không tốt và những điểm mù. Từ đó, khi thực hiện công việc, con người có thể mắc phải những sai lầm tương tự.
Vì vậy, chúng ta có thể không nhận thấy những sai sót trong những việc mình đã làm Tốt nhất, nên đề người khác kiểm tra công việc của chúng ta vì họ có nhiều khả năng phát hiện ra sai sốt hơn. Một câu hỏi luôn đặt ra là tại sao kiểm thử phần mềm lại quan trọng như vậy và sau đây là những lý do mà chúng ta nên xem xét khi kiểm thử bất kỳ sản phẩm phần mềm hoặc ứng dụng nào: - Kiểm thử phần mềm thực sự được yêu cầu để chỉ ra các khiếm khuyết và lỗi đã được thực hiện trong các giai đoạn phát triển. - Kiểm thử là cần thiết vì nó đảm bảo rằng khách hàng thấy tổ chức đăng tin cậy và sự hài lòng của họ trong ứng dụng được duy trì - Kiểm thử là rất quan trọng để đảm bảo chất lượng của sản phẩm. - Kiểm thử là cần thiết để cung cấp các tiện ích cho khách hàng - Kiểm thử là bắt buộc để có hiệu suất, hiệu quả của ứng dụng phần mềm hoặc sản phẩm.
đảm bảo rằng ứng dụng sẽ không dẫn đến bất kỳ lỗi nào vì nó có - Kiểm thử là quan trọng để thể rất tốn kém trong tương lai hoặc trong các giai đoạn phát triển sau này - Kiểm thử cũng là một yêu cầu bắt buộc trong doanh nghiệp 1. Mục tiêu kiểm thử phần mềm Kiểm thử phần mềm có những mục tiêu và đối tượng khác nhau. Nhưng mục tiêu chính của nó là: - Phát hiện càng nhiều lỗi càng tốt trong thời gian kiểm thử xác định trước - Chưng minh rằng sản phẩm phần mềm phù hợp với các đặc tả yêu cầu của nó Downloaded by mon hon (monmon1@gmail.com) lOMoARcPSD|39211872 - Xác thực chất lượng kiểm thử phần mềm đã dung chi phí và nỗ lực tối thiểu - Tạo các testcase chất lượng cao thực hiện kiểm thử hiệu quả và tạo ra các báo có vấn đề đúng và hữu dụng Kiểm thử phần mềm sẽ giúp hoàn thiện các ứng dụng phần mềm hoặc sản phẩm so với yêu cầu kinh doanh và người sử dụng. Nó rất quan trọng để có thể đảm bảo kiểm thử các ứng dụng phần mềm và khẳng định chắc chắn rằng phần mềm hoạt động tốt và đúng theo các bản đặc tả.
Các nguyên tắc trong kiểm thử phần mềm Kiểm thử phần mềm là quá trình thực thì một chương trình nhâm tim ra lỗi của nó. Để phần mềm hoạt động trơn tru, nó cần phải sạch lỗi. Nếu kiểm thử phần mềm được thực hiện thành công, việc này sẽ khiến các lối không còn xuất hiện. Tuy nhiên, để tiết kiệm thời gian và công sức truy tìm các lỗi, có 7 nguyên tắc kiểm thử quan trọng, đó là: - Kiểm thử cho thấy sự hiện diện của lỗi: Kiểm thử có thể cho thấy lỗi đang hiện diện nhưng không thể chứng minh rằng không có lỗi.
Kiểm thử làm giảm khả năng các lỗi chưa được phát hiện tồn tại trong phần mềm nhưng ngay cả khi không tìm được lỗi nào cũng không phải là 1 bằng chứng của tính đúng đắn. - Kiểm thử vét cạn là không thể: Kiểm thử mọi thứ là không khả thi, ngoại trừ quá đơn giản. Thay vì kiểm thử vét cạn, nên tập trung vào phân tích và đánh giá mức ưu tiên cho các rủi ro để tập trung nỗ lực kiểm thử. - Kiểm thử sớm tiết kiệm thời gian và tiền bạc: Để sớm phát hiện lỗi, các hoạt động kiểm thử cả động và tĩnh nên được tiến hành càng sớm càng tốt, giúp giảm thiểu hoặc loại bỏ chi phí phát sinh do thay đổi.
- Phân cụm lỗi cùng nhau: Một số lượng nhỏ các mô đun thường chứa hầu hết các lỗi phát hiện được trong giai đoạn kiểm thử trước khi phát hành, hoặc chiu trách nhiệm về hầu hết các hỏng hóc trong quá trình hoạt động. Các cụm lỗi dự đoán được và bị phát hiện khi kiểm thử và vận hành là đầu vào quan trọng cho phân tích rủi ro được áp dụng trong lần kiểm thử. - Đề phòng nghịch lý thuốc trừ sâu: Nếu lặp đi lặp lại một tập trường hợp kiểm thử, sẽ không tìm thấy bất kỳ lỗi mới nào nữa. Để phát hiện lỗi mới, vì các bước kiểm thử hiện tại và dữ liệu kiểm thử đã thay đổi nên cần viết thêm bước kiểm thử mới (Kiểm thử không còn hiệu quả trong việc phát hiện lỗi, giống như thuốc trừ sâu không còn tác dụng diệt côn trùng).
Trong vài trường hợp, như kiểm thử hồi quy tự động, nghịch lý thuốc trừ sâu vẫn còn hiệu quả khiến số lỗi bị phát hiện hồi quy tương đối thấp. - Kiểm thử phụ thuộc vào bối cảnh: Kiểm thử được thực hiện khác nhau trong các bối cảnh khác nhau. Ví dụ một phần mềm yêu cầu tính an toàn cao được kiểm thử khác với một trang thương mại điện tử. Kiểm thử trong dự án Agile được thực hiện khác với kiểm thử trong dự án vòng đời tuần tự.
Downloaded by mon hon (monmon1@gmail.com) lOMoARcPSD|39211872 - Ảo tưởng về sự vắng mặt của lỗi: Một số tổ chức mong đợi kiểm thử viên có thể thực hiện tất cả các bước kiểm thử để phát hiện ra lỗi, nhưng nguyên lý 1 và 2 cho thấy đây là điều không thể. Hơn nữa, sẽ sai lầm khi kỳ vọng tìm ra và sửa 1 lượng lỗi lớn sẽ đảm bảo thành công của hệ thống. Ví dụ việc kiểm thử trơn tru tất cả các yêu cầu cụ thể và sửa mọi lỗi tìm thấy vẫn có thể tạo ra 1 hệ thống khó sử dụng, không thỏa mãn nhu cầu mông đợi của người dung hoặc kém hiệu quả hơn so với hệ thống cạnh tranh Hình 1.1: Các nguyên tắc trong kiểm thử phần mềm 1. Quy trình kiểm thử phần mềm Kiểm thử là một quy trình chứ không phải là một hoạt động đơn lẻ.
Quy trình này bắt đầu từ việc lập kế hoạch kiểm thử, sau đó thiết kế các trường hợp kiểm thử, chuẩn bị cho việc thực thi và đánh giá trạng thái cho đến khi kết thúc kiểm thử. Vì vậy, chúng ta có thể chia các hoạt động trong quy trình kiểm thử cơ bản thành các bước cơ bản sau: - Lập kế hoạch và Kiểm soát (Planning and control) - Phân tích và thiết kế (Analysis and Design) - Triển khai và Thực thi (Implementation and Execution) - Đánh giá các tiêu chí chấm dứt và báo cáo (Evaluating exit criteria and reporting) - Hoạt động đóng kiểm thử (Test closure activities) Downloaded by mon hon (monmon1@gmail.com) lOMoARcPSD|39211872 Hình 1.2: Quy trình kiểm thử phần mềm 1. Các kỹ thuật kiểm thử phần mềm Có hai dạng dạng chính của thiết kế kiểm thử: - Kiểm thử tĩnh - Kiểm thử động a. Kiểm thử tĩnh Kiểm thử tĩnh là một phương pháp rất phù hợp để nâng cao chất lượng của các sản phẩm phần mềm.