Dưa chuột - Đặc điểm

A Featurecó thể được định nghĩa như một đơn vị hoặc chức năng độc lập của một dự án. Hãy lấy một ví dụ rất phổ biến về một trang mạng xã hội. Tính năng của sản phẩm / dự án này như thế nào? Một số tính năng cơ bản có thể được xác định là -

  • Tạo và xóa người dùng khỏi trang mạng xã hội.

  • Chức năng đăng nhập của người dùng cho trang mạng xã hội.

  • Chia sẻ ảnh hoặc video trên trang mạng xã hội.

  • Gửi yêu cầu kết bạn.

  • Logout.

Bây giờ, rõ ràng là, mỗi chức năng độc lập của sản phẩm đang thử nghiệm có thể được gọi là một tính năng khi chúng ta nói về Cucumber. Cách tốt nhất sau này khi bạn bắt đầu thử nghiệm, đó là trước khi lấy các tập lệnh thử nghiệm, chúng ta nên xác định các tính năng sẽ được thử nghiệm.

Một tính năng thường chứa danh sách các tình huống sẽ được kiểm tra cho tính năng đó. Một tệp trong đó chúng tôi lưu trữ các tính năng, mô tả về các tính năng và tình huống sẽ được kiểm tra được gọi làFeature File. Chúng ta sẽ xem thêm về các tập tin tính năng trong chương sau.

Từ khóa để đại diện cho một tính năng đang được thử nghiệm trong Gherkins là “Tính năng”. Phương pháp hay nhất được đề xuất là viết một mô tả nhỏ về đối tượng địa lý bên dưới tiêu đề đối tượng địa lý trong tệp đối tượng địa lý. Điều này cũng sẽ đáp ứng nhu cầu của một tài liệu tốt.

Thí dụ

Feature - Chức năng đăng nhập cho một trang mạng xã hội.

Người dùng sẽ có thể đăng nhập vào trang mạng xã hội nếu tên người dùng và mật khẩu chính xác.

Người dùng sẽ được hiển thị thông báo lỗi nếu tên người dùng và mật khẩu không chính xác.

Người dùng sẽ được điều hướng đến trang chủ, nếu tên người dùng và mật khẩu chính xác.

Tệp tính năng

Tệp, trong đó các bài kiểm tra Cucumber được viết, được gọi là feature files. Chúng tôi khuyên bạn nên có một tệp tính năng riêng biệt, cho mỗi tính năng đang được thử nghiệm. Phần mở rộng của tệp tính năng cần phải là “.feature”.

Người ta có thể tạo bao nhiêu tệp tính năng nếu cần. Để có một cấu trúc có tổ chức, mỗi đối tượng phải có một tệp đặc trưng.

Ví dụ -

Sr.No Đặc tính Tên tệp tính năng
1 Đăng nhập người dùng userLogin.feature
2 Chia sẻ bài đăng sharePost.feature
3 Tạo tài khoản createAccount.feature
4 Xóa tài khoản deleteAccount.feature

Quy ước đặt tên được sử dụng cho tên đối tượng, tên tệp đối tượng tùy thuộc vào sự lựa chọn của cá nhân. Không có quy tắc cơ bản nào trong Cucumber về tên.

Một tệp tính năng đơn giản bao gồm các từ khóa / phần sau:

  • Feature - Tên của đối tượng địa lý đang thử nghiệm.

  • Description (tùy chọn) - Mô tả về tính năng đang thử nghiệm.

  • Scenario - Kịch bản thử nghiệm là gì.

  • Given - Điều kiện tiên quyết trước khi các bước kiểm tra được thực thi.

  • When - Điều kiện cụ thể cần phù hợp để thực hiện bước tiếp theo.

  • Then - Điều gì sẽ xảy ra nếu điều kiện được đề cập trong WHEN được thỏa mãn.

Thí dụ

Feature - Người dùng đăng nhập trên trang mạng xã hội.

Người dùng sẽ có thể đăng nhập vào trang mạng xã hội khi tên người dùng và mật khẩu chính xác.

Người dùng sẽ được hiển thị thông báo lỗi khi tên người dùng và mật khẩu không chính xác.

Người dùng sẽ được điều hướng đến trang chủ nếu tên người dùng và mật khẩu chính xác.

Outline - Chức năng đăng nhập cho một trang mạng xã hội.

Người dùng nhất định điều hướng đến Facebook. Khi tôi nhập Tên người dùng là "<tên người dùng>" và Mật khẩu là "<mật khẩu>". Sau đó, đăng nhập sẽ không thành công.

| username  | password  |
| username1 | password1 |

* AND từ khóa được sử dụng để hiển thị sự kết hợp giữa hai điều kiện. AND có thể được sử dụng với bất kỳ từ khóa nào khác như GIVEN, WHENTHEN.

Không có chi tiết logic nào được ghi trong tệp tính năng.

Định nghĩa các bước

Chúng tôi đã chuẩn bị sẵn tệp tính năng của mình với các kịch bản thử nghiệm được xác định. Tuy nhiên, đây không phải là công việc hoàn thành được thực hiện. Cucumber không thực sự biết đoạn mã nào sẽ được thực thi cho bất kỳ tình huống cụ thể nào được nêu trong một tệp tính năng.

Điều này cho thấy sự cần thiết của một tệp trung gian - Định nghĩa bước. Tệp định nghĩa các bước lưu trữ ánh xạ giữa mỗi bước của kịch bản được xác định trong tệp tính năng với một mã chức năng sẽ được thực thi.

Vì vậy, bây giờ khi Cucumber thực hiện một bước của kịch bản được đề cập trong tệp tính năng, nó sẽ quét tệp định nghĩa bước và tìm ra hàm nào sẽ được gọi.

Ví dụ về tệp định nghĩa bước

public void goToFacebook() { 
   driver = new FirefoxDriver(); 
   driver.navigate().to("https://www.facebook.com/"); 
} 
@When "^user logs in using Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$"
public void I_enter_Username_as_and_Password_as(String arg1, String arg2) {
   driver.findElement(By.id("email")).sendKeys(arg1);
   driver.findElement(By.id("pass")).sendKeys(arg2);
   driver.findElement(By.id("u_0_v")).click(); 
} 
@Then"^login should be unsuccessful$" 
public void validateRelogin() { 
   if(driver.getCurrentUrl().equalsIgnoreCase(
      "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ 
         System.out.println("Test Pass");
   } else { 
      System.out.println("Test Failed"); 
   } 
   driver.close(); 
}

Vì vậy, với mỗi chức năng, bất kỳ mã nào bạn muốn thực thi với mỗi bước kiểm tra (tức là GIVEN / THEN / WHEN), bạn có thể viết nó trong tệp Step Definition. Đảm bảo rằng mã / chức năng đã được xác định cho từng bước.

Hàm này có thể là các hàm Java, nơi chúng ta có thể sử dụng cả lệnh Java và Selenium để tự động hóa các bước kiểm tra của mình.