Software Testing and Quality Assurance - Lecture 5: Black/White box testing - Đào Nam Anh

►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

pdf29 trang | Chia sẻ: candy98 | Lượt xem: 450 | Lượt tải: 0download
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