1. Trang chủ
  2. » Công Nghệ Thông Tin

Kiểm thử phần mềm với JUnit

56 1.4K 34

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Cấu trúc

  • LỜI CẢM ƠN

  • Phần 1: Mở đầu

    • 1. Tên đề tài

    • 2. Lí do lựa chọn đề tài

    • 3. Mục đích

    • 4. Bố cục

    • 5. Phương pháp

  • Phần 2: Nội dung

    • Chương 1: Cơ sở lý thuyết

      • 1.1 Tổng quan về kiểm thử phần mềm

      • 1.2 Kiểm thử tự động

      • 1.3 Kiểm thử đơn vị

    • Chương 2: Kiểm thử với JUnit

      • 2.1 Junit là gì?

      • 2.2 Lợi ích của Junit

      • 2.3 Cách sử dụng cơ bản

      • 2.4 Junit-API (Giao diện lập trình ứng dụng)

      • 2.5 Tổ chức các phép thử

      • 2.6 Viết bài kiểm tra

    • Chương 3: Cài đặt và Demo

      • 3.1 Cài đặt

      • 3.2 Demo trên Netbeans

  • Phần 3: Kết luận

  • Tài liệu tham khảo

Nội dung

Mục lục LỜI CẢM ƠN Phần 1: Mở đầu 1. Tên đề tài 2. Lí do lựa chọn đề tài 3. Mục đích 4. Bố cục 5. Phương pháp Phần 2: Nội dung Chương 1: Cơ sở lý thuyết 1.1 Tổng quan về kiểm thử phần mềm 1.2 Kiểm thử tự động 1.3 Kiểm thử đơn vị Chương 2: Kiểm thử với JUnit 2.1 Junit là gì? 2.2 Lợi ích của Junit 2.3 Cách sử dụng cơ bản 2.4 JunitAPI (Giao diện lập trình ứng dụng) 2.5 Tổ chức các phép thử 2.6 Viết bài kiểm tra Chương 3: Cài đặt và Demo 3.1 Cài đặt 3.2 Demo trên Netbeans Phần 3: Kết luận Tài liệu tham khảo

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THƠNG TIN KIỂM THỬ PHẦN MỀM Đề tài: Tìm hiểu kiểm thử phần mềm với JUnit GIÁO VIÊN HƯỚNG DẪN : NGUYỄN ĐỨC LƯU NHÓM THỰC HIỆN : NHÓM 20 LỚP : ĐH KHMT1- K9 Hà Nội, 2017 TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN KIỂM THỬ PHẦN MỀM Đề tài: Tìm hiểu kiểm thử phần mềm với JUnit GIÁO VIÊN HƯỚNG DẪN : NGUYỄN ĐỨC LƯU NHÓM THỰC HIỆN : NHÓM 20 LỚP : ĐH KHMT1- K9 SINH VIÊN THỰC HIỆN: TRẦN VĂN SƠN NGÔ VĂN KHÁNH NGUYỄN VĂN HIỂN Hà Nội, 2017 Mục lục LỜI CẢM ƠN Trong suốt trình học tập làm tập lớn, nhóm 20 nhận hướng dẫn, giúp đỡ nhiệt tình q thầy khoa Cơng nghệ thông tin trường Đại học Công nghiệp Hà Nội bạn mơn để hồn thành đề tài nghiên cứu nhóm Với lòng kính trọng biết ơn sâu sắc, nhóm 20 xin bày tỏ lời cảm ơn chân thành tới thầy Nguyễn Đức Lưu – người thầy hết lòng giúp đỡ, dạy bảo, động viên tạo điều kiện thuận lợi cho nhóm suốt q trình học tập hồn thành tập lớn nhóm, tất thầy cô khoa, trường bạn bè mơn giúp đỡ nhóm q trình học tập Những đóng góp người kinh nghiệm quý báu giúp cho thành viên nhóm có dự tính sau làm đồ án tốt nghiệp sau tốt nghiệp Chúng em xin chân thành cảm ơn! Nhóm thực Nhóm 20 Phần 1: Mở đầu Tên đề tài Tìm hiểu kiểm thử phần mềm với JUnit Lí lựa chọn đề tài Ngày công nghệ thông tin ngày phát triển nhanh chóng, kéo theo hệ thống mạng phần mềm gia tăng số lượng theo quy mô rộng chất lượng phần mềm theo chiều sâu Nhưng từ nảy sinh nhiều vấn đề lỗi hỏng hóc phần mềm khơng đáng có gây ảnh hưởng nghiêm trọng đến xã hội, kinh tế, Những lỗi tự thân phần mềm bị hỏng không kiểm duyệt kĩ lưỡng trước đưa cho người dùng cuối hay có người cố tình phá hoại nhằm đánh cắp thông tin cá nhân mã số tài khoản ngân hàng, số điện thoại, danh bạ, tin nhắn, Những vấn đề nan giải cấp thiết có xu hướng mở rộng năm gần đây, điển cố máy tính Y2K năm 2000 làm tê liệt nhiều hệ thống máy tính lớn hay có nhiều loại virus phá hoại xuất hiện, công vào lỗ hổng bảo mật phần mềm làm tê liệt nhiều hệ thống phần mềm phần cứng Từ ta dễ dàng nhận phần mềm phát triển ngày phức tạp vấn đề chất lượng dấu hỏi lớn cần xem xét cẩn thận Tuy nhiên, việc kiểm thử chưa thực phổ biến chương trình giảng dạy lập trình cơng nghệ phần mềm số trường đại học nước ta Người lập trình thường xem nhẹ việc kiểm thử, đơn giản cơng việc nhàm chán, gây hứng thú Nhưng kiểm thử hoạt động quan trọng thiếu nhằm phát lỗi chương trình, từ nâng cao suất đảm bảo chất lượng sản phẩm phần mềm Beck Gamma người phát triển công cụ mã nguồn mở JUnit để hỗ trợ việc kiểm thử JUnit framework đơn giản dùng cho việc tạo unit testing tự động, chạy test lặp lặp lại Nó phần họ kiến trúc xUnit cho việc tạo unit testing JUnit chuẩn thực tế cho unit testing Java phổ biến nay.Vì vậy, chúng em chọn đề tài “Tìm hiểu kiểm thử phần mềm với JUnit” đề nghiên cứu hiểu rõ JUnit Mục đích Tập chung nghiên cứu, tìm hiểu, kiểm thử tự động nói chung kiểm thử với JUnit nói riêng Bố cục Chia thành chương: • Chương 1: Lý thuyết kiểm thử kiểm thử tự động • Chương 2: Kiểm thử tự động với JUnit • Chương 3: Cài đặt JUnit Test demo JUnit Phương pháp - Nghiên cứu, tìm hiểu kỹ thuật nội dung kiểm thử tự động JUnit - Sử dụng kiến thức tổng hợp để demo test cho chương trình cụ thể Phần 2: Nội dung Chương 1: Cơ sở lý thuyết 1.1 Tổng quan kiểm thử phần mềm 1.1.1 Khái niệm Kiểm thử phần mềm - hoạt động khảo sát thực tiễn sản phẩm hay dịch vụ phần mềm môi trường chúng dự định triển khai nhằm cung cấp cho người có lợi ích liên quan thơng tin chất lượng sản phẩm hay dịch vụ phần mềm Mục đích kiểm thử phần mềm tìm lỗi hay khiếm khuyết phần mềm nhằm đảm bảo hiệu hoạt động tối ưu phần mềm nhiều ngành khác (Wikipedia) Software testing kĩ thuật phần mềm “ xác minh xác nhận “ (verification and validation hay gọi tắt V&V) Verification (chữ V đầu tiên) trình đánh giá hệ thống thành phần để xác định xem sản phẩm giai đoạn phát triển định đáp ứng điều kiện áp đặt vào lúc bắt đầu giai đoạn hay khơng Các hoạt động Verification bao gồm việc kiểm thử đánh giá Ví dụ phần mềm chơi game Monopoly, xác minh hai người chơi sở hữu nhà Validationis trình đánh giá hệ thống thành phần cuối q trình phát triển để xác định xem đáp ứng yêu cầu quy định Verification Validation Thông qua Verification muốn chắn phần mềm có hành vi mong đợi Ví dụ: Trong game Monopoly, người chơi cộng 200 điểm họ hạ cánh sân qua Go người lập trình lại cài đặt người chơi phải qua Go(?!) Thông qua Validation xác nhận lỗi không với yêu cầu khách hàng không thực suốt trình xây dựng xây dựng phần mềm Validation luôn liên quan tới việc so sánh với yêu cầu khách hàng Ví dụ khách hàng yêu cầu làm cho họ game Monopoly đội ngũ phát triển lại làm đưa cho game Life họ nghĩ game Life hay game Monopoly yêu cầu ban đầu 1.1.2 Vai trò kiểm thử phần mềm - Việc tạo sản phẩm phần mềm phải trải qua nhiều giai đoạn, người ta gọi qui trình phát triển phần mềm, bắt đầu có ý tưởng đưa sản phẩm phần mềm thực thi Khối lượng công việc giai đoạn trình sản xuất phần mềm thay đổi theo thời gian Một sản phẩm phần mềm không đơn giản đoạn mã chương trình mà nhiều phần ẩn đằng sau Vì vậy, việc mắc lỗi khơng xảy lập trình mà xảy cao công đoạn khác qui trình phát triển sản phẩm phần mềm Việc kiểm thử phải tiến hành tất phần tạo nên sản phẩm phần mềm 1.1.3 Các kĩ thuật kiểm thử phần mềmKiểm thử hộp đen (Black Box testing): Dùng để kiểm tra chức mà không xem xét mã nguồn cấu chúc chương trình bên Thường kiểm thử hộp đen quan tâm nhiều đến liệu kiểm thử  đầu vào Kiểm thử hộp trắng (White Box testing): Khác với kiểm thử hộp đen, kiểm thử hộp trắng xem xét module chương trình, luồng thực cơng việc để từ đưa chiến lược kế hoạch cụ thể cho việc  kiểm thử Kiểm thử hộp xám (Grey Box Testing): Đây kĩ thuật kiểm thử dựa đặc tính kiểm thử hộp đen hộp trắng Mục tiêu kiểm thử hộp xám kiểm thử ứng dụng web (web based) 1.1.4 Các giai đoạn hay cấp độ kiểm thử phần mềmKiểm thử đơn vị (Unit test): kiểm thử module nhỏ  chương trình để tìm lỗi khắc phục Kiểm thử tích hợp: sau thực thành công kiểm thử đơn vị, ta tiến hành tích hợp module với kiểm thử toàn khối mã lệnh  tích hợp Kiểm thử hệ thống (System test): kiểm thử toàn  ứng dụng Kiểm thử chấp nhận (Acceptance Test): khâu khách hàng trực tiếp đảm nhận trước bàn giao sản  phẩm thức Kiểm thử hồi quy hoạt động trợ giúp để đảm bảo thay đổi không đưa hành vi lỗi bổ sung khơng mong đợi 1.1.5 Một số loại hình kiểm thử phổ biến Hiện nay, phát triển mạnh mẽ cơng nghệm phần mềm nên có số loại hình kiểm thử tiêu biểu như:  Kiểm thử phần mềm Desktop: ứng dụng cài đặt trực tiếp máy tính cá nhân nhằm thực chức theo yêu cầu người  dùng Đây ứng dụng phổ biến Kiểm thử Web hay kiểm thử đám mây: với lớn mạnh Internet ứng dụng web ngày phát triển dần thay ứng dụng Desktop truyền thống Google Document, Microsoft web apps,  Kiểm thử Mobile: ngày xã hội với phát triển nhanh chóng, thiết bị di động (điện thoại thơng minh, máy tính bảng, ) có số lượng người dùng tăng lên chóng mặt, với số lượng phần mềm phục vụ cho nhu cầu tăng cao lĩnh vực đầy tiềm thách thức công nghệ phần mềm 1.2 Kiểm thử tự động 1.2.1 Kiểm thử tự động gì? Sử dụng cơng cụ kiểm thử tự động để thực thi test cases thay cho người goi kiểm thử tự động Công cụ kiểm thử tự động lấy dự liệu từ file bên (excel, csv, …) nhập vào ứng dụng, so sánh kết mong đợi (từ excel, csv) với kết thực tế xuất báo cáo kết kiểm thử 1.2.2 Ưu điểm nhược điểm kiểm thử tự động 10 Sau tạo đựoc Test class ta viết phương thức test Đối với class ta có phương thức test sau: package Money; import static org.junit.Assert.*; import org.junit.Test; public class MoneyTest { @Test public void testEqualsMoney() { Money m1 = new Money(200, "VND"); Money m2 = new Money(1000, "VND"); assertTrue(m1.equals(new Money(200, "VND"))); assertFalse(m1.equals(m2)); } @Test public void testAddMoney() { Money m1 = new Money(200, "VND"); Money m2 = new Money(1000, "VND"); Money result = m1.AddMoney(m1,m2); Money expected = new Money(1200, "VND"); assertTrue("Result",expected.equals(result)); } } JUnit Test, sau click chuột phải vào test class chọn Run As Junit hỗ trợ hiển thị tín hiệu xanh để báo hiệu cho người lập trình biết TestCase pass, tín hiệu đỏ để báo hiệu fail Với test class kết tín hiệu xanh 42 2.6 Viết kiểm tra Ở thấy ví dụ hồn chỉnh kiểm thử JUnit sử dụng lớp POJO, lớp logic nghiệp vụ, lớp kiểm tra, chạy thử Tạo EmployeeDetails.java C: \> JUNIT_WORKSPACE, lớp POJO public class EmployeeDetails { private String name; private double monthlySalary; private int age; /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { this.name = name; } /** * @return the monthlySalary */ public double getMonthlySalary() { return monthlySalary; 43 } /** * @param monthlySalary the monthlySalary to set */ public void setMonthlySalary(double monthlySalary) { this.monthlySalary = monthlySalary; } /** * @return the age */ public int getAge() { return age; } /** * @param age the age to set */ public void setAge(int age) { this.age = age; } } Lớp EmployeeDetails sử dụng để • Lấy / đặt giá trị tên nhân viên • Lấy / thiết lập giá trị tiền lương hàng tháng nhân viên • Lấy / đặt giá trị tuổi nhân viên Tạo tệp có \JUNIT_WORKSPACE, tên EmpBusinessLogic.java C: chứa logic kinh doanh 44 public class EmpBusinessLogic { // Calculate the yearly salary of employee public double calculateYearlySalary(EmployeeDetails employeeDetails) { double yearlySalary = 0; yearlySalary = employeeDetails.getMonthlySalary() * 12; return yearlySalary; } // Calculate the appraisal amount of employee public double calculateAppraisal(EmployeeDetails employeeDetails) { double appraisal = 0; if(employeeDetails.getMonthlySalary() < 10000){ appraisal = 500; }else{ appraisal = 1000; } return appraisal; } } Lớp EmpBusinessLogic sử dụng để tính tốn • Mức lương hàng năm nhân viên • Số tiền thẩm định nhân viên Tạo tệp có tên TestEmployeeDetails.java C:\JUNIT_WORKSPACE chứa trường hợp thử nghiệm kiểm tra import org.junit.Test; import static org.junit.Assert.assertEquals; public class TestEmployeeDetails { EmpBusinessLogic empBusinessLogic = new EmpBusinessLogic(); EmployeeDetails employee = new EmployeeDetails(); 45 //test to check appraisal @Test public void testCalculateAppriasal() { employee.setName("Rajeev"); employee.setAge(25); employee.setMonthlySalary(8000); double appraisal = empBusinessLogic.calculateAppraisal(employee); assertEquals(500, appraisal, 0.0); } // test to check yearly salary @Test public void testCalculateYearlySalary() { employee.setName("Rajeev"); employee.setAge(25); employee.setMonthlySalary(8000); double salary = empBusinessLogic.calculateYearlySalary(employee); assertEquals(96000, salary, 0.0); } } Lớp TestEmployeeDetails sử dụng để kiểm tra phương thức lớp EmpBusinessLogic Nó • Kiểm tra mức lương hàng năm nhân viên • Kiểm tra số tiền thẩm định nhân viên 46 Tiếp theo, tạo lớp java có tên TestRunner.java C:\JUNIT_WORKSPACE để thực (các) trường hợp kiểm tra import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.Failure; public class TestRunner { public static void main(String[] args) { Result result = JUnitCore.runClasses(TestEmployeeDetails.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println(result.wasSuccessful()); } } Biên dịch trường hợp thử nghiệm lớp Runner thử nghiệm cách sử dụng javac C:\JUNIT_WORKSPACE>javac EmployeeDetails.java EmpBusinessLogic.java TestEmployeeDetails.java TestRunner.java Bây chạy Runner thử nghiệm, mà chạy trường hợp thử nghiệm xác định lớp Test Case cung cấp C:\JUNIT_WORKSPACE>java TestRunner Xác minh đầu true 47 Chương 3: Cài đặt Demo 3.1 Cài đặt a Trên Netbeans  Điều kiện cần: o Netbeans IDE (7.2, 7.3, 7.4, 8.0) o Java Development Kit (JDK): version o JunitSampleSol Project  Cài đặt B1: Mở Netbeans, chọn Team -> Subversion -> Checkout B2: Coppy đường dẫn https://svn.netbeans.org/svn/samples~samples-source-code Và dán vào ô Repository URL, nhấn Next 48 B3: Chọn vị trí lưu thư viện Junit nhấn Finish 49 B4: Kiểm tra thư mục vừa chọn có thư viện Junit hay chưa Thốt Netbeans mở lại Cài đặt hoàn tất! b Trên Eclipse B1:Mở Eclipse, chọn Project ->properties 50 B2: Chọn Java Build Path ->Libraries ->Add Library B3: Chọn Junit ->Finish 51 3.2 Demo Netbeans B1: Nhấn Ctrl+N chọn New File B2: Chọn Unit Tests loại file cần test cột File Types Ví dụ muốn test class chọn Test for Existing Class 52 B3: Chọn Class cần test, nhấn Finish B4: Sau Class test tạo ra, Run Class xem lỗi 53 54 Phần 3: Kết luận  Những vấn đề đạt Trong thời gian học tập tìm hiểu đề tài với định hướng giúp đỡ thầy Nguyễn Đức Lưu, nhóm 20 chúng em đạt kết sau: • Nắm tổng quan kiểm thử phần mềm, phương pháp, kỹ • thuật, cấp độ kiểm thử phần mềm vấn đề liên quan Tìm hiểu nắm lý thuyết kiểm thử tự động với JUnit, ưu • nhược điểm JUnit hàm JUnit Tiến hành cài đặt, tạo test case, test suite chạy test thực tế với JUnit  Hướng phát triển đề tài tương lai Khi nghiên cứu kiểm thử phần mềm nói chung cơng cụ JUnit nói riêng, chúng em hiểu kiểm thử quan trọng quy trình sản xuất phần mềm, đảm bảo chất lượng phần mềm; biết cách thức hoạt động hàm JUnit Tuy nhiên, áp dụng kiến thức tìm hiểu dừng lại vài toán nhỏ Hướng phát triển chúng em là: • Thực kiểm thử mơn hình tốn phần mềm rộng • hơn, phức tạp Tìm hiểu nghiên cứu thêm công cụ kiểm thử tự động, kiểm thử website, kiểm thử tải, kiểm thử sở liệu,… 55 Tài liệu tham khảo Bài giảng điện tử môn “Kiểm thử đảm bảo chất lượng phần mềm”, Th.s Bình Cường, mơn CNPM, viện CNTT&TT, ĐH Bách Khoa Hà Nội Bài giảng điện tử JUnit Youtube tài khoản Hieu Tran Ngoc, Nguyễn Phú McProgramming The Art Of Software Testing – Second Edition – Glenford J.Myers Các trang web tham khảo • https://viblo.asia/ngocnep/posts/qzakzJwWkyO • http://laptrinh.vn/d/174-gioi-thieu-ve-junit.html • https://www.tutorialspoint.com/junit/junit_quick_guide • • • htm http://www.testingvn.com https://netbeans.org/kb/docs/java/junit-intro.html http://junit.org/junit4/ 56 ... đen 1.3.2 Mơ hình kiểm thử đơn vị 1.3.2 Kỹ thuật kiểm thử đơn vị 15 1.3.3 Nội dung kiểm thử đơn vị • • • • • • • Kiểm Kiểm Kiểm Kiểm Kiểm Kiểm Kiểm thử thử thử thử thử thử thử giao diện vào/ra... hiểu, kiểm thử tự động nói chung kiểm thử với JUnit nói riêng Bố cục Chia thành chương: • Chương 1: Lý thuyết kiểm thử kiểm thử tự động • Chương 2: Kiểm thử tự động với JUnit • Chương 3: Cài đặt JUnit. .. phát triển sản phẩm phần mềm Việc kiểm thử phải tiến hành tất phần tạo nên sản phẩm phần mềm 1.1.3 Các kĩ thuật kiểm thử phần mềm  Kiểm thử hộp đen (Black Box testing): Dùng để kiểm tra chức mà

Ngày đăng: 21/11/2017, 14:43

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w