Selenium dưa chuột

Trong hướng dẫn Selenium trước, chúng tôi đã giới thiệu cho bạn về Selenium Grid, một môi trường thực hiện kiểm thử phân tán để tăng tốc độ thực hiện một lần kiểm thử

Bây giờ, khi kết thúc loạt bài đào tạo về Selenium toàn diện này, chúng ta đang tìm hiểu về kiểm tra Selenium nâng cao và các khái niệm liên quan

Trong hướng dẫn này và hướng dẫn tiếp theo, chúng tôi sẽ giới thiệu cho bạn về Cucumber – khung Phát triển theo định hướng hành vi (BDD) được sử dụng với Selenium để thực hiện kiểm thử chấp nhận

Selenium dưa chuột

Bạn sẽ học được gì

  • giới thiệu dưa chuột
  • Khái niệm cơ bản về dưa chuột
  • Thiết lập dự án dưa chuột
  • Sự kết luận
  • đề xuất đọc

giới thiệu dưa chuột

Dưa chuột là một công cụ dựa trên khung Phát triển theo định hướng hành vi (BDD) được sử dụng để viết các bài kiểm tra chấp nhận cho ứng dụng web. Nó cho phép tự động hóa xác thực chức năng ở định dạng dễ đọc và dễ hiểu (như tiếng Anh thuần túy) cho Nhà phân tích kinh doanh, Nhà phát triển, Người kiểm tra, v.v.

Các tệp tính năng dưa chuột có thể dùng làm tài liệu tốt cho tất cả. Có nhiều công cụ khác như JBehave cũng hỗ trợ khung BDD. Ban đầu, Cucumber được triển khai trong Ruby và sau đó được mở rộng sang Java framework. Cả hai công cụ đều hỗ trợ JUnit bản địa

Phát triển hướng hành vi là một phần mở rộng của Phát triển hướng thử nghiệm và nó được sử dụng để kiểm tra hệ thống thay vì kiểm tra đoạn mã cụ thể. Chúng ta sẽ thảo luận thêm về BDD và phong cách viết bài kiểm tra BDD

Dưa chuột có thể được sử dụng cùng với Selenium, Watir và Capybara, v.v. Cucumber hỗ trợ nhiều ngôn ngữ khác như Perl, PHP, Python, Net, v.v. Trong hướng dẫn này, chúng ta sẽ tập trung vào Cucumber với ngôn ngữ Java

Khái niệm cơ bản về dưa chuột

Để hiểu về dưa leo, chúng ta cần biết hết đặc điểm của dưa leo và công dụng của nó

# 1) Tệp tính năng

Các tệp tính năng là một phần thiết yếu của dưa chuột được sử dụng để viết các bước tự động hóa thử nghiệm hoặc thử nghiệm chấp nhận. Điều này có thể được sử dụng làm tài liệu trực tiếp. Các bước là đặc tả ứng dụng. Tất cả các tệp tính năng kết thúc bằng. tiện ích mở rộng tính năng

Tệp tính năng mẫu

Tính năng. Chức năng đăng nhập Tính năng

Để đảm bảo Chức năng đăng nhập hoạt động,
Tôi muốn chạy thử nghiệm dưa chuột để xác minh rằng nó đang hoạt động

Kịch bản. Chức năng đăng nhập

Người dùng nhất định điều hướng đến SOFTWARETETINGHELP. COM
Khi người dùng đăng nhập bằng Tên người dùng là “NGƯỜI DÙNG” và Mật khẩu là “MẬT KHẨU”
Sau đó, đăng nhập sẽ thành công

Kịch bản. Chức năng đăng nhập

Người dùng nhất định điều hướng đến SOFTWARETETINGHELP. COM
Khi người dùng đăng nhập bằng Tên người dùng là “USER1” và Mật khẩu là “PASSWORD1”
Thông báo lỗi sẽ xuất hiện

#2) Tính năng

Điều này cung cấp thông tin về chức năng kinh doanh cấp cao (Tham khảo ví dụ trước) và mục đích của Ứng dụng được kiểm tra. Mọi người sẽ có thể hiểu mục đích của tệp tính năng bằng cách đọc bước Tính năng đầu tiên. Phần này về cơ bản được giữ ngắn gọn

#3) Kịch bản

