Nhóm thử nghiệm – Bao gồm & Loại trừ (Ví dụ)

TestNG là một khung Kiểm thử bao gồm các loại thiết kế kiểm thử khác nhau như kiểm thử đơn vị, chức năng, đầu cuối, giao diện người dùng và tích hợp.

Bạn có thể chạy một hoặc nhiều gói (gói ở đây có nghĩa là đóng gói một nhóm lớp theo định dạng giám đốc phù hợp) bằng cách tạo XML và chạy nó thông qua maven.

TestNG Nhóm có ví dụ

Chúng tôi sử dụng các nhóm trong Kiểm tra khi nào,

  • Chúng tôi không muốn xác định các phương pháp thử nghiệm riêng biệt trong các lớp khác nhau (tùy thuộc vào chức năng) và
  • Đồng thời muốn bỏ qua (không thực thi) một số test case như thể chúng không tồn tại trong code.
  • Vì vậy, để thực hiện điều này chúng ta phải Nhóm chúng lại. Điều này được thực hiện bằng cách sử dụng cơ chế “bao gồm” và “loại trừ” được hỗ trợ trong testNG.

Trong ví dụ dưới đây, chúng tôi đã trình bày cú pháp cách sử dụng các nhóm trong tệp XML.

@Test (groups = { "bonding", "strong_ties" })

Ở đây chúng tôi đang sử dụng 2 tên nhóm tức là “bonding” và “strong_ties” (đây là những tên logic có thể thay đổi theo ý muốn của bạn).

<groups> thẻ xác định sự bắt đầu của các nhóm trong XML.

Tùy chỉnh XML của bạn để chọn nhóm được đề cập từ các lớp kiểm tra. Dưới đây được đề cập là cú pháp về cách khai báo các nhóm trong tệp XML, vd

 <groups>		
   <run>		
    <include name="bonding" />		
   </run>		
  </groups>		

Vì vậy, chúng ta hãy giả sử rằng có 10 phương pháp kiểm tra trong một lớp.

Trong số họ,

  • 6 phương pháp được gắn thẻ trong nhóm “liên kết” và
  • 4 người thuộc nhóm “strong_ties”

Trong tương lai, chúng ta sẽ thiết lập maven/Java đường dẫn và sử dụng Eclipse IDE để chứng minh cách sử dụng các nhóm bằng cách sử dụng các tệp XML trong Java dựa trên dự án maven.

Tạo XML cho TestNG có thẻ

  • Tệp XML (Ngôn ngữ đánh dấu mở rộng) trong khung Maven chứa thông tin của một hoặc nhiều bài kiểm tra và được xác định bởi nhãn.
  • Thông tin kiểm tra trong XML được thể hiện bằng nhãn và có thể chứa một hoặc nhiều TestNG các lớp học.
  • A Java lớp có chứa @Thử nghiệm chú thích ở trên phương pháp thử nghiệm được định nghĩa là TestNG phương pháp.

Nhiều thẻ được sử dụng theo trình tự để xây dựng testNG xml hoạt động như , Và

  • Đầu tiên là thẻ chứa tên logic xác định thông tin đầy đủ để testNG báo cáo để tạo báo cáo thực thi.
  • Thứ hai là , lưu ý rằng đó là tên logic chứa thông tin của báo cáo thực hiện kiểm thử như đạt, thất bại, bỏ qua các trường hợp kiểm thử và các thông tin khác như tổng thời gian thực hiện và thông tin nhóm
  • Thứ ba làcom.group.guru99.TC_Class1” />, com.group.guru99 là gói được sử dụng và tên Lớp kiểm tra là TC_Class1.
<?xml version="1.0" encoding="UTF-8" ?>	
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">	
 	<suite name="Suite">	
		<test name="Guru 99 Smoke Test Demo">	
			<groups>	
				<run>	
   					 <include name="strong_ties" />	
        		</run>	
       		</groups>	
			<classes>	
					<class name="com.group.guru99.TC_Class1" />	
           	</classes>	
		</test>	
  </suite>	

Chúng tôi sẽ sử dụng XML này cho video sắp tới được nêu trong các phần bên dưới.

“loại trừ” hoặc “bao gồm” trong XML thử nghiệm

Giả sử bạn thấy việc sử dụng cơ chế nhóm phức tạp thì testNG XML hỗ trợ chức năng loại trừ/bao gồm một bài kiểm tra.

