Để áp dụng các kĩ thuật kiểm thử, chúng ta cần it nhất một trong các đối tượng sau :
- Đặt tả của phần mềm. - Mã nguồn của phần mềm.
- Mã phần mềm thực thi được(mã nhị phân).
Có rất nhiều quan điểm phân nhóm các kĩ thuật kiểm thử, trước hết chúng ta nêu cách phân loại theo tài liệu |39|, dựa trên sự kết hợp của ba đối tượng trên để áp dụng một kĩ thuật kiểm thử. Đánh số các khả năng kết hợp ba đối tượng trên tạo nên bảy lớp từ 1 đến 7. Trong Báng 2.1. dấu X trong một ô nghĩa là lớp kĩ thuật cần đối tượng tương ứng để kiểm thử. Chẳng hạn, một kĩ thuật thuộc lớp 3, nghĩa là kĩ thuật này cần mã nguồn và mã thực thi để áp dụng.
Lớp 1 : Các kĩ thuật kiểm thử trong lớp này chi dựa trên mã thực thi vì thế là các kĩ thuật đơm giản nhất. Thông thường là các kiểm thử được thực hiện bởi người sử dụng hoặc các kĩ thuật kiểm thử ngẫu nhiên (tức là tập dữ liệu thử được tạo ra một cách ngẫu nhiên chứ không theo một tiêu chi nao)
Bảng 2. 1. Phânloại các kĩ thuật kiểm thử Lớp Đặc tả Mã nguồn Mã thực thi 1 X 2 X 3 X X 4 X 5 X X 6 X X 7 X X X
Lớp 2 : Các kĩ thuật kiểm thử này dựa trên mã nguồn để xác định các lỗi, thông thường là các lỗi chung, tức là độc lập với phẩn mềm cụ thể. Lớp này bao gồm các kĩ thuật phân tích tĩnh (không thực thi chương trình), thẩm định mã nguồn, phân tích độ phức tạp, kiểm tra cú pháp….
Lớp 3 : Gồm các kĩ thuật kiểm thử động (thực thi chương trình) như phân tích luồng dữ liệu hay luồng điều khiển...
Lớp 4 : Gồm các kĩ thuật phân tích và kiểm tra đặc tả.
Lớp 5 : Gồn tập hợp rất nhiều các kĩ thuật kiểm thử chức năng phổ biến như kiểm thử giá trị biên, kiểm thử lớp tương đương, kiểm thử dựa trên bảng quyết định..
Lớp 6 : Gồm một số kĩ thuật thực thi kí hiệu và các kĩ thuật chứng minh sự đúng đắn của chương trinh.
Lớp 7 : Gồm phần lớn các kĩ thuật kiểm thử cấu trúc, như phủ tất cả các cung, phủ tất cả các lộ trình...
Ngoài ra, một cách phân nhóm khác về các kĩ thuật kiểm thử củng rất phổ biến trong các tài liệu về kiểm thử. Các kĩ thuật kiểm thử chức năng hay ki thuật kiểm thử hộp đen là các kĩ thuật không dựa trên mã nguồn mà chi dựa trên đặc tả. Các kĩ thuật kiểm thử cấu trúc hay kĩ thuật kiểm thử hộp trắng là cáckĩ thuật dựa trên mă nguồn để tạo ra dữ liệu thử.
Các kĩ thuật kiểm thử cũng có thể dược phân nhóm theo tiêu chí: thực thi hay không thực thi chương trình. Các kĩ thuật động yêu cầu thực thi mã chương trình, trong khi các kĩ thuật tĩnh chi dựa trên mà nguồn hay đặc tả mà không yêu cầu thực thi chương trinh.
theo các nhóm kĩ thuật chức năng/kĩ thuật cấu trúc hay kĩ thuật động/kĩ thuật tĩnh. Một số quan điểm còn cho rằng chỉ những kĩ thuật động mới là các kĩ thuật kiểm thử, nghĩa là hoạt động kiểm thử cần phải thực thi chương trình.
Trong tài liệu này, chúng tôi sẽ tập trung vào ba nhóm :
- Nhỏm các kĩ thuật tĩnh gồm tất cả các kĩ thuật kiểm thử không yêu cầu thực thi phần mềm ;
- Nhóm các kĩ thuật kiểm thử chức năng gồm các kĩ thuật dựa trên đặc tả phân mềm ;
- Nhóm các kĩ thuật kiểm thử cấu trúc gồm các kĩ thuật dựa trên mã nguồn phân mềm.
Như thế, khi nói đến các kĩ thuật kiểm thử chức năng hay kiểm thử cấu trúc chúng ta hiểu là các kĩ thuật động.
Mỗi kĩ thuật kiểm thử có những ưu và nhược điểm riêng của nó. Cũng như thế, mỗi nhóm các kĩ thuật kiểm thử củng có những ưu và nhược điểm. Các kĩ thuật kiểm thử chức năng cho phép xác định được các chức năng của phần mêm có được đáp ứng hay không. Tuy nhiên, do các kĩ thuật kiểm thử chức năng không dựa trên mã nguồn, nên nếu có lỗi xảy ra. rất khó xác định được yếu tố gây nên lỗi. Ngược lại, các kĩ thuật kiểm thử cấu trúc có thể khảo sát được dễ dàng hơn so với các kĩ thuật kiểm thử chức năng về các yếu tấ gây nên lỗi, nhưng chúng không thể xác định được các chức năng của phần mềm có được thực hiện đúng đắn hay không.
Chúng ta cũng có thề phân biệt hai khái niệm “lỗi phạm phải” và "lỗi bỏ quên". Các kĩ thuật kiểm thử cấu trúc dễ dàng phát hiện các lỗi phạm phải. Tuy nhiên, các kĩ thuật kiểm thử chức năng dễ dàng phát hiện các lỗi bỏ quen. Thật vậy, một bộ kiểm tra chính tả dễ dàng phát hiện các lỗi chính tả chúng ta phạm phải khi đọc văn bản, nhưng nó không thể cho chúng ta biết có những câu hay từ nào chúng ta đã bỏ quên. Ngược lại, nếu chúng ta đọc văn bản cho một người nghe, người đó có thể phát hiện các câu hay từ chủng ta bỏ quên, nhưng không thê phát hiện được các lỗi từ vựng.
Nói một cách khác, các kĩ thuật kiểm thử cấu trúc dể dàng phát hiện các lỗi người phát triền phạm phải trong quá trình lập trình. Ngược lại, các kĩ thuật kiểm thử chức năng dễ dàng phát hiện cảc lỗi người phát triển phạm phái trong quá trinh thiết kế. Hay đơn giản hơn, các kĩ thuật kiểm thử cấu trúc nhằm phát hiện lớp các lỗi do lập trinh viên gây ra, trong khi các kĩ thuật kiểm thử chức năng nhằm phát hiện các lỗi cúa người đặc tả và thiết kế.
Một cách tương tự, chúng ta phân biệt sự khác nhau giữa các kĩ thuật kiểm thử động và các kĩ thuật kiểm thử tĩnh. Các kĩ thuật kiểm thử tĩnh cho phép xác định được các lỗi chung dễ dàng như các quy ước thiết kế, quy ước lập trinh... Các lỗi này độc lập với phần mềm cụ thể cần được kiểm thử. Tuy nhiên, chúng không thể xác định được chính xác hành vi của phần mềm khi thực thi, đay củng chính là ưu thế của các kĩ thuật kiểm thử động.
Tóm lại. chúng ta có thể kết luận rằng các kĩ thuật kiểm thử bổ sung lẫn nhau nhằm nâng cao chất lượng phần mềm. Tùy các tình huống và yêu cầu cụ thể, chúng sé được kết hợp sử dụng nhằm mang lại hiệu quả cao nhất.