Bài giảng Bài 2: Kiểm thử phần mềm – ThS. Trần Mạnh Thắng trình bày khái niệm kiểm thử phần mềm; các phương pháp kiểm thử phần mềm; kỹ thuật thiết kế kiểm thử phần mềm; các chiến lược kiểm thử phần mềm; cấp độ kiểm thử phần mềm; xây dựng một ứng dụng có sử dụng một trong các phương pháp, kỹ thuật, chiến lược kiểm thử.
BÀI KIỂM THỬ PHẦN MỀM Giảng viên: ThS Trần Mạnh Thắng v1.1013109225 TÌNH HUỐNG DẪN NHẬP • Như có khái niệm công nghệ phần mềm, pha tiến trình xây dựng mơ hình sản xuất phần mềm… để cơng ty STT sử dụng trình sản xuất sản phẩm phần mềm tuỳ theo quy mô đặc điểm sản phẩm; • Tuy nhiên, phần mềm cơng ty STT sản xuất liệu có đạt yêu cầu chất lượng có đáp ứng theo yêu cầu khách hàng việc phát sinh lỗi khách hàng đưa vào sử dụng sản phẩm cơng ty sản xuất Chính lý mà phải tiến hành kiểm thử phần mềm v1.1013109225 Kiểm thử phần mềm gì? có phương pháp, chiến lược, kỹ thuật cấp độ kiểm thử nào? Nó áp dụng q trình sản xuất phần mềm cơng ty STT? MỤC TIÊU Trình bày khái niệm kiểm thử phần mềm; Trình bày phương pháp kiểm thử phần mềm; Mô tả kỹ thuật thiết kế kiểm thử phần mềm; Trình bày chiến lược kiểm thử phần mềm; Trình bày cấp độ kiểm thử phần mềm; Xây dựng ứng dụng có sử dụng phương pháp, kỹ thuật, chiến lược kiểm thử v1.1013109225 NỘI DUNG v1.1013109225 Khái niệm kiểm thử phần mềm Các phương pháp kiểm thử Các kỹ thuật thiết kế kiểm thử Các chiến lược kiểm thử Các cấp độ việc kiểm thử phần mềm KHÁI NIỆM KIỂM THỬ PHẦN MỀM 1.1 Khái niệm 1.2 Vòng đời kiểm thử phần mềm 1.3 Phân loại kiểm thử v1.1013109225 1.1 CÁC ĐỊNH NGHĨA • Kiểm thử (testing) q trình thực thi chương trình với mục đích tìm lỗi (Glen Myers); • Việc kiểm thử nói đến lỗi, sai sót, hỏng hóc hậu Một phép kiểm thử cách chạy phần mềm theo trường hợp kiểm thử với mục tiêu tìm sai sót giải thích hoạt động xác (Paul Jorgensen); • Kiểm thử thành cơng phát lỗi; kiểm thử không phát lỗi kiểm thử dở (Sue A.Conger- The New SE); • Kiểm thử phần mềm trình khảo sát hệ thống hay thành phần điều kiện xác định, quan sát ghi lại kết quả, đánh giá khía cạnh hệ thống hay thành phần (Theo Bảng giải thuật ngữ chuẩn IEEE Thuật ngữ kỹ nghệ phần mềm- IEEE Standard Glossary of Software Engineering Terminology); • Có thể định nghĩa cách dễ hiểu sau: Kiểm thử phần mềm tiến trình hay tập hợp tiến trình thiết kế để đảm bảo mã hóa máy tính thực theo mà chúng thiết kế để làm, không thực thứ khơng mong muốn Đây pha quan trọng trình phát triển hệ thống, giúp cho người xây dựng hệ thống khách hàng thấy hệ thống đáp ứng yêu cầu đặt hay chưa? v1.1013109225 1.1 CÁC ĐỊNH NGHĨA (tiếp theo) Lưu ý tiến hành kiểm thử: • Chất lượng phần mềm khâu thiết kế định chủ yếu, khơng phải khâu kiểm thử; • Tính dễ kiểm thử phụ thuộc vào cấu trúc chương trình; • Người kiểm thử người phát triển nên khác nhau; • Dữ liệu thử cho kết bình thường khơng có ý nghĩa nhiều, cần có liệu kiểm thử mà phát lỗi; • Khi thiết kế trường hợp thử, không liệu kiểm thử nhập vào, mà phải thiết kế trước liệu kết có; • Khi phát sinh thêm trường hợp thử nên thử lại trường hợp thử trước để tránh ảnh hưởng lan truyền sóng v1.1013109225 1.2 VÒNG ĐỜI CỦA KIỂM THỬ - TESTING LIFE CYCLE Đối tượng phạm vi Kiểm thử chấp nhận Đặc tả chức năng/ Thiết kế lơ gíc Kiểm thử hệ thống Thiết kế Vật lý Kiểm tích hợp Cấu trúc chương trình đặc tả mơđun Kiểm đơn vị Kiểm hồi quy Mã hố mơđun chương trình Tương ứng vòng đời dự án kiểm thử v1.1013109225 1.2 VÒNG ĐỜI CỦA KIỂM THỬ - TESTING LIFE CYCLE (tiếp theo) Lỗi Sửa lỗi Mô tả yêu cầu Giải pháp sửa lỗi Lỗi Sai sót Thiết kế Cơ lập lỗi Lỗi Sai sót Lập trình Phân loại lỗi Hậu Sai sót Kiểm nghiệm v1.1013109225 1.3 PHÂN LOẠI KIỂM THỬ • Theo mức độ chi tiết phận hợp thành phần mềm: Kiểm thử đơn vị (Unit); Kiểm thử hệ thống (System); Kiểm thử tích hợp (Integration) • Theo phương pháp kiểm thử: Kiểm thử hộp đen: Kiểm thử chức năng; Kiểm thử hộp trắng: Kiểm thử cấu trúc v1.1013109225 10 4.1 KIỂM THỬ TỪ TRÊN XUỐNG DƯỚI – TOP-DOWN TEST • Mơđun điều khiển dùng trình điều khiển kiểm thử chính, gắn dần mơ đun từ xuống theo trật tự dòng điều khiển Bắt đầu từ mơ đun điều khiển chính, sau gắn mơ đun phụ trợ vào mô đun điều khiển thượng cấp Có thể theo hai cách: Theo chiều sâu trước; Theo chiều rơng trước • Kiểm thử tiến hành mơđun tích hợp vào hệ thống Các nút thử xong thử tiếp nút khác; • Cần có cuống kéo theo khó khăn dành cho cuống, có chức điều khiển hệ thống v1.1013109225 53 TIẾN TRÌNH KIỂM THỬ TỪ TRÊN XUỐNG Tiến trình gồm bước sau: • Mơ đun điều khiển dung lái kiểm thử (Test Driver) tất mô đun phụ trợ trực tiếp thay cuống (Stub); • Thay dần cuống mô đun thực thi tương ứng; • Sau tích hợp mơ đun đó, tiến hành kiểm thử tương ứng; • Khi hồn thành kiểm thử thay cuống khác mô đun thực (nghĩa quay lại bước 2); • Có thể kiểm thử lại (tồn phần kiểm thử trước - kiểm thử hồi quy) để đảm bảo khơng có sai sinh ra; • Tiếp tục lặp lại bước hai tồn chương trình cấu trúc xây dựng Hệ cần kiểm thử v1.1013109225 Kết hợp theo chiều rộng Kết hợp theo chiều sâu Sơ đồ ví dụ kiểm thử từ xuống 54 4.2 KIỂM THỬ TỪ DƯỚI LÊN (BOTTOM-UP TEST) • Bắt đầu xây dựng kiểm thử từ mơ đun ngun tố; • Việc xử lý có địi hỏi mơ đun phụ trợ mơ đun sẵn sàng (cuống bị loại); • Ln chưa có chương trình chỉnh thể, thiết kế ca kiểm thử dễ khơng cần cuống; • Thực theo bước: Các mô đun mức thấp tích hợp thành cụm thực chức phụ trợ định; Một lái viết để phối hợp đầu vào đầu ca kiểm thử; Kiểm thử cụm đó; Tháo bỏ Driver cụm tổ hợp ngược lên cầu trúc chương trình v1.1013109225 55 VÍ DỤ Vòng v1.1013109225 Vòng Vòng 56 4.3 KIỂM THỬ CỘT TRỤ (BIG BANG TEST) • Tích hợp khơng tăng dần; • Tất các mơđun tổ hợp trước; • Tồn chương trình kiểm thử tổng thể; • Khó khăn: Khó lập lỗi, chữa xong lỗi lỗi lại phát sinh v1.1013109225 57 4.4 KIỂM THỬ KẸP (SANDWICH TEST) Phương pháp kiểm thử hỗn hợp (Sandwich) phương pháp phù hợp nhất: • Tích hợp xuống cho mức cấu trúc chương trình; • Tích hợp lên cho mức phụ thuộc v1.1013109225 58 CÁC CẤP ĐỘ KIỂM THỬ 5.1 Kiểm thử đơn vị 5.2 Kiểm thử tích hợp 5.3 Kiểm thử hệ thống 5.4 Kiểm thử chấp nhận sản phẩm 5.5 Một số cấp độ kiểm thử khác v1.1013109225 59 5.1 KIỂM THỬ ĐƠN VỊ (UNIT TESTING) • Unit Testing việc kiểm thử mức độ thấp phương thức (Method), hàm (Function), lớp (Class) mã nguồn Nhằm đảm bảo thành phần hoạt động yêu cầu; • Việc kiểm tra mức độ thường lập trình viên (Developer) thực q trình mã hóa (Coding, Implement); • Một mơ hình thường ứng dụng với Unit Testing Phát triển theo định hướng kiểm thử (Test-Driven Development): Các Unit Test viết trước dựa theo yêu cầu kết trả ban đầu sai (False); Mã nguồn viết sau kiểm tra tự động Unit Test; Việc phát triển hoàn thành Unit Test trả kết (True) • Trong ISTQB (phiên 2007), khái niệm Unit Testing hiểu Component Testing Lý công việc thực lập trình viên Các tài liệu phân loại quan điểm kiểm thử viên v1.1013109225 60 ĐẶC ĐIỂM CỦA KIỂM THỬ ĐƠN VỊ (UNIT TEST) • Người tiến hành kiểm thử thơng thường người lập trình mơ đun lập trình viên nhóm; • Kiểm thử riêng biệt đơn vị phần mềm; • Số lượng nhiều đơn giản; • Xun suốt thời gian lập trình chu kỳ phần mềm; • Kiểm thử Unit mức thấp tiến trình kiểm thử, thường áp dụng phương pháp kiểm thử hộp trắng; • Thường thực bới nhà phát triển trước mơđun tích hợp với mơ đun khác; • Kết kiểm thử Unit thường tìm khoảng 20% lỗi tất cá lỗi dự án v1.1013109225 61 PHƯƠNG PHÁP GÌ ĐƯỢC ÁP DỤNG CHO KIỂM THỬ ĐƠN VỊ • Nó kiểm thử phần sau: Thử nghiệm giao diện; Khám nghiện cấu trúc liệu cục bộ; Thử nghiệm với điều kiện biên; Các đường độc lập; Các đường xử lý sai • Kiểm thử đơn vị sử dụng kỹ thuật: Kiểm thử đường sở; Kiểm thử vòng lặp; Kiểm thử biên v1.1013109225 62 5.2 KIỂM THỬ TÍCH HỢP • Kiểm thử Tích hợp (Intergration Testing): Là kỹ thuật có tính hệ thống để xây dựng cấu trúc chương trình tiến hành kiểm thử để phát sai liên kết với giao diện • Phải kiểm thử tích hợp vì: Dữ liệu bị qua giao diện; Một mođun có thehẻ có hiệu ứng bất lợi vơ tình lên mơđun khác; Các chức phụ kết hợp lại khơng sinh chức mong muốn; Các điều khơng xác riêng rẽ bị phóng đại đến mức khơng chấp nhận được; Các cấu trúc liệu tồn cục để lộ vấn đề… • Phương pháp áp dụng cho kiểm thử tích hợp Phương pháp “big-bang”; Phương pháp xuống; Phương pháp lên v1.1013109225 63 5.3 KIỂM THỬ HỆ THỐNG Kiểm thử hệ thống (System Testing): • Là mức độ kiểm thử tồn chức hệ thống phần mềm Bao gồm tất thành phần tương tác với nhau, hoạt động môi trường giống môi trường thực tế hệ điều hành, sở liệu, kết nối mạng, khả tương thích với phần mềm khác, … • Kiểm thử hệ thống ý đến vấn đề bảo mật, thân thiện, khả đáp ứng, tốc độ thực hệ thống phần mềm v1.1013109225 64 5.4 KIỂM THỬ CHẤP NHẬN SẢN PHẨM Kiểm thử chấp nhận (Acceptance Testing, User Acceptance Testing): • Mức độ thực phía người dùng với nhóm độc lập với nhóm phát triển Mục đích giai đoạn kiểm tra, đánh giá phần mềm có đáp ứng yêu cầu người dùng đề hay khơng? Có thể triển khai cho công việc thực tế người dùng hay khơng; • Việc người dùng chấp nhận đánh dấu cho kết thúc giai đoạn phát triển, mở giai đoạn triển khai, bảo trì nâng cấp phần mềm • Các loại kiểm thử chấp nhận sản phẩm: Kiểm thử Alpha (Alpha Testing): Do người dùng thực hiện; Trong môi trường quản lý Kiểm thử Beta (Beta Testing): Do người dùng thực hiện; Trong môi trường thực v1.1013109225 65 5.5 MỘT SỐ CẤP ĐỘ KIỂM THỬ KHÁC • Kiểm thử hộp xám (Gray-box Testing): Là hình thức “lai” kiểm thử hộp đen kiểm thử hộp trắng; • Kiểm thử tay (Manual Testing): Là kỹ thuật kiểm thử mà cơng đoạn làm hồn tồn sức người; • Kiểm thử tự động (Automation Testing): Là kỹ thuật kiểm thử với công đoạn tự động hóa máy tính thơng qua “đoạn mã kiểm thử” (Test Script)… v1.1013109225 66 TÓM LƯỢC CUỐI BÀI • Đã trình bày khái niệm kiểm thử, vòng đời kiểm thử mối tương quan trình xấy dựng phần mềm giai đoạn kiểm thử phần mềm; • Đã trình bày phương pháp kiểm thử số ví dụ tương ứng; • Đã trình bày kỹ thuật kiểm thử số dụ tương ứng; • Đã trình bày mức độ kiểm thử số ví dụ tương ứng v1.1013109225 67 ... khái niệm kiểm thử phần mềm; Trình bày phương pháp kiểm thử phần mềm; Mô tả kỹ thuật thiết kế kiểm thử phần mềm; Trình bày chiến lược kiểm thử phần mềm; Trình bày cấp độ kiểm thử phần mềm; Xây... lược kiểm thử v1.1013109225 NỘI DUNG v1.1013109225 Khái niệm kiểm thử phần mềm Các phương pháp kiểm thử Các kỹ thuật thiết kế kiểm thử Các chiến lược kiểm thử Các cấp độ việc kiểm thử phần mềm. .. PHƯƠNG PHÁP KIỂM THỬ 2.1 Kiểm thử tĩnh (Static testing) 2.2 Kiểm thử động (Dynamic testing) v1.1013109225 14 2.1 KIỂM THỬ TĨNH – KIỂM THỬ TRÊN BÀN • Khái niệm: Là phương pháp kiểm thử phần mềm đòi