Bài giảng Kiểm thử phần mềm - Bài 3: Các cấp độ kiểm thử cung cấp cho người học các kiến thức: Một chiến thuật kiểm thử phổ biến, kiểm thử từng module, kiểm thử đơn vị, kiểm thử tích hợp, kiểm thử hệ thống,... Mời các bạn cùng tham khảo.
ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM KIỂM THỬ PHẦN MỀM (Software Testing) GV: ThS Nguyễn Thị Thanh Trúc Khoa: Công nghệ Phần mềm Email: trucntt@uit.edu.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt BÀI 3: Các cấp độ kiểm thử CuuDuongThanCong.com https://fb.com/tailieudientucntt Một chiến thuật kiểm thử phổ biến • Bắt đầu module tích hợp lớn dần đến tồn hệ thống • Các kỹ thuật khác sử dụng thích hợp giai đoạn khác • Kiểm thử tiến hành người phát triển phần mềm, dự án lớn việc kiểm thử phải tiến hành nhóm độc lập • Kiểm thử sửa lỗi hoạt động độc lập việc sửa lỗi phải phù hợp với chiến thuật kiểm thử CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểm thử module • Tiến hành kiểm thử đơn vị nhỏ phần mềm, module mã nguồn, sau thiết kế, mã hố biên dịch thành cơng • Thường dùng kỹ thuật kiểm thử white-box • Có thể tiến hành kiểm thử lúc nhiều module • Một số vấn đề việc xây dựng test case – Test case nào? – Dữ liệu đầu vào đầu có từ đâu? – Tính độc lập/phụ thuộc hoạt động module CuuDuongThanCong.com https://fb.com/tailieudientucntt 3.1 Kiểm thử đơn vị • Kiểm thử đơn vị nhằm kiểm tra đơn vị thiết kế nhỏ module phần mềm Một module hoạt động thường có trao đổi thơng tin với module mức mức nó, phạm vi phát lỗi liên quan chặt chẽ tới module • Người tiến hành kiểm thử đơn vị: lập trình viên nhóm mình • Kỹ thuật kiểm thử đơn vị: chủ yếu hộp trắng, trường hợp cần thiết sử dụng thêm kỹ thuật kiểm thử hộp đen CuuDuongThanCong.com https://fb.com/tailieudientucntt 3.1.1 Mơ hình kiểm thử đơn vị • Driver, stub CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểm thử module • Mỗi module mã nguồn khơng phải chương trình hồn chỉnh đơi phải gọi module chưa kiểm thử khác phải thiết lập driver và/hoặc stub: phí tổn lớn (70%) • Driver chương trình có nhiệm vụ nhận liệu kiểm thử, chuyển liệu xuống cho module để kiểm tra in kết kiểm tra tương ứng • Stub thay module gọi module kiểm tra Làm để giảm chi phí tạo driver hay stub CuuDuongThanCong.com https://fb.com/tailieudientucntt 3.1.2 Nội dung kiểm thử đơn vị • a) Kiểm thử giao diện(các tham số vào/ra qua giao diện) • b) Kiểm thử vào/ra (các file, đệm lệnh đóng mở) • c) Kiểm thử cấu trúc liệu cục (khai báo sử dụng biến) • d) Kiểm thử xử lý (các phép tốn tính đắn kết quả) • e) Kiểm thử điều kiện logic • f) Kiểm thử sai tiềm ẩn (về ngoại lệ, mô tả) • g) Kiểm thử giá trị biên CuuDuongThanCong.com https://fb.com/tailieudientucntt a Kiểm thử liệu qua giao diện • Kiểm thử dòng liệu qua giao diện module liên quan đến định lượng định dạng biến module sử dụng giao diện • Đặc trưng cụ thể: – Số lượng? – Định dạng? CuuDuongThanCong.com https://fb.com/tailieudientucntt a Kiểm thử liệu qua giao diện • Các đặc trưng qua giao diện là: • Số tham số= số đối số? • Tính chất tham số= tính chất đối số • Đơn vị tham số= đơn vị đối số • Số đối số truyền gọi module= số tham số đầu vào module? • Thứ tự truyền tham số ko xác … • Ví dụ: String calc_day(date d) {…} Void calc_day_test() { date d; string s; … d= calc_day(s);// truyền tham số ko xác … } CuuDuongThanCong.com https://fb.com/tailieudientucntt 10 3.2.3 Kiểm thử từ xuống • Ưu điểm: – Phát sớm lỗi thiết kế: dễ dàng phát lỗi phát triển nhầm, thiếu chức so với đặc tả, làm giảm chi phí cho việc thiết kế cài đặt lại – Có phiên hoạt động sớm: kiểm thử từ xuống ln đảm bảo có phiên hoạt động sớm, thẩm định tính dùng sản phẩm dùng để huấn luyện người dùng • Nhược điểm: – Tạo cuống phức tạp, dẫn tới việc khơng kiểm thử đầy đủ chức module 33 CuuDuongThanCong.com https://fb.com/tailieudientucntt 3.3 Kiểm thử hệ thống • Kiểm thử hệ thống: – Tìm kiếm lỗi, trọng tâm đánh giá hoạt động, thao tác, tin cậy yêu cầu khác liên quan đến chất lượng toàn hệ thống – Mức kiểm thử đặc biệt thích hợp cho việc phát lỗi giao tiếp với phần mềm phần cứng bên ngoài, chẳng hạn lỗi "tắc nghẽn" (deadlock) chiếm dụng nhớ – Đòi hỏi nhiều thời gian, cơng sức, thiết bị… • Mục đích: kiểm thử thiết kế tồn hệ thống (sau tích hợp) có thỏa mãn u cầu đặt hay khơng tìm • Phương pháp: kiểm thử hộp đen • Người thực hiện: kiểm thử viên 34 CuuDuongThanCong.com https://fb.com/tailieudientucntt 3.3 Kiểm thử hệ thống Khi thực kiểm thử hệ thống: • Hệ thống cần kiểm thử đã hồn thiện • Kiểm thử tích hợp đơn vị đã hồn thành • Sản phẩm tích hợp thiết kế • Các tài liệu đặc tả đã cuối • Các tài liệu hỗ trợ kiểm thử test plan, test case đã hoàn thành 35 CuuDuongThanCong.com https://fb.com/tailieudientucntt 3.4 Kiểm thử chấp nhận • Kiểm thử chấp nhận (aceptance testing) : vận hành hệ thống môi trường người sử dụng • Kiểm thử alpha (alpha testing) – Người dùng thực với số liệu giả lập – Trong môi trường phát triển • Kiểm thử beta (beta testing) – Người dùng thực với số liệu thực – Trong môi trường ứng dụng thực 36 CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểm thử tính • Kiểm thử tính hiểu theo cách đơn giản là: kiểm tra chức phần mềm đáp ứng nhu cầu khách hàng xác định văn đặc tả yêu cầu phần mềm • Áp dụng kỹ thuật black-box • Kiểm thử tính bao gồm – Xem xét lại cấu hình phần mềm theo lược đồ triển khai – kiểm thử alpha – kiểm thử beta CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểm thử tính • Kiểm thử alpha – Được tiến hành nơi sản xuất phần mềm – Nhà phát triển phần mềm quan sát người sử dụng dùng sản phẩm ghi nhận lại lỗi phát sinh để sửa chữa • Kiểm thử beta – Phần mềm kiểm tra bên phạm vi đơn vị sản xuất – Khách hàng trực tiếp sử dụng ghi nhận lỗi để báo lại cho nhà phát triển sửa chữa CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểm thử hướng đối tượng • Về chiến thuật kiểm thử hướng đối tượng theo thứ tự giống kiểm thử cổ điển: kiểm thử đơn vị kiểm thử tích hợp kiểm thử chức kiểm thử toàn hệ thống CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểm thử hướng đối tượng • Khơng thể tách rời tác vụ đối tượng/lớp để kiểm thử – Tác vụ đóng bao lớp – Các lớp override tác vụ • Kiểm thử đơn vị hướng đối tượng tập trung vào lớp kiểm thử hành vi lớp CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểm thử tích hợp hướng đối tượng • Khái niệm sơ đồ phân cấp khơng nhiều ý nghĩa chương trình hướng đối tượng kiểm thử tích hợp theo cách khác • Hai hình thức kiểm thử tích hợp hướng đối tượng – kiểm thử sở thread: tích hợp lớp tạo thành thread để phục vụ cho input chương trình – kiểm thử sở sử dụng: lớp client tích hợp để sử dụng dịch vụ cung cấp lớp server CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểm thử theo kịch • Dựa vào use-case để soạn kịch • Ví dụ: kịch cho hệ thống đăng ký môn học qua WEB Login với username = “e59306547”, password = “6547” Chọn chức đăng ký môn học Chọn nhóm mơn học mơn: CNPM, AI, XLTHS, PTTK, XLSS có nhóm trùng thời khố biểu Nhấn nút Submit Chương trình phải báo lỗi liệt kê nhóm bị trùng thời khoá biểu CuuDuongThanCong.com https://fb.com/tailieudientucntt Nghệ thuật gỡ rối - DEBUG • Gỡ rối trình nhằm loại bỏ lỗi phát trình kiểm tra • Gỡ rối thực kết việc kiểm tra: lỗi phát tìm kiếm ngun nhân sửa lỗi • Có hình thức gỡ rối: brute force, loại trừ nguyên nhân theo vết Nên dùng kết hợp hình thức CuuDuongThanCong.com https://fb.com/tailieudientucntt Nghệ thuật gỡ rối • Gỡ rối cơng việc khó khăn dễ gây tâm lý chán nản nguyên nhân gây lỗi nhiều lại mơ hồ: timeout, độ xác, chủ quan lập trình • Khả gỡ rối gần bẩm sinh người CuuDuongThanCong.com https://fb.com/tailieudientucntt Brute Force • Là phương pháp phổ biến lại hiệu cho việc phát nguyên nhân gây lỗi phần mềm • Triết lý phương pháp là: “Hãy để máy tính tìm lỗi” • Có cách thực hiện: – Lấy liệu nhớ để xem xét – Dùng run-time trace để tìm lỗi – Dùng lệnh WRITE để xuất liệu cần kiểm tra hình • Áp dụng phương pháp tất phương pháp khác thất bại CuuDuongThanCong.com https://fb.com/tailieudientucntt Loại trừ nguyên nhân • Phương pháp dựa nguyên tắc phân chia nhị phân • Cách thực hiện: – Khi lỗi phát hiện, cố gắng đưa danh sách nguyên nhân gây lỗi – Danh sách nghiệm lại để loại bỏ dần nguyên nhân không tìm thấy nguyên nhân khả nghi – Khi liệu kiểm thử tinh chế lại để tiếp tục tìm lỗi CuuDuongThanCong.com https://fb.com/tailieudientucntt Theo vết • Là phương pháp gỡ lỗi phổ biến dùng thành cơng chương trình nhỏ khó áp dụng cho chương trình lớn • Cách thực hiện: bắt đầu dòng mã nguồn có triệu chứng lỗi thực lần ngược trở lại dòng mã nguồn tìm thấy dòng gây lỗi CuuDuongThanCong.com https://fb.com/tailieudientucntt ... b) Kiểm thử vào/ra (các file, đệm lệnh đóng mở) • c) Kiểm thử cấu trúc liệu cục (khai báo sử dụng biến) • d) Kiểm thử xử lý (các phép tốn tính đắn kết quả) • e) Kiểm thử điều kiện logic • f) Kiểm. .. https://fb.com/tailieudientucntt Kiểm thử module • Tiến hành kiểm thử đơn vị nhỏ phần mềm, module mã nguồn, sau thiết kế, mã hố biên dịch thành cơng • Thường dùng kỹ thuật kiểm thử white-box • Có thể tiến hành kiểm thử lúc... khác • Kiểm thử tiến hành người phát triển phần mềm, dự án lớn việc kiểm thử phải tiến hành nhóm độc lập • Kiểm thử sửa lỗi hoạt động độc lập việc sửa lỗi phải phù hợp với chiến thuật kiểm thử CuuDuongThanCong.com