Каждый упавший тест должен быть использован — Google Testing Blog

Существует множество правил и лучших практик модульного тестирования; некоторые описаны в книге Software Engineering at Google [известная как SWE Book]; есть специальные рекомендации для каждого языка; есть рекомендации по отдельным тестовым фреймворкам, практикам именования тестов и многое другое. Разве не достаточно?

Хорошие юнит-тесты обладают несколькими важными свойствами, но прежде всего нужно усвоить главный принцип: упавший тест должен приносить пользу.

Если тест не прошел, вы должны исследовать ситуацию, не имея ничего, кроме названия теста и сообщения о сбое — не нужно добавлять дополнительную информацию и повторно запускать тест.

Эффективное применение фреймворков и assertion-библиотек (JUnit, Truth, pytest, GoogleTest и т. д.) должно быть сосредоточено вокруг двух целей:

  • Во-первых, чем точнее мы выражаем проверяемые инварианты, тем более информативными и менее хрупкими будут наши тесты. 
  • Во-вторых, если эти инварианты не выполняются и тест не прошел, информация об этом должна служить руководством к действию. (В соответствии с гайдом Site Reliability Engineering).

Рассмотрим пример юнит-теста на C++. Это функция, возвращающая absl::Status (тип Abseil, который возвращает либо статус «OK», либо один из кодов ошибок):

EXPECT_TRUE(LoadMetadata().ok());EXPECT_OK(LoadMetadata());
load_metadata_test.cc:42: Failure
Value of: LoadMetadata().ok()
Expected: true
Actual: false
load_metadata_test.cc:42: Failure
Value of: LoadMetadata()
Expected: is OK
Actual: NOT_FOUND: /path/to/metadata.bin

Если тест в левой колонке не прошел, вам придется выяснять, почему; а тест справа сразу же дает вам всю нужную информацию; в данном случае, благодаря более точному матчеру GoogleTest.

Google Testing Blog


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

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

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

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

Мы в Telegram

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

? Популярное

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

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

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

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

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

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

live

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