Существует три подхода к тестированию программного обеспечения: тестирование белого, серого и черного ящиков. Каждый из них рассматривает процесс с иной точки зрения, и не может быть использован как единственный подход. Завершение всех трех этапов гарантирует качество продукта.
Тестирование белого ящика
Главная цель этого процесса – проверка кода, тестирование как внутренней структуры, так и дизайна. Тестировщики могут видеть код на этой стадии, поэтому, этот метод имеет ряд других названий, таких как открытое тестирование или проверка кода. Каждый термин указывает на прозрачный процесс, как и возможность проверки процессов ввода-вывода, основываясь на внутренних алгоритмах работы.
Тестирование белого ящика предполагает поиск и улучшение следующих моментов:
- Нерабочих или неоптимизированных участков кода
- Потеря безопасности
- Рабочие процессы и сценарии ввода
- Условные процессы
- Неправильное функционирование объектов
- Некорректное отображения информации.
Подтверждение работоспособности системы приложения – цель тестирования белого ящика. Любое расхождение с ожидаемыми результатами может быть классифицировано как баг, нуждающийся в корректировке.
Как осуществляется тестирование белого ящика?
Есть два шага для реализации данного этапа.
Шаг 1. Изучение исходного кода.
Понимание исходного кода приложения - это отправная точка. Здесь тестировщик программного обеспечения должен продемонстрировать свои знания языков программирования. Другой неотъемлемый навык – понимание кода безопасности. Самая популярная причина тестирования программного обеспечения - это проверка надежности системы, поскольку многие веб-страницы и приложения собирают конфиденциальную информацию о пользователях. Приложение должно быть защищено от вредоносного ПО и хакеров, которые могут получить важные данные без предоставленных доступов.
Шаг 2. Создание и внедрение алгоритмов проверки
На этом уровне проверяются различные сценарии. Разрабатываются алгоритмы проверки, реализуются с целью выявления слабых мест. Здесь может иметь место и ручное тестирование.
Методы тестирования:
Основной подход – анализ кода. Выборка недоработок в процессе внедрения алгоритмов тестирования. Все алгоритмы запускаются по несколько раз на разных участках кода, помогая изъять возможные проблемные участки.
От тестировщика не требуется выполнения всего процесса вручную. Существует большое количество инструментов, которые помогут автоматизировать рабочий процесс и сохранить время.
Тестирование черного ящика
Во время поведенческого тестирования или тестирования черного ящика, специалист не знает наверняка, что за продукт он тестирует. Внутренняя структура, приложение и дизайн остаются неизвестными для тестировщика. Тесты, как правило, функциональны. Веб-страницы изучаются с использованием браузера, вводом некоторых данных и при анализе полученных данных.
Метод черного ящика применим на следующих уровнях тестирования
- Тестирование системы
- Тестирование интеграции
- Приемочных испытаниях
Количество методов тестирования зависит от сложности продукта, т.е. ящика.
Подходы к разработке алгоритмов тестирования черного ящика бывают следующие:
- Причинно-следственные (определение случаев и их воздействия на систему)
- Анализ крайних значений (определение границ ввода)
- Разметка эквивалентности (действительные и недействительные разметки)
Тестирование серого ящика
Тестирование серого ящика предусматривает частичную осведомленность о внутренних процессах. Данный метод - это комбинация двух предыдущих подходов (тестирования белого и черного ящиков). Специалист стремится найти все проблемы функционирования и ошибки в коде. На этой стадии тестировщик может реализовать сквозной тест.
Подходы к тестированию
- Тестирование шаблонов
- Тестирование матрицы
- Регрессионное тестирование
- Тестирование с использованием ортогонального массива
Для запуска тестовых случаев во время тестирования серого ящика не обязателен доступ к коду. Каждый тест базируется на знании поведения программы. Это хороший подход к реализации функционального тестирования. Однако, это не будет успешным без реализации более глубоких методов, таких как тестирование белого и черного ящиков.