Тестируемость программного обеспечения
-
Определение тестируемости
- Тестируемость программного артефакта — это его способность поддерживать тестирование в заданном контексте.
- Высокая тестируемость облегчает поиск ошибок в системе.
-
Классификация тестируемости
- Некоторые системы тестируются легко, другие — нет.
- Тестируемость зависит от наличия вычислимого функционального предиката, который определяет допустимость результатов системы.
-
Примеры тестируемости
- Google reCAPTCHA не тестируется без метаданных об изображениях.
- Добавление метаинформации позволяет протестировать систему.
-
Влияние тестируемости на качество программного обеспечения
- Тестируемость тесно связана с другими ключевыми качествами ПО, такими как инкапсуляция и когезионность.
- Слабая тестируемость увеличивает затраты на тестирование и может затруднить тестирование отдельных компонентов.
-
Факторы, влияющие на тестируемость
- Свойства требований к ПО, самого ПО, методов тестирования и процессов разработки влияют на тестируемость.
- Квалификация и мотивация тестировщиков также важны.
-
Тестируемость программных компонентов
- Управляемость, наблюдаемость, изолируемость, разделение задач и понятность влияют на тестируемость компонентов.
- Автоматизируемость и гетерогенность также важны.
-
Улучшение тестируемости
- Разработка на основе тестирования и дизайн для обеспечения тестируемости способствуют улучшению тестируемости.
- Требования к ПО должны быть последовательными, полными, недвусмысленными и проверяемыми на практике.
-
Тестируемость требований
- Требования должны быть аксиомами, которые можно проверить с помощью функции индикатора набора.
- Отсутствие алгебраической согласованности функции индикатора набора делает спецификацию непроверяемой.