Вы находитесь на странице: 1из 14

Modulul 2:

Cтратегии
тестирования.
Что такое стратегия:
• Cтратегия   наука о войне, в частности наука полководца, общий,
недетализированный план военной деятельности,
охватывающий длительный период времени, способ
достижения сложной цели.
• Стратегия тестирования — это план проведения работ по
тестированию системы или её модуля, учитывающий специфику
функциональности и зависимости с другими компонентами
системы и платформы. Стратегия определяет типы тестов,
которые нужно выполнять для данного функционала системы,
включает описание необходимых подходов с точки зрения
целей тестирования и может задавать описания или требования
к необходимым для проведения тестирования инструментам и
инфраструктуре.
Критерии для классификации стратегий:

• Существует несколько признаков, по которым


принято производить классификацию видов
тестирования. Обычно выделяют следующие:
– По объекту тестирования;
– По знанию системы;
– По степени автоматизации;
– По степени изолированности компонентов;
– По времени проведения тестирования;
– По признаку позитивности сценариев;
– По степени подготовленности к тестированию;
По объекту тестирования:
• Функциональное тестирование (functional testing) - это тестирование ПО в
целях проверки реализуемости функциональных требований, то есть
способности ПО в определённых условиях решать задачи, нужные
пользователям. Функциональные требования определяют, что именно делает
ПО, какие задачи оно решает.
• Тестирование производительности (performance testing)
– Нагрузочное тестирование (load testing) - подвид тестирования производительности,
сбор показателей и определение производительности и времени отклика программно-
технической системы или устройства в ответ на внешний запрос с целью установления
соответствия требованиям, предъявляемым к данной системе (устройству).
– Стресс-тестирование (stress testing) - один из видов тестирования ПО, которое
оценивает надёжность и устойчивость системы в условиях превышения пределов
нормального функционирования. Стресс-тестирование особенно необходимо для
«критически важного» ПО, однако также используется и для остального ПО. Обычно
стресс-тестирование лучше обнаруживает устойчивость, доступность и обработку
исключений системой под большой нагрузкой, чем то, что считается корректным
поведением в нормальных условиях.
По объекту тестирования:

– Тестирование стабильности (stability / endurance / soak testing) - один из


видов автоматизированного тестирования ПО, целью которого является
проверка работоспособности приложения при длительном тестировании
с ожидаемым уровнем нагрузки. Перед тем как подвергать ПО
экстремальным нагрузкам стоит провести проверку стабильности в
предполагаемых условиях работы, то есть погрузить продукт в полную
рабочую атмосферу. При тестировании, длительность его проведения не
имеет первостепенного значения, основная задача - наблюдая за
потреблением ресурсов, выявить утечки памяти и проследить чтобы
скорость обработки данных и/или время отклика приложения в начале
теста и с течением времени не уменьшалась. В противном случае
вероятны сбои в работе продукта и перезагрузки системы. Часто в
"домашних" условиях тестирование стабильности совмещают со стресс-
тестированием, то есть проверяют не только стабильность, но и
способность приложения переносить жесткие условия и сильные нагрузки
длительное время.
По объекту тестирования:

• Юзабилити-тестирование (usability testing) -  исследование, выполняемое с целью


определения, удобен ли некоторый искусственный объект (такой каквеб-
страница, пользовательский интерфейс или устройство) для его предполагаемого
применения. Таким образом, проверка эргономичности измеряет эргономичность
объекта или системы. Проверка эргономичности сосредоточена на определённом
объекте или небольшом наборе объектов, в то время как исследованиявзаимодействия
человек-компьютер в целом — формулируют универсальные принципы.
• Тестирование интерфейса пользователя (UI testing) - предполагает проверку
соответствия приложения требованиям к графическому интерфейсу, профессионально
ли оно выглядит, выполнено ли оно в едином стиле. В большинстве случаев,
функциональное тестирование приложения осуществляется вместе со следующими
видами тестирования графического интерфейса пользователя:
– Тестирование на соответствие стандартам графических интерфейсов;
– Тестирование с различными разрешениями экрана;
– Тестирование в ограниченных условиях, например, в условиях нехватки памяти;
– Совместимость с различными Интернет-браузерами;
По объекту тестирования:

• Тестирование безопасности (security testing) - оценка


