Bài giảng Công cụ kiểm thử phần mềm - Bài 7: Kiểm thử đơn vị - Unit Testing cung cấp cho người học các kiến thức: Giới thiệu, tại sao cần kiểm thử đơn vị, unit testing framework, các bước thực hiện, một số thuật ngữ, mock object,... Mời các bạn cùng tham khảo.
Kiểm thử đơn vị - Unit Testing BM Công nghệ phần mềm Khoa Công nghệ thông tin Nội dung 1. Mở đầu 2. Giới thiệu 3. Tại cần kiểm thử đơn vị 4. Unit testing framework 5. Các bước thực 6. Một số thuật ngữ 7. Mock Object 8. Demo 2/4/15 Công cụ kiểm thử phần mềm Mở đầu Hàm %nh khoảng cách Hàm khởi tạo Hàm 5m kiếm ??? ??? Lớp Diem Hàm %nh chu vi Hàm %nh diện %ch 2/4/15 ??? Hàm %nh toán Lớp TamGiac Hàm khởi tạo Hàm khởi tạo Lớp … Hàm đúng hay sai??? Công cụ kiểm thử phần mềm Mở đầu £ Áp dụng kỹ thuật => test case £ Thực thi test case Hàm %nh khoảng cách Hàm khởi tạo Lớp Diem Tương tự cho lớp TamGiac, … Hàm 4nh khoảng cách Thực thi test case 1 Thực thi test case 2 … Hàm khởi tạo Thực thi test case 1 Thực thi test case 2 … Chương trình có nhiều lớp, mỗi lớp nhiều hàm => thực thi bao nhiêu lần??? Công cụ kiểm thử phần mềm 2/4/15 Mở đầu £ Viết code ??? £ Lớp Điểm, hàm tính khoảng cách p Hàm thực thi test case 1: ¡ Khởi tạo điểm => (0, 0) ¡ Khởi tạo điểm => (0, 2) ¡ Gọi hàm tính khoảng cách điểm điểm => kết thực tế ¡ Kết mong đợi = ¡ So sánh kết mong đợi kết thực tế ¡ Tùy vào kết so sánh, xuất pass, fail, error p Tương tự cho test case khác … £ Tương tự cho lớp hàm khác … 2/4/15 Công cụ kiểm thử phần mềm Giới thiệu Hoàn thành ứng dụng Kiểm tra ứng dụng Chỉnh sửa ứng dụng Kiểm thử chấp nhận -‐ Acceptance TesQng Kiểm thử hệ thống -‐ System TesQng Kiểm thử 4ch hợp -‐ IntegraQon TesQng Kiểm thử đơn vị -‐ Unit TesQng 2/4/15 Công cụ kiểm thử phần mềm Tại cần kiểm thử đơn vị £ Đảm bảo chất lượng đơn vị mã nguồn phần mềm £ Phát lỗi sớm chỉnh sửa kịp thời £ … 2/4/15 Công cụ kiểm thử phần mềm Unit testing framework 2/4/15 Công cụ kiểm thử phần mềm Unit testing framework £ £ £ £ £ Thư viện hỗ trợ - Script Dữ liệu - Data driven Thực thi - Run Thống kê - Report Các framework hỗ trợ cho ngơn ngữ lập trình p JUnit - java p NUnit - NET p CPPUnit - C++ p PyUnit - Python p … p xUnit 2/4/15 Công cụ kiểm thử phần mềm Các bước thực Hàm %nh khoảng cách ??? Hàm Kiểm tra … Thực thi hàm kiểm tra Hàm %nh chu vi Báo cáo ??? 2/4/15 Công cụ kiểm thử phần mềm Hàm %nh diện %ch ??? Hàm 5m kiếm ??? 10 Một số thuật ngữ £ Kết hàm kiểm thử £ So sánh: Assert £ Hàm khởi tạo hủy £ Dữ liệu – data driven 2/4/15 Công cụ kiểm thử phần mềm 13 6.1 Kết hàm kiểm thử £ Pass £ Fail £ Error 2/4/15 Công cụ kiểm thử phần mềm 14 6.2 So sánh: assert £ Điều kiện đúng/sai (boolean) isTrue(dieukien) isFalse(dieukien) £ Đối tượng tồn (NULL) isNull(doituong) isNotNull(doituong) 2/4/15 Công cụ kiểm thử phần mềm 15 6.2 So sánh: assert £ Đối tượng giống (same) AreSame(MongDoi, ThucTe) AreNotSame(MongDoi, ThucTe) Hocsinh 1 & hoc sinh 2 £ Đối tượng (equal) AreEqual(MongDoi, ThucTe) Nhanvien 1 & nhan vien 2 AreNoteEqual(MongDoi, ThucTe) £ Số thực (sai số) AreEqual(MongDoi, ThucTe, saiso) 2/4/15 Công cụ kiểm thử phần mềm 16 6.2 So sánh: assert £ Mảng p Số phần tử p Mỗi phần tử £ Kiểm thử ngoại lệ try { exceptionCausingMethod(); // If this point is reached, the expected // exception was not thrown fail("Exception should have occurred"); } catch ( ExceptedTypeOfException exc ) { String expected = "A suitable error message"; String actual = exc.getMessage(); Assert.assertEquals( expected, actual ); } 2/4/15 Công cụ kiểm thử phần mềm 17 6.3 Hàm khởi tạo hủy £ Chạy lần bắt đầu kết thúc hàm £ Chạy lần bắt đầu kết thúc trình kiểm thử £ Thứ tự gọi hàm p p p p p p p p Hàm khởi tạo lớp Hàm khởi tạo Hàm kiểm tra hàm tính chu vi Hàm hủy Hàm khởi tạo Hàm kiểm tra hàm tính diện tích Hàm hủy Hàm hủy lớp 2/4/15 Cơng cụ kiểm thử phần mềm 18 6.4 Data driven £ Đọc liệu trình kiểm thử £ Thực thi nhiều test case giống 2/4/15 Công cụ kiểm thử phần mềm 19 6.4 Data driven 2/4/15 Công cụ kiểm thử phần mềm 20 Mock object £ Hàm thực thi test case hàm tính khoảng cách: p Khởi tạo điểm => (0, 0) p Khởi tạo điểm => (0, 2) p Gọi hàm tính khoảng cách điểm điểm => kết thực tế p Kết mong đợi = p So sánh kết mong đợi kết thực tế p Tùy vào kết so sánh, xuất pass, fail, error => Khó khăn q trình khởi tạo đối tượng 2/4/15 Công cụ kiểm thử phần mềm 21 Mock object £ Mock object (MO): đối tượng ảo £ Mơ tính chất hành vi giống hết đối tượng thực p Truyền vào lệnh vận hành nhằm kiểm tra tính đắn hoạt động bên 2/4/15 Công cụ kiểm thử phần mềm 22 7.1 Thiết kế Mock Object 1. Đưa interface để mô tả đối tượng 2. Viết nội dung cho đối tượng thực dựa interface 3. Trích interface từ đối tượng thật triển khai Mock Object (MO) dựa interface 2/4/15 Cơng cụ kiểm thử phần mềm 23 7.1 Thiết kế Mock Object Interface Real Object Mock Object Tested FuncQon 2/4/15 Công cụ kiểm thử phần mềm 24 7.2 Cài đặt sử dụng £ Thêm tham chiếu tới thư viện chứa lớp Mock Object £ Ví dụ Nunit là: nuint.mocks 2/4/15 Công cụ kiểm thử phần mềm 25 Demo £ NUnit £ JUnit 2/4/15 Công cụ kiểm thử phần mềm 26 Thảo luận 2/4/15 Công cụ kiểm thử phần mềm 27 ... Nunit là: nuint.mocks 2/4/15 Công cụ kiểm thử phần mềm 25 Demo £ NUnit £ JUnit 2/4/15 Công cụ kiểm thử phần mềm 26 Thảo luận 2/4/15 Công cụ kiểm thử phần mềm 27 ... 2/4/15 Công cụ kiểm thử phần mềm 12 Một số thuật ngữ £ Kết hàm kiểm thử £ So sánh: Assert £ Hàm khởi tạo hủy £ Dữ liệu – data driven 2/4/15 Công cụ kiểm thử phần mềm 13 6.1 Kết hàm kiểm thử. .. Kiểm ? ?thử 4ch hợp ? ?-? ?‐ IntegraQon TesQng Kiểm ? ?thử đơn vị ? ?-? ?‐ Unit TesQng 2/4/15 Công cụ kiểm thử phần mềm Tại cần kiểm thử đơn vị £ Đảm bảo chất lượng đơn vị mã nguồn phần