Về cơ bản, một kịch bản đại diện cho một chức năng cụ thể đang được thử nghiệm. Bằng cách xem kịch bản, người dùng sẽ có thể hiểu ý định đằng sau kịch bản và nội dung của bài kiểm tra. Mỗi kịch bản nên tuân theo định dạng nhất định, khi nào và sau đó. Ngôn ngữ này được gọi là "dưa chuột"

  1. Được. Như đã đề cập ở trên, đã cho chỉ định các điều kiện trước. Về cơ bản nó là một trạng thái đã biết
  2. Khi nào. Điều này được sử dụng khi một số hành động sẽ được thực hiện. Như trong ví dụ trên, chúng ta đã thấy khi người dùng cố gắng đăng nhập bằng tên người dùng và mật khẩu, nó sẽ trở thành một hành động
  3. sau đó. Kết quả hoặc kết quả mong đợi nên được đặt ở đây. Ví dụ. xác minh đăng nhập thành công, điều hướng trang thành công
  4. Tiểu sử. Bất cứ khi nào cần thực hiện bất kỳ bước nào trong từng tình huống thì các bước đó cần được đặt trong Nền. Ví dụ. Nếu người dùng cần xóa cơ sở dữ liệu trước mỗi kịch bản thì các bước đó có thể được đặt ở chế độ nền
  5. Và. Và được sử dụng để kết hợp hai hoặc nhiều loại hành động giống nhau

Thí dụ

Tính năng. Chức năng đăng nhập Tính năng

Kịch bản. Chức năng đăng nhập
Người dùng được điều hướng đến SOFTWARETETINGHELP. COM
Khi người dùng đăng nhập bằng Tên người dùng là “NGƯỜI DÙNG”
Và mật khẩu là “mật khẩu”
Sau đó, đăng nhập phải thành công<
And Home page should be displayed

Ví dụ về nền

Tiểu sử

Người dùng đã đăng nhập với tư cách là quản trị viên cơ sở dữ liệu
Và tất cả các giá trị rác đều bị xóa

#4) Phác thảo kịch bản

Phác thảo kịch bản được sử dụng khi cùng một thử nghiệm phải được thực hiện với các tập dữ liệu khác nhau. Hãy lấy ví dụ tương tự. Chúng tôi phải kiểm tra chức năng đăng nhập với nhiều bộ tên người dùng và mật khẩu khác nhau

Tính năng. Chức năng đăng nhập Tính năng

Để đảm bảo Chức năng đăng nhập hoạt động,
Tôi muốn chạy thử nghiệm dưa chuột để xác minh rằng nó đang hoạt động

Phác thảo kịch bản. Chức năng đăng nhập

Người dùng nhất định điều hướng đến SOFTWARETESTINGHELP. COM
Khi người dùng đăng nhập bằng Tên người dùng là
Sau đó, đăng nhập sẽ thành công

Ví dụ.
. tên tài khoản. mật khẩu mở khóa.
. tom. mật khẩu1.
. Harry. mật khẩu2.
. Jerry. mật khẩu3.

Ghi chú

  1. Như được hiển thị trong ví dụ trên, tên cột được truyền dưới dạng tham số cho câu lệnh When
  2. Thay cho Kịch bản, bạn phải sử dụng Đề cương kịch bản
  3. Các ví dụ được sử dụng để truyền các đối số khác nhau ở định dạng bảng. Ống đứng dùng để ngăn cách 2 cột khác nhau. Một ví dụ có thể chứa nhiều cột khác nhau

#5) Thẻ

Cucumber theo mặc định chạy tất cả các kịch bản trong tất cả các tệp tính năng. Trong các dự án thời gian thực, có thể có hàng trăm tệp tính năng không bắt buộc phải chạy mọi lúc

Ví dụ. Các tệp tính năng liên quan đến kiểm tra khói không cần phải chạy mọi lúc. Vì vậy, nếu bạn đề cập đến một thẻ là không khói trong mỗi tệp tính năng có liên quan đến thử nghiệm khói và chạy thử nghiệm dưa chuột với thẻ @SmokeTest. Cucumber sẽ chỉ chạy những tệp tính năng dành riêng cho các thẻ nhất định. Vui lòng làm theo ví dụ dưới đây. Bạn có thể chỉ định nhiều thẻ trong một tệp tính năng

Ví dụ về việc sử dụng các thẻ đơn

@SmokeTest

Tính năng. Chức năng đăng nhập Tính năng

Để đảm bảo Chức năng đăng nhập hoạt động,
Tôi muốn chạy thử nghiệm dưa chuột để xác minh rằng nó đang hoạt động

Phác thảo kịch bản. Chức năng đăng nhập

Người dùng nhất định điều hướng đến SOFTWARETESTINGHELP. COM
Khi người dùng đăng nhập bằng Tên người dùng là
Sau đó, đăng nhập sẽ thành công

