Unit, API и GUI тесты

Давайте рассмотрим стандартную пирамиду автоматизации

Anna2_50(0). Пирамида автоматизации, юнит

 

Если говорить о программе:

  • UI-тесты — честные тесты, «как это делал бы пользователь». (они же GUI, graphical user interface)
  • API-тесты — опускаемся на уровень ниже, выкидывая лишнее.
  • Unit-тесты — тесты на отдельную функцию

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

  • Unit — тесты на отдельную мелкую функцию (посчитать одну ячейку отчета)
  • API — тесты на конкретный функционал, который состоит из отдельных функций (загрузить весь отчет)
  • GUI — честный тест через графический интерфейс, «как это делал бы пользователь» (открыть браузер, войти в систему, перейти в отчеты, и наконец вызвать отчет).

В качестве аналогии давайте рассмотрим создание платья. Вот я заказала себе платье по фигуре. Мастер выслушает мои пожелания, снимет мерки, а потом приступит за работу. Сначала он сделает выкройку и раскроит ткань. Если проверять каждую деталь, сравнивая с выкройкой — это будут юнит-тесты.

Anna2_62. Юнит_тесты_Портной_проверяет_каждую_деталь

 

Проверили каждую деталь отдельно? Теперь тестируем вместе. Обметали и смотрим — ровно? Криво? Может, что-то подправить?

Это аналог api-тестов — платье еще не готово, это не конечный продукт. Но мы соединили отдельные детали вместе и смотрим, как они работают.

Anna2_64. Апи_тесты_Мастер_обметал_и_смотрит_как_оно

 

Если всё хорошо, можно шить! А дальше следуюет аналог UI-тестов — последняя проверка, когда платье уже готово.

Нигде не накосячили? Когда все вместе собрано и рукав к попе пришит, переделывать уже очень трудно и дорого, такие проблемы лучше обнаружить заранее.

Anna2_63. Гуи_тесты_Мастер_проверяет_платье_целиком

 

 

А еще одну аналогию можно провести с танцами

Начинаем с основ. Сначала надо отработать движение, чтобы потом внедрять его в танец. Каждое конкретное движение — аналог unit-тестов.

Anna2_59. Катя_и_тренер_Начни_с_основ_Unit

 

Следующий этап — связать отдельные функции вместе. Зная 5 разных движений, мы начинаем связывать их под музыку. Это аналог api-тестов.

Anna2_60. Api_Связать_отдельные_функции_воедино

Каждую часть танца мы разрабатываем отдельно (как и разные куски api в программе).

А потом уже соединяем всё вместе. И получается готовый танец. Аналог UI-тестов.

Anna2_61. UI_Катя_и_ко_на_сцене_выступают

Итого

Соберем всё вместе. В программе:

  • unit — тесты на отдельную мелкую функцию (посчитать одну ячейку отчета)
  • API — тесты на конкретный функционал, который состоит из отдельных функций (загрузить весь отчет)
  • GUI — честный тест через графический интерфейс, «как это делал бы пользователь» (открыть браузер, войти в систему, перейти в отчеты, и наконец вызвать отчет).

На примере платья:

  • unit — раскроили и с выкройкой сверили каждую деталь
  • API — обметали и проверили
  • GUI — когда уже платье полностью готово, проверяем еще раз

На примере танца:

  • unit — одно движение показали, отработали
  • API — связка из 3-5 движений, небольшой отрывок
  • GUI — весь танец целиком