🔥 Важное для QA-специалистов! 🔥
В QaRocks ты найдешь туториалы, задачи и полезные книги, которых нет в открытом доступе. Уже более 16.000 подписчиков – будь среди нас! Заходи к нам в телеграм канал QaRocks
Тестирование по методу черного ящика проверяет функциональные возможности приложения без знания его внутренних структур. Так инженеры могут «увидеть» приложение глазами конечных пользователей и внести необходимые коррективы. Цель всего этого – создать приложение, которое бы соответствовало требованиям конечных пользователей. Кроме того, оно должно быть устойчиво ко внешним атакам со стороны злоумышленников. В данной статье рассматриваются примеры тестирования по методу черного ящика и их практическое применение в разработке ПО.
Содержание
- Популярные виды тестирования по методу черного ящика
- 4 эффективных способа тестирования по методу черного ящика
- Примеры использования методов белого и черного ящика
Популярные виды тестирования по методу черного ящика
Метод тестирования по принципу черного ящика помогает командам разработчиков проверять работоспособность ПО путем ввода данных и наблюдения за результатами. Это позволяет командам следить за тем, чтобы проекты соответствовали функциональным требованиям со стороны бизнес-подразделений. Также это дает возможность выявлять дефекты, связанные с юзабилити, производительностью и функциональностью ПО. Давайте рассмотрим примеры того, как тестировщики используют метод черного ящика при тестировании.
Функциональное тестирование
Функциональное тестирование следит за тем, чтобы программы работали так, как надо. Например, с помощью функционального тестирования мы точно узнаем, что случится, когда пользователь нажмет кнопку в приложении онлайн-магазина и добавит товар в корзину. Кроме того, этот метод тестирования используется для проверки входных и выходных данных. Пример: тестировщик пытается ввести текст в поле с числовыми значениями и проверяет, что программа выдает сообщение об ошибке.
Нефункциональное тестирование
Тестировщики прибегают к нефункциональному тестированию в том случае, если хотят проверить, соответствует ли программное обеспечение критически важным для пользователей критериям (производительность, масштабируемость, безопасность). Основная цель – убедиться в корректной работе приложения при определенных условиях (увеличение трафика в сети и т.д.). Обычно нефункциональное тестирование проводится после прогона всех функциональных тестов.
Регрессионное тестирование
Разработчикам часто приходится исправлять ошибки, выявленные в процессе тестирования. А такие адресные изменения могут повлиять на другие функции приложения. Регрессионное тестирование следит за тем, чтобы обновления в одной части приложения не повлияли на работу других модулей. Оно проводится без знания внутренней структуры программного обеспечения.
4 эффективных способа тестирования по методу черного ящика
Разработчики и тестировщики проверяют программы на соответствие требованиям и выявляют проблемы с юзабилити. Для этого они используют несколько видов тестирования. Для начала давайте рассмотрим самые популярные методики.
- Анализ требований. Работа команды начинается с анализа требований к приложению. Эти требования предоставляются представителями бизнеса. В документе описывается, чего именно пользователи ждут от приложения. Кроме того, этот документ служит основой для разработки тест-кейсов.
- Тест-кейсы. Тест-кейсы составляются по определенным входным данным и условиям и позволяют тестировщикам оценивать юзабилити, функциональность и производительность приложения, не имея предварительных знаний о программе. Возможные примеры тест-кейсов: установить границы для диапазонов входных данных или убедиться, что пользователи могут войти в систему только при вводе корректных учетных данных.
- Регистрация ошибок и отчетность. Тестировщики фиксируют все проблемы, выявленные при тестировании. Кроме того, они подробно описывают шаги: что должно получиться, и что в итоге произошло. Далее эта информация передается команде разработчиков.
1. Эквивалентное разделение – объединение тест-кейсов
В этой методике входные данные разбиваются на классы или разделы по схожему поведению. Тестировщики пользуются эквивалентным разделением, чтобы сократить количество тест-кейсов, необходимых для тщательного тестирования ПО. Данный подход можно использовать для тестирования разных входных/выходных данных и значений. Например, тестировщики могут создать разделы с недопустимыми данными, которые должны отклоняться приложением.
Если одни входные данные из раздела работают так, как надо, то считается, что и остальные значения из этого раздела корректны.
Для эквивалентного разделения команды определяют все возможные данные, которые приложение может принимать на входе. Затем просматривают требования к созданию ПО и на основании них создают классы из допустимых/недопустимых входных данных. После этого тестировщики выбирают по одному значению из каждого класса эквивалентности и тестируют его.
Ниже приведены примеры тестирования по методу черного ящика с использованием эквивалентного разделения.
Числовой ввод
Тестировщик хочет проверить, что поле с числовым вводом принимает только возраст пользователя от 1 до 100. Поэтому он создает два класса эквивалентности: один – с числами от 1 до 100 и другой – с диапазоном от 100 до 200. Далее тестировщик берет любые числа из каждого класса (например, 32 и 108) и проверяет поведение программы: она должна принимать и отклонять значения в соответствии с критериями.
Текстовый ввод
Тестировщик хочет проверить, что текстовое поле сайта принимает только имена пользователей длиной не менее 5 и не более 20 символов. Для этого создаются два набора классов эквивалентности. В наборе с допустимыми значениям содержатся имена в заданном диапазоне, а в другом – слишком короткие (0-4 символа), либо слишком длинные (более 20 символов).
2. Анализ граничных значений – тестирование на границах
С помощью анализа граничных значений тестировщики находят и тестируют значения на границе диапазона ввода. Цель – найти любые значения, которые приведут к непредвиденному поведению и вызовут ошибку, поскольку программа не сможет корректно их обработать. Этот метод улучшает надежность и устойчивость программного обеспечения.
Ключевые понятия в анализе граничных значений:
- Граничные точки – значения, расположенные на границе класса эквивалентности. Например, для поля ввода с допустимыми значениями от 1 до 100 граничной точкой будет 100.
- Допустимые граничные точки – значения в допустимом диапазоне, которые можно ввести в поле ввода.
- Недопустимые граничные точки – значения, выходящие за пределы допустимого диапазона значений.
Пример такого анализа в тестировании по методу черного ящика – проверка ввода чисел при заданном диапазоне значений. Тестировщик создает граничные данные и тест-кейсы для проверки сценариев: ниже допустимых (99), допустимые (100), выше допустимых (101). Кроме того, задаются нижние границы (например, 0 (недопустимое значение), 1 (допустимое значение) и 2 (допустимое значение)).
Еще один пример – ввод в поле с датой. Если поле ввода должно принимать только даты за 2024 год, то тестировщику нужно задать значения до нижней границы (31 декабря 2023), по нижней границе (1 января 2024) и выше нижней границы (1 мая 2024). Дополнительно тестируется и верхняя граница с допустимыми и недопустимыми данными (например, 24 декабря 2024, 31 декабря 2025, 1 января 2025).
3. Тестирование через таблицу решений – проверка логики
Этот способ тестирования проверяет, как ведет себя программа после ввода разных комбинаций данных. С его помощью можно анализировать приложения со сложной бизнес-логикой и разными условиями на входе. С такими таблицами тестировщики могут охватить все возможные комбинации входных данных для любого реального сценария.
В таблицу решений включаются все потенциальные значения на входе и соответствующие им значения на выходе. В каждом столбце таблицы содержится уникальная комбинация входных условий, а в каждой строке – правила или действия, которые выполняются при наступлении этих условий. Место пересечения столбца и строки показывает, истинно или ложно это условие, и какое действие ожидается от тестировщика.
Основные составляющие таблицы решений:
- Условия: ввод переменных или условий, влияющих на результат теста
- Действия: возможные действия или результат, к которым приводят различные комбинации условий
- Правила: уникальное сочетание условий и соответствующие им действия
В таблице решений тестировщики перечисляют условия, влияющие на результат, и возможные действия. Сначала для каждого условия определяются потенциальные значения или состояния (например, да/нет, истина/ложь). Затем создаются правила и задаются альтернативные варианты для охвата всех возможных сценариев. После этого определяются действия, которые необходимо выполнить в каждом правиле. И, наконец, все условия, альтернативы, правила и действия оформляются в табличную структуру.
4. Переход состояний – тестирование динамического поведения
Тестирование переходов состояния проверяет поведение системы при переходе между состояниями в ответ на разные входные данные/события. Наиболее эффективно используется при тестировании приложений, в которых состояние зависит от текущего ввода и уже добавленных исторических значений.
К важнейшим составляющим тестирования переходов состояний относятся:
- Состояние: что происходит с объектом, когда он соответствует условию/выполняет действие/ожидает события
- Переход: перемещение из одного состояния в другое при срабатывании условия/события в приложении
- Событие: действие, вызывающее переход
- Действие: что происходит при переходе из одного состояния в другое.
Тестирование переходов состояния можно использовать для проверки банкоматов. Для этого настраивают тесты, которые проверяют переходы состояний по наступлению условий: пользователь вставляет карту, вводит правильный/неправильный PIN-код, проводит финансовую операцию. Кроме того, можно добавить тест-кейсы для проверки переходов, когда пользователь, например, вводит свой ID и пароль (правильный и неправильный), либо выходит из системы.
Примеры использования методов белого и черного ящика
Для обеспечения качества ПО необходимо применять тестирование как по методу черного, так и по методу белого ящика. Первое занимается внешним поведением ПО, а с помощью второго проверяется внутренняя логика и структура кода.
Идеальные примеры использования для тестирования по методу черного ящика:
- Проверить требования
- Убедиться, что пользовательское приемочное тестирование (UAT-тестирование) охватывает все потребности пользователей
- Протестировать интеграцию новых модулей в существующее ПО и убедиться, что они корректно работают вместе
Тестирование по методу белого ящика отлично подойдет, когда тестировщики хотят:
- Провести модульное тестирование и убедиться в корректной работе разных компонентов системы при разных условиях
- Проверить, как данные передаются между модулями
- Провести анализ покрытия кода и проследить, чтобы тестирование охватывало все разделы кода.
Перевод статьи «Effective Black Box Testing Methods You Need to Try».
Пингбэк: Топ-7 инструментов автоматизации мобильного тестирования