7 nguyên lý trong kiểm thử phần mềm
Bài viết này giới thiệu bảy nguyên lý cơ bản của Kiểm thử phần mềm mà tất cả những kiểm thử viên tester nên biết.
Đạt được kết quả kiểm thử tối ưu trong khi tiến hành kiểm thử phần mềm mà không đi lệch khỏi mục tiêu là điều cực kì quan trọng, làm thế nào để xác định rằng bạn đang theo đúng chiến lược kiểm thử? Để làm được điều đó, bạn cần tuân thủ một số nguyên lý kiểm thử cơ bản. Dưới đây là bảy nguyên lý kiểm thử phổ biến được áp dụng rộng rãi trong ngành công nghiệp phần mềm.
1) Kiểm thử tất cả là không thể
Đúng! Kiểm thử tất cả là không thể. Thay vào đó, chúng ta cần chọn thực thi những loại kiểm thử quan trọng nhất dựa trên phân tích rủi ro cũng như tầm quan trọng và độ ưu tiên của việc kiểm thử.
Vậy, làm thế nào để bạn xác định rủi ro?
Bài viết này được đăng tại [free tuts .net]
Theo bạn, hành động nào có khả năng khiến hệ điều hành bị lỗi?
Chắc chắn hầu hết các bạn sẽ trả lời: Mở tất cả 10 ứng dụng khác nhau cùng một lúc.
Vì vậy, nếu bạn đang kiểm thử Hệ điều hành, bạn sẽ nhận ra rằng các lỗi có thể được tìm thấy trong hoạt động đa tác vụ và cần phải được kiểm thử kỹ lưỡng, điều này đưa chúng ta đến nguyên lý tiếp theo.
2) Cụm lỗi
Trong quá trình kiểm thử, chúng ta sẽ có thể dễ dàng quan sát thấy đa phần những lỗi tìm được thường chỉ liên quan đến một vài tính năng của hệ thống. Điều này cũng thuận theo nguyên lý Pareto: 80% số lượng lỗi được tìm thấy trong 20% tính năng của hệ thống.
Theo kinh nghiệm, bạn có thể xác định các mô-đun rủi ro. Nhưng phương pháp này cũng có vấn đề: Nếu lặp đi lặp lại nhiều lần các trường hợp kiểm thử tương tự nhau sẽ không còn tìm thấy các lỗi mới.
3) Nghịch lý thuốc trừ sâu
Việc sử dụng lặp đi lặp lại cùng một loại thuốc trừ sâu để diệt côn trùng sẽ theo thời gian dẫn đến việc côn trùng phát triển tính kháng thuốc trừ sâu. Do đó, dùng thuốc trừ sâu để tiêu diệt côn trùng sẽ không còn hiệu quả. Áp dụng tương tự trong kiểm thử phần mềm. Nếu một bộ test cases được thực hiện lặp đi lặp lại nhiều lần sẽ không còn ý nghĩa trong việc phát hiện ra các lỗi mới.
Để khắc phục điều này, các test cases cần phải được reviewed và sửa đổi thường xuyên, thêm các test cases mới để giúp tìm ra nhiều lỗi hơn.
Testers phải liên tục cải thiện các phương pháp hiện có để kiểm thử được hiệu quả hơn. Nhưng ngay cả sau quá trình kiểm thử tốn nhiều công sức và thời gian, bạn không thể khẳng định sản phẩm của mình không có lỗi.
4) Kiểm thử chứng minh sự hiện diện của lỗi.
Kiểm thử chỉ chứng minh được sự hiện diện của lỗi và không thể chứng minh được sản phẩn không còn lỗi. Tức là Kiểm thử phần mềm làm giảm xác suất lỗi chưa được phát hiện trong phần mềm ngay cả khi không tìm thấy lỗi.
Nếu bạn chăm chỉ hơn, thực hiện mọi biện pháp phòng ngừa lỗi và làm cho sản phẩm phần mềm của bạn 99% không có lỗi. Và phần mềm không đáp ứng nhu cầu & yêu cầu của khách hàng. Điều này dẫn chúng ta đến nguyên lý tiếp theo, sự vắng mặt của Lỗi.
5) Sự vắng mặt của Lỗi
Có thể phần mềm không có lỗi 99% vẫn không được sử dụng nếu hệ thống được kiểm tra kỹ lưỡng nhưng sai yêu cầu. Kiểm thử phần mềm không chỉ đơn thuần là tìm lỗi, mà còn để kiểm tra xem phần mềm có đáp ứng nhu cầu của người dung hay không. Sự vắng mặt của lỗi là sai lầm, tức là việc tìm và sửa lỗi không giúp ích gì nếu việc xây dựng hệ thống không sử dụng được và không đáp ứng nhu cầu & yêu cầu của người dùng.
Để giải quyết vấn đề này, cần thực hiện nguyên lý thử nghiệm tiếp theo: Kiểm thử sớm
6) Kiểm thử sớm
Kiểm thử nên bắt đầu sớm nhất có thể trong Vòng đời phát triển phần mềm. Vì vậy, bất kỳ lỗi nào trong các yêu cầu hoặc giai đoạn thiết kế được phát hiện trong giai đoạn đầu sẽ rẻ hơn nhiều để sửa chữa. Nhưng kiểm thử sớm bằng cách nào? Bạn nên bắt đầu tìm lỗi ngay khi yêu cầu được xác định.
7) Kiểm thử phụ thuộc vào ngữ cảnh
Kiểm thử phụ thuộc vào ngữ cảnh về cơ bản có nghĩa là cách bạn kiểm thử trang web thương mại điện tử sẽ khác với cách bạn kiểm thử một ứng dụng di đông. Tất cả các phần mềm được phát triển theo cách khác nhau. Bạn có thể sử dụng một hướng tiếp cận, phương pháp, kỹ thuật và loại thử nghiệm khác nhau tùy thuộc vào loại ứng dụng.