Принципы тестирования
Принципы тестирования
Testing shows presence of defects
1) Тестирование демонстрирует наличие дефектов
Тестирование показывает наличие дефектов, но не гарантирует их отсутствия.
Невозможно предугадать все вероятные ситуации, которые могут привести к дефекту.
Exhaustive testing is impossible
2) Исчерпывающее тестирование недостижимо
Полное тестирование с использованием всех входных комбинаций данных, результатов и предусловий физически невыполнимо.
Но, хотя предусмотреть всё невозможно, это не повод не предусматривать ничего.
В мире ограниченных ресурсов и возможностей должны использоваться анализ рисков и расстановка приоритетов.
Early testing
3) Раннее тестирование
Следует начинать тестирование на ранних стадиях жизненного цикла разработки ПО.
Так тестирование сэкономит время и деньги.
Исправление выявленных ошибок на ранних стадиях дешевле, нежели в конце.
Defects clustering
4) Скопление дефектов
Дефекты не размазаны равномерно по приложению, а сконцентрированы в некоторых модулях системы.
Это проявление принципа Парето: 80% дефектов содержатся в 20% модулей.
Pesticide paradox
5) Парадокс пестицида
Если повторять те же тестовые сценарии снова и снова, в какой-то момент этот набор тестов перестанет выявлять новые дефекты.
Поскольку ПО эволюционирует, многие из ранее найденных дефектов исправляют и старые тест-кейсы больше не срабатывают.
Поэтому необходимо регулярно пересматривать и обновлять тест-кейсы, разнообразить подходы к тестированию, применять различные техники тестирования.
Testing is context depending
6) Тестирование зависит от контекста
Невозможно выработать некий «универсальный подход к тестированию» на все случаи жизни.
Программные продукты, относящиеся к разным предметным областям, требуют разного подхода к организации и проведению процесса тестирования.
Absence-of-errors fallacy
7) Заблуждение об отсутствии ошибок
Отсутствие найденных дефектов при тестировании не означает пригодность продукта к использованию.
Система должна быть удобна пользователю в использовании и удовлетворять его ожиданиям и потребностям.
На мой взгляд, спорный пункт, т.к. существует тестирование удобства использования (usability testing), которое как раз и направлено на установление степени удобства использования, обучаемости, понятности и привлекательности для пользователей разрабатываемого продукта в контексте заданных условий.