
|
|
Виды тестирования (18.01.2010)
Тестирование черного ящика (Black box testing)
– тестирование без учёта знаний о внутреннем строении продукта или его кода. За основу тестов берутся требования и функционал.
Тестирование белого ящика (White box testing)
– построено на знаниях внутренней логики кода приложения. Тесты основываются на покрытии строк, ветвей, путей и состояний приложения.
-
Тестирование черного ящика (Black box testing)
– тестирование без учёта знаний о внутреннем строении продукта или его кода. За основу тестов берутся требования и функционал.
-
Тестирование белого ящика (White box testing)
– построено на знаниях внутренней логики кода приложения. Тесты основываются на покрытии строк, ветвей, путей и состояний приложения.
-
Unit тестирование (unit testing)
– самое «микромаcштабное» тестирование, dв рамках которого тестируются отдельные функции или модули кода. Поскольку для этого вида тестирования необходимо детальное знание внутренней архитектуры программы и кода, то, как правило, оно проводится программистами, а не тестировщиками. Если в приложении недоделана архитектура со стабильным кодом, то в проведении такого тестирования могут возникнуть сложности; может потребоваться разработка модулей тестовых драйверов или тестовых программ.
-
Расширяемое интеграционное тестирование (incremental integration testing)
– непрерывное тестирование приложения по мере добавления нового функционала. Для данного вида тестирования требуется, чтобы различные составляющие функциональности приложения могли работать по отдельности до завершения всех частей программы или чтобы тестовые драйверы разрабатывались по мере необходимости; выполняется программистами или тестировщиками.
-
Интеграционное тестирование (integration testing)
– тестирование объединенных частей приложения с целью определения корректности их совместной работы. Частями могут быть модули кода, отдельные приложения, приложения клиента и сервера в рабочей сети и т.д. Такое тестирование особенно значимо для распределенных систем и систем клиент-сервер.
-
Функциональное тестирование (functional testing)
– тестирование черного ящика в зависимости от функциональных требований приложения; этот вид тестирования выполняется тестировщиками.
-
Системное тестирование (system testing)
– тестирование черного ящика, построенное на спецификации требований в целом; покрывает все соединенные части системы.
-
End-to-end тестирование (end-to-end testing)
– аналогично системному тестированию; самое «макромасштабное» тестирование; затрагивает среду приложения полностью в условиях, имитирующих реальное использование, таких как взаимодействие с базой данных, использование передачи данных по сети или работа с другим аппаратным устройством, приложениями или системами при необходимости.
-
Дымовое тестирование (Smoke testing)
– обычно первоначальная стадия тестирования, которая нужна, чтобы определить, достаточно ли хорошо работает новая версия ПО для начала основной работы по тестированию.
-
Регрессионное тестирование (regression testing)
– повторяющееся тестирование после исправлений или модификаций приложения или его среды. Иногда сложно определить необходимые объемы повторного тестирования, особенно к концу цикла разработки. Автоматизированное тестирование бывает наиболее полезным именно для регрессионных тестов.
-
Приемочное тестирование (acceptance testing)
– заключительное тестирование, основанное на спецификациях конечного пользователя или заказчика или основанное на использовании конечными пользователями/заказчиками некоторое ограниченное время.
-
Нагрузочное тестирование (load testing)
– тестирование приложения при больших нагрузках, например, веб-сайта при предельных нагрузках, чтобы определить, при каком количестве подключений система не сможет выполнять свой функционал или будет это делать с недопустимым уровнем производительности.
-
Стресс тестирование (stress testing)
– термин, который часто используют наряду с нагрузочным тестированием и тестированием производительности. Употребляется аналогично: для описания таких проверок, как функциональное тестирование системы при необычно высоких нагрузках, частом повторе определенных действий или вводов, ввода больших цифровых величин, сложных запросов в базу данных системы… Основное отличие стресс тестирования от других видов нефункционального тестирования – использование величин (чисел, одновременно подключенных пользователей и т.д.), которые заведомо больше поддерживаемых возможностей системы.
-
Тестирование производительности (performance testing)
– термин, который часто используют наряду со стрессовым тестированием и нагрузочным тестированием. В данном виде тестирования скорость выполнения функционала системы сравнивают с определённым эталоном.
-
Тестирование удобства пользования (usability testing)
– тестирование «дружелюбности» по отношению к пользователю. Несомненно, эта категория субъективна и зависит от конкретного конечного пользователя или заказчика. Можно использовать опросы, беседы с пользователем, видеозаписи собраний с пользователями и другие средства. Как правило, программисты и тестировщики не подходят для этого вида тестирования.
-
Тестирование установки (install/uninstall testing)
– тестирование полных, частичных процессов установки/удаления, обновлений.
-
Тестирование на восстановление (recovery testing)
– тестирование восстановления системы после сбоя, отказа оборудования или других бедственных проблем.
-
Тестирование на отказ (failover testing)
– как правило, проводится поочередно с тестированием на восстановление.
-
Тестирование безопасности (security testing)
– тестирование защищённости системы от несанкционированного внутреннего или внешнего доступа, преднамеренного повреждения и т.д.; Тестирование безопасности может требовать изощрённых методик тестирования.
-
Тестирование совместимости (compatability testing)
– тестирование работы системы в особых условиях окружения: оборудование, программное обеспечение, операционная система, рабочая сеть и т.д..
-
Тестирование методом свободного поиска (exploratory testing)
– часто употребляется в значении творческого неформального тестирования, которое не построено на каких-либо тест-планах или тест кейсах; тестировщики исследуют программу по мере тестирования.
-
Хаотическое (Ad Hoc) тестирование (ad-hoc testing)
– похоже на тестирование методом свободного поиска, но, как правило, менее структурированное.
-
Контекстное тестирование (context-driven testing)
– тестирование, построенное на представлении об условиях, культуре и цели использования программы. Например, при тестировании жизненно-важного медицинского оборудования использовался бы подход, разительно отличающийся от подхода при тестировании дешевой компьютерной игры.
-
Приёмочное тестирование (user acceptance testing)
– определение того, отвечает ли программное обеспечение ожиданиям конечного пользователя или заказчика.
-
Сравнительное тестирование (comparison testing)
– сравнение преимуществ и недостатков продукта с конкурентами.
-
Альфа-тестирование (alpha testing)
– тестирование приложения на этапе завершения разработки; в результате такого тестирования могут быть внесены небольшие изменения в дизайн. Обычно проводится конечными пользователями или кем-либо еще, но не тестировщиками или программистами.
-
Бета-тестирование (beta testing)
– тестирование с целью найти последние ошибки и недочеты до последнего выпуска при фактически завершенных как тестировании, так и разработке. Обычно проводится конечными пользователями или кем-либо еще, но не тестировщиками или программистами.
-
Мутационное тестирование (mutation testing)
– способ определения полезности набора тестовых данных или тест кейсов. Проводится посредством умышленного внесения различных изменений в код («багов») и повторного тестирования с неизмененными тестовыми данными или тест кейсами, и определяется, выявились ли «баги». Для полноценного внедрения необходимы большие вычислительные ресурсы.
|
|
|