Cucumber là gì?
Cucumber là một công cụ kiểm thử tự động dựa trên việc thực thi các functions được mô tả dướng dạng plain-text, để hỗ trợ cho việc viết Behavior Driven Development(BDD). Nói theo cách khác Cucumber là công cụ phần mềm được sử dụng bởi tester để thực hiện các trường hợp kiểm thử kiểm tra hành vi của phần mềm.
Tạo project Cucumber
mvn archetype:generate "-DarchetypeGroupId=io.cucumber" "-DarchetypeArtifactId=cucumber-archetype" "-DarchetypeVersion=7.17.0" "-DgroupId=mycucumberplanet" "-DartifactId=mycucumberplanet" "-Dpackage=<package-name>" "-Dversion=1.0.0-SNAPSHOT" "-DinteractiveMode=false"
Hoặc viết như sau
mvn archetype:generate \
"-DarchetypeGroupId=io.cucumber" \
"-DarchetypeArtifactId=cucumber-archetype" \
"-DarchetypeVersion=7.17.0" \
"-DgroupId=mycucumberplanet" \
"-DartifactId=mycucumberplanet" \
"-Dpackage=<package-name>" \
"-Dversion=1.0.0-SNAPSHOT" \
"-DinteractiveMode=false"
mvn archetype:generate: Đây là lệnh Maven để tạo một dự án mới từ một archetype (mẫu dự án). archetype là một bộ khung của dự án Maven, giúp bạn dễ dàng khởi tạo các dự án theo cấu trúc chuẩn mà không cần viết từ đầu.
-DarchetypeGroupId=io.cucumber: Xác định groupId của archetype bạn muốn sử dụng. Trong trường hợp này, archetype thuộc về Cucumber.
-DarchetypeArtifactId=cucumber-archetype: Đây là Artifact ID của archetype mà bạn muốn sử dụng, ở đây là cucumber-archetype. Nó giúp tạo ra một dự án dựa trên framework Cucumber.
-DarchetypeVersion=7.17.0: Xác định phiên bản của archetype Cucumber. Ở đây, phiên bản 7.17.0 của Cucumber archetype được sử dụng.
-DinteractiveMode=false: Điều này vô hiệu hóa chế độ tương tác, có nghĩa là quá trình tạo dự án sẽ không yêu cầu người dùng nhập thêm bất kỳ thông tin nào. Các thông số đã được cung cấp sẵn thông qua các tham số -D.
Maven archetype
Maven archetype là các mẫu dự án được tạo và cấu hình sẵn, nghĩa là nó sẽ giải phóng chúng ta khỏi những việc như:
- Cấu hình phiên bản Java
- Add các dependency
- Add các plugin Add các lớp test
Ngoài việc tạo bằng command line, bạn có thể dùng IntelliJ IDEA để tạo project
Mở IntelliJ IDEA, chọn menu File → New → Project... → Maven Archetype
Catalog: Maven Central
Archetype: chọn template mà bạn mong muốn, vd: com.github.mkolisnyk:aerial-cucumber-testng-archetype
Version: chọn version cho template
Trong Advanced Settings, điền thông tin GroupId, ArtifactId, Version
Cấu trúc dự án Cucumber với TestNG
Một dự án Cucumber tích hợp với TestNG sẽ có cấu trúc thư mục như sau
your-project-root
│
├── src
│ ├── main
│ │ └── java
│ │ └── *.java
│ ├── test
│ ├── java
│ │ ├── com.nhatkyhoctap
│ │ │ └── yourpackage
│ │ │ ├── stepdefinitions # step definitions
│ │ │ │ └── YourStepDefinitions.java
│ │ │ └── testrunner # Test Runner class
│ │ │ └── TestNGCucumberRunner.java
│ └── resources
│ └── features # *.feature
│ └── yourfeaturefile.feature
│
├── pom.xml
└── ...
Thư mục stepdefinitions
Đây là thư mục chứa các step definitions (định nghĩa các bước kiểm thử). Các file Java trong thư mục này ánh xạ với các bước trong tệp .feature.
Ví dụ: YourStepDefinitions.java sẽ chứa các phương thức tương ứng với các bước Given, When, Then.
Thư mục testrunner
Thư mục này chứa Test Runner, chính là class sẽ chạy các kịch bản kiểm thử bằng cách tích hợp Cucumber với TestNG.
File TestNGCucumberRunner.java thường sẽ như sau:
package com.yourpackage.testrunner;
import io.cucumber.testng.AbstractTestNGCucumberTests;
import io.cucumber.testng.CucumberOptions;
@CucumberOptions(
features = "src/test/resources/features", // path to .feature folder
glue = "com.yourpackage.stepdefinitions", // path to step definitions folder
plugin = {"pretty", "html:target/cucumber-reports.html"} // report plugins
)
public class TestNGCucumberRunner extends AbstractTestNGCucumberTests {
}
Chạy Test Runner
Từ IntelliJ IDEA: chạy file RunCucumberTests.java (nằm trong thư mục testrunner). Kết quả kiểm thử sẽ hiển thị trên console.
Từ Maven:
mvn clean test
Cucumber Tags
Cucumber Tags được sử dụng để kiểm soát việc thực thi các kịch bản (scenarios) hoặc các nhóm kịch bản trong các tập tin .feature của Cucumber. Chúng cho phép bạn nhóm các kịch bản hoặc đặc tả (scenarios) lại với nhau và chỉ định những kịch bản nào nên chạy hoặc không nên chạy trong một lần chạy thử nghiệm nhất định.
Cách sử dụng Cucumber Tags
Định nghĩa Tag trong tập tin .feature
Tags được thêm trực tiếp vào các kịch bản (scenario) hoặc các nhóm kịch bản (scenario outline), và cũng có thể được áp dụng ở cấp độ file để áp dụng cho tất cả các kịch bản trong file đó. Tag luôn bắt đầu bằng ký tự @ theo sau là tên tag (không có khoảng cách)
Ví dụFeature: Login feature
@regression
Scenario: Successful login
Given the user is on the login page
When the user enters valid credentials
Then the user should be redirected to the dashboard
@smoke-test @regression
Scenario: Unsuccessful login with invalid credentials
Given the user is on the login page
When the user enters invalid credentials
Then an error message should be displayed
Sử dụng tag trong Test Runner
Tags có thể được sử dụng trong test runner (ví dụ JUnit hoặc TestNG) để xác định các kịch bản nào sẽ được thực thi.package com.example.testrunner;
import io.cucumber.testng.CucumberOptions;
import io.cucumber.testng.AbstractTestNGCucumberTests;
import org.testng.annotations.Test;
@CucumberOptions(
features = "src/test/resources/features",
glue = "com.example.stepdefinitions",
tags = "@smoke-test",
plugin = {
"pretty",
"html:target/cucumber-html-report.html",
"json:target/cucumber-reports/cukes-json.json",
"testng:target/cucumber-reports/cukes-testng.xml",
"rerun:target/cucumber-reports/failed_scenarios.txt"
}
)
@Test
public class RunCucumberTests extends AbstractTestNGCucumberTests {
}
Các cách sử dụng phổ biến với tags trong Test Runner:
Chạy một tag cụ thể:
tags = "@smoke": Chỉ chạy các kịch bản có gắn tag @smoke.
Chạy nhiều tag (hoặc):
tags = "@smoke or @regression": Chạy các kịch bản có gắn @smoke hoặc @regression.
Chạy nhiều tag (và):
tags = "@smoke and @regression": Chỉ chạy các kịch bản có cả hai tag @smoke và @regression.
Loại trừ tag:
tags = "not @smoke": Loại trừ các kịch bản có gắn tag @smoke.
Tóm lại
- Tạo class Test Runner kế thừa AbstractTestNGCucumberTests.
- Setup feature files, step definitions và plugin trong annotation @CucumberOptions.
- Chạy Test Runner từ IDE hoặc bằng lệnh Maven để kiểm thử Cucumber với TestNG.
Nhận xét
Đăng nhận xét