►Functional testing
►Phân hoạch tương đương
►Black box testing
►Structural testing
►White box testing
►Black/White box testing
►Xác định đường đi
►Độ phức tạp thuật toán
Functional testing
Phân hoạch tương đương
• Không thể kiểm thử mọi trường hợp
• Chia dữ liệu thành các miền có cùng hành vi
• Tạo một test case cho từng miền
• Tạo test case cho biên của các miền
- nhiều lỗi xuất hiện với giá trị biên
29 trang |
Chia sẻ: candy98 | Lượt xem: 566 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Software Testing and Quality Assurance - Lecture 5: Black/White box testing - Đào Nam Anh, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1Software Testing and Quality Assurance
Black/White box testing
Dr. Dao Nam Anh
Faculty of Information Technology
University of Technology and Management
2Resources
► Pressman, Software Engineering, McGraw Hill (chapter 18
& 19)
► Sommerville, Software Engineering, Addison-Wesley
(chapter 22 & 23)
► Software Testing and QA Theory and Practics, Chapter 7,
WILEY Publish
► Foundations Of Software Testing, Istqb Certification,
Dorothy Graham, Erik Van Veenendaal, Isabel Evans, Rex
Black
► Jovanović, Irena, Software Testing Methods and
Techniques
► Lâm Quang Vũ,
3Nội dung
►Functional testing
►Phân hoạch tương đương
►Black box testing
►Structural testing
►White box testing
►Black/White box testing
►Xác định đường đi
►Độ phức tạp thuật toán
4Functional testing
Phân hoạch tương đương
• Không thể kiểm thử mọi trường hợp
• Chia dữ liệu thành các miền có cùng hành vi
• Tạo một test case cho từng miền
• Tạo test case cho biên của các miền
- nhiều lỗi xuất hiện với giá trị biên
5Functional testing
Phân hoạch tương đương
6Functional testing
Phân hoạch tương đương
Ví dụ: Hàm tính trị tuyệt đối
- miền dữ liệu ≥ 0
- miền dữ liệu < 0
Input: 100, -20, 0
Expect: 100, 20, 0
7Functional testing
Phân hoạch tương đương
Tạo test case cho các trường hợp đặc biệt
- biên của số trong máy tính
(vd. 32767, -32768)
- số không (0)
- số âm, số thập phân
- dữ liệu sai kiểu
- dữ liệu ngẫu nhiên
8Functional testing
Black box testing
Dựa trên đặc tả chức năng
• Test case được thiết kế để kiểm tra chức năng
• Phát hiện các khiếm khuyết so với đặc tả
• Không quan tâm đến cách cài đặt (mã nguồn)
- Phát hiện sai sót, thiếu sót chức năng
- Sai sót về giao diện của mô đun
- Kiểm tra tính hiệu quả
- Phát hiện lỗi khởi tạo, lỗi kết thúc,
9Functional testing
Black box testing
10
Structural testing
White box testing
Xây dựng ca kiểm thử dựa trên phân tích mã
nguồn
• Xây dựng bộ test case để kiểm tra mọi dòng
lệnh
• Phân tích các lệnh rẽ nhánh, vòng lặp
• Phù hợp với các mô đun nhỏ
• Là sự bổ sung cho kiểm thử chức năng
11
Structural testing
Black/White box testing
12
Structural testing
Xác định đường đi
• flow chart (đồ thị)
13
Structural testing
Đường đi trong mô đun
Phân tích mô đun để xác định đường đi
• Đường đi là thứ tự thực hiện các lệnh từ
điểm bắt đầu đến điểm kết thúc của mô
đun
• Thiết kế các test case để kiểm thử mọi
đường đi
14
Structural testing
Xác định đường đi
• flow chart (đồ thị)
15
Structural testing
Xác định đường đi
• Đánh số các khối lệnh
- đánh số các khối lệnh, câu lệnh điều kiện
- đánh số các hợp điểm của luồng lệnh
• Rút gọn flow chart (đồ thị)
- các khối tuần tự được tích hợp thành một khối
- tích hợp khối tuần tự vào câu lệnh điều kiện kế tiếp
16
Structural testing
Đường đi độc lập
• Không thể chọn mọi đường đi
- chọn các đường đi độc lập
• Đường đi độc lập
- có ít nhất một cặp khối lệnh (một cạnh của đồ thị)
chưa xuất hiện trong các đường đi đã có
• Bộ các đường đi độc lập là một tập hợp thỏa mãn
- mọi khối lệnh đều được thực hiện ít nhất một lần
- mọi điều kiện đều được kiểm thử với hai trường
hợp true và false
17
Structural testing
Đường đi độc lập
►Có thể tồn tại nhiều bộ đường đi độc lập
►Số đường đi tối thiểu cần kiểm tra -> độ
phức tạp thuật toán
18
Structural testing
Độ phức tạp thuật toán
Độ phức tạp lớn thì xác suất xuất hiện lỗi cao
►Không nên tạo các mô đun có độ phức tạp
►-> phân rã mô đun (tạo các mô đun thứ cấp
để giảm độ phức tạp)
19
Structural testing
Xác định đường đi
20
Structural testing
Xác định đường đi
21
Structural testing
Xác định đường đi
► Vòng lặp
22
Structural testing
Xác định đường đi
► Vòng lặp
23
Structural testing
Xác định đường đi
► Testing of simple loops:
0 iterations (no looping),
minimum number of iterations (possibly 0),
minimum+1 iterations,
typical number of iterations,
maximum-1 iterations,
maximum number of iterations,
maximum+1 iterations (should not be feasible)
► for ( j=0; j < 999; ++j ) { }
24
Structural testing
Xác định đường đi
Testing of serial loops:
– if there is no data-flow
relationship between the
loops, test them both as
simple loops
– if there is a data-flow
relationship between the
loops, test them as if the
loops were nested
25
Structural testing
Xác định đường đi
Testing of nested loops:
– There would be too many tests when repeating all the inner
loop tests every time an outer loop is iterated, so:
1. The innermost loop is tested first using the simple-loop
strategy. The other loops are iterated their minimum number
of times.
2. Set up the looping conditions of the previously tested loop
such that it will be iterated a suitable number of times
(minimum, typical, or maximum).
3. Proceed to testing the outer loop which is nesting the
previously tested one, using the simple-loop strategy. (The
outer loops are iterated their minimum number of times, the
inner loops are iterated their suitable number of times.)
4. Repeat the steps 2 and 3, until the outermost loop has been
tested.
5. Set up a test that will iterate all loops their maximum number
of times.
26
Structural testing
Xác định đường đi
Testing of unstructured
(”spaghetti”) loops: test the loop
with an equivalent simple / serial
/ nested loop as model
– spaghetti code should be
rewritten into structured form, for
testing as well as for
maintenance purposes
27
Structural testing
Độ phức tạp thuật toán
Độ phức tạp V(G) của flow chart G:
1. Số miền của đồ thị G
2. V(G) = E - N + 2
E: số cạnh
N: số đỉnh
3. V(G) = P + 1
P: số các nút điều kiện
28
Structural testing
Độ phức tạp thuật toán
29
Q & A