В этом руководстве представлены семь основных принципов тестирования программного обеспечения, которые должен знать каждый тестировщик программного обеспечения и специалист по контролю качества.
7 принципов тестирования программного обеспечения
- Тестирование показывает наличие дефектов
- Исчерпывающее тестирование невозможно
- Раннее тестирование
- Кластеризация дефектов
- Парадокс пестицидов
- Тестирование зависит от контекста
- Ошибка отсутствия ошибок
Давайте изучим принципы тестирования на следующем видео-примере:
Нажмите здесь, если видео недоступно
Фон
При тестировании программного обеспечения важно достичь оптимальных результатов тестирования, не отклоняясь от цели. Но как определить, что вы придерживаетесь правильной стратегии тестирования? Для этого вам нужно придерживаться некоторых основных принципов тестирования. Вот семь общих принципов тестирования, которые широко практикуются в индустрии программного обеспечения.
Чтобы понять это, рассмотрим сценарий, в котором вы перемещаете файл из папки A в папку B.
Подумайте обо всех возможных способах это проверить.
Помимо обычных сценариев, вы также можете протестировать следующие условия
- Попытка переместить файл, когда он открыт
- У вас нет прав безопасности, чтобы вставить файл в папку B
- Папка B находится на общем диске, и емкость хранилища заполнена.
- В папке B уже есть файл с таким именем, на самом деле список бесконечен
- Или предположим, что у вас есть 15 полей ввода для тестирования, каждое из которых имеет 5 возможных значений, количество проверяемых комбинаций будет 5 15
Если бы вы протестировали все возможные комбинации, ВРЕМЯ ВЫПОЛНЕНИЯ И РАСХОДЫ выросли бы в геометрической прогрессии. Нам нужны определенные принципы и стратегии для оптимизации усилий по тестированию.
Вот 7 принципов:
1) Исчерпывающее тестирование невозможно
Да! Исчерпывающее тестирование невозможно. Вместо этого нам нужен оптимальный объем тестирования, основанный на оценке рисков приложения.
И вопрос на миллион долларов: как определить этот риск?
Чтобы ответить на этот вопрос, давайте сделаем упражнение
По вашему мнению, какая операция с наибольшей вероятностью приведет к сбою вашей операционной системы?
Я уверен, что большинство из вас догадались бы, открыв 10 разных приложений одновременно.
Итак, если бы вы тестировали эту операционную систему, вы бы поняли, что дефекты могут быть обнаружены в многозадачной деятельности и должны быть тщательно протестированы, что подводит нас к следующему принципу кластеризации дефектов.
2) Кластеризация дефектов
Кластеризация дефектов, в которой указывается, что небольшое количество модулей содержит большинство обнаруженных дефектов. Это применение принципа Парето к тестированию программного обеспечения: примерно 80% проблем обнаруживаются в 20% модулей.
По опыту вы можете определить такие рискованные модули. Но у этого подхода есть свои проблемы.
Если одни и те же тесты повторяются снова и снова, в конечном итоге одни и те же тестовые примеры больше не будут обнаруживать новые ошибки.
3) Парадокс пестицидов
Многократное использование одной и той же смеси пестицидов для уничтожения насекомых во время земледелия со временем приведет к развитию у насекомых устойчивости к пестициду, что делает их неэффективными для насекомых. То же самое и с тестированием программного обеспечения. Если проводится один и тот же набор повторяющихся тестов, метод будет бесполезен для обнаружения новых дефектов.
Чтобы преодолеть это, тестовые примеры необходимо регулярно пересматривать и редактировать, добавляя новые и различные тестовые примеры, чтобы помочь найти больше дефектов.
Тестировщики не могут просто полагаться на существующие методы тестирования. Он должен постоянно совершенствовать существующие методы, чтобы сделать тестирование более эффективным. Но даже после всего этого пота и тяжелой работы по тестированию вы никогда не сможете утверждать, что ваш продукт не содержит ошибок. Чтобы понять это, давайте посмотрим это видео о публичном запуске Windows 98.
Вы думаете, что такая компания, как MICROSOFT, не стала бы тщательно тестировать свою ОС и рискнула бы своей репутацией, просто чтобы увидеть, как их ОС выйдет из строя во время публичного запуска!
4) Тестирование показывает наличие дефектов
Следовательно, принцип тестирования гласит: - Тестирование говорит о наличии дефектов и не говорит об отсутствии дефектов. т.е. тестирование программного обеспечения снижает вероятность того, что в программном обеспечении остаются неоткрытые дефекты, но даже если дефекты не обнаружены, это не является доказательством правильности.
Но что, если вы будете усердно работать, принять все меры предосторожности и сделать свой программный продукт на 99% свободным от ошибок. И программное обеспечение не соответствует потребностям и требованиям клиентов.
Это подводит нас к следующему принципу, который гласит: «Отсутствие ошибки».
5) Отсутствие ошибки - заблуждение
Возможно, что программное обеспечение, которое на 99% не содержит ошибок, все еще непригодно для использования. Это может произойти, если система тщательно проверена на соответствие неправильным требованиям. Тестирование программного обеспечения - это не просто поиск дефектов, но и проверка того, что программное обеспечение соответствует потребностям бизнеса. Отсутствие ошибки - это заблуждение, т. Е. Обнаружение и исправление дефектов не помогает, если сборка системы непригодна для использования и не соответствует потребностям и требованиям пользователя.
Чтобы решить эту проблему, следующий принцип тестирования гласит, что раннее тестирование
6) Раннее тестирование
Раннее тестирование - тестирование следует начинать как можно раньше в жизненном цикле разработки программного обеспечения. Так что любые дефекты в требованиях или на этапе проектирования фиксируются на ранних этапах. Намного дешевле исправить дефект на ранних этапах тестирования. Но как рано начинать тестирование? Рекомендуется начать поиск ошибки сразу после определения требований. Подробнее об этом принципе в одном из следующих учебных пособий.
7) Тестирование зависит от контекста
Тестирование зависит от контекста, что в основном означает, что способ тестирования сайта электронной коммерции будет отличаться от того, как вы тестируете готовое коммерческое приложение. Все разработанные программы не идентичны. Вы можете использовать разные подходы, методологии, техники и типы тестирования в зависимости от типа приложения. Например, тестирование любой POS-системы в розничном магазине будет отличаться от тестирования банкомата.
Миф: «Принципы только для справки. Я не буду использовать их на практике».
Это очень неправда. Принципы тестирования помогут вам создать эффективную стратегию тестирования и набросать тестовые примеры для выявления ошибок.
Но изучение принципов тестирования похоже на обучение вождению в первый раз.
Вначале, когда вы учитесь водить машину, вы обращаете внимание на все, включая переключение передач, скорость, управление сцеплением и т. Д. Но с опытом вы просто сосредотачиваетесь на вождении, остальное приходит само собой. Такие, что вы даже разговариваете с другими пассажирами в машине.
То же самое и с принципами тестирования. Опытные тестировщики усвоили эти принципы до такой степени, что применяют их, даже не задумываясь. Следовательно, миф о том, что принципы не используются на практике, просто не соответствует действительности.