Ví dụ.
. tên tài khoản. mật khẩu mở khóa.
. tom. mật khẩu1.
. Harry. mật khẩu2.
. Jerry. mật khẩu3.

Ví dụ về việc sử dụng nhiều thẻ

Như được hiển thị trong ví dụ dưới đây, cùng một tệp tính năng có thể được sử dụng cho các kịch bản thử nghiệm khói cũng như cho kịch bản thử nghiệm đăng nhập. Khi bạn định chạy tập lệnh của mình để kiểm tra khói, hãy sử dụng @SmokeTest. Tương tự, khi bạn muốn tập lệnh của mình chạy để kiểm tra Đăng nhập, hãy sử dụng thẻ @LoginTest

Bất kỳ số lượng thẻ nào cũng có thể được đề cập cho tệp tính năng cũng như cho kịch bản

@SmokeTest @LoginTest

Tính năng. Chức năng đăng nhập Tính năng

Để đảm bảo Chức năng đăng nhập hoạt động,
Tôi muốn chạy thử nghiệm dưa chuột để xác minh rằng nó đang hoạt động

Phác thảo kịch bản. Chức năng đăng nhập

Người dùng nhất định điều hướng đến SOFTWARETETINGHELP. COM
Khi người dùng đăng nhập bằng Tên người dùng là
Sau đó, đăng nhập sẽ thành công

Ví dụ.
. tên tài khoản. mật khẩu mở khóa.
. tom. mật khẩu1.
. Harry. mật khẩu2.
. Jerry. mật khẩu3.

Tương tự, bạn có thể chỉ định các thẻ để chạy kịch bản cụ thể trong tệp tính năng. Vui lòng kiểm tra ví dụ dưới đây để chạy kịch bản cụ thể

Tính năng. Chức năng đăng nhập Tính năng

Để đảm bảo Chức năng đăng nhập hoạt động,
Tôi muốn chạy thử nghiệm dưa chuột để xác minh rằng nó đang hoạt động

@positiveScenario
Kịch bản. Chức năng đăng nhập

Người dùng nhất định điều hướng đến SOFTWARETETINGHELP. COM
Khi người dùng đăng nhập bằng Tên người dùng là “NGƯỜI DÙNG” và Mật khẩu là “MẬT KHẨU”
Sau đó, đăng nhập sẽ thành công

@negaviveScenario
Kịch bản. Chức năng đăng nhập

Người dùng nhất định điều hướng đến SOFTWARETETINGHELP. COM
Khi người dùng đăng nhập bằng Tên người dùng là “USER1” và Mật khẩu “PASSWORD1”
Sau đó, thông báo lỗi sẽ xuất hiện

#6) Người chạy JUnit

Để chạy tệp tính năng cụ thể, dưa chuột, hãy sử dụng Trình chạy JUnit tiêu chuẩn và chỉ định các thẻ trong @Cucumber. Tùy chọn. Nhiều thẻ có thể được cung cấp bằng cách sử dụng dấu phẩy riêng biệt. Tại đây bạn có thể chỉ định đường dẫn của báo cáo và loại báo cáo bạn muốn tạo

Ví dụ về Junit Runner

import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith; @RunWith(Cucumber.class) @Cucumber.Options(format={"SimpleHtmlReport:report/smokeTest.html"},tags={"@smokeTest"}) Public class JUnitRunner { }

Tương tự, bạn có thể hướng dẫn cho dưa chuột chạy nhiều thẻ. Ví dụ dưới đây minh họa cách sử dụng nhiều thẻ trong dưa chuột để chạy các kịch bản khác nhau

import cucumber.api.junit.Cucumber;
 import org.junit.runner.RunWith;
 @RunWith(Cucumber.class)
 @Cucumber.Options(format={"SimpleHtmlReport:report/smokeTest.html"},tags={"@smokeTest",”@LoginTest”})
 Public class JUnitRunner {
}

#7) Báo cáo dưa chuột

Cucumber tạo định dạng HTML của riêng mình. Tuy nhiên, báo cáo tốt hơn có thể được thực hiện bằng Jenkins hoặc công cụ tre. Chi tiết về báo cáo được đề cập trong chủ đề tiếp theo của dưa chuột

Thiết lập dự án dưa chuột

Giải thích chi tiết về thiết lập dự án dưa chuột có sẵn trong hướng dẫn tiếp theo. Vui lòng tham khảo Hướng dẫn dưa chuột Phần 2 để biết thêm thông tin về thiết lập dự án. Hãy nhớ rằng không cần cài đặt phần mềm bổ sung cho dưa chuột

Triển khai tệp Tính năng

Chúng tôi phải triển khai các bước này trong Java để kiểm tra các tệp tính năng. Cần tạo một lớp chứa các câu lệnh đã cho, khi nào và sau đó. Cucumber sử dụng các chú thích của nó và tất cả các bước được nhúng trong các chú thích đó (đã cho, khi nào, sau đó). Mỗi cụm từ bắt đầu bằng “^” để dưa chuột hiểu bắt đầu bước. Tương tự, mỗi bước kết thúc bằng “$”. Người dùng có thể sử dụng các biểu thức chính quy để chuyển dữ liệu thử nghiệm khác nhau. Biểu thức chính quy lấy dữ liệu từ các bước tính năng và chuyển sang định nghĩa bước. Thứ tự của các tham số phụ thuộc vào cách chúng được truyền từ tệp tính năng. Vui lòng tham khảo hướng dẫn tiếp theo để thiết lập dự án và ánh xạ giữa các tệp tính năng và các lớp Java

Thí dụ

Ví dụ dưới đây là để minh họa cách các tệp tính năng có thể được triển khai

Trong ví dụ này, chúng tôi chưa sử dụng bất kỳ API Selenium nào. Điều này chỉ cho thấy cách dưa chuột hoạt động như một khung độc lập. Vui lòng làm theo hướng dẫn tiếp theo để tích hợp selen với dưa chuột

public class LoginTest {
@Given("^user navigates to SOFTWARETETINGHELP.COM$")
public void navigatePage() {
system.out.println(“Cucumber executed Given statement”);
}
@When("^user logs in using Username as \"(.*)\" and Password \"(.*)\"$")
public void login(String usename,String password) {
system.out.println(“Username is:”+ usename);
system.out.println(“Password is:”+ password);
}
@When("^click the Submit button$")
public void clickTheSubmitButton() {
system.out.println(“Executing When statement”)
}
@Then("^Home page should be displayed$")
public void validatePage() {
system.out.println(“Executing Then statement”)
}
@Then("^login should be successful$")
public void validateLoginSuccess() {
system.out.println(“Executing 2nd Then statement”)
}
}

Khi bạn thực thi lớp người chạy dưa chuột, dưa chuột sẽ bắt đầu đọc các bước của tệp tính năng. Ví dụ: khi bạn thực thi @smokeTest, dưa chuột sẽ đọc Bước tính năng và Đưa ra một tuyên bố về kịch bản. Ngay khi dưa chuột tìm thấy câu lệnh Given, câu lệnh Given tương tự sẽ được tìm kiếm cho các tệp java của bạn. Nếu bước tương tự được tìm thấy trong tệp java thì dưa chuột sẽ thực thi chức năng được chỉ định cho cùng một bước nếu không dưa chuột sẽ bỏ qua bước

Sự kết luận

Trong hướng dẫn này, chúng tôi đã đề cập đến các tính năng của công cụ dưa chuột và cách sử dụng nó trong tình huống thời gian thực.
Cucumber là công cụ được nhiều dự án yêu thích nhất vì nó dễ hiểu, dễ đọc và chứa nhiều chức năng kinh doanh.

Trong chương tiếp theo, chúng tôi sẽ giới thiệu cách thiết lập một dự án dưa chuột – java và cách tích hợp Selenium WebDriver với Cucumber

Chúng ta có thể sử dụng Cucumber và Selenium với Python không?

Bạn sẽ có thể tạo khung thử nghiệm BDD của Cucumber bằng Python, Behave, Selenium WebDriver ,.

Chúng ta có thể sử dụng Selenium với Dưa chuột không?

Selenium và Cucumber là sự kết hợp tuyệt vời khi nói đến tự động hóa ứng dụng web , vì Cucumber cho phép bạn viết bài kiểm tra nhanh chóng bằng ngôn ngữ giống tiếng Anh và Selenium cho phép bạn chạy trên .

Selenium hay dưa chuột cái nào tốt hơn?

Selenium hỗ trợ các câu điều kiện nhưng Cucumber thì không. Test Scripts được viết dựa trên các yêu cầu trong Selenium nhưng với Cucumber, bạn bắt đầu với các kịch bản trước. Tập lệnh Selenium khó phát triển trong khi Cucumber dễ phát triển hơn .

Dưa chuột trong Python là gì?

Cucumber là công cụ thử nghiệm hỗ trợ khung Phát triển theo định hướng hành vi (BDD) . Nó xác định hành vi của ứng dụng bằng cách sử dụng văn bản tiếng Anh đơn giản, được xác định bởi một ngôn ngữ gọi là Gherkin. Cucumber cho phép xác thực chức năng tự động dễ đọc và dễ hiểu.