KIỂM THỬ PHẦN MỀM, NGHIÊN CỨU CÔNG CỤ KIỂM THỬ CUCUMBER, Cucumber là một công cụ kiểm tra hỗ trợ Phát triển theo hướng hành vi (BDD). Nó cung cấp một cách để viết các bài kiểm tra mà bất kỳ ai cũng có thể hiểu được, bất kể kiến thức kỹ thuật của họ là gì. Trong BDD, người dùng (nhà phân tích kinh doanh, chủ sở hữu sản phẩm) trước tiên viết kịch bản hoặc kiểm tra chấp nhận mô tả hành vi của hệ thống từ quan điểm của khách hàng, để chủ sở hữu sản phẩm xem xét và đăng xuất trước khi nhà phát triển viết mã của họ. Cucumber framework sử dụng ngôn ngữ lập trình Ruby .
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN ======***====== BÁO CÁO THỰC NGHIỆM HỌC PHẦN KIỂM THỬ PHẦN MỀM ĐỀ TÀI NGHIÊN CỨU CÔNG CỤ KIỂM THỬ CUCUMBER Giáo viên hướng dẫn: ThS Hoàng Quang Huy Nhóm sinh viên thực hiện: Lớp: 20212IT6013002 Nhóm: 17 Hà Nội, Năm 2022 MỤC LỤC LỜI MỞ ĐẦU .2 Chương I: Tìm hiểu Cucumber .3 1.1 Cucumber Framework: Công cụ kiểm tra Cucumber gì? 1.2 Behavior Driven Development(BDD) hoạt động nào? .3 1.3 Workflow BDD 1.4 Lợi ích 1.5 So sánh Cucumber với công cụ khác .4 Chương 2: Tìm hiểu thành phần cơng cụ Cucumber .5 2.1.Thành phần Cucumber 2.2 What is "Feature File"? - Tệp tính gì? .6 2.3 Feature 2.3.1 Features Cucumber bao gồm thành phần sau: 2.3.2 Step Definitions 2.4 Scenario 2.5 Cucumber – Annotations .10 2.6 Scenario outline 16 2.7 Chương trình test chức “Đăng nhập” 22 2.8 Chương trình test chức “Tìm kiếm” 23 LỜI CẢM ƠN 26 LỜI MỞ ĐẦU Bất kỳ sản phẩm phần mềm hồn thành chắn có lỗi, sản phẩm phầm mềm người xây dựng nên, dù có cẩn trọng, tỉ mỉ đến mức khơng thể đảm bảo sản phẩm tạo khơng có lỗi Do đó, cần người, nhóm tổ chức độc lập kiểm thử xem sản phẩm có vấn đề hay có lỗi hay khơng Để kiểm thử phần mềm cần phải có kế hoạch, chiến lược kiểm thử kỹ thuật phương pháp hiệu cho mức độ kiểm thử Ở đề tài tập lớn này, nhóm em làm nghiên cứu cơng cụ Cucumber Chương I: Tìm hiểu Cucumber 1.1 Cucumber Framework: Cơng cụ kiểm tra Cucumber gì? Cucumber cơng cụ kiểm tra hỗ trợ Phát triển theo hướng hành vi (BDD) Nó cung cấp cách để viết kiểm tra mà hiểu được, kiến thức kỹ thuật họ Trong BDD, người dùng (nhà phân tích kinh doanh, chủ sở hữu sản phẩm) trước tiên viết kịch kiểm tra chấp nhận mô tả hành vi hệ thống từ quan điểm khách hàng, để chủ sở hữu sản phẩm xem xét đăng xuất trước nhà phát triển viết mã họ Cucumber framework sử dụng ngơn ngữ lập trình Ruby 1.2 Behavior Driven Development (BDD) hoạt động nào? Trong BDD, người dùng (business analysts – người phân tích nghiệp vụ, product owners – người sỡ hửu sản phẩm) viết kịch bản(scenarios) acceptance test (kiểm thử chấp nhận) mô tả hành vi hệ thống từ quan điểm khách hàng trước giai đoạn phát triển Cucumber BDD giải hạn chế hay gặp dự án phần mềm: người hiểu hệ thống cách khác BDD có khả tạo kịch test dựa góc nhìn bên phát triển góc nhìn bên khác hàng Ngay từ ban đầu, thành viên dự án thảo luận để tạo kịch trước, sau cài đặt dựa kịch đó, tất kịch test gần gũi với ngơn ngữ tiếng Anh, đóng ln vai trò tài liệu 1.3 Workflow BDD Sau kịch test chạy, Cucumber đọc mã Gherkin từ file feature, sau tìm đoạn mã file step definition mô tả với hành động file feature thực đoạn code, bước chạy code Cucumber kết hợp với framework khác Ruby on Rails, Selenium, Spring, 1.4 Lợi ích Sẽ hữu ích liên quan đến bên liên quan kinh doanh, người dễ dàng đọc mã Công cụ kiểm tra Cucumber tập trung vào trải nghiệm người dùng cuối Phong cách kiểm tra viết cho phép sử dụng lại mã dễ dàng kiểm tra Thiết lập thực nhanh chóng, dễ dàng Công cụ kiểm tra Cucumber công cụ hiệu để kiểm tra 1.5 So sánh Cucumber với cơng cụ khác Chương 2: Tìm hiểu thành phần cơng cụ Cucumber 2.1 Thành phần Cucumber Các project Cucumber ln có thư mục thư mục gốc (root) project tên "features" Đây nơi lưu trữ tất features projects, ngồi cịn có thư mục bổ sung (additional directories) thư mục hỗ trợ (support directories) 2.2 What is "Feature File"? - Tệp tính gì? Tệp tính chứa mơ tả cấp cao Kịch thử nghiệm ngôn ngữ đơn giản Nó biết đến với tên Gherkin Gherkin ngôn ngữ văn tiếng Anh đơn giản 2.3 Feature Feature hiểu đơn vị chức độc lập dự án Ví dụ trang web thương mại điện tử, vài tính (features) xác định như: Đăng nhập tài khoản hệ thống mạng xã hội Lựa chọn hàng hóa Thanh tốn Đăng xuất Trong Cucumber feature hiểu function độc lập sản phẩm Trước viết test scripts nên xác định trước features cần test để mang lại hiệu cao Các tests xây dựng Cucumber gọi feature files có dạng feature, feature cần test nên đặt file feature tương ứng 2.3.1 Features Cucumber bao gồm thành phần sau: Feature: Một tính mô tả tập lệnh thử nghiệm phải thực thi Scenario: Kịch mô tả bước kết mong đợi cho trường hợp thử nghiệm cụ thể Scenario Outline: Có thể thực kịch cho nhiều liệu cách sử dụng phác thảo kịch Dữ liệu cung cấp theo cấu trúc dạng bảng phân tách (II) Given: Nó định ngữ cảnh văn thực thi Bằng cách sử dụng liệu "Cho trước", bước tham số hóa When: "Khi nào" định hành động kiểm tra phải thực Then: Kết mong đợi thử nghiệm biểu thị "Sau đó" 2.3.2 Step Definitions Mặc dù có file feature Cucumber chưa thực biết đoạn mã thực thi cho scenario cụ thể nêu file feature Nó cần file trung gian Step Definition, file ánh xạ bước thực (step), features (Given, When, Then) scenario với đoạn mã (code) chức cần thực thi Step định nghĩa file java "features/step_definitions/*_steps.java" Ví dụ: 2.4 Scenario Scenario cấu trúc lõi Gherkin Kịch test khai báo với từ khóa "Scenario:" theo sau tên kịch Mỗi tính có nhiều scenarios, scenario bao gồm nhiều steps Thí dụ: Scenario outline: Chức đăng nhập cho trang mạng xã hội Người dùng định điều hướng đến Facebook Khi người dùng đăng nhập Tên người dùng "" Mật "", đăng nhập thành cơng Có số mẹo thủ thuật để xác định tình Cucumber cách thơng minh Mỗi bước nên xác định rõ ràng, để không tạo nhầm lẫn cho người đọc Không lặp lại kịch thử nghiệm, cần sử dụng phác thảo kịch để thực lặp lại Phát triển bước thử nghiệm theo cách mà sử dụng nhiều tình phác thảo kịch Trong chừng mực có thể, giữ cho bước hồn tồn độc lập Ví dụ: “Cho biết người dùng đăng nhập” Điều chia thành hai bước: Cho người dùng nhập tên người dùng Nhấp vào đăng nhập Giả sử kịch bạn cần thực nhiều lần với nhiều menu khác Nếu thực nhàm chán cách hay Cucumber cung cấp cấu trúc "Scenario outline" để giải vấn đề Cucumber thay giá trị đầu vào khác thực thi loạt hành vi Như ví dụ đây, Cucumber điền lần chạy thứ lần chạy thứ hai tương ứng giá trị "Dự án" "Task" vào biến Nó tự động hiểu chạy lần với giá trị tương ứng Thêm phụ thuộc cho JUnit - Điều cho biết Maven, tệp JUnit tải xuống từ kho lưu trữ trung tâm đến kho lưu trữ cục Tạo thêm thẻ phụ thuộc Cung cấp thông tin sau thẻ phụ thuộc Xác minh mã nhị phân Khi pom.xml chỉnh sửa thành cơng, lưu Đi tới Dự án → Sạch - Quá trình vài phút Bước Tạo gói có tên Annotation src / test / java Chọn dự án tạo Nhấp chuột phải chọn 'New' Chọn tùy chọn 'Package' Đặt tên 'Annotations' Lưu Bước Tạo tệp tính có tên annotation.feature Chọn nhấp chuột phải vào đường viền gói Nhấp vào tệp 'New' Đặt tên cho tệp outline.feature Viết văn sau vào tệp lưu 13 Bước Tạo tệp định nghĩa bước Chọn nhấp chuột phải vào đường viền gói Nhấp vào tệp 'New' Đặt tên tệp annotation.java Viết văn sau vào tệp lưu 14 Bước Tạo tệp lớp người chạy Chọn nhấp chuột phải vào đường viền gói Nhấp vào tệp 'New' Đặt tên cho tệp, chẳng hạn runTest.java Viết văn sau vào tệp lưu Bước Chạy thử nghiệm cách sử dụng tùy chọn Chọn tệp runTest.java từ trình khám phá gói Nhấp chuột phải chọn tùy chọn 'Chạy với tư cách' Chọn thử nghiệm JUnit Bạn quan sát thấy điều sau bạn chạy tệp lớp này: Facebook mở phiên trình duyệt web Firefox TOM chuyển làm đầu vào cho trường tên người dùng JERRY chuyển làm đầu vào cho trường mật Đăng nhập nhấp vào Thông báo hiển thị trình duyệt việc đăng nhập khơng thành cơng Trong bảng điều khiển, bạn thấy “Thẻ kiểm tra” in Kết bước đến Sẽ thực thi lại cho tên người dùng "" mật "" 15 2.6 Scenario outline Về thay biến / từ khóa giá trị từ bảng Mỗi hàng bảng coi kịch Chúng ta tiếp tục với thí dụ tương tự tính đăng nhập Facebook Cho đến nay, thực tình huống: Sau cung cấp tên người dùng xác, đăng nhập thành cơng Bây giờ, giả sử muốn kiểm tra xem đăng nhập có thành cơng cho ba loại đầu vào có, tên người dùng, địa email số điện thoại hay không Để đạt điều này, cần viết ba Scenario (kịch bản) khác nhau, kịch khác với loại đầu vào, đăng nhập thành công Trong trường hợp này, tình giống sau Scenario: Cho phép người dùng điều hướng đến Facebook Khi nhập tên người dùng mật Sau đăng nhập thành công Scenario: Cho phép người dùng điều hướng đến Facebook Khi nhập địa email mật Sau đăng nhập thành công Scenario: Cho phép người dùng điều hướng đến Facebook Khi nhập số điện thoại mật Sau đăng nhập thành cơng Nếu quan sát kỹ, ba trường hợp trên: câu lệnh giống nhau, có tham số đầu vào (tên người dùng / địa email / số điện thoại) thay đổi Đó nơi mà tầm quan trọng phác thảo kịch trở thành hình ảnh Khi xác định kịch với phác thảo kịch bản, định kịch thử nghiệm nó, 16 cung cấp số đầu vào Kịch thực thi nhiều lần với số lượng đầu vào cung cấp Thí dụ: Bước - Tạo Maven Test Project có tên ScenarioOutlineTest Đi tới File → New → Others → Maven → Maven Project → Next Cung cấp Id nhóm (Id nhóm xác định dự án bạn tất dự án) Cung cấp Id cấu phần (Id cấu phần tên lọ khơng có phiên Bạn chọn tên dạng chữ thường) Nhấp vào Finish Mở pom.xml Đi tới trình khám phá gói phía bên trái Eclipse Mở rộng dự án CucumberTest Định vị tệp pom.xml Nhấp chuột phải chọn tùy chọn, Mở “Text Editor” Thêm phụ thuộc cho Selenium - Điều cho biết Maven, tệp jar Selenium tải xuống từ kho lưu trữ trung tâm đến kho lưu trữ cục Mở pom.xml chế độ chỉnh sửa, tạo thẻ phụ thuộc ( ), bên thẻ dự án Bên thẻ phụ thuộc, tạo thẻ phụ thuộc ( ) Cung cấp thông tin sau thẻ phụ thuộc Thêm phụ thuộc cho Cucumber-Java: Điều cho biết Maven, tệp Cucumber tải xuống từ kho lưu trữ trung tâm đến kho lưu trữ cục Tạo thêm thẻ phụ thuộc Cung cấp thông tin sau thẻ phụ thuộc 17 Thêm phụ thuộc cho Cucumber-JUnit: Điều cho biết Maven, tệp Cucumber JUnit tải xuống từ kho lưu trữ trung tâm đến kho lưu trữ cục Tạo thêm thẻ phụ thuộc Cung cấp thông tin sau thẻ phụ thuộc Thêm phụ thuộc cho JUnit - Điều cho biết Maven, tệp JUnit tải xuống từ kho lưu trữ trung tâm đến kho lưu trữ cục Tạo thêm thẻ phụ thuộc Cung cấp thông tin sau thẻ phụ thuộc Xác minh mã nhị phân Khi pom.xml chỉnh sửa thành cơng, lưu Đi tới Dự án → Sạch - Quá trình vài phút Bước - Tạo gói có tên “phác thảo” src / test / java 18 Bước - Tạo tệp tính có tên “outline.feature” Chọn nhấp chuột phải vào đường viền gói Nhấp vào tệp 'Mới' Đặt tên tệp chẳng hạn “outline.feature” Viết văn sau vào tệp lưu Feature - Scenario Outline Scenario Outline - Chức đăng nhập cho trang mạng xã hội Cho phép người dùng điều hướng đến Facebook Khi nhập Tên người dùng "" Mật "" Sau đăng nhập không thành công Bước - Tạo tệp định nghĩa bước 19