Рубрики
Без рубрики

Как Группировать Тестовые Случаи В Тестировании [с Примерами]

Тестирование – это платформа автоматизации тестирования с открытым исходным кодом, вдохновленная JUnit и NUnit. Структура supp… С тегами testng, java, учебник, автоматизация.

Тестирование – это платформа автоматизации тестирования с открытым исходным кодом, вдохновленная JUnit и NUnit. Платформа поддерживает тестирование на основе данных, параллельное выполнение тестов, тестирование интегрированных классов, предоставляет доступ к отчетам HTML, среди прочего. Тестирование может быть легко интегрировано с Jenkins, Eclipse, IntelliJ IDEA, Maven и т.д.

Аннотации в тестировании полезны для управления потоком выполнения методов тестирования и параллельного выполнения нескольких тестов. Параметризованные тесты TestNG с Selenium WebDriver удобны для запуска тестов(тестов) в различных комбинациях браузеров и платформ. В рамках нашей серии Учебник по тестированию мы рассмотрим, как группировать тестовые случаи в тестировании. Использование групп в тестировании демонстрируется на соответствующих примерах групп тестирования.

Что Такое Группы Тестирования?

Как следует из названия, группировка в тестировании позволяет группировать несколько методов тестирования в именованные группы. С помощью групп в тестировании у вас есть возможность выполнить определенный набор тестов, принадлежащих группе или нескольким группам.

Рассмотрим сценарий, в котором набор тестов включает различные типы тестов, например, модульный тест, интеграционный тест, тест на курение и т.д. Вместо добавления всех тестовых сценариев в один набор тестов (или несколько наборов тестов), вы можете выполнить “группировку” методов тестирования. Это помогает разделить тестовые сценарии на различные категории тестов – тип теста (например, дымовой, функциональный и т. Д.), Тестируемая функциональность (вход, проверка и т. Д.) И комбинации тестов (например, браузер, установленный в Chrome, Firefox в Windows 10 и т. Д.).

Сложные группировки методов тестирования с помощью групп тестирования используются для:

  • Объявление методов, принадлежащих группам.
  • Указание групп, содержащих другие группы.
  • Выполнение тестов в одной или нескольких группах.
  • Включая (или исключая) тесты в группе.
  • Включая определенный набор групп (или регулярных выражений) исключая при этом другую группу
  • Выполнение тестов, зависящих от других тестов, и предотвращение ненужного выполнения тестов в случае сбоя зависимого теста.

Преимущества групп тестирования

Вот некоторые из основных преимуществ групп при тестировании:

  • Гибкость в разделении тестов, тем самым сокращая усилия, связанные с обслуживанием тестов.
  • Позволяет избежать необходимости перекомпиляции кода, если два разных набора тестов выполняются один за другим.

Группы тестирования также могут использоваться для параллельного выполнения тестов на уровне “Тест” или “Метод”. В дальнейших разделах этого руководства “Как группировать тестовые случаи в тестировании” мы продемонстрируем параллельное тестирование в TestNG и Selenium с использованием тестовых групп.

Как группировать тестовые случаи в тестировании?

Группы в тестировании указаны в testng.xml под тегом или . Группы под тегом <набор> применяются ко всем тестам, включенным под тегом <тест> в этом конкретном <наборе>.

Чтобы сгруппировать тесты в исходном коде, необходимо использовать атрибут @groups аннотации @test. Тестирование предоставляет возможность структурировать тест таким образом, чтобы весь тестовый класс принадлежал определенной группе тестирования или несколько методов принадлежали группе TestNG. Кроме того, методы тестирования могут принадлежать к одной или нескольким группам тестирования.

Давайте рассмотрим простой пример, в котором тестовый код содержит три метода тестирования (test_method 1, test_method 2 и test_method 3). Мы создаем две тестовые группы – group1 и group2.

Вот как группировать тестовые случаи в тестировании. Как показано ниже, test_method 1() является частью обеих групп, а test_method 2() и test_method 3() являются частью группы 2 и группы 1 соответственно.

public class Test1 
{
  @Test(groups = { "group1", "group2" })
  public void test_method1()
  {
    //Test implementation
  }

  @Test(groups = {"group2"} )
  public void test_method2()
  {
    //Test implementation
  }

  @Test(groups = {"group1"})
  public void test_method3()
  {
    //Test implementation
  }
}

Группы тестирования вызываются в testng.xml:





    
        
            
              
              
            
        
        
            
        
    

Как видно из testng.xml, группы включены в тег . Поскольку мы хотим выполнить тесты, включенные в обе группы (группа 1 и группа 2), мы включаем необходимые имена групп в тег .


   
    
    
   

Демонстрация: Как использовать группы тестирования

Для демонстрации выполнения тестов в одних и тех же группах, в нескольких группах, включая (и исключая) методы тестирования и т.д., Мы используем сценарии кроссбраузерного тестирования, которые будут выполняться в облачной сетке Selenium/| с помощью LambdaTest.

  • Тестовая группа – 1 (Имя группы – Поиск)

Сценарий тестирования – 1 [ОС – Windows 10, Браузер – Chrome, Последняя версия]

  1. Зайдите в Google.
  2. Введите строку поиска как “Лямбда-тест”.
  3. Подтвердите, если заголовок страницы не соответствует ожидаемому заголовку.

Сценарий тестирования – 2 [ОС – macOS Catalina, Браузер – Safari, Версия – 13.0]

  1. Иди в Бинг.
  2. Введите строку поиска как “Блог лямбда-теста”.
  3. Подтвердите, если заголовок страницы не соответствует ожидаемому заголовку.
  • Тестовая группа – 2 (имя группы – Задача)

Сценарий тестирования – 1 [ОС – Windows 10, Браузер – Firefox, Версия – 68.0]

  1. Перейдите в Приложение для задач лямбда-теста .
  2. Отметьте Первый пункт (li 1) как Выполненный.
  3. Отметьте Второй пункт (li 2) как Выполненный.

Сценарий тестирования – 2 [ОС – macOS Catalina, Браузер – Safari, Версия – 13.0]

  1. Перейдите в Приложение для задач лямбда-теста .
  2. Отметьте Первый пункт (li 1) как Выполненный.
  3. Отметьте Второй пункт (li 2) как Выполненный.
  4. Отметьте Третий пункт (li 3) как Выполненный.

Вот общая структура проекта, которую мы создали в IDE IntelliJ IDEA:

В проекте TestNG Groups мы создаем пакет с именем org.testng group, в котором мы создаем следующие файлы классов (которые содержат реализацию соответствующих сценариев тестирования):

(Реализация тестовых сценариев в “Тестовой группе 1”)

package org.testnggroup;
import org.openqa.selenium.*;
import org.testng.Assert;
import org.testng.IExecutionListener;
import org.testng.annotations.Test;
import java.net.MalformedURLException;

public class TestNG_SearchGroup extends Helper implements IExecutionListener
{
    public static String status = "passed";

    @Override
    public void onExecutionStart()
    {
        System.out.println("onExecutionStart");
    }

   @Test (priority = 1, groups = { "Search" })
    public void test_GoogleSearch() throws InterruptedException, MalformedURLException
    {
        String search_string =" LambdaTest";
        String exp_title = "Most Powerful Cross Browser Testing Tool Online | LambdaTest";

        setupThread("test_GoogleSearch", "test_GoogleSearch",
                "Windows 10", "Chrome", "latest");
        WebDriver webdriver = getDriver();
        webdriver.navigate().to("https://www.google.com");
        webdriver.manage().window().maximize();
        System.out.println("Started session");

        try {
            /* Enter the search term in the Google Search Box */
            WebElement search_box = webdriver.findElement(By.xpath("//input[@name='q']"));
            search_box.sendKeys(search_string);

            search_box.submit();
            Thread.sleep(3000);

            /* Click on the first result which will open up the LambdaTest homepage */
            WebElement lt_link = webdriver.findElement(By.xpath("//span[.='LambdaTest: Most Powerful Cross Browser Testing Tool Online']"));
            lt_link.click();
            Thread.sleep(5000);

            String curr_window_title = webdriver.getTitle();
            Assert.assertEquals(curr_window_title, exp_title);
            status = "passed";
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        if (webdriver != null)
        {
            ((JavascriptExecutor) webdriver).executeScript(+status+"");
            webdriver.quit();
        }
    }

    @Test (priority = 2, groups = { "Search" })
    public void test_BingSearch() throws InterruptedException, MalformedURLException {
        String search_string ="LambdaTest Blog";
        String exp_title = "LambdaTest | A Cross Browser Testing Blog";

        setupThread("test_BingSearch", "test_BingSearch", "MacOS Catalina",
                "Safari", "13.0");
        WebDriver webdriver = getDriver();
        webdriver.navigate().to("https://www.bing.com");
        webdriver.manage().window().maximize();
        System.out.println("Started session");

        try {
            /* Enter the search term in the Google Search Box */
            WebElement search_box = webdriver.findElement(By.xpath("//input[@id='sb_form_q']"));
            search_box.sendKeys(search_string + Keys.ENTER);
            Thread.sleep(3000);

            /* Click on the first result which will open up the LambdaTest homepage */
            WebElement lt_link = webdriver.findElement(By.xpath("//a[.='LambdaTest | A Cross Browser Testing Blog']"));
            lt_link.click();
            Thread.sleep(5000);

            String curr_window_title = webdriver.getTitle();
            Assert.assertEquals(curr_window_title, exp_title);
            status = "passed";
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        if (webdriver != null)
        {
            ((JavascriptExecutor) webdriver).executeScript(+status+"");
            webdriver.quit();
        }
    }

    @Override
    public void onExecutionFinish()
    {
        System.out.println("onExecutionFinish");
    }
}

(Реализация тестовых сценариев в “Тестовой группе 2”)

package org.testnggroup; 
import org.openqa.selenium.*;
import org.testng.IExecutionListener;
import org.testng.annotations.Test;
import java.net.MalformedURLException;

public class TestNG_ToDoGroup extends Helper implements IExecutionListener {
    /* WebDriver driver; */
    /* private ThreadLocal driver = new ThreadLocal<>(); */
    public static String status = "passed";

    @Override
    public void onExecutionStart()
    {
        System.out.println("onExecutionStart");
    }

    @Test (priority = 1, groups = { "ToDo" })
    public void test_Selenium4_ToDoApp_Test1() throws InterruptedException, MalformedURLException
    {
        setupThread("test_Selenium4_ToDoApp_Test1", "test_Selenium4_ToDoApp_Test1",
                "Windows 10", "Firefox", "68.0");
        WebDriver webdriver = getDriver();
        webdriver.navigate().to("https://lambdatest.github.io/sample-todo-app/");
        webdriver.manage().window().maximize();
        System.out.println("Started session");
        Thread.sleep(5000);

        try
        {
            /* Let's mark done first two items in the list. */
            webdriver.findElement(By.name("li1")).click();
            webdriver.findElement(By.name("li2")).click();

            /* Let's add an item in the list. */
            webdriver.findElement(By.id("sampletodotext")).sendKeys("Happy Testing at LambdaTest");
            webdriver.findElement(By.id("addbutton")).click();

            /* Let's check that the item we added is added in the list. */
            String enteredText = webdriver.findElement(By.xpath("/html/body/div/div/div/ul/li[6]/span")).getText();
            if (enteredText.equals("Happy Testing at LambdaTest")) {
                System.out.println("Demonstration is complete");
                status = "passed";
            }
        }
        catch (Exception e)
        {
            System.out.println(e.getMessage());
        }
        if (webdriver != null)
        {
            ((JavascriptExecutor) webdriver).executeScript(+status+"");
            webdriver.quit();
        }
    }

    @Test (priority = 2, groups = { "ToDo" })
    public void test_Selenium4_ToDoApp_Test2() throws InterruptedException, MalformedURLException {
        setupThread("test_Selenium4_ToDoApp_Test2", "test_Selenium4_ToDoApp_Test2",
                "MacOS Catalina", "MicrosoftEdge", "87.0");
        WebDriver webdriver = getDriver();
        webdriver.navigate().to("https://lambdatest.github.io/sample-todo-app/");
        webdriver.manage().window().maximize();
        System.out.println("Started session");
        Thread.sleep(5000);

        try
        {
            /* Let's mark done first three items in the list. */
            webdriver.findElement(By.name("li1")).click();
            webdriver.findElement(By.name("li2")).click();
            webdriver.findElement(By.name("li3")).click();
        }
        catch (Exception e)
        {
            System.out.println(e.getMessage());
        }
        status = "passed";
        if (webdriver != null)
        {
            ((JavascriptExecutor) webdriver).executeScript(+status+"");
            webdriver.quit();
        }
    }

    @Override
    public void onExecutionFinish()
    {
        System.out.println("onExecutionFinish");
    }
}

( Реализация вспомогательных функций для создания экземпляра RemoteWebDriver)

package org.testnggroup;

import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;

public class Helper {
    protected static ThreadLocal driver = new ThreadLocal<>();
    public static String username = "user-name";
    public static String access_key = "access-key";

    public void setupThread (String build, String name, String platformName,
                       String browserName, String browserVersion) throws MalformedURLException
    {
        DesiredCapabilities capabilities = new DesiredCapabilities();

        capabilities.setCapability("build", build);
        capabilities.setCapability("name", name);
        capabilities.setCapability("platformName", platformName);
        capabilities.setCapability("browserName", browserName);
        capabilities.setCapability("browserVersion",browserVersion);
        capabilities.setCapability("tunnel",false);
        capabilities.setCapability("network",true);
        capabilities.setCapability("console",true);
        capabilities.setCapability("visual",true);

        driver.set(new RemoteWebDriver(new URL("http://" + username + ":" + access_key + "@hub.lambdatest.com/wd/hub"), capabilities));
    }

    public WebDriver getDriver()
    {
         return driver.get();
    }

    public void tearDownThread()
    {
        getDriver().quit();
    }
}

Вот три метода, реализованные в Helper.java:

  1. поток настройки: Этот метод принимает пять аргументов (Сборка, Имя, название платформы, имя браузера и версия браузера), которые соответствуют требованиям Генератора возможностей LambdaTest . Кроссбраузерные тесты будут выполняться в сетке Selenium 4.

Он создает экземпляр нового ThreadLocal для каждого тестового класса, поскольку тесты (в файлах двух классов) выполняются параллельно на уровне “Метода”.

  1. getDriver: Этот метод возвращает объект WebDriver в качестве локального потока для параллельных тестов.
  2. Разрывная нить: Этот метод освобождает ресурсы, удерживаемые текущим объектом WebDriver.


    4.0.0

    org.testnggroup
    TestNGGroups
    1.0-SNAPSHOT
    
        UTF-8
    

    
        
        
            org.testng
            testng
            6.9.10
            test
        
        
        
            org.seleniumhq.selenium
            selenium-java
            4.0.0-alpha-7
        
        
        
            org.seleniumhq.selenium
            selenium-chrome-driver
            4.0.0-alpha-7
        
        
        
            org.seleniumhq.selenium
            selenium-remote-driver
            4.0.0-alpha-7
        
        
            io.github.bonigarcia
            webdrivermanager
            4.1.0
        
        
        
            org.slf4j
            slf4j-nop
            1.7.28
            test
        
        
        
            junit
            junit
            4.13
            test
        
        
            com.github.lambdatest
            lambdatest-tunnel-binary
            1.0.4
        
        
        
            com.typesafe.play
            play-mailer_2.13
            8.0.1
        
        
        
            jakarta.mail
            jakarta.mail-api
            2.0.0
        
        
            com.sun.activation
            javax.activation
            1.2.0
            test
        
    

    
        install
        
            
                maven-compiler-plugin
                3.0
                
                    1.8
                    1.8
                
            
            
                org.apache.maven.plugins
                maven-surefire-plugin
                2.12.4
                
                    
                        
                        testng.xml
                    
                
            
            
                org.apache.maven.plugins
                maven-surefire-report-plugin
                3.0.0-M5
            
        
    

Как Запускать Тестовые Случаи В Одной Группе?

В рамках примеров групп тестирования мы рассмотрим наиболее простое использование групп в тестировании. В проекте у вас может быть несколько групп, но вам может быть интересно запускать тесты, принадлежащие определенной группе TestNG. В таких случаях вы можете сгруппировать тесты, чтобы выборочно запускать “все тесты” в определенной группе.

В нашем примере у нас есть две группы тестирования – Поиск и Задание. Давайте рассмотрим, как параллельно запускать тестовые случаи в одной и той же группе (например, Поиск). Параллельное тестирование в Selenium предпочтительнее, чтобы тесты выполнялись быстрее, а также вы могли максимально использовать возможности, предлагаемые облачной сеткой Selenium.

В testng.xml, мы устанавливаем атрибут количества потоков равным 2, а атрибут parallel – “методы”. Поскольку мы хотим запустить тестовые случаи, реализованные в группе “Поиск”, группа включена в тег <выполнить> в разделе <группы>.






    
        
            
                
                
            
        
        
            
            
        
    

В группе тестирования “Поиск” есть два метода тестирования:

  • test_GoogleSearch – Приоритет установлен на “1”.
  • test_BingSearch – Приоритет установлен на “2”.

Указанные групповые тесты будут выполняться параллельно в соответствии с приоритетом, указанным в аннотации @test.

 [..]
    @Test (priority = 1, groups = { "Search" })
    public void test_GoogleSearch() throws InterruptedException, MalformedURLException
    {
        String search_string =" LambdaTest";
        String exp_title = "Most Powerful Cross Browser Testing Tool Online | LambdaTest";

        setupThread("test_GoogleSearch", "test_GoogleSearch",
                "Windows 10", "Chrome", "latest");
        ..............................
        ..............................
        ..............................
    }

    @Test (priority = 2, groups = { "Search" })
    public void test_BingSearch() throws InterruptedException, MalformedURLException 
    {
        String search_string ="LambdaTest Blog";
        String exp_title = "LambdaTest | A Cross Browser Testing Blog";

        setupThread("test_BingSearch", "test_BingSearch", "MacOS Catalina",
                "Safari", "13.0");
        ..............................
        ..............................
        ..............................
    }
    [..]

Как видно на снимке выполнения, два метода тестирования под тегом тестирования – “Поиск” выполняются параллельно:

Ниже показаны снимки выполнения из ИДЕИ и панели мониторинга автоматизации из Лямбда-теста. Это указывает на то, что их тесты были успешно выполнены:

Как Запускать Тестовые Случаи В Нескольких Группах?

Тестирование позволяет запускать методы тестирования, принадлежащие нескольким группам. Имена групп представлены в виде массива в атрибуте groups аннотации @test . В нашем случае у нас есть четыре метода тестирования, которые сгруппированы в две группы тестирования. Поскольку методы тестирования являются частью двух разных классов, эти две группы включены в два отдельных тега .

Методы тестирования двух разных классов выполняются в разных потоках. Поскольку мы установили для атрибута parallel значение “методы”, методы (в соответствии с установленным приоритетом) в соответствующих классах выполняются параллельно.






    
        
            
                
                
            
        
        
            
            
        
    

    
        
            
                
                
            
        
        
            
            
        
    

Сначала методы тестирования в группе “Поиск” выполняются параллельно. После успешного выполнения этих методов методы тестирования в группе тестирования “Что делать” выполняются параллельно.

Вот скриншоты выполнения, которые показывают, что все четыре метода тестирования в группах “Поиск” и “Задача” были выполнены успешно:

Группы Внутри Групп В Тестировании

В этом разделе руководства по тестированию мы рассмотрим, как использовать “Мета-группы” в тестировании. Группы могут включать в себя другие группы. Объединенная группа называется “Мета-группой”. Группы внутри групп при тестировании могут быть полезны в тех случаях, когда “коллекция” тестовых сценариев из разных групп должна выполняться как часть тестового случая.

Для демонстрации того, как группировать тестовые случаи в TestNG, когда группы находятся внутри групп, мы создаем четыре группы тестов – Search1 и Search2 (для включения методов тестирования, демонстрирующих функциональность поиска) и ToDo1 и ToDo2 (для включения методов тестирования, демонстрирующих функциональность приложения Todo).

Ниже показаны модификации кода для создания четырех групп тестирования:

public class TestNG_SearchGroup extends Helper implements IExecutionListener
{
    [..]
   @Test (priority = 1, groups = {"Search1"})
    public void test_GoogleSearch() throws InterruptedException, MalformedURLException
    {
        String search_string =" LambdaTest";
        String exp_title = "Most Powerful Cross Browser Testing Tool Online | LambdaTest";

        setupThread("test_GoogleSearch", "test_GoogleSearch",
                "Windows 10", "Chrome", "latest");
        ...................................................
        ...................................................
        ...................................................
    }

   @Test (priority = 2, groups = {"Search2"})
    public void test_BingSearch() throws InterruptedException, MalformedURLException {
        String search_string ="LambdaTest Blog";
        String exp_title = "LambdaTest | A Cross Browser Testing Blog";

        setupThread("test_BingSearch", "test_BingSearch", "MacOS Catalina",
                "Safari", "13.0");
        ...................................................
        ...................................................
        ...................................................
    }
    [..]
}
public class TestNG_ToDoGroup extends Helper implements IExecutionListener 
{
    [..]
   @Test (priority = 1, groups = {"ToDo1"})
    public void test_Selenium4_ToDoApp_Test1() throws InterruptedException, MalformedURLException
    {
        setupThread("test_Selenium4_ToDoApp_Test1", "test_Selenium4_ToDoApp_Test1",      "Windows 10", "Firefox", "68.0");
        ...................................
        ...................................
        ...................................
    }

    @Test (priority = 2, groups = {"ToDo2"})
    public void test_Selenium4_ToDoApp_Test2() throws InterruptedException, MalformedURLException
    {
        setupThread("test_Selenium4_ToDoApp_Test2", "test_Selenium4_ToDoApp_Test2",     "MacOS Catalina", "MicrosoftEdge", "87.0");
        ...................................
        ...................................
        ...................................
    }
    [..]

}

Новая группа под названием “Группа1” включает методы тестирования, реализованные в группах “Поиск 1” и “Поиск2”. Другая группа, “Группа 2”, включает методы тестирования, реализованные в группах “Dota1” и “Dota2”. Группы Group1 и Group2 включены в состав новой группы под названием “сУпергРуппа”.

Четыре теста, которые являются частью “сУпергРуппы”, выполняются путем включения супергруппы под тегом .






    
        
            
                
                
          
            
                
                
          

            
                
                
          

          
             
          
        
        
            
            
        
    

Четыре метода тестирования, входящие в состав вложенной группы с именем Супергруппа, выполняются параллельно:

Все четыре тестовых сценария в разделе “сУпергРуппа” успешно выполнены:

Как Исключить/Включить Тестовые Случаи С Группами?

Группы тестирования также предоставляют возможность игнорировать сценарии тестирования/методы тестирования с помощью тега <исключить> в разделе <методы>. В аналогичных строках тег в разделе <методы> testng.xml используется для включения методов тестирования в процесс выполнения теста.

  1. Класс группы Testing_Search: Для запуска методов тестирования, имя которых включает “.*Бытие. * “и исключить метод(ы) тестирования, название которого содержит”.*Google. *”, мы используем группы методов следующим образом:

    
        
       
   

Методом сопоставления в классе является test_Bing Поиск() .

  1. Тестирование для группового занятия: Для запуска методов тестирования, имя которых включает “.*TodoApp. * “и исключить метод(ы) тестирования, название которого содержит”.*Тест1. *”, мы используем группы методов следующим образом:

    
        
        
    

Метод сопоставления в классе – test_selenium 4_ToDoApp_Test2() .

Вот снимок выполнения, который указывает, что два соответствующих метода тестирования успешно запущены в облачной сетке Selenium:

Как исключить Группу тестирования?

Платформа тестирования также позволяет как включать, так и исключать их. Исключение групп в тестировании полезно в тех случаях, когда в тестах происходит временная поломка (из-за некоторых недавних изменений), и у вас нет времени их исправить.

Тесты в этих группах могут быть временно деактивированы для последующей повторной активации после устранения неполадок. Группы также могут быть исключены с помощью регулярных выражений.

Для демонстрации исключения групп тестирования мы используем тег в , чтобы включить группы тестирования, соответствующие регулярному выражению “.*Задача. *”. Тег <исключить> в <группах> используется для исключения группы тестирования с именем “Поиск”.







    
        
        
        
        
    
    
      
      
    


Группа тестирования с именем “Todo” соответствует набору критериев (т. е. “.*Сделать. *”) в теге <включить>. С другой стороны, методы тестирования, реализованные в группе Testing_Search, исключаются, поскольку они соответствуют требованиям тега .

Как показано ниже, методы тестирования из соответствующих групп тестирования были успешно выполнены на сетке селена лямбда-теста:

Регулярные выражения и группы тестирования

Тестирование использует регулярные выражения (т. Е. Все, что соответствует”. *” – Точечная звезда), а не подстановочные знаки (т. е. “*”) для выполнения методов тестирования, соответствующих указанному шаблону. Для демонстрации использования регулярных выражений с группами тестирования мы запускаем методы тестирования, которые включают термин “Поиск”.

testng.xml для выполнения тестовых случаев путем сопоставления имен групп с помощью регулярных выражений




    
        
            
        
    
    
        
        
    


Как видно из testng.xml, будут выполнены тесты по группам – “Поиск”. Следовательно, методы тестирования test_Google Search() и Поиск test_Bing() выполняются в соответствии с назначенным приоритетом.

Как показано ниже, методы тестирования, соответствующие имени соответствующей группы тестирования, успешно выполняются:

Как Сгруппировать Ваши Тесты По Лямбда-Тесту?

Лямбда-тест позволяет группировать тесты автоматизации с помощью пользовательских тегов. Преимущество использования пользовательских тегов заключается в том, что это облегчает поиск ваших тестовых случаев на панели автоматизации лямбда-тестирования.

Чтобы сгруппировать тесты по лямбда-тесту с использованием пользовательских тегов, создайте массив строк, содержащий имена пользовательских тегов, разделенных запятой.

/* In case of just 1 tag, add 1 element in the array */
String[] customTags = {"Custom Tag"};

/* In case of multiple tags, add them in the array separated by comma */
String[] customTags = {"Tag 1", "Tag 2", "Tag 3", ...};

Теперь добавьте этот пользовательский тег в нужный экземпляр возможностей, как показано ниже:

DesiredCapabilities capabilities = new DesiredCapabilities();
[..]
// To create custom tags
capabilities.setCapability("tags", customTags);

В нашем случае мы устанавливаем возможности в методе setup Thread() , определенном в вспомогательном классе. Мы создаем Пользовательский тег, состоящий из комбинации Названия платформы и Имени браузера и версии браузера, используемой при кроссбраузерном тестировании.

public void setupThread (String build, String name, String platformName,
                       String browserName, String browserVersion) throws MalformedURLException
{
    [..]
    DesiredCapabilities capabilities = new DesiredCapabilities();

    capabilities.setCapability("build", build);
    capabilities.setCapability("name", name);
    capabilities.setCapability("platformName", platformName);
    capabilities.setCapability("browserName", browserName);
    capabilities.setCapability("browserVersion",browserVersion);
    capabilities.setCapability("tunnel",false);
    capabilities.setCapability("network",true);
    capabilities.setCapability("console",true);
    capabilities.setCapability("visual",true);
    String[] customTags = {""};
    customTags[0] = platformName + " " + browserName + " " + browserVersion;
    /* Setting Custom Tags */
    capabilities.setCapability("tags", customTags);
    /* End - Setting Custom Tags */
    [..]
}

Для просмотра пользовательских тегов в журналах автоматизации перейдите к Журналы автоматизации на панели мониторинга автоматизации и проверьте примененные пользовательские теги под именами тестов на левой панели.

У вас также есть возможность фильтровать тесты, выбирая несколько тегов одновременно на панели инструментов фильтра.

Здесь мы фильтруем теги, соответствующие “Mac OS”, чтобы найти тесты, выполняемые на платформе macOS:

Пользовательские теги следует эффективно использовать для группировки тестовых случаев в лямбда-тесте, чтобы было легко фильтровать “необходимые” тесты из многочисленных тестов, выполняемых в сетке.

Завершение

В этом руководстве по тестированию мы подробно рассмотрели, как группировать тестовые случаи в тестировании. Группы в тестировании полезны в проектах, где требуется выполнить тестовые сценарии, соответствующие определенным критериям. Например, все кроссбраузерные тесты можно поместить в группу под названием “кроссбраузерные”, чтобы тесты можно было легко идентифицировать. Группировка тестов также помогает временно отключить тесты, которые могут вызывать сбои в других тестах.

Как видно из примеров групп тестирования, вы можете запускать тесты в одной группе, в нескольких группах, во вложенных группах и т. Д. Регулярные выражения с группами и методами тестирования удобны, когда вы хотите включить/исключить тестовые случаи (или группы), соответствующие определенному условию.

Оригинал: “https://dev.to/himanshusheth004/how-to-group-test-cases-in-testng-with-examples-p4b”