Dưa chuột - Đề cương kịch bản

Scenario outlinevề cơ bản thay thế biến / từ khóa bằng giá trị từ bảng. Mỗi hàng trong bảng được coi là một kịch bản.

Hãy tiếp tục với ví dụ tương tự về tính năng đăng nhập Facebook. Cho đến nay, chúng tôi đã thực hiện một tình huống: Khi cung cấp đúng tên người dùng, đăng nhập thành công. Bây giờ, giả sử chúng ta muốn kiểm tra xem đăng nhập có thành công cho cả ba loại đầu vào có thể có, đó là tên người dùng, địa chỉ email hoặc số điện thoại hay không. Để đạt được điều này, chúng ta sẽ cần viết ba kịch bản khác nhau, trong đó mỗi kịch bản sẽ khác nhau với loại đầu vào, đăng nhập thành công. Trong trường hợp này, các tình huống sẽ giống như sau.

Scenario:

Cho phép người dùng điều hướng đến Facebook

Khi tôi nhập đúng tên người dùng và mật khẩu

Sau đó, đăng nhập sẽ thành công

Scenario:

Cho phép người dùng điều hướng đến Facebook

Khi tôi nhập đúng địa chỉ email và mật khẩu

Sau đó, đăng nhập sẽ thành công

Scenario:

Cho phép người dùng điều hướng đến Facebook

Khi tôi nhập đúng số điện thoại và mật khẩu

Sau đó, đăng nhập sẽ thành công

Ở đây, nếu chúng ta quan sát kỹ, đối với ba trường hợp trên: các câu lệnh giống nhau, chỉ có tham số đầu vào (tên người dùng / địa chỉ email / số điện thoại) là thay đổi. Đó là nơi mà tầm quan trọng của phác thảo kịch bản trở thành hình ảnh.

Khi chúng tôi xác định bất kỳ kịch bản nào với phác thảo kịch bản, chúng tôi có thể chỉ định một kịch bản thử nghiệm và ở cuối kịch bản, chúng tôi có thể cung cấp một số đầu vào. Kịch bản sẽ được thực thi nhiều lần với số lượng đầu vào được cung cấp.

Thí dụ

Hãy tạo một ví dụ về phác thảo kịch bản -

Step 1 - Tạo một Maven Test Project có tên là ScenarioOutlineTest

  • Đi tới Tệp → Mới → Khác → Maven → Dự án Maven → Tiếp theo.

  • Cung cấp Id nhóm (Id nhóm sẽ xác định dự án của bạn duy nhất trên tất cả các dự án).

  • Cung cấp Id cấu phần (Id cấu phần là tên của lọ không có phiên bản. Bạn có thể chọn bất kỳ tên nào ở dạng chữ thường).

  • Nhấp vào Kết thúc.

  • Mở pom.xml -

    • Đi tới trình khám phá gói ở phía bên trái của Eclipse.

    • Mở rộng dự án CucumberTest.

    • Định vị tệp pom.xml.

    • Nhấp chuột phải và chọn tùy chọn, Mở bằng “Trình chỉnh sửa văn bản”.

  • Thêm phụ thuộc cho Selenium - Điều này sẽ cho biết Maven, những tệp jar Selenium nào sẽ được tải xuống từ kho lưu trữ trung tâm đến kho lưu trữ cục bộ.

    • Mở pom.xml đang ở chế độ chỉnh sửa, tạo thẻ phụ thuộc (<dependencies> </dependencies>), bên trong thẻ dự án.

    • Bên trong thẻ phụ thuộc, hãy tạo thẻ phụ thuộc (<dependency> </dependency>).

    • Cung cấp thông tin sau trong thẻ phụ thuộc.

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>
  • Thêm phụ thuộc cho Cucumber-Java: Điều này sẽ cho biết Maven, những tệp Cucumber nào sẽ được tải xuống từ kho lưu trữ trung tâm đến kho lưu trữ cục bộ.

    • Tạo thêm một thẻ phụ thuộc.

    • Cung cấp thông tin sau trong thẻ phụ thuộc.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Thêm phụ thuộc cho Cucumber-JUnit: Điều này sẽ cho biết Maven, những tệp Cucumber JUnit nào sẽ được tải xuống từ kho lưu trữ trung tâm đến kho lưu trữ cục bộ.

    • Tạo thêm một thẻ phụ thuộc.

    • Cung cấp thông tin sau trong thẻ phụ thuộc.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Thêm phụ thuộc cho JUnit - Điều này sẽ cho biết Maven, những tệp JUnit nào sẽ được tải xuống từ kho lưu trữ trung tâm đến kho lưu trữ cục bộ.

    • Tạo thêm một thẻ phụ thuộc.

    • Cung cấp thông tin sau trong thẻ phụ thuộc.

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • Thêm phụ thuộc cho JUnit - Điều này sẽ cho biết Maven, những tệp JUnit nào sẽ được tải xuống từ kho lưu trữ trung tâm đến kho lưu trữ cục bộ.

    • Tạo thêm một thẻ phụ thuộc.

    • Cung cấp thông tin sau trong thẻ phụ thuộc.

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • Xác minh mã nhị phân.

    • Khi pom.xml được chỉnh sửa thành công, hãy lưu nó.

    • Đi tới Dự án → Sạch sẽ - Quá trình này sẽ mất vài phút.