уязвимости программного обеспечения к различным атакам. Под
проникновением понимается широкий диапазон действий: попытки
хакеров проникнуть в систему из спортивного интереса, месть
рассерженных служащих, взлом мошенниками для незаконной наживы.
Тестирование безопасности проверяет фактическую реакцию защитных
механизмов, встроенных в систему, на проникновение. В ходе
тестирования безопасности испытатель играет роль взломщика.
• Тестирование локализации (localization testing) -  процесс адаптации
программного обеспечения к культуре какой-либо страны. Как
частность — перевод пользовательского интерфейса, документации и
сопутствующих файловпрограммного обеспечения с одного языка на
другой.
• Тестирование совместимости (compatibility testing)
По знанию системы:

• Тестирование чёрного ящика (black box)

• Тестирование белого ящика (white box)

• Тестирование серого ящика (grey box)


По степени автоматизации:

• Ручное тестирование (manual testing)


• Автоматизированное тестирование (automated testing) -  часть
процесса тестирования на этапе контроля качества в процессе
разработки программного обеспечения. Оно использует
программные средства для выполнения тестов и проверки
результатов выполнения, что помогает сократить время
тестирования и упростить его процесс. Существует два основных
подхода к автоматизации тестирования:
– тестирование на уровне кода -  модульное тестирование
–  тестирование пользовательского интерфейса (в частности, GUI-
тестирование) - имитация действий пользователя с помощью
специальных тестовых фреймворков.
• Полуавтоматизированное тестирование (semiautomated testing)
По степени изолированности компонентов:

• Компонентное (модульное)
тестирование (component/unit testing)
• Интеграционное тестирование (integration
testing)
• Системное тестирование (system/end-to-
end testing)
По времени проведения тестирования:
• Альфа-тестирование (alpha testing) - имитация реальной работы с системой .
Чаще всего альфа-тестирование проводится на ранней стадии разработки
продукта, но в некоторых случаях может применяться для законченного
продукта в качестве внутреннего приёмочного тестирования.
– Дымовое тестирование (smoke testing)- в тестировании по означает минимальный
набор тестов на явные ошибки. "Дымовой тест" обычно выполняется самим
программистом; не проходящую этот тест программу не имеет смысла отдавать на
более глубокое тестирование.
– Тестирование новой функциональности (new feature testing)
– Подтверждающее тестирование (confirmation testing)
– Регрессионное тестирование (regression testing) - собирательное название для всех
видов тестирования программного обеспечения, направленных на обнаружение
ошибок в уже протестированных участках исходного кода. Такие ошибки — когда
после внесения изменений в программу перестает работать то, что должно было
продолжать работать, — называют регрессионными ошибками
– Приёмочное тестирование (acceptance testing)
По времени проведения тестирования:
• Бета-тестирование (beta testing) -  интенсивное использование почти готовой
версии продукта (как правило, программного или аппаратного обеспечения)
с целью выявления максимального числа ошибок в его работе для их
последующего устранения перед окончательным выходом (Релизом)
продукта на рынок, к массовому потребителю.
В отличие от альфа-тестирования, проводимого силами штатных
разработчиков или тестировщиков, бета-тестирование предполагает
привлечение добровольцев из числа обычных будущих пользователей
продукта, которым доступна упомянутая предварительная версия продукта
(так называемая бета-версия).
Кроме того, открытие бета-тестирования может использоваться как часть
стратегии продвижения продукта на рынок (например, бесплатная раздача
бета-версий позволяет привлечь широкое внимание потребителей к
окончательной дорогостоящей версии продукта), а также для получения
предварительных отзывов о нём от широкого круга будущих пользователей.
По признаку позитивности сценариев:
• Позитивное тестирование (positive testing) - это тестирование на
данных или сценариях, которые соответствуют нормальному
(штатному, ожидаемому) поведению системы.
Основной целью “позитивного” тестирования является проверка того,
что при помощи системы можно делать то, для чего она создавалась.
• Негативное тестирование (negative testing) - это тестирование на
данных или сценариях, которые соответствуют нештатному поведению
тестируемой системы – различные сообщения об ошибках,
исключительные ситуации, “запредельные” состояния и т.п.
Основной целью “негативного” тестирования является проверка
устойчивости системы к воздействиям различного рода, валидация
неверного набора данных, проверка обработки исключительных
ситуаций (как в реализации самих программных алгоритмов, так и в
логике бизнес-правил).
По степени подготовленности к
тестированию:
• Тестирование по документации (formal
testing) -  тестирование приложения
проводится по заранее подготовленным
данным (тест-кейсы, чек-листы, чит-листы,
спецификация и т.д.)
• Тестирование ad hoc или интуитивное
тестирование (ad hoc testing) - тестирование
проводится при полном отсутствии
документации, без плана и цели;

Оценить