Bài giảng Nhập môn công nghệ phần mềm - Chương 9: Kiểm thử cung cấp cho người đọc các kiến thức: Giới thiệu về kiểm thử, kiểm thử trong tiến trình phát triển, kiểm thử hộp đen, kiểm thử hộp trắng. Mời các bạn cùng tham khảo.
Kiểm thử (9) Nguyễn Thanh Bình Khoa Cơng nghệ Thơng tin Trường ðại học Bách khoa ðại học ðà Nẵng Nội dung Giới thiệu kiểm thử Kiểm thử tiến trình phát triển Kiểm thử hộp đen Kiểm thử hộp trắng CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểm thử ? IEEE: Kiểm thử tiến trình vận hành hệ thống thành phần ñiều kiện xác ñịnh, quan sát ghi nhận kết ñưa ñánh giá hệ thống thành phần ñó Myers: Kiểm thử tiến trình thực thi chương trình với mục đích tìm thấy lỗi (The art of software testing) Kiểm thử ? Kiểm thử ≠ Gở rối (debug) Kiểm thử • nhằm phát lỗi Gở rối • xác định chất lỗi định vị lỗi chương trình • tiến hành sửa lỗi CuuDuongThanCong.com https://fb.com/tailieudientucntt Các khái niệm Một sai sót (error) nhầm lẫn hay hiểu sai trình phát triển phần mềm người phát triển Một lỗi (fault, defect) xuất phần mềm kết sai sót Một hỏng hóc (failure) kết lỗi xuất làm cho chương trình khơng hoạt động hay hoạt ñộng cho kết không mong ñợi sai sót lỗi hỏng hóc Các khái niệm Dữ liệu thử (test data) liệu vào cần cung cấp cho phần mềm thực thi Kịch kiểm thử (test scenario) bước thực khi kiểm thử Phán xét kiểm thử (test oracle) ñánh giá kết kiểm thử • tự động: chương trình • thủ công: người CuuDuongThanCong.com https://fb.com/tailieudientucntt Các khái niệm Kiểm thử viên (tester) người thực kiểm thử Ca kiểm thử (test case) tập liệu thử ñiều kiện thực thi kết mong ñợi Các khái niệm CuuDuongThanCong.com https://fb.com/tailieudientucntt Tiến trình kiểm thử Kiểm thử thường bao gồm bước thiết kế ca kiểm thử bước tạo liệu thử • kiểm thử với tất liệu vào cần thiết • khơng thể kiểm thử “vét cạn” • chọn tập liệu thử ñại diện từ miền liệu vào • dựa tiêu chuẩn chọn liệu thử bước thực thi chương trình liệu thử • cung cấp liệu thử • thực thi • ghi nhận kết bước quan sát kết kiểm thử • thực sau thực thi • so sánh kết nhận ñược kết mong đợi Tiến trình kiểm thử 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt Khó khăn kiểm thử Liên quan đến tiến trình phát triển gồm nhiều giai đoạn phát triển • giai ñoạn vào giai đoạn khác • mát thơng tin Về mặt người thiếu đào tạo trọng vai trò kiểm thử Về mặt kỹ thuật không tồn thuật tốn tổng qt chứng minh đắn hồn tồn chương trình 11 Tại kiểm thử Hợp thức hóa (validation) sản phẩm ñáp ứng ñược yêu cầu người sử dụng Xác minh (verification) sản phẩm thỏa mãn đặc tả u cầu Phân biệt hợp thức hóa xác minh “Verification: Are we building the product right ?” “Validation: Are we building the right product ?” 12 CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểm thử tiến trình phát triển Các kỹ thuật kiểm thử kỹ thuật kiểm thử tĩnh (static testing) kỹ thuật kiểm thử động (dynamic testing) • kiểm thử hộp đen (black-box testing) • kỹ thuật kiểm thử chức (functional testing) • kiểm thử hộp trắng (white-box testing) • kỹ thuật kiểm thử cấu trúc (structural testing) Các hoạt ñộng kiểm thử/chiến lược kiểm thử kiểm kiểm kiểm kiểm thử đơn vị (unit testing) thử tích hợp (integration testing) thử hợp thức hóa (validation testing) thử hồi quy (regression testing) 13 Kiểm thử tiến trình phát triển Kiểm thử ñơn vị (unit testing) kiểm thử đơn vị phần mềm (mơ-đun) sử dụng kỹ thuật kiểm thử hộp ñen liệu thử ñươc tạo dựa tài liệu thiết kế sử dụng kiểm thử hộp trắng kiểm thử tĩnh • phần mềm yêu cầu chất lượng cao thường ñược thực phần cứng phát triển phần mềm 14 CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểm thử tiến trình phát triển Kiểm thử tích hợp (integration testing) sau thực kiểm thử ñơn vị ghép nối ñơn vị/thành phần phần mềm kiểm thử ghép nối, trao ñổi liệu ñơn vị/thành phần sử dụng kỹ thuật kiểm thử hộp đen mơt số trường hợp, sử dụng kỹ thuật kiểm thử hộp trắng • chi phí cao, khó khăn liệu thử tạo dựa thiết kế tổng thể 15 Kiểm thử tiến trình phát triển Kiểm thử tích hợp (2) cần xây dựng thêm • nút trám (stub): thành phần khác mơ thành phần phần mềm chưa tích hợp • trình điều khiển (driver): thành phần tạo liệu vào cho vài thành phần phần mềm tập hợp ñang ñược kiểm thử 16 CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểm thử tiến trình phát triển Kiểm thử tích hợp (3) 17 Kiểm thử tiến trình phát triển Kiểm thử tích hợp (4) chiến lược từ xuống (top-down) • kiểm thử tích hợp thành phần trước, sau thêm vào thành phần ñược gọi trực tiếp thành phần vừa kiểm thử • cho phép xác định sớm lỗi kiến trúc • liệu thử ñược tái sử dụng cho bước • nhiên chiến lược đòi hỏi phải xây dựng nhiều nút trám chiến lược từ lên (bottom-up) • kiểm thử thành phần không gọi thành phần khác, sau thêm vào thành phần gọi thành phần vừa kiểm thử • sử dụng nút trám • lại xác định lỗi trễ 18 CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểm thử tiến trình phát triển Kiểm thử hợp thức hóa (validation testing) gọi kiểm thử hệ thống (system testing) thực sau kiểm thử tích hợp kết thúc chứng minh phần mềm thực ñúng mong ñợi người sử dụng dựa vào yêu cầu người sử dụng sử dụng kỹ thuật kiểm thử hộp ñen nên thực mơi trường mà phần mềm sử dụng 19 Kiểm thử tiến trình phát triển Kiểm thử hồi quy (regression testing) phần mềm sau ñưa vào sử dụng, có chỉnh sửa • phát sinh lỗi cần kiểm thử lại: kiểm thử hồi quy thường tái sử dụng liệu thử ñã sử dụng giai ñoạn trước 20 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểm thử giá trị biên Nguyên tắc chọn liệu thử Nếu liệu vào thuộc khoảng, chọn • giá trị biên • giá trị = giá trị biên ± sai số nhỏ Nếu giá trị vào thuộc danh sách giá trị, chọn • phần tử thứ nhất, phần tử thứ hai, phần tử kế cuối phần tử cuối Nếu liệu vào ñiều kiện ràng buộc số giá trị, chọn • số giá trị tối thiểu, số giá trị tối ña số số giá trị không hợp lệ Tự vận dụng khả thực tế ñể chọn giá trị biên cần kiểm thử 29 Kiểm thử giá trị biên Ví dụ (1) Chương trình nhận vào ba số thực, kiểm tra ba số thực có độ dài ba cạnh tam giác Nếu ñộ dài ba cạnh tam giác, kiểm tra xem tam giác thường, cân, ñều kiểm tra ñó tam giác nhọn, vuông hay tù 30 15 CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểm thử giá trị biên Ví dụ (2) Dữ liệu thử 1, 1, 0, 0, 4, 0, 1, 2, 3.00001 0.001, 0.001, 0.001 99999, 99999, 99999 3.00001, 3, 2.99999, 3, 3, 4, 5.00001 3, 4, 5, -3, -3, Khơng tam giác Chỉ điểm Một cạnh không Gần tam giác Tam giác nhỏ Tam giác lớn Tam giác gần ñều Tam giác gần cân Tam giác giác gần vuông Bốn giá trị Chỉ giá trị Dữ liệu vào rỗng Giá trị âm 31 Kiểm thử lớp tương ñương Ý tưởng phân hoạch miền liệu vào thành lớp liệu có quan hệ với lớp dùng ñể kiểm thử chức năng, gọi lớp tương ñương 32 16 CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểm thử lớp tương ñương Ba bước ñối với liệu vào, xác ñịnh lớp tương ñương từ miền liệu vào chọn liệu ñại diện cho lớp tương ñương kết hợp liệu thử tích ðề-các ñể liệu kiểm thử 33 Kiểm thử lớp tương ñương Nguyên tắc phân hoạch lớp tương ñương Nếu liệu vào thuộc khoảng, xây dựng • lớp giá trị lớn • lớp giá trị nhỏ • n lớp giá trị hợp lệ Nếu liệu tập hợp giá trị, xây dựng • lớp với tập rỗng • lớp nhiều giá trị • n lớp hợp lệ Nếu liệu vào ñiều kiện ràng buộc, xây dựng • lớp với ràng buộc thỏa mãn • lớp với ràng buộc khơng thỏa mãn 34 17 CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểm thử lớp tương đương Ví dụ Bài tốn tam giác Thường Cân ðều Nhọn 6,5,3 6,1,6 4,4,4 Không tam giác Vuông 5,6,10 7,4,4 Tù 3,4,5 √2,2,√2 -1,2,8 35 Bài tập Kiểm thử giá trị biên Viết chương trình thống kê phân tích tệp chứa tên ñiểm sinh viên năm học Tệp chứa nhiều 100 trường Mỗi trường chứa tên sinh viên (20 ký tự), giới tính (1 ký tự) điểm mơn học (từ đến 10) Mục đích chương trình: • tính diểm trung bình sinh viên • tính điểm trung bình chung (theo giới tính et theo mơn học) • tính số sinh viên lên lớp (điểm trung bình 5) Xây dựng liệu thử cho chương trình kiểm thử giá trị biên 36 18 CuuDuongThanCong.com https://fb.com/tailieudientucntt Bài tập Kiểm thử lớp tương đương Viết chương trình dịch, có câu lệnh FOR, đặc tả câu lệnh FOR sau: “Lệnh FOR chấp nhận tham số biến đếm Tên biến khơng ñược sử dụng hai ký tự khác rỗng Sau ký hiệu = cận cận biến ñếm Các cận cận số ngun dương đặt từ khóa TO” Xây dựng liệu thử ñể kiểm thử câu lệnh FOR theo kỹ thuật kiểm thử lớp tương ñương 37 Kiểm thử hộp trắng Dựa vào mã nguồn/cấu trúc chương trình Xây dựng liệu thử sau mã hóa/lập trình Thường phát lỗi lập trình Khó thực Chi phí cao 38 19 CuuDuongThanCong.com https://fb.com/tailieudientucntt Các kỹ thuật kiểm thử hộp trắng Kiểm thử dựa ñồ thị luồng ñiều khiển Kiểm thử dựa ñồ thị luồng liệu Kiểm thử ñột biến (mutation testing) 39 ðồ thị luồng ñiều khiển ðồ thị luồng ñiều khiển (Control Flow Graph ðTLðK) đồ thị có hướng, biểu diễn chương trình đỉnh: biểu diễn lệnh hay khối lệnh cung: biểu diễn rẽ nhánh ñỉnh vào ñỉnh ñược thêm vào ñể biểu diễn điểm vào chương trình Lộ trình (path) ðTLðK xuất phát từ đỉnh vào qua ñỉnh cung ñồ thị kết thúc ñỉnh 40 20 CuuDuongThanCong.com https://fb.com/tailieudientucntt ðồ thị luồng điều khiển Ví dụ if x