Exclude Tag:  Syntax for exclude tag <exclude name="${TEST_CASE_NAME}" />
Include Tag:  Syntax for include tag <include name="${TEST_CASE_NAME}" />

Lưu ý: Chúng tôi có thể bao gồm/loại trừ nhiều trường hợp thử nghiệm cùng một lúc, tính năng này cũng hoạt động với Nhóm.

chạy TestNG Nhóm, bao gồm, loại trừ mã (video demo)

Giải thích về Java Mã và XML với nhóm, loại trừ và bao gồm thẻ trong XML.

Kịch bản thử nghiệm: Khởi chạy trang web Ngân hàng demo Guru99, sau đó xác minh một số nội dung trên trang đăng nhập, nhập thông tin xác thực và xác minh lại một số nội dung mới trên ứng dụng khi đăng nhập.

chạy TestNG Nhóm, bao gồm, loại trừ mã

Lưu ý: Mỗi bước mà bạn viết mã phải được khai báo theo các phương thức riêng biệt, nhưng khi được thực thi, nó sẽ thực thi các phương thức kiểm tra tùy thuộc vào các mục trong tệp XML.

  • Phương pháp 1: Khởi tạo Trình duyệt và khởi chạy URL (tc01LaunchURL())
  • Phương pháp 2: Xác minh tiêu đề trang đăng nhập (tc02VerifyLaunchPage())
  • Phương pháp 3: Nhập tên người dùng và mật khẩu trên mẫu đăng nhập (tc03EnterCredentials())
  • Phương pháp 4: Xác minh sự hiện diện của ID người quản lý trên Bảng điều khiển người dùng (tc04VerifyLoggedInPage())
  • Phương pháp 5: Xác minh thêm một số liên kết trên Bảng điều khiển người dùng (tc05VerifyHyperlinks())

Mã cho kịch bản của chúng tôi:

package com.group.guru99;	

import java.util.concurrent.TimeUnit;	

import org.openqa.selenium.By;	
import org.openqa.selenium.WebDriver;	
import org.openqa.selenium.firefox.FirefoxDriver;	
import org.testng.Assert;	
import org.testng.annotations.Test;	

public class TC_Class1 {	
    public static final WebDriver webDriver = new FirefoxDriver();;	

    String launchPageHeading = "//h3[text()='Guru99 Bank']";	
    final String userName_element = "//input[@name='uid']", password_element = "//input[@name='password']",	
            signIn_element = "//input[@name='btnLogin']";	
    final String userName_value = "mngr28642", password_value = "ydAnate";	
    final String managerID = "//td[contains(text(),'Manger Id')]";	
    final String newCustomer = "//a[@href='addcustomerpage.php']", fundTransfer = "//a[@href='FundTransInput.php']";	

    /**	
     * This test case will initialize the webDriver	
     */	
    @Test(groups = { "bonding", "strong_ties" })	
    public void tc01LaunchURL() {	
        webDriver.manage().window().maximize();	
        webDriver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);	
        webDriver.get("http://www.demo.guru99.com/V4/");	
    }	

    /**	
     * Will check the presence of Heading on Login Page	
     */	
    @Test(groups = { "bonding" })	
    public void tc02VerifyLaunchPage() {	
        Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(),	
                "Home Page heading is not displayed");	
        System.out.println("Home Page heading is displayed");	
    }	

    /**	
     * This test case will enter User name, password and will then click on	
     * signIn button	
     */	
    @Test(groups = { "bonding", "strong_ties" })	
    public void tc03EnterCredentials() {	
        webDriver.findElement(By.xpath(userName_element)).sendKeys(userName_value);	
        webDriver.findElement(By.xpath(password_element)).sendKeys(password_value);	
        webDriver.findElement(By.xpath(signIn_element)).click();	
    }	

    /**	
     * This test case will verify manger's ID presence on DashBoard	
     */	
    @Test(groups = { "strong_ties" })	
    public void tc04VerifyLoggedInPage() {	
        Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(),	
                "Manager ID label is not displayed");	
        System.out.println("Manger Id label is displayed");	
    }	

    /**	
     * This test case will check the presence of presence of New customer link	
     * And FundTransfer link in Left pannel	
     */	
    @Test(groups = { "bonding" })	
    public void tc05VerifyHyperlinks() {	
        Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(),	
                "New customer hyperlink is not displayed");	
        System.out.println("New customer hyperlink is displayed");	

        Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(),	
                "Fund Transfer hyperlink is not displayed");	
        System.out.println("Fund Transfer hyperlink is displayed");	
    }	

}	

