Testing


Главный вопрос:
Как я пойму что это работает?

Сценарий:

Программист - тест "белый ящик"
QA - тест "черный ящик"

Smoke testing - тестирование без плана, просто тыкаем, чтобы система вела себя адекватно
Penetration testing - тестирование на безопасность
regression testing
etc.

TDD - test driven development

  1. пишем тест
  2. запускаем тест, убеждаемся, что тест проваливается
  3. пишем код, чтобы тест заработал
  4. рефакторим код и проверяем, что тест продолжает оставаться зеленым

BDD - behaviour driven development

Как пользователь я хочу ввести в такое поле то, в другое - это и увидеть то-то.

Единица функциональности (модуль)
Unit-тесты - TDD тестит ровно один модуль, остальные заменяются заглушками (stubs, mocks, spies)

Функциональные тесты - медленные (на рабочем проекте например полный набор проходит 4 часа)

производительность

stubs - когда кто-то что-то дернет - вернуть захаркодженые данные
mocks - stub с мозгами. Вернуть черный ящик и если передали что-то, вернуть что-то
spies - шпион. Отслеживает дергал ли кто-то внешний модуль (заглушку) с заданными параметрами

Testing Framework