Sự hiệu quả của một số kĩ thuật kiểm thử cần phải được xem xét thận trọng,bởi vì có nhiều yếu tố có thể ảnh hưởng đến. Một số yếu tố có thể gồm:
- Loại ứng dụng;
- Kinh nghiệm của kiểm thử viên;
Độ khó áp dụng của kĩ thuật và hiệu suất của nó (thời gian học/đào tạo, giá công cụ…);
- Môi trường phần cứng ;
- Loại lỗi được phát hiện, tần suất và độ nghiêm trọng của lỗi; - Phương pháp phát triển đang sử dụng và giai đoạn áp dụng; - Tài liệu hỗ trợ;
- Độ chính xác khi định vị lỗi;
Trong số các yếu tố này, yếu tố độ chính xác khi định vị lỗi là rất quan trọng. Bởi vì, chúng ta không chỉ quan tâm đến phát hiện lỗi mà còn định vị lỗi. Phân lớn các kĩ thuật kiểm thử cấu trúc có khả năng xác định chinh xác vị trí gần lỗi trong mã nguồn, như thế thời gian để gở rối giảm đáng kể. Ngược lại, phần lớn các kĩ thuật kiểm thử chức năng tìm thấy lỗi, nhưng cần nhiều thời gian để gở rối nhằm định vị lỗi. Đôi khi thời gian này rất dài, vì thế làm giảm hiệu quả của kĩ thuật kiểm thử chức năng.
Để xác định hiệu quả thực tế của một kĩ thuật kiểm thử cần phài nắm tất cả các yếu tố này và các thành phần của chúng. Thậm chi, một khi đã nắm được tất cả các yếu tố này, cẩn phải không quên rằng các lỗi phạm phải bởi các lập trinh viên thay đổi theo thời gian : bản chất và tần suất của lỗi thay đổi theo sự phát triển của công nghệ phần mềm.
Tỉ lệ phát hiện =
Trong thực tế. chúng ta biết rằng các công nghệ mới trong công nghệ phần mềm (đặc tả hình thức, hỗ trợ thiết kế, sinh mã nguôn tự dộng, kiểm tra kiểu...) làm giảm đáng kể các lỗi mà phát triền viên có thể phạm phai. Chăng hạn, một lập trình biên dịch cảnh báo cho một lập trình viên biết một biến không được khởi gán. Vi thế, lập trinh viên sẽ có xu hướng sửa lỗi này thường xuyên. Lập trình viên sẽ tự cho rằng “nếu một biên không được khởi gán, thì chi cần đơm giản là khởi gán bàng 0” Cách sửa lõi nay có thể là nguồn gốc dẩn đến các lỗi khác. Như thế, có thể việc tích hợp các kĩ thuật mới thay đổi loại lỗi phạm phải. Các lỗi này trở nên khó để phát hiện hơn và yêu cầu các kĩ thuật kiểm thử phức tạp hơn. Nghịch lí này không nói lên rằng việc tích hợp các công cụ hay kĩ thuật mới là không tốt, tuy nhiên chúng tôi muốn nhấn mạnh rằng chính sách công cụ hóa hoàn toàn không phải luôn là sự thành công về mặt kiểm thử.
Một sự đánh giá hiệu quả phát hiện lỗi của các kĩ thuật kiểm thử đề xuất trong [7] dựa trên sự phân loại các loại lỗi (Bẩng 2.2).
Bảng 2.2 chi ra rằng khả năng phát hiện các loại lổi của các kĩ thuật kiểm thử. Chẳng hạn, các kĩ thuật kiểm thửcấu trúc có khả năng “tấn công” cao các loại lỗi tính toán và lô-gíc (như các biểu thức số học và các biểu thức điều kiện). Bảng 2.2 không hoàn toàn cho biết lợi ich của mỗi kĩ thuật, chẳng hạn thẩm định mã nguồn rất hiệu quả phát hiện các loại lỗi. nhưng lại chi phi rất cao.
Chúng ta có thể đánh giá hiệu qua của các kĩ thuật bằng cách so sánh các lỗi được phát hiên và các lỗi còn lại chưa được phát hiện (với giả thiết chúng ta đánh giá được số lượng lỗi còn lại).
Số lỗi được phát hiện Tổng số lỗi
Tổng số lỗi là số lỗi được phát hiện sau giai đoạn kiểm thử bănfg cách sư dụng các kỉ thuật khác, chứ không phái là số lỗi thực tế. Theo kết quả của một số thống kê thực hiện với các kĩ thuật kiểm thử, chúng ta có được sự đánh giá tương đối về tỉlệ phát hiện lỗi trong Bảng 2.3.
Tất nhiên, kết quả này chỉ là các dấu hiệu về hiệu quả của các kĩ thuật kiểm thử và có thể sử dụng để tham khảo. Bởi vì một kĩ thuật hiệu quả không đơn thuân chi là phát hiện các lỗi nói chung mà phải phát hiện các lỗi thường xuyên xuất hiện và các lỗi nghiêm trọng.