Xin lưu ý: Thông tin xác thực chỉ có hiệu lực trong 20 ngày, vì vậy nếu bạn cố chạy mã trên máy cục bộ của mình, bạn có thể gặp phải lỗi thông tin xác thực không hợp lệ.

Giải thích mã:

Như đã đề cập ở trên, chúng tôi đã tạo 5 trường hợp thử nghiệm để thực hiện từng hành động theo các phương pháp độc lập.

Đối với mọi phương thức, chúng tôi đã liên kết một tham số nhóm với một số giá trị.

Về cơ bản, đây là tên của các nhóm phân biệt, tức là “strong_ties” & “bonding”.

  • Phương thức thứ nhất và thứ ba được gắn thẻ vào “liên kết”, “strong_ties”, có nghĩa là nếu XML được cập nhật trong bất kỳ nhóm nào thì điều này Trường hợp thử nghiệm sẽ chạy.
  • Phương thức thứ hai chỉ được gắn thẻ vào nhóm “liên kết”, điều đó có nghĩa là nếu XML được cập nhật với nhóm liên kết. Chỉ trong trường hợp đó trường hợp thử nghiệm này sẽ chạy.
  • Trường hợp thử nghiệm thứ tư được gắn thẻ vào nhóm strong_ties, có nghĩa là trường hợp thử nghiệm này sẽ chỉ chạy nếu XML được cập nhật với tên nhóm strong_ties.
  • Trường hợp thử nghiệm cuối cùng nhưng không kém phần thứ năm được gắn vào nhóm liên kết, có nghĩa là trường hợp thử nghiệm này sẽ chỉ chạy nếu XML được cập nhật với tên nhóm liên kết.

Vì vậy, về tổng thể, chúng tôi có 4 kịch bản;

Kịch bản 1: Chúng tôi muốn chạy tất cả các trường hợp thử nghiệm bất kể tên nhóm. Trong trường hợp này, chúng tôi sẽ xóa thẻ Nhóm khỏi việc chạy XML.

Kịch bản 2: Chúng tôi muốn chạy một số thử nghiệm chỉ liên quan đến một trong hai nhóm, ví dụ như strong_ties hoặc liên kết. Xin vui lòng tham khảo:

  • Trong video này, tham số Nhóm được nhận xét khi chạy XML. Do đó, bạn sẽ thấy tất cả các trường hợp thử nghiệm đã được thực thi.
  • Tiếp theo video, bây giờ chúng tôi đã đưa tên nhóm vào XML, bạn chỉ có thể thấy các trường hợp thử nghiệm cụ thể cho nhóm đó chỉ đang chạy.

Kịch bản 3: Chúng tôi đang sử dụng cơ chế Loại trừ để loại trừ trường hợp thử nghiệm. Vui lòng tham khảo video

  • Bạn thấy rằng chúng tôi đã sử dụng loại trừ một số trường hợp thử nghiệm (tc02) bằng cách viết tên của chúng trong XML đang chạy. Trong kết quả cuối cùng, các trường hợp thử nghiệm được đề cập đã không chạy.

Kịch bản 4: Cuối cùng, chúng tôi đang sử dụng cơ chế kiểm tra bao gồm để bao gồm các trường hợp kiểm tra (tc01LaunchURL, tc03EnterCredentials và tc05VerifyHyperlinks). Vui lòng tham khảo video

Trong video này, bạn sẽ thấy các trường hợp kiểm thử được đề cập trong XML chỉ chạy trong quá trình thực hiện kiểm thử.

Vui lòng tải xuống mã từ mã cho ví dụ trên-

Tải xuống đoạn mã trên

Kết luận

Ở đây chúng ta đã học được một cách tương đối mới để chạy các trường hợp thử nghiệm sử dụng XML trong dự án Maven.

Chúng tôi bắt đầu bằng cách giới thiệu ngắn gọn về testNG và tiếp tục với thông số kỹ thuật đầy đủ của Nhóm, loại trừ và bao gồm.