Testing

Проработать

  1. TDD: методология разработки, которая изменила мою жизнь
  2. TDD для начинающих. Ответы на популярные вопросы
  3. Почему юнит-тесты не работают в научных приложениях
  4. Тестирование. Фундаментальная теория
  5. Тестирование. Фундаментальная теория. Часть 2 — Методологии разработки ПО
  6. Когда использовать mocks в юнит-тестировании

Что это

Тестирование - комплекс действий для получения информации о соответствии продукта требованиям.

Основные разделы

Основные термины

Качество – то на сколько продукт соответствует требованию.

Валидация(validation) - проверка на соответствие требованиям продукта. Правильный ли продукт.

Верификация(verification) - проверка на соответствие продукта условий технологии, выполнение задач, сроки - правильная ли разработка.

Ошибка – несоответствие производимого продукта требованиям, прямым или косвенным.

Виды тестирования

  1. Unit - модульное тестирование. Unit - воспринимать как поведение.
  2. Integration - проверка совместной работы нескольких классов/модулей.
  3. System - проверка всей системы в целом. Обычно запускается как отдельное приложение для DEV среды.
  4. End-to-End(chain testing) - как System tests но запускается через user interface имитирую реальные запросы(user case).
  5. Load(performance) - проверка нагрузки приложения.

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

  6. Penetration(pen) - проверка реакции на внешнюю атаку.

Шаги работы с багом

  1. R: Replicate (воспроизведите). Найдите условия, при которых баг точно воспроизводится.
  2. I: Isolate (локализуйте). Сократите количество шагов воспроизведения до минимума.
  3. M: Maximize (максимизируйте). Продемонстрируйте, какой вред может причинить такой баг.
  4. G: Generalize (генерализуйте). Выясните, где еще и как еще этот баг может вызвать проблему.
  5. E: Externalize (сделайте видимым). Сделайте так, чтобы о баге услышали все заинтересованные лица.
  6. A или N: And use Neutral tone (будьте нейтральны). Будьте беспристрастны, держите свое личное мнение (как это могли допустить???) при себе – не надо искать виноватых.

Test coverage

Test coverage - тестовое покрытие кода - проверка какое количество классов, методов, строк было задействовано при прохождении тестов.

Основные сущности

Mocks

Используйте Mock для:

Следует использовать только для

Stubs

Используйте Stub для:

Spies

Бойтесь шпионов (Spy). Как сказано в документации Spock. Подумайте дважды, прежде чем использовать этот механизм. Возможно, вам стоит изменить дизайн вашего решения и реорганизовать ваш код.

Используйте Spy для:

Различие Mock и Stub

Stub предназначены для получения нужного состояния объекта, а mock применяются для проверки ожидаемого поведения тестируемого объекта.

Советы для тест кейсов

ТЗ

Spring

DateTime