Семь принципов тестирования

Лучшие практики

Тестирование – важнейший элемент разработки ПО. Это сложный вид деятельности, который необходимо правильно структурировать и обеспечивать максимальную эффективность.

Принципы

Эти принципы были установлены ISTQB по мере того, как тестирование и разработка ПО развивались на протяжении многих лет. Если вы занимаетесь тестированием, то вам стоит изучить и понять эти стандарты и убедиться, что вы следуете им в своей организации.

Семь принципов тестирования

В этой статье мы рассмотрим эти семь основополагающих принципов и комментарии.

БЕСПЛАТНО СКАЧАТЬ КНИГИ в телеграм канале Библиотека тестировщика

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

Мы тестируем программное обеспечение для выявления проблем, чтобы устранить их до развертывания в реальных окружениях – это позволяет нам быть уверенными в работоспособности наших ИТ-систем. Однако сам по себе процесс тестирования не гарантирует, что программное обеспечение полностью рабочее и не содержит дефектов. Тестирование помогает значительно сократить количество необнаруженных дефектов, скрывающихся в программном обеспечении, но обнаружение и устранение этих дефектов само по себе не является доказательством того, что программное обеспечение на 100% свободно от дефектов. Эта концепция должна всегда приниматься во внимание.

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

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

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

Как бы нам ни хотелось верить, абсолютно невозможно протестировать ВСЕ – все комбинации входных данных и предварительных условий, и можно также утверждать, что попытки сделать это являются неэффективным использованием времени и бюджета. Однако одним из важных навыков тестирования является оценка рисков и планирование тестов в соответствии с рисками – тогда вы сможете охватить обширные области, при этом убедившись, что тестируете наиболее важные функции. При тщательном планировании и оценке тестовое покрытие может оставаться достаточным и обеспечивать уверенность в программном обеспечении, не требуя при этом тестировать каждую строчку кода.

3. Раннее тестирование экономит время и деньги

Раннее тестирование имеет огромное значение в жизненном цикле программного обеспечения. Это может означать, например, тестирование требований еще до начала кодирования – исправление проблем на этом этапе гораздо проще и дешевле, чем в конце жизненного цикла продукта, когда может потребоваться переписывать целые области функциональности, что приведет к перерасходу средств и срыву сроков.

Привлечение тестирования на ранних этапах – это также основополагающий принцип Agile, который рассматривает тестирование как деятельность на протяжении всего процесса, а не как этап (который в традиционном водопадном подходе был бы в конце), потому что это позволяет быстро и своевременно создавать непрерывные циклы обратной связи. Когда команда сталкивается с трудностями или препятствиями, ранняя обратная связь – один из лучших способов их преодоления, и тестировщики играют в этом важную роль. Рассматривайте тестировщика как «поставщика информации» – это очень важная роль.

По сути, раннее тестирование может помочь вам предотвратить появление дефектов!

4. Дефекты группируются вместе

Это идея о том, что определенные компоненты или модули программного обеспечения обычно содержат наибольшее количество дефектов, или отвечают за большинство проблем. Поэтому тестирование должно быть сосредоточено на этих областях (пропорционально ожидаемой – и впоследствии наблюдаемой – плотности дефектов в этих областях). Можно применить принцип Парето 80:20 – 80 процентов дефектов связаны с 20 процентами кода.

Это особенно характерно для больших и сложных ИТ-систем, но плотность дефектов может меняться по целому ряду причин. Дефекты неравномерно распределяются по ИТ-системе, и чем сложнее компонент или чем больше зависимостей от компонентов сторонних разработчиков, тем выше вероятность появления дефектов. Наследование легаси-кода и разработка новых фич в определенных компонентах, которые подвергаются частым изменениям и поэтому более нестабильны, также могут вызвать кластеризацию дефектов.

Знание этого факта может оказаться очень ценным для вашего тестирования; если мы обнаружим один дефект в определенном модуле/области, то велика вероятность обнаружить там еще много других дефектов. Определение сложных компонентов или областей, которые имеют больше зависимостей или чаще всего меняются, например, может помочь вам сконцентрировать свое тестирование на этих областях риска.

5. Остерегайтесь парадокса пестицидов

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

6. Тестирование зависит от контекста

Методы и типы проводимого тестирования могут полностью зависеть от контекста программного обеспечения или системы – например, для веб-сайта электронной коммерции могут потребоваться различные типы тестирования и подходы по сравнению с API-приложением или приложением для создания отчетов по базам данных. То, что вы тестируете, всегда будет влиять на ваши подходы.

7. Отсутствие ошибок – заблуждение

Если ваше программное обеспечение или система непригодны для использования (или не выполнены требования пользователей), то не имеет значения, сколько дефектов найдено и исправлено – они все равно непригодны. В этом смысле не имеет значения, насколько ваша ИТ-система на вид без проблем и дефектов; если удобство использования настолько плохое, что пользователи не могут ориентироваться, или/и она не соответствует бизнес-требованиям, значит, она провалилась, несмотря на небольшое количество дефектов.

Поэтому важно проводить тесты, соответствующие требованиям. Вы также должны тестировать свое программное обеспечение с конечными пользователями – это можно делать с ранними прототипами (на этапе тестирования юзабилити), чтобы собрать отзывы, которые можно использовать для обеспечения и улучшения юзабилити. Помните, что если количество дефектов невелико, это еще не значит, что ваше программное обеспечение пригодно к отправке – удовлетворение ожиданий и требований клиента не менее важно.

Итог

Применение этих продуманных принципов может помочь вам стать более эффективным и сфокусированным, а также повысить качество вашей общей стратегии тестирования. Кроме того, иногда, применяя один принцип, вы обнаружите, что другие проблемы естественным образом решаются. Например, раннее тестирование может помочь смягчить заблуждение об «отсутствии ошибок» – если тестировщики будут вовлечены в процесс на уровне требований, вы сможете убедиться, что программное обеспечение будет соответствовать требованиям/ожиданиям клиента.

Учитывайте эти принципы, и вы сможете добиться максимальной эффективности, экономно используя свое время и усилия.

Перевод статьи «The seven principles of testing».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *