Принципы тестирования

1. Полное тестирование невозможно

Невозможно протестировать все возможные входные данные и комбинации в программном обеспечении. Например:

  • В форме ввода данных с тремя символами, учитывая поддержку UTF-8 (2,164,864 символа), количество комбинаций будет равно 2,164,864³ = 10,145,929,857,329,004,544.
  • При увеличении количества символов или полей ввода, число комбинаций становится астрономическим.

Вывод: Независимо от тщательности тестирования, невозможно учесть все сценарии и предвидеть все возможные ошибки.

2. Тестирование выявляет наличие дефектов, но не их отсутствие

Тестирование может обнаружить ошибки, но не может доказать их полное отсутствие. Это похоже на оценку состояния автомобиля по внешнему виду: отсутствие видимых повреждений не гарантирует отсутствия проблем внутри.

3. Заблуждение об отсутствии ошибок

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

4. Раннее тестирование экономит время и ресурсы

Чем раньше будет обнаружена проблема, тем меньше средств и усилий потребуется на ее устранение. Поздно обнаруженные баги могут привести к дополнительным проблемам, нарушению сроков релизов и потере клиентов.

5. Принцип накопления багов или кластеризация ошибок

Большинство багов обычно сосредоточено в небольшом числе модулей. Если в каком-то модуле обнаружено несколько ошибок, это указывает на необходимость более тщательного тестирования или даже пересмотра этого модуля.

6. Тестирование определяется контекстом

Для различных видов программного обеспечения используются разные подходы к тестированию. Контекст определяется:

  • Типом продукта (веб, десктоп, мобильное приложение и т.д.)
  • Целью продукта
  • Командой проекта
  • Доступными инструментами
  • Сроками
  • Ожидаемым уровнем качества

7. Парадокс пестицида

Если постоянно использовать один и тот же набор тестов, со временем эти проверки станут неэффективными для обнаружения новых дефектов. Рекомендуется:

  • Регулярно обновлять и модифицировать тест-кейсы
  • Добавлять новые тесты
  • Использовать различные виды и техники тестирования
  • Привлекать новых сотрудников для тестирования

Парадокс пестицида наиболее проявляется в регрессионном тестировании и автоматических тестах.