Professional Documents
Culture Documents
TESTING-Anhnd-02-blackbox and Whitebox
TESTING-Anhnd-02-blackbox and Whitebox
1
Nhóm nghiên cứu
● PGS. TS. Phạm Ngọc Hùng Chủ đề
● ThS. Nguyễn Đức Anh ● Sinh ca kiểm thử tự động
● ThS. Đỗ Minh Khá ● Phân tích sự thay đổi
● SV. Vũ Hà Minh Trang ● Phân tích mã nguồn
● SV. Nguyễn Xuân Lâm C/C++/Java/Python ...
● SV. Phan Đức Mạnh ● Kiểm thử giao diện
● SV. Lê Bá Trường ● Kiểm thử mạng học sâu
● SV. Trần Thị Thúy ● Sinh dữ liệu ảnh có nhiễu tự nhiên
● SV. Trần Tuấn Nghĩa ● Nâng cao chất lượng cho mạng học
● SV. Đỗ Minh Sáng sâu
2
Nỗi niềm của người phát triển
Đặc tả Chương
(mong đợi) S P trình (Thực
tế)
3
Quy trình phát triển (QTPT) phần mềm
4
QTPT thác nước (1956)
Kiểm thử
ở đâu?
5
QTPT Scrum (1986)
Kiểm thử
ở đâu?
7
Bốn mức kiểm thử
8
Nỗi niềm của tester
T Tập kiểm
thử
9
Chứng chỉ ISTQB
● International Software
Testing Qualifications Board
● ISTQB Certified Tester: kiểm
thử viên được cấp chứng chỉ
bởi ISTQB
● 1 triệu kì thi đã diễn ra
● 721,000 chứng chỉ được cấp
10
Chứng chỉ kiểm thử – Cơ hội nghề nghiệp
11
Làm rõ khái niệm
● Đầu ra kì vọng (test oracle)
Khởi động! ● Ca kiểm thử (test case)
● Tập kiểm thử (test suite)
● Mã kiểm thử (test script)?
12
Ca kiểm thử (Test case) Tập kiểm thử (Test suite)
Gồm
● Giá trị đầu vào
● Điều kiện thực thi
● Đầu ra kì vọng (test oracle)
13
Test script (mã kiểm thử)
14
Các phương
pháp kiểm thử
15
Trong bài học này ...
S P S P
17
Kiểm thử hộp đen
18
Kiểm thử hộp đen là gì?
● Chỉ quan tâm đầu vào và đầu ra của đối tượng kiểm thử
● Không quan tâm mã nguồn
● Còn gọi là “Specification-based testing”
● Người kiểm thử chỉ quan tâm phần mềm làm gì (what), không quan tâm làm như
thế nào (how)
19
Đầu vào và đầu ra
PP kiểm
thử Tìm ca Viết test Báo
kiểm thử Thực thi
script cáo
Kinh
nghiệm
Đầu ra
mong đợi
Đặc tả
20
Đề cương ISTQB
21
Các kĩ thuật phổ biến
● Kiểm thử phân hoạch tương đương
(Equivalence Class Partitioning)
● Kiểm thử giá trị biên (Boundary Value
Analysis)
● Kiểm thử bảng quyết định (Decision
Table Testing)
22
Kiểm thử phân hoạch tương đương
(Equivalence Class Partitioning)
23
Kiểm thử phân hoạch tương đương (ECT) là gì?
Tư tưởng
● Tìm các phân hoạch tương đương
● Sinh ca kiểm thử từ các phân hoạch này
Mọi giá trị trong từng phân hoạch tương đương PHẢI có
cùng hành vi
25
Phân hoạch tương đương
● Miền giá trị đầu vào của từng tham số/biến/thuộc tính sẽ được chia
thành các phân hoạch tương đương
○ Giá trị hợp lệ
○ Giá trị không hợp lệ
26
Lưu ý
27
Ví dụ
28
Ví dụ
B1: Tìm miền hợp lệ
EC1
Cửa hàng niêm yết giá (gọi là price)
như sau:
EC2 • < 15000 đô: không giảm giá
• [15000 đô, 20000 đô): giảm 5%
• [20000 đô, 25000 đô): giảm 7%
EC3
• >= 25000 đô: giảm 8.5%
30
Ví dụ
Chỉ cần chọn 1 giá trị đại diện (representative) cho mỗi miền hợp lệ
31
Ví dụ
B3: Xét miền không hợp lệ
● Cần quan tâm đến những giá trị ngoài miền hợp lệ
● Giá trị 1000000 được chọn ngẫu nhiên
32
Ví dụ
Chọn giá trị ngẫu nhiên
33
Ví dụ
34
Thực hành
int sum(int a, int b){
Đặc tả: a và b có kiểu
return a + b; int
}
Đặc tả: a, b, c là số
thực dương 35
Thực hành
int sum(int a, int b){
Đặc tả: a và b có kiểu
return a + b; int
}
Đặc tả: a, b, c là số
thực dương 36
Mở rộng ra: Kiểu dữ liệu cấu trúc
● Đối với kiểu dữ liệu số nguyên, xác định phân hoạch tương đương không khó
● Đối với kiểu cấu trúc, ta xử lý thế nào?
37
Ví dụ (hệ thống thật)
Hệ thống VSR-Subsystem DreamCar:
Customer
Với từng đối tượng khách hàng khác
nhau, hệ thống sẽ xử lý khác nhau
-> Mỗi đối tượng khách hàng cần có các
ca kiểm thử tương ứng Retired Working
Student ...
Person Person
38
Hệ thống VSR-Subsystem DreamCar
39
Đặc tả phương thức tính giá xe hơi
40
Cài đặt theo đặc tả
Code đã đủ tốt?
41
Đoạn code này
tốt chưa?
- Chưa comment
- Chưa khai báo
hằng số
- Thụt lề chưa
chuẩn
- Tên biến chưa
thống nhất
42
Liệt kê phân
hoạch hợp
lệ/không hợp lệ
43
Ví dụ
● Số ca kiểm thử
○ Trong miền hợp lệ = 1 × 1 × 1 × 3 × 1 = 3
44
45
Độ phủ phân hoạch
Độ phủ EC =
(số EC thực thi/tổng số EC) × 100%
Ví dụ
● Giả sử vì hạn chế thời gian, 3/14 ca kiểm thử không được thực hiện
● Chỉ có 15 phân hoạch tương đương (EC) được thực thi
● Độ phủ EC = (15/18) × 100% = 83.33%
46
Ưu, nhược điểm
47
Kiểm thử giá trị biên
(Boundary Value Analysis)
48
Tại sao cần kiểm thử biên?
49
Biên của phân hoạch tương đương
-> NÊN bổ sung thêm ca kiểm thử 15000 để kiểm thử lỗi này
50
Phân hoạch không phải miền số
Trong nhiều trường hợp, không tồn tại biên thực tế vì biên phụ thuộc vào phân
hoạch tương đương
● Một giá trị trong phân hoạch hợp lệ
● Một giá trị ở phân hoạch không hợp lệ
51
Ví dụ
Giả sử một field nhập liệu chấp nhận một số nguyên là đầu vào.
Sử dụng bàn phím số để nhập nên chỉ có thể nhập số.
Miền hợp lệ từ 1 đến 5.
Giá trị số từ 0 đến 9
● Ba phân hoạch tương đương gồm: (EC1) không hợp lệ (quá nhỏ); (EC2) hợp
lệ; (EC3) không hợp lệ (quá lớn)
● EC2: chọn 1 và 5
● EC3: chọn 6 (có thể chọn cả 9)
● EC1: chọn 0 (không thể chọn thêm số nhỏ hơn vì đang dùng bàn phím số)
52
Ví dụ (ISTQB)
Hệ thống bán vé quy định giá như sau:
Giá trị biên: 9:29 am; 9:30 am, 4:00 pm; 4:01 pm, 7:30 pm; 7:31 pm
53
Ví dụ (ISTQB)
54
ISTQB Exam
Link: bit.ly/3RyaEiW
55
56
Kiểm thử bảng quyết định
57
Tại sao cần bảng quyết định?
● Kĩ thuật phân hoạch tương đương và phân tích giá trị biên thường áp
dụng khi giá trị đầu vào có biên rõ ràng
● Bảng quyết định xử lý tốt trường hợp phương thức có hành vi phức
tạp
58
Cấu trúc
59
Đồ thị nguyên nhân - kết quả
60
Rút tiền ATM (1/2)
Để rút tiền tại ATM thành công, các điều
kiện sau phải thỏa mãn
● Thẻ ATM hợp lệ
● Mã PIN nhập đúng
● Tài khoản có tiền và ATM có tiền
● Tối đa 3 lần nhập sai mã PIN liên
tiếp
62
Nhập liệu thông tin
63
Upload tệp
64
Sample Exam ISTQB Advanced Test (1/2)
65
Sample Exam ISTQB Advanced Test (2/2)
66
Sample Exam ISTQB Advanced Test
67
Thảo luận
○ Có thể bỏ sót nhiều lỗi tiềm ẩn trong mã nguồn -> Kiểm thử hộp
trắng
68
Kiểm thử hộp trắng
69
Giải thích
● Độ phủ dòng lệnh
(statement coverage)
Khởi động! ● Độ phủ nhánh (branch
coverage)
● Độ phủ đường (path
coverage)
70
Kiểm thử hộp trắng
71
Đầu vào và đầu ra
PP kiểm
thử Tìm ca Viết test Báo
kiểm thử Thực thi
script cáo
Kinh
nghiệm
Đầu ra
mong đợi
Mã nguồn
72
Kiểm thử ngẫu nhiên
73
Kiểm thử ngẫu nhiên
Giá trị được sinh ngẫu nhiên dựa theo kiểu tham số truyền vào phương
thức/hàm
● Số nguyên
● Số thực
● Kiểu kí tự
● Kiểu string
● Kiểu con trỏ
● Kiểu cấu trúc
74
Ví dụ đầu vào số nguyên
price <
Đặc tả ghi rằng: 15000
T F
Cửa hàng niêm yết giá (gọi là price)
như sau: price <=
return 0
20000
● < 15000 đô: không giảm giá F
Code T
● [15000 đô, 20000 đô]: giảm 5%
● (20000 đô, 25000 đô): giảm price <
7% return 5
25000
● >= 25000 đô: giảm 8.5%
T F
75
Ví dụ
Đầu vào sinh ngẫu nhiên: price < 1
15000
● price = -1 T F
● price = 30
2 price <=
● price = 40000 return 0
20000
3
T F
Hãy tính 4
price < 5
● Độ phủ câu lệnh return 5
25000
● Độ phủ nhánh T F
return
return 7 7
8.55
6
76
Ví dụ
price <
● Độ phủ câu lệnh 15000
T F
66.66% return
return 7
8.55
77
Ví dụ kiểu cấu trúc
78
Hạn chế
79
Ca kiểm thử dư thừa/không hợp lệ
80
Sinh ca kiểm thử thủ công
81
Ví dụ
82
83
Sinh ca kiểm thử có định hướng
84
Pathcrawler
http://pathcrawler-online.com:8080 85
AkaAuto
https://www.fit.uet.vnu.edu.vn/vnu-uet-chuyen-giao-cho-fsoft-gam-giai-phap-kiem-thu-tu-dong-cho-cac-du-an-c-c/ 86
Và còn nữa ...
87
Các công cụ tự động này dễ dàng đạt được độ phủ tới
100%
88
Phương pháp kiểm thử concolic (phiên bản đơn giản)
Ca kiểm thử
đầu tiên Đường Hệ ràng
Chạy chương thi hành Thực thi buộc
trình tượng trưng Phủ định
Đối tượng
kiểm thử
Tiêu chí độ
phủ Ca kiểm
thử mới
Sai Độ phủ Gọi
100%? Solver
Đúng
89
Lịch sử thực thi tượng trưng
90
Thực thi tượng trưng Bảng biến
i = -1
91
Thực thi tượng trưng
Biến Giá trị
i A
j 2*A
92
Thực thi tượng trưng
Biến Giá trị
i A+1
j 2*A
93
Thực thi tượng trưng
Biến Giá trị
i (A + 1) * 2A
j 2*A
94
Thực thi tượng trưng
Biến Giá trị
i (A + 1) * 2A
j 2*A
95
Thực thi tượng trưng
Biến Giá trị
i -1 * (A + 1) * 2A
j 2*A
96
Hệ ràng buộc ban đầu
Phủ định hệ ràng buộc Điều kiện Giá trị
i<1 (A + 1) * 2A < 1
97
Hệ ràng buộc ban đầu
Phủ định hệ ràng buộc Điều kiện Giá trị
i<1 (A + 1) * 2A < 1
Ca kiểm
SMT Solver thử mới
98
Áp dụng
99
100
Tài liệu tham khảo
● Andreas Spillner, Tilo Linz, Hans Schaefer. Software Testing Foundation. 4th
edition
● Roger S. Pressman, Software Engineering: A practical approach, 7th edition
● https://www.istqb.org/certifications/certified-tester-foundation-level
● CS/CE/SE 6367 Software Testing, Validation and Verification
101