Что такое структура тестирования?
Структура тестирования — это набор рекомендаций или правил, используемых для создания и проектирования тестовых случаев. Рамка состоит из комбинации практик и инструментов, которые разработаны, чтобы помочь специалистам QA тестировать более эффективно.
Популярные доступные варианты:
- JUnit
- NUnit
- TestNG
Почему TestNG?
TestNG — это система тестирования, созданная на основе JUnit и NUnit, но с некоторыми новыми функциями, которые делают ее более мощной и простой в использовании, такими как:
- Аннотации.
- Запускайте свои тесты в произвольно больших пулах потоков с различными политиками (все методы в своем потоке, один поток на класс теста и т.д…).
- Проверяйте, что ваш код безопасен для многопоточности.
- Гибкая конфигурация тестов.
- Поддержка тестирования на основе данных (с @DataProvider).
- Поддержка параметров.
- Мощная модель выполнения (больше нет TestSuite).
- Поддерживается множеством инструментов и плагинов (Eclipse, IDEA, Maven и т.д…).
- Встроенный BeanShell для большей гибкости.
- Функции JDK по умолчанию для времени выполнения и протоколирования (без зависимостей).
- Зависимые методы для тестирования сервера приложений.TestNG разработан для охвата всех категорий тестов: модульных, функциональных, сквозных, интеграционных и т.д….
Аннотации в TestNG
Утверждения
Утверждения в TestNG — это способ проверки соответствия или несоответствия ожидаемого и фактического результата.
- Ожидаемый результат: ожидаемый результат в определенный момент времени при тестировании приложения.
- Фактический результат: фактический результат в определенный момент времени во время тестирования приложения.
пример:
Assert.assertEquals(actualOutcome,expectedOutcome);
Типы утверждений
Жесткое утверждение: Жесткие утверждения — это утверждения, которые останавливают выполнение теста, когда утверждение не выполняется, и последующие утверждения, таким образом, не проверяются.
Мягкие утверждения: При мягких утверждениях последующие утверждения продолжают выполняться, даже если проверка одного утверждения не прошла, т.е. выполнение теста не останавливается.
Пример:
# Hard Assert
Assert.assertEquals(actualResult,expectedResult);
# Soft Assert
SoftAssert softassert = new SoftAssert();
softassert.assertEquals(actualResult, expecetedResult);
softassert.assertAll();
Пример использования
pom.xml
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.5</version>
</dependency>
код
только аннотированные методы @test вызываются test должен содержать тестовые скрипты, в то время как методы @BeforeMethod/@AfterMethod должны использоваться для настройки предварительных условий & очистки для каждого теста.
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
public class Runner {
@BeforeTest
public void beforeTest(){
System.out.println("method to be executed before test");
}
@Test
public void test(){
System.out.println("test method");
}
@AfterTest
public void afterTest(){
System.out.println("method to be executed after test");
}
}
выход:
method to be executed before test
test method
method to be executed after test
===============================================
Default Suite
Total tests run: 1, Passes: 1, Failures: 0, Skips: 0
===============================================
Несколько полезных URL-адресов:
Веб-страница TestNG
учебник по Javatpoint