White box testing - Kỹ thuật kiểm thử hộp trắng

Chuyên đề thảo luận về kiểm thử hộp trắng (White-box Testing)
Forum rules
Chuyên đề này chỉ thảo luận về Whitebox Testing.
Để có kết quả nhanh, bạn nên search trước khi viết bài mới.
Post Reply
tvn
Admin
Posts: 4893
Joined: Tue 10 Aug, 2010 10:11 am
Location: HCM
Contact:

White box testing - Kỹ thuật kiểm thử hộp trắng

Post by tvn » Sat 29 Dec, 2018 6:28 pm

Khác với kiểm thử hộp đen, kiểm thử hộp trắng (white-box testing) không dựa vào tài liệu mô tả yêu cầu mà dựa vào việc phân tích cấu trúc code (mã nguồn) của chương trình để mà xác định các trường hợp cần kiểm thử.

Kiểm thử hộp trắng có thể áp dụng ở mọi mức kiểm thử từ component test (unit test) - kiểm thử đơn vị, cho đến kiểm thử ở mức hệ thống (system test). Nhưng trong thực tế thì white-box testing thường được áp dụng nhiều và thông dụng ở mức unit test. Vì khi áp dụng kỹ thuật này ở mức cao như integration test (kiểm thử tích hợp), thì số lượng dòng code, và các thành phần được tích hợp nhiều nên độ phức tạp rất cao. Vì thế, công sức bỏ ra thì rất nhiều nhưng hiệu quả thì không tương xứng.
Đối với system test thì toàn bộ mã nguồn (source code) của hệ thống thì rất rất nhiều so với bên trong một hàm, hay module nào đó. Do đó, thường ở mức system, white box testing không được áp dụng vào việc phân tích mã nguồn của hệ thống để xác định các trường hợp cần kiểm thử, mà lúc đó người ta thường áp dụng việc phân tích cấu trúc của hệ thống theo góc nhìn nghiệp vụ (cấu trúc của luồng nghiệp vụ - business process). Và dựa vào cấu trúc đó để viết test case cho mức hệ thống - thường là về chức năng, và được kiểm thử thủ công (manual) trên giao diện ứng dụng.

Vậy kiểm thử hộp trắng ở mức unit test thì sao?
Có rất nhiều kỹ thuật kiểm thử hộp trắng khác nhau, nhưng thường được áp dụng nhiều nhất là statement testingdecision testing.

Hãy xem xét ví dụ sau để hiểu hơn về kiểm thử hộp trắng - white box testing

Code: Select all

if (p = q) {
   s = s + 1;
   if (a < s) {
     t = 10;
   }
} else if (p > q) {
   t = 5;
}
Image

Với đoạn code trên, khi thực hiện kiểm thử câu lệnh thì bạn chỉ cần viết test case sao cho mọi câu lệnh (statement) trong đoạn code trên phải được thực thi (đi qua) ít nhất một lần.

TC1. Input sao cho đi qua các câu lệnh (statement): 1, 2, 3, và 4. Ví dụ, p = 5, q = 5, s = 0, và a = 0
TC2. Input sao cho đi qua các câu lệnh: 1, 5, và 6. Ví dụ, p = 5, q = 4, s = 1, và a = 1 (chỉ cần input sao cho p khác q

Còn về Kiểm thử quyết định, thì bạn chỉ cần viết test case sao cho mọi điểm quyết định (decision outcome) đều được đi qua ít nhất một lần.

TC1. Input sao cho đi qua các điểm quyết định (decision outcome): A, B, H, I, K, và L. Ví dụ, p = 5, q = 5, s = 0, và a = 0
TC2. Input sao cho đi qua các điểm quyết định: A, B, H, J, và L. Ví dụ, p = 5, q = 5, s = 0, và a = 1
TC3. Input sao cho đi qua các điểm quyết định: A, C, D, F, và G. Ví dụ, p = 5, q = 4, s = 1, và a = 1 (p lớn hơn q)
TC4. Input sao cho đi qua các điểm quyết định: A, C, E, và G. Ví dụ, p = 4, q = 5, s = 1, và a = 0 (p không lớn hơn q)



Post Reply

Return to “White box Testing - Kiểm thử hộp trắng”