Tải bản đầy đủ (.ppt) (54 trang)

Tài liệu lý thuyết kiểm thử hộp trắng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (434.22 KB, 54 trang )

White Box Testing

ThS Nguyễn Xuân Cường
1


1/. Khái niệm
kiểm thử hộp trắng nhằm kiểm tra mã nguồn phần
mềm:
•Cơ bản là xác minh các lỗ hổng thiếu sót, khiếm
khuyết trong các mã nguồn.
•Kiểm tra các đường dẫn (Path) bị hỏng hoặc không
đầy đủ trong mã nguồn.
•Kiểm tra dòng chảy của cấu trúc đề cập đến trong
tài liệu đặc tả.

2


1/. Khái niệm (tt)
•Kiểm tra xem có các dead code (mã chết) trong mã
nguồn hay không? (Sv tự xác định dead code)
•Kiểm tra các kết quả đầu ra có như mong đợi?
•Kiểm tra các vòng lặp, các điều kiện trong các mã
nguồn có thực hiện đúng không?
•Xác minh từng dòng hoặc phần của các mục trong
mã nguồn & bao phủ các phân nhánh xử lý.
3


Giải thích Dead code:


Dead code (mã chết) là một phần trong mã
nguồn của một chương trình được thực thi nhưng
có kết quả là không bao giờ được sử dụng trong bất
kỳ tính toán khác.
Trong khi kết quả của một sự tính toán chết có thể
không bao giờ được sử dụng, nó có thể làm
tăng lỗi hoặc ảnh hưởng đến tốc độ toàn cục, do đó
cần loại bỏ các mã như vậy nhằm thay đổi hiệu
năng của chương trình
4


Ví dụ: Dead code
int calculate (int X, int Y)
{ int Z = X/Y;
return X*Y;
}
Lệnh là Z = X/Y; không bao giờ được dùng
và còn có khả năng gây lỗi khi Y = 0.

5


2/. Các kỹ thuật kiểm thử hộp trắng
Có 03 kỹ thuật kiểm thử White box sau:
•Statement Coverage (phủ lệnh)
•Branch Coverage (phủ nhánh)
•Path Coverage (phủ đường đi)

6



2/. Các kỹ thuật kiểm thử hộp trắng
1 số tài liệu khác

7


2/. Các kỹ thuật kiểm thử hộp trắng (tt)
Một hình thức truyền thống của kiểm thử White-box thường
trải qua là:
•Bước 1: Tạo 1 đồ thị mô tả luồng điều khiển từ mã nguồn
– Được gọi là đồ thị luồng điều khiển (CFG _ Control
Flow Graph)
– Đồ thị được tạo từ mã nguồn thường tạo bằng tay.
•Bước 2: Thiết kế các Test case để bao phủ toàn bộ các
phần tử của đồ thị (tùy theo kỹ thuật)
– Phần tử: các nút, cạnh, đường đi (nodes, edges, paths)
8


2/. Các kỹ thuật kiểm thử hộp trắng (tt)
Đồ thị được định nghĩa hình thức tóan học như sau:

G = (N, E)
Node: các nút tương ứng với lệnh, điều kiện
Edge: các cạnh nối các nút.

9



Ví dụ về Control Flow Graph (CFG)
1

s:=0;
d:=0;
while (xx:=x+3;
y:=y+2;
if (x+y < 100)
s:=s+x+y;
else
d:=d+x-y;
}

2
3
4
5

6
7
8
10


Các phần tử của CFG
• Có 03 loại nút:
– Nút lệnh: mô tả nút vào, ra, tuần tự.
– Nút điều kiện: nút mô tả điều kiện cho 1 nhánh.

– Nút hỗ trợ: nút kết nối như IF, …
• Cạnh: biểu diễn các luồng điều khiển.
Rất dễ khi tạo đồ thị, nó tương tự như vẽ lưu đồ
chương trình (Flow Program).
11


Biểu diễn IF-THEN, IF-THEN-ELSE,
SWITCH
if (c)
then
// join point

if (c)
then
else
// join point






switch (c)
case 1:
case 2:
// join point

…..


12


Biểu diễn vòng lặp (Loop)
while (c)
{




}
Chú ý: Các vòng lặp khác như FOR, DO-WHILE được biểu
diễn tương tự.
13


Ví dụ minh hoạ
switch (Chức vụ)
case Nhân viên
if (empl_yrs > 5)
bonus := 1;
else
bonus := 0.7;
case Quản lý
bonus := 1.5;
if (Nghỉ hưu)
bonus := 1.2 * bonus
case …
end switch


.
.
.
.

14


Tạo các khối lệnh (Block statement)
Để đơn giản hóa các mã nguồn lớn có nhiều lệnh,
người ta thường tạo CFG bằng các khối lệnh thay vì
cho từng lệnh.
Khối lệnh là tập hợp các lệnh liên tiếp tuần tự,
không có phân nhánh (trừ ở cuối), không chứa vòng
lặp.
15


Ví dụ:

16


Ví dụ: có 2 xử lý riêng biệt

17


Ví dụ: Khối lệnh If ..else


18


Ví dụ: Khối lệnh If không có else

19


Ví dụ: Khối lệnh chia nhiều nhánh như switch(),
Select case,..

20


Ví dụ: Khối lệnh có nhiều cạnh vào, nhiều cạnh ra.

21


Ví dụ: Khối lệnh có nhiều cạnh vào, nhiều cạnh ra.

22


Ví dụ: Khối lệnh .

23


Ví dụ: Khối lệnh .


24


Ví dụ: Khối lệnh .

25


×