Совсем недавно я пытался понять основные термины, которые используются, когда люди говорят о тестировании программного обеспечения, особенно об автоматическом тестировании. Такое ощущение, что многие термины смешаны, смешаны или даже субъективны. Итак, вот небольшой список терминов, насколько я понимаю.

Модульные тесты

Тесты, которые проверяют «единицы» кода. Единицы должны быть самой маленькой (разумно) тестируемой частью компонента или приложения.

Интеграционные тесты

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

Функциональные тесты

Любой тест, подтверждающий, что система работает так, как задумано. В том числе:

Дымовые испытания

Простой тест, чтобы убедиться, что основные операции работают, чтобы не мешать системе работать правильно.

Регрессионные тесты

Тесты, которые можно выполнять многократно, чтобы убедиться, что все по-прежнему работает!

Приемочные испытания

Тесты, написанные в соответствии с контрактом или спецификацией (критерии приемки). Эти тесты проверяют систему, приложение или компонент с учетом его контекста и могут быть нацелены, среди прочего, на:

  • удобство использования
  • масштабируемость
  • доступность
  • безопасность
  • представление

TDD (разработка через тестирование)

Процесс разработки программного обеспечения, в котором:

  1. Определен набор тестов.
  2. Тесты выполняются и не проходят
  3. Код реализован, чтобы удовлетворить тесты
  4. Перейти к шагу 2 и повторить для всех неудачных тестов

TDD больше касается развития дизайна кода, чем самого тестирования.

"Речь идет о правильной разработке программного обеспечения"

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

Продолжение TDD. Тесты BDD пытаются повысить ценность бизнеса, определяя поведение конкретной системы, приложения или компонента, которое может быть протестировано с учетом контекста.

"Речь идет о создании правильного программного обеспечения"

Я прав? Где я ошибся? Дай мне знать!