Тестирование белого ящика (White Box) — тестирование ПО с полным доступом к коду проекта, при котором тестировщик знает внутреннюю структуру, устройство и реализацию системы.
— Тестирование серого ящика — метод тестирования ПО, который предполагает частичный доступ к коду проекта, объединяя в себе White Box и Black Box методы.
— Тестирование чёрного ящика (Black Box) — метод тестирования ПО, при котором тестировщик не имеет доступа к внутренней структуре и реализации системы, а основывается на работе с внешним интерфейсом тестируемой системы.
— Дефекты накапливаются: в ходе тестирования всегда будут находиться новые дефекты, и количество дефектов может накапливаться со временем. Поэтому тестировщики должны непрерывно тестировать продукт и исправлять найденные проблемы.
— Идентификатор: уникальный номер тест-кейса для идентификации и связывания с требованиями или другими документами.
— Название: краткое описание функциональности, которую тестирует данный тест-кейс.
— Окружение: на каком окружении (устройство/браузер/ОС) должно проводиться тестирование.
— Описание: подробное описание того, что тестируется в данном тест-кейсе.
— Предусловия: любые условия, которые должны быть выполнены перед запуском тест-кейса, например, наличие определенных данных или доступ к определенной системе.
— Шаги: последовательность действий, которые тестировщик должен выполнить, чтобы протестировать определенную функциональность.
— Ожидаемый результат: четкое описание того, что ожидается в результате выполнения каждого шага тест-кейса или тест-кейса в целом.
— Фактический результат: фактический результат выполнения каждого шага тест-кейса или тест-кейса в целом.
— Статус: текущее состояние тест-кейса, например, пройден, провален или в процессе выполнения.
— Постусловия: любые условия, которые должны быть выполнены после завершения тест-кейса, например, восстановление данных или перезагрузка системы.
— Заключение: краткий комментарий о результатах тестирования, включая проблемы, которые были обнаружены в процессе выполнения тест-кейса, и рекомендации для дальнейших шагов.
— Планирование тестирования: на этом этапе определяются цели тестирования, составляется план тестирования, определяется состав тестовых случаев, определяются критерии окончания тестирования.
— Проектирование тестов: на этом этапе составляются тестовые сценарии, определяются входные данные и ожидаемые результаты для каждого тестового случая.
— Подготовка тестовых данных: на этом этапе создаются тестовые данные, которые будут использоваться при проведении тестирования.
— Выполнение тестов: на этом этапе проводятся тесты в соответствии с планом тестирования. Результаты тестирования записываются и анализируются.
— Анализ результатов тестирования: на этом этапе анализируются результаты тестирования, выявляются ошибки и проблемы, их описывают, классифицируют по уровню серьезности и приоритету.
— Исправление ошибок: на этом этапе исправляются выявленные ошибки и проблемы.
— Повторное тестирование: после исправления ошибок проводится повторное тестирование, чтобы убедиться, что ошибки действительно были исправлены и не появились новые.
— Приемочное тестирование: на этом этапе проводится финальное тестирование, которое выполняется с целью убедиться, что ПО полностью соответствует требованиям заказчика и готово к выходу в эксплуатацию.
Каждый этап тестирования имеет свои специфические особенности и выполняется в определенной последовательности, что позволяет обеспечить высокое качество продукта.
Классификация тестирования по исполнителям тестирования:
Функциональное тестирование — это тестирование, которое направлено на то, чтобы убедиться в том, что ПО способно выполнять свои функции и соответствовать функциональным требованиям, установленным для него.
Нефункциональное тестирование включает в себя проверку соответствия нефункциональным требованиям, таким как удобство использования для конечных пользователей, масштабируемость, производительность, безопасность, надежность и др. Виды нефункционального тестирования:
— Тестирование пользовательского интерфейса (UI Testing) — это процесс проверки интерфейса на соответствие заданным требованиям, таким как размер, шрифт, цвет и последовательность действий.
— Тестирование удобства использования (Usability Testing) — это метод проверки, который оценивает удобство использования, обучаемость, понятность и привлекательность продукта для пользователей в соответствии с контекстом использования. Он состоит из UX (User Experience), который описывает взаимодействие пользователя с продуктом, и UI (User Interface), который представляет собой инструмент для взаимодействия между пользователем и веб-ресурсом.
— Тестирование безопасности (Security Testing) — это стратегия, которая используется для проверки безопасности системы и анализа рисков, связанных с защитой приложения от атак хакеров, вирусов, несанкционированного доступа к конфиденциальным данным и другими видами угроз.
— Инсталляционное тестирование (Installation Testing) — это проверка успешной установки и настройки, обновления или удаления приложения на различных платформах.
— Конфигурационное тестирование (Configuration Testing) — это специальный вид тестирования, который проверяет работу программного обеспечения в разных конфигурациях системы, включая заявленные платформы, поддерживаемые драйверы и различные конфигурации компьютеров.
— Тестирование на отказ и восстановление (Failover and Recovery Testing) — это проверка, которая оценивает способность продукта успешно восстанавливаться после возникновения сбоев, связанных с ошибками программного обеспечения, отказами оборудования или проблемами связи.
— Тестирование локализации (Localization Testing) — это проверка адаптации программного обеспечения для определенной аудитории в соответствии с ее культурными особенностями, включая язык, формат даты и времени, валюту и т. д.
Однако виды тестирования можно классифицировать по различным параметрам. Например:
Классификация тестирования по позитивности сценария:
— Позитивное тестирование — использует только корректные данные для проверки правильности функций приложения.
— Негативное тестирование — использует как корректные, так и некорректные данные для проверки исключительных ситуаций и часто включает некорректные операции.
Классификация тестирования по знанию системы:
— Тестирование белого ящика (White Box) — тестирование ПО с полным доступом к коду проекта, при котором тестировщик знает внутреннюю структуру, устройство и реализацию системы.
— Тестирование серого ящика — метод тестирования ПО, который предполагает частичный доступ к коду проекта, объединяя в себе White Box и Black Box методы.
— Тестирование чёрного ящика (Black Box) — метод тестирования ПО, при котором тестировщик не имеет доступа к внутренней структуре и реализации системы, а основывается на работе с внешним интерфейсом тестируемой системы.
— Анализ требований: определение требований к ПО на основе потребностей заказчика и пользователей, описание функциональных и нефункциональных требований, создание спецификаций требований.
— Проектирование: разработка архитектуры ПО, создание диаграмм и схем, определение функциональности и интерфейсов.
— Разработка: создание кода ПО на основе заданных требований и дизайна, тестирование кода на соответствие требованиям.
— Тестирование: проверка работоспособности ПО на соответствие требованиям, выявление дефектов и ошибок в работе ПО, исправление и повторное тестирование.
— Внедрение: установка ПО на рабочие станции пользователей, настройка и интеграция с другими системами.
— Сопровождение и поддержка: обеспечение работоспособности ПО, исправление ошибок и дефектов, обновление ПО для улучшения его функциональности и совместимости с другими системами.
Полное тестирование невозможно: невозможно провести тестирование, которое охватит все возможные сценарии использования продукта. Поэтому тестировщики должны использовать свой опыт и знания, чтобы выбрать тестовые сценарии, которые наиболее вероятно приведут к проблемам.
— Тестирование производительности (Performance Testing): процесс тестирования, направленный на оценку работоспособности и производительности продукта, включая проверку его способности обрабатывать большое количество запросов и обеспечивать быстрый отклик.
— Юнит-тестирование (Unit Testing): процесс тестирования отдельных компонентов программного обеспечения (например, функций, классов), чтобы проверить их корректность и работоспособность.