Khái niệm:
Còn được gọi là clear box testing, glass box testing, transparent box testing,
or structural testing, thường thiết kế các trường hợp kiểm thử dựa vào cấu trúc bên trong của phần mềm.
Đặc điểm:
Phụ thuộc vào các cài đặt hiện tại của hệ thống và của phần mềm, nếu có sự thay
đổi thì các bài test cũng cần thay đổi theo. Được ứng dụng trong các kiểm tra ở
cấp độ mô đun(điển hình), tích hợp (có khả năng) và hệ thống của quá trình test
phần mềm.
Các kỹ
thuật:
Kiểm thử luồng,
lộ trình ( Deriving Test Cases)
+ Lộ trình cơ sở (Basis path Testing)
Luồng điều khiển
/ Phạm vi
(Control-flow /
Coverage Testing)
+ Phương thức – Method Coverage
+ Câu lệnh – Statement Coverge
+ Nhánh – Branch Coverge
+ Điều kiện – Condition Converage
Kiểm thử luồng dữ
liệu ( Data Flow Test )
Trường hợp hỏng
‘rác’ – Failure ‘Dirty’ Case Test
Flow Groaps
Revisited
Basis Path
Testing ( Kiểm thử lộ trình cơ sở)
Equivalence
Partitioning / Boundary Value( Phân vùng tương đương và Giá trị biên )
Kiểm tra lộ
trình cơ sở :
+ Là kĩ thuật kiểm thử mà phần mềm được chia thành các lộ
trình
+ Đảm bảo các lộ trình độc lập qua một mô đun mã sẽ được kiểm
thử đầy đủ
Một số
khái niệm:
Đồ hình lộ trình : Bao gồm các hình, mũi tên (cạnh),
chỉ số, mô tả khác
Độ phức tạp chu trình (
Cyclomatic Complexity ) : Được
tìm ra bởi chu trình McCabe, chỉ ra độ phức tạp lôgic của một chương trình.
Cách tạo
kiểm thử:
Sử dụng một đoạn
code hoặc thiết kế làm cơ sở để xây dựng lên đồ hình luồng.
Đưa ra các chu
trình lộ trình từ đồ hình vừa có được.
Quyết định một lộ
trình độc lập tuyến tính
Kiểm tra tất các
chu trình đã tạo.
v Luồng điều khiển / Gom (Control-flow / Coverage
Testing)
Là cách tạo ra
các bộ giá trị kiểm thử để có thể xem được 100% các trường hợp có thể xảy ra với
các thành phần của một chương trình bao gồm :
+ Các phương thức ( Method )
+ Các câu lệnh (Statement )
+ Các nhánh (branch)
+ Các điều kiện
Ví dụ: Kiểm tra phương thức bằng
các bộ giá trị của hàm foo sau :
Bộ giá trị được
chọn là foo(0,0,0,0,0)
v Luồng điều khiển / Phạm vi (Control-flow / Coverage
Testing)
Với nhánh
(branch )
IF ( a equals b AND c less than d ) THEN
statement 1
ELSE
statement 2
END IF
statement 1
ELSE
statement 2
END IF
Chọn bộ giá trị
a b c d sao cho có thể kiểm tra hết các nhánh rẽ .
Ví dụ : (a,b,c,d) = (1, 1, 2, 6) & (1,2,3,3)
v Kiểm thử luồng dữ liệu ( Data Flow Test )
Kiểm tra sự khởi
tạo, biến đổi và huỷ của các các luồng dữ liệu.
Thường được
phân tích qua đồ hình và đặt ra các bộ giá trị thử và giá trị trả về mong
muốn dựa vào đồ hình đó.
Một số trạng
thái của biến dữ liệu trong quá trình biến đối
Ví dụ: Hoá đơn thanh
toán cho việc sử dụng điện -> Xét sự biến đổi luồng dữ liệu của hóa đơn
v Trường hợp hỏng ‘rác’ (Failure ‘Dirty’ Case Test)
Là trường hợp kiểm
thử các trường hợp mà người lập trình cần đứng ở vị trí người dùng để nhập giá
trị
Cụ thể là người
dùng có thể nhập số thay cho chữ, hoặc không nhập gì, tạo ra lỗi phép toán
(divided by Zero )…
Cách kiểm thử:
Tạo ra tất cả
các trường hợp test mà người dùng thường mắc lỗi ( dựa vào kinh nghiệm thực tế
)
Kiểm tra các lỗi
toán học, số học, phạm vi biến, kiểu biến ….