Step 2 - Tạo một gói có tên "phác thảo" dưới src/test/java

Step 3 - Tạo một tệp tính năng có tên “outline.feature”

  • Chọn và 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 như “outline.feature”

    • Viết văn bản sau vào tệp và lưu nó.

      Feature - Đề cương kịch bản

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

      Cho phép người dùng đ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

Example -

| username  | password  | 
| username1 | password1 | 
| username2 | password2 |

Note- Ở đây, chú thích ví dụ mô tả phạm vi đầu vào sẽ được cung cấp khi thực thi kịch bản. Kịch bản kiểm tra sẽ được thực hiện cho mỗi đầu vào được cung cấp. Vì vậy, trong ví dụ đã cho, kịch bản thử nghiệm sẽ được thực hiện ba lần.

Step 4 - Tạo tệp định nghĩa bước.

  • Chọn và 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 là stepdefinition.java

  • Viết văn bản sau vào tệp và lưu nó.

package Outline;
 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

import cucumber.annotation.en.Given; 
import cucumber.annotation.en.Then; 
import cucumber.annotation.en.When; 

public class stepdefinition { 
   WebDriver driver = null; 
	
   @Given("^user navigates to facebook$") 
   public void goToFacebook() { 
      driver = new FirefoxDriver(); 
      driver.navigate().to("https://www.facebook.com/"); 
   } 
	
   @When("^I enter 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(); 
   }    
}

Note- Trong đoạn mã trên, chúng ta phải xác định một hàm có hai đối số đầu vào: một tên người dùng và một đối số khác sẽ dành cho mật khẩu. Vì vậy, đối với mỗi bộ đầu vào được cung cấp trong thẻ ví dụ, Bộ GIVEN, WHEN và THEN sẽ được thực thi.

Step 5 - Tạo tệp lớp á hậu.

  • Chọn và 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 như runTest.java

  • Viết văn bản sau vào tệp và lưu nó.

package Outline; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})

public class runTest { }
  • Chạy thử nghiệm bằng cách sử dụng tùy chọn -

    • Lựa chọn runTest.java tệp từ trình khám phá gói.

    • Nhấp chuột phải và chọn tùy chọn ‘Run as’.

    • Chọn thử nghiệm JUnit.

Bạn sẽ quan sát thấy những điều sau đây khi bạn chạy tệp lớp này

  • Facebook mở trong một phiên bản trình duyệt web Firefox mới.

  • Tên người dùng1 và mật khẩu1 sẽ được chuyển làm đầu vào cho trường tên người dùng và mật khẩu.

  • Đăng nhập sẽ được nhấp vào.

  • Thông báo sẽ được hiển thị trên trình duyệt về việc đăng nhập không thành công.

  • Trong bảng điều khiển, bạn sẽ thấy “Test Pass” được in.

  • Kết quả bước 1 đến 5 sẽ được thực hiện lại cho tên người dùng2 và mật khẩu2.

Tóm lại, khi kịch bản không thay đổi nhưng chỉ giá trị dữ liệu bị thay đổi, bạn nên sử dụng bảng dữ liệu phác thảo kịch bản.