Теоретические сведения
Тестирование
– процесс, направленный на оценку корректности, полноты и качества
разработанного программного обеспечения.
Тестирование
можно классифицировать по очень большому количеству признаков. Далее приведен
обобщенный список видов тестирования по различным основаниям.
Типы тестов по покрытию (по глубине)
Smoke
test – тестирование
системы для определения корректной работы базовых функций
программы в целом, без углубления в детали. При проведении теста определяется
пригодность сборки для дальнейшего тестирования.
Minimal
Acceptance Test (MAT, Positive test): тестирование системы или ее части только на
валидных данных (валидные данные – это данные, которые необходимо использовать
для корректной работы модуля/функции). При тестировании проверяется правильной
работы всех функций и модулей с валидными данными.
Для
крупных и сложных приложений используется ограниченный набор сценариев и
функций.
Acceptance
Test (AT): полное
тестирование системы или ее части как на корректных, так и на
некорректных данных/сценариях. Вид теста, направленный на подтверждение того,
что приложение может использоваться по назначению при любых условиях.
Тест
на этом уровне покрывает все возможные сценарии тестирования: проверку
работоспособности модулей при вводе корректных значений; проверку при вводе
некорректных значений; использование форматов данных отличных от тех, которые
указаны в требованиях; проверку исключительных ситуаций, сообщений об ошибках;
тестирование на различных комбинациях входных параметров; проверку всех классов
эквивалентности; тестирование граничных значений интервалов; сценарии не
предусмотренные спецификацией и т.д.
Тестовые активности (типы тестов по покрытию (по ширине)):
Defect Validation – проверка результата исправления дефектов.
Включает в себя проверку на воспроизводимость дефектов,
которые были исправлены в новой сборке продукта, а также проверку того, что
исправление не повлияло на ранее работавшую функциональность
New
Feature Test (NFT, AT of NF) – определение качества поставленной на тестирование
новой функциональности, которая ранее не тестировалась. Данный тип тестирования
включает в себя: проведение полного теста (АТ) непосредственно новой
функциональности; тестирование новой функциональности на соответствие
документации; проверку всевозможных взаимодействий ранее реализованной
функциональности с новыми модулями и функциями.
Regression
testing (регрессионное тестирование) – проводится с целью оценки качества ранее
реализованной функциональности. Включает в себя проверку стабильности ранее
реализованной функциональности после внесения изменений, например добавления
новой функциональности, исправление дефектов, оптимизация кода, разворачивание
приложения на новом окружении. Регрессионное тестирование может быть проведено
на уровне Smoke, MAT или AT.
Типы тестов по знанию коду
Черный
ящик – тестирование
системы, функциональное или нефункциональное, без
знания внутренней структуры и компонентов системы. У тестировщика нет доступа к
внутренней структуре и коду приложения либо в процессе тестирования он не
обращается к ним.
Белый
ящик – тестирование
основанное на анализе внутренней структуры компонентов или
системы. У тестировщика есть доступ к внутренней структуре и коду приложения.
Серый
ящик – комбинация
методов белого и черного ящика, состоящая в том, что к части кода
архитектуры у тестировщика есть, а к части кода – нет.
Типы тестов по степени автоматизации
Ручное
– тестирование, в
котором тест-кейсы выполняются тестировщиком вручную без
использования средств автоматизации.
Автоматизированное
– набор техник, подходов
и инструментальных средств, позволяющий исключить человека из
выполнения некоторых задач в процессе тестирования. Тест-кейсы частично или
полностью выполняет специальное инструментальное средство.
Типы тестов по изолированности компонентов
Unit/component
(модульное) –
тестирование отдельных компонентов (модулей) программного
обеспечения.
Integration
(интеграционное) –
тестируется взаимодействие между интегрированными
компонентами или системами.
System
(системное) –
тестируется работоспособность системы в целом с целью
проверки того, что она соответствуе установленным требованиям.
Типы тестов по подготовленности.
Интуитивное
тестирование выполняется
без подготовки к тестам, без определения ожидаемых результатов,
проектирования тестовых сценариев.
Исследовательское
тестирование –
метод проектирования тестовых сценариев во время
выполнения этих сценариев. Тестировщик совершает проверки, продумывает их,
придумывает новые проверки, часто использует для этого полученную информацию.
Тестирование
по документации –
тестирование по подготовленным тестовым сценариям,
руководству по осуществлению тестов.
Титы тестов по месту и времени проведения
User
Acceptance Testing (UAT) (приемочное тестирование) – формальное
тестирование по отношению к потребностям, требованиям и бизнес процессам
пользователя, проводимое с целью определения соответствия системы критериям
приёмки и дать возможность пользователям, заказчикам или иным авторизованным
лицам определить, принимать систему.
Alpha
Testing (альфа-тестирование) – моделируемое или действительное функциональное
тестирование, выполняется в организации, разрабатывающей продукт, но не
проектной командой (это может быть независимая команда тестировщиков,
потенциальные пользователи, заказчики). Альфа тестирование часто применяется к
коробочному программному обеспечению в качестве внутреннего приемочного
тестирования.
Beta
Testing (бета-тестирование) – эксплуатационное тестирование потенциальными
или существующими клиентами/заказчиками на внешней стороне (в среде, где
продукт будет использоваться) никак связанными с разработчиками, с целью
определения действительно ли компонент или система удовлетворяет требованиям
клиента/заказчика и вписывается в бизнес-процессы. Бета-тестирование часто проводится
как форма внешнего приемочного тестирования готового программного обеспечения
для того, чтобы получить отзывы рынка.
Типы тестов по объекту тестирования
Functional
testing (функциональное тестирование) – это тестирование, основанное на анализе спецификации,
функциональности компонента или системы. Функциональным можно назвать любой вид
тестирования, который согласно требованиям проверяет правильную работу.
Safety
testing (тестирование безопасности) – тестирование программного
продукта с целью определить его безопасность (безопасность
– способность программного продукта
при использовании оговоренным образом оставаться в рамках приемлемого риска
причинения вреда здоровью, бизнесу, программам, собственности или окружающей
среде.
Security
testing (тестирование защищенности) – это тестирование с целью
оценить защищенность программного продукта. Тестирование защищенности проверяет
фактическую реакцию защитных механизмов, встроенных в систему, на
проникновение.
Compatibility
testing (тестирование совместимости) – процесс тестирования для определения
возможности взаимодействия программного продукта, проверка работоспособности
приложения в различных средах (браузеры и их версии, операционные системы, их
типа, версии и разрядность)