Совсем недавно я пытался понять основные термины, которые используются, когда люди говорят о тестировании программного обеспечения, особенно об автоматическом тестировании. Такое ощущение, что многие термины смешаны, смешаны или даже субъективны. Итак, вот небольшой список терминов, насколько я понимаю.
Модульные тесты
Тесты, которые проверяют «единицы» кода. Единицы должны быть самой маленькой (разумно) тестируемой частью компонента или приложения.
Интеграционные тесты
Тесты, которые проверяют код, в котором различные модули или компоненты объединяются, чтобы сформировать сплоченную тестируемую группу.
Функциональные тесты
Любой тест, подтверждающий, что система работает так, как задумано. В том числе:
Дымовые испытания
Простой тест, чтобы убедиться, что основные операции работают, чтобы не мешать системе работать правильно.
Регрессионные тесты
Тесты, которые можно выполнять многократно, чтобы убедиться, что все по-прежнему работает!
Приемочные испытания
Тесты, написанные в соответствии с контрактом или спецификацией (критерии приемки). Эти тесты проверяют систему, приложение или компонент с учетом его контекста и могут быть нацелены, среди прочего, на:
- удобство использования
- масштабируемость
- доступность
- безопасность
- представление
TDD (разработка через тестирование)
Процесс разработки программного обеспечения, в котором:
- Определен набор тестов.
- Тесты выполняются и не проходят
- Код реализован, чтобы удовлетворить тесты
- Перейти к шагу 2 и повторить для всех неудачных тестов
TDD больше касается развития дизайна кода, чем самого тестирования.
"Речь идет о правильной разработке программного обеспечения"
BDD (разработка, управляемая поведением)
Продолжение TDD. Тесты BDD пытаются повысить ценность бизнеса, определяя поведение конкретной системы, приложения или компонента, которое может быть протестировано с учетом контекста.
"Речь идет о создании правильного программного обеспечения"
Я прав? Где я ошибся? Дай мне знать!