100 (да, сто) бесплатных советов по Java-инструментам QA

JUnit 5

№ 1

В JUnit5 удобно параметризовать тесты, применяя аннотацию ValueSource

подробнее

№ 2

Чтобы выполнить в одном тесте много операций, можно использовать аннотации типа Composed Annotation, например @Test, и фильтры в JUnit5

подробнее

№ 3

В JUnit5 можно применять @DisplayName — кастомное название во время выполнения (вместо поиска названия метода в тесте).

подробнее

№ 4

В JUnit можно применять лямбды из Java 8 внутри assertion-конструкций

Подробнее

№ 5

В JUnit5 можно пользоваться Assumptions для “создания” определенного состояния (или расположения), например dev-environment’а

подробнее

№ 6

Можно временно «отключать» тест в JUnit5, добавляя соответствующее описание

Подробнее

№ 7

Можно включать/исключать тест в JUnit5 по заданному условию (например по версии операционки или JDK)

подробнее

№ 8

В JUnit5 тестам можно присваивать теги. Так их можно группировать по уровням тестирования (или по другим признакам, исходя из ситуации)

подробнее

№ 9

В JUnit удобно задается порядок запуска тестов

подробнее

№ 10

В JUnit5 можно запускать тесты или изолированно, или в том же экземпляре, применяя аннотацию @TestInstance

подробнее

№ 11

В JUnit можно создавать вложенные тесты (Nested Tests)

подробнее

№ 12

Для некоторых аннотаций в JUnit вместо классов можно применять интерфейсы

подробнее

№ 13

В JUnit можно повторять тест, указывая количество повторений

подробнее

№ 14

В JUnit удобная параметризация тестов (кстати, вот материал о параметризации)

подробнее

№ 15

Можно изменять отображаемое имя теста после его параметризации в JUnit5

подробнее

№ 16

В JUnit5 можно создавать Шаблоны тестов

подробнее

№ 17

Можно прописать таймаут, например @Timeout(5), по превышению которого тест/шаблон/метод будет переведен в состояние «fail»

подробнее

№ 18

В JUnit5 можно запускать тесты параллельно (экспериментальная функция, но работающая)

подробнее

№ 19

Можно применять @MethodSource, чтобы обратиться к одному или нескольким factory-методам тестового класса, или внешнего класса

подробнее

№ 20

В JUnit5 есть нативная функциональность загрузки внешних данных при помощи CSV-файла

подробнее

Selenium WebDriver

№ 21

Selenium Grid Server работает с Docker-образами, в нем удобно распределять веб-тесты и запускать их параллельно

подробнее

№ 22

Для работы Selenium WebDriver нужно отдельно скачивать бинарники драйверов; так как все собственники браузеров сами имплементируют драйвера для Selenium WD, в стандартный Selenium-пакет они не включены.

подробнее

№ 23

В Selenium WebDriver удобно искать элементы по их локаторам

подробнее

№ 24

В Selenium WebDriver отлично поддерживаются функции клика, ввода данных, и перетаскивания мышкой

подробнее

№ 25

Selenium WebDriver имитирует навигацию по странице — переход “вперед”, “назад”, “обновить страницу”, и управление окнами

подробнее

№ 26

В Selenium WebDriver есть удобные механизмы ожидания асинхронных действий в браузере

подробнее

№ 27

В Selenium WebDriver есть ThreadGuard (только для Java!), проверяющий что драйвер вызывается только из потока, в котором создавался

подробнее

№ 28

Selenium WebDriver умеет обрабатывать всплывающие сообщения трех «нативных» типов: Alert, Prompt, Confirmation

подробнее

№ 29

Selenium WebDriver умеет работать из-за корпоративного прокси

подробнее

№ 30

В Selenium WebDriver предусмотрена Стратегия загрузки страницы, в которой можно прописать ожидание — пока все ресурсы страницы не загрузятся, или пока DOM-дерево не будет готово к обработке

подробнее

№ 31

В Selenium WebDriver есть класс WebElement, через который доступны все свойства веб-элемента

подробнее

№ 32

В Selenium WebDriver можно вводить текст, очищать поле ввода, или симулировать клавиши Вверх/Вниз

подробнее

№ 33

В Selenium WebDriver можно запускать тесты в браузере на другом компьютере, применяя Remote WebDriver

подробнее

№ 34

Настоятельно рекомендуется использовать Page Object Model в Selenium WebDriver

подробнее

№ 35

В Selenium WebDriver всегда можно создать новый экземпляр браузера, при помощи классов профиля браузера

подробнее

№ 36

Неправильные практики при автоматизации с WebDriver — по ссылке ниже (спойлер: логин на Gmail и Facebook через WebDriver, и подобное)

подробнее

№ 37

В WebDriver можно прописывать множество характеристик браузера (даже для IE 11)

подробнее

№ 38

В Selenium WebDriver есть класс Color, позволяющий проверять цвет любого элемента

подробнее

№ 39

В Selenium WebDriver элемент Select является единственным со “специальным классом”

подробнее

№ 40

В Selenium WebDriver можно эмулировать события мышки (клик, удерживание, перетаскивание, клик в контекстном окне и так далее).

подробнее

WireMock

№ 41

Wiremock может запускаться в разных режимах: “отдельном” standalone-режиме, по правилу JUnit 4.x, или из класса WireMockServer

подробнее

№42

Mock Server просто и быстро создать, вводя лишь несколько строчек кода в WireMock:

подробнее

№ 43

В WireMock настраиваются конфигурации — привязки сетей и/или портов, настройки http, проксей, папок с файлами, gzip, CORS и так далее.

подробнее

№ 44

Можно запустить отдельный WireMock-экземпляр в виртуальном сервисе, запустив jar-файл или через Java-код:

подробнее

№ 45

В WireMock можно создавать Stub, присваивать приоритет, отправлять заголовки ответа, и прописывать тело ответа на запрос

подробнее

№ 46

В WireMock можно проверять получение запроса заданного типа, и подтягивать запрошенные данные

подробнее

№ 47

WireMock умеет сопоставлять запросы по таким характеристикам: URL, HTTP-методам, параметрам запроса, заголовку, способу аутентификации, кукисам, по телу запроса, и по атрибуту multipart/form-data

подробнее

№ 48

WireMock умеет выборочно пропускать (“проксировать”) запросы к другим хостам

подробнее

№ 49

В WireMock можно создавать так называемые stub mappings из полученных запросов. Используя прокси-функциональность WireMock, можно «записывать» их в WireMock Recorder, получая данные из API (при помощи JSON API и Java DSL)

подробнее

№ 50

В WireMock можно прописать Шаблоны Ответов (Response Templates)

подробнее

№ 51

В WireMock можно прописывать в тесте «ошибочное» поведение, которого сложно добиться в реальных условиях

подробнее

№ 52

В WireMock можно симулировать Stateful Behavior

подробнее

№ 53

В WireMock удобно работать с HTTPS-запросами

подробнее

№ 54

В WireMock можно расширять функциональность — создавая расширения, работая с запросами, параметрами, матчерами запросов, и post-server-действиями

подробнее

№ 55

В WireMock есть специальная библиотека для работы со Spring Cloud Contract

подробнее

№ 56

WireMock позволяет добавлять метаданные в “карты заглушек” (stub mappings), для их более удобного поиска/удаления

подробнее

№ 57

Request Matching позволяет искать что-то через регулярные выражения

подробнее

№ 58

В WireMock можно указывать тело ответа при помощи строкового литерала, или файла

подробнее

№ 59

В WireMock есть плагин Maven

подробнее

№ 60

Можно создать #Docker-контейнер и запустить виртуальный экземпляр WireMock в Service Virtualization

подробнее

TestNG

№ 61

В TestNG для настройки тестов предусмотрено много полезных параметров командной строки

подробнее

№ 62

Можно делать Группы тестов (Test Groups), чтобы фильтровать тесты по категориям:

подробнее

№ 63

В TestNG удобно вставлять данные в тесты аннотацией @Parameter

подробнее

№ 64

В TestNG можно добавить зависимости между тестами

подробнее

№ 65

Можно создавать тесты “на лету”, аннотацией @Factory

подробнее

№ 66

В TestNG можно игнорить некоторые методы @Test в классе или пакете

подробнее

№ 67

TestNG умеет запускать тесты параллельно, через установку соответствующего атрибута; не только тесты, но и классы, и методы

подробнее

№ 68

В TestNG можно прописать Retry-стратегию перезапуска “красных” тестов

подробнее

№ 69

Тесты в TestNG можно запускать «программным» путем

подробнее

№ 70

В TestNG можно применять выражения из Bean Shell, включая или исключая группы в testsuite.xml

подробнее

№ 71

Поведение приложения в TestNG можно имитировать при помощи Listener, особенно удобен ITestListener

подробнее

№ 72

TestNG поддерживает инъекцию зависимостей, добавлением дополнительных параметров в аннотациях

подробнее

№ 73

В TestNG можно делать свои тест-сьюты с параметрами из XML-файла

подробнее

№ 74

А также делать тест-сьюты с параметрами взятыми из YAML-файла

подробнее

№ 75

В NestNG можно вывести список методов теста, запрашиваемых, но реально не вызываемых (DryRun-режим запуска TestNG)

подробнее

№ 76

В TestNG можно создать внешний класс для управления своими data-driven-тестами, применяя @DataProvider

подробнее

№ 77

В NestNG можно проверить, ожидается ли исключение: @Test(expectedException = «Exception.class»)

подробнее

№ 78

В TestNG есть 5 пре- и пост-условий: тест-сьют, тест, группа тестов, класс, и методы

подробнее

№ 79

Вместо аннотирования каждого метода в @Test можно применить аннотацию ко всему классу

подробнее

№ 80

В Отчет TestNG можно добавлять любую текстовую информацию

подробнее

RestAssured

№ 81

RestAssured можно настроить на возвращение в формате BigDecimal вместо float или double

подробнее

№ 82

В RestAssured можно применять автоматическую сериализацию/десериализацию (что это?); работает с Jackson, Jackson2, GSON или Johnzon

подробнее

№ 83

В RestAssured можно валидировать JSON Schema.

подробнее

№ 84

В RestAssured можно извлечь значения из JSON-ответа при помощи JSON Path:

подробнее

№ 85

В RestAssured можно извлекать значения из XML-ответа при помощи XML Path

подробнее

№ 86

Из тела ответа можно получить заголовки, кукисы, строку состояния, и код состояния

подробнее

№ 87

RestAssured автоматически определяет тип параметра, исходя из HTTP-метода; а можно и прямо прописывать

подробнее

№ 88

Можно более гибко работать с параметрами, меняя fixed-path-параметры на именованные/переименованные (named/unnamed path parameters):

подробнее

№ 89

В RestAssured можно указывать кукисы для использования в запросе

подробнее

№ 90

В RestAssured можно указывать один или несколько заголовков запроса

подробнее

№ 91

Можно продублировать класс с теми же payload-атрибутами, и удобно поработать с ним, а RestAssured сам сделает сериализацию (или отменит ее)

подробнее

№ 92

В RestAssured можно верифицировать данные ответа: тело ответа, кукисы, статус, заголовки, и content-type

подробнее

№ 93

RestAssured удобно измеряет время ответа

подробнее

№ 94

RestAssured позволяет производить Basic Authentication, включая preemptive и digest, и авторизацию в формах, при помощи CSRF

подробнее

№ 95

В RestAssured можно тестировать аутентификацию как через OAuth-1, так и через OAuth-2

подробнее

№ 96

В RestAssured можно отправлять большие объемы данных, применяя multipartметод

подробнее

№ 97

Можно снизить дублирование кода, применяя Specification Re-Use

подробнее

№ 98

Прописывая фильтр (Filter), можно проверять и изменять запрос и ответ, перед тем как ответ вернется

подробнее

№ 99

Можно записать (в Log) весь запрос и ответ; или только если не прошла валидация

подробнее

№ 100

В RestAssured можно добавить SSL-сертификат для работы с тестами

подробнее

***

Перепроверить инфу можно на официальных сайтах:

Какой была ваша первая зарплата в QA и как вы искали первую работу?

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Мы в Telegram

Наш официальный канал
Полезные материалы и тесты
Готовимся к собеседованию
Project- и Product-менеджмент

🔥 Популярное

💬 Telegram-обсуждения

Наши подписчики обсуждают, как искали первую работу в QA. Некоторые ищут ее прямо сейчас.
Наши подписчики рассказывают о том, как не бояться задавать тупые вопросы и чувствовать себя уверенно в новой команде.
Обсуждаем, куда лучше податься - в менеджмент или по технической ветке?
Говорим о конфликтных ситуациях в команде и о том, как их избежать
$1100*
медианная зарплата в QA в июне 2023

*по результатам опроса QA-инженеров в нашем телеграм-канале

Собеседование

19%*
IT-специалистов переехало или приняло решение о переезде из России по состоянию на конец марта 2022

*по результатам опроса в нашем телеграм-канале

live

Обсуждают сейчас