Эффективные способы тестирования по методу черного ящика

🔥 Важное для QA-специалистов! 🔥
В QaRocks ты найдешь туториалы, задачи и полезные книги, которых нет в открытом доступе. Уже более 16.000 подписчиков – будь среди нас! Заходи к нам в телеграм канал QaRocks

Тестирование по методу черного ящика проверяет функциональные возможности приложения без знания его внутренних структур. Так инженеры могут «увидеть» приложение глазами конечных пользователей и внести необходимые коррективы. Цель всего этого – создать приложение, которое бы соответствовало требованиям конечных пользователей. Кроме того, оно должно быть устойчиво ко внешним атакам со стороны злоумышленников. В данной статье рассматриваются примеры тестирования по методу черного ящика и их практическое применение в разработке ПО.

Содержание

Популярные виды тестирования по методу черного ящика

Метод тестирования по принципу черного ящика помогает командам разработчиков проверять работоспособность ПО путем ввода данных и наблюдения за результатами. Это позволяет командам следить за тем, чтобы проекты соответствовали функциональным требованиям со стороны бизнес-подразделений. Также это дает возможность выявлять дефекты, связанные с юзабилити, производительностью и функциональностью ПО. Давайте рассмотрим примеры того, как тестировщики используют метод черного ящика при тестировании.

Функциональное тестирование

Функциональное тестирование следит за тем, чтобы программы работали так, как надо. Например, с помощью функционального тестирования мы точно узнаем, что случится, когда пользователь нажмет кнопку в приложении онлайн-магазина и добавит товар в корзину. Кроме того, этот метод тестирования используется для проверки входных и выходных данных. Пример: тестировщик пытается ввести текст в поле с числовыми значениями и проверяет, что программа выдает сообщение об ошибке.

Нефункциональное тестирование

Тестировщики прибегают к нефункциональному тестированию в том случае, если хотят проверить, соответствует ли программное обеспечение критически важным для пользователей критериям (производительность, масштабируемость, безопасность). Основная цель – убедиться в корректной работе приложения при определенных условиях (увеличение трафика в сети и т.д.). Обычно нефункциональное тестирование проводится после прогона всех функциональных тестов.

Регрессионное тестирование

Разработчикам часто приходится исправлять ошибки, выявленные в процессе тестирования. А такие адресные изменения могут повлиять на другие функции приложения. Регрессионное тестирование следит за тем, чтобы обновления в одной части приложения не повлияли на работу других модулей. Оно проводится без знания внутренней структуры программного обеспечения. 

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».

🔥 Какой была ваша первая зарплата в QA и как вы искали первую работу? 

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

Читать в телеграм

1 комментарий к “Эффективные способы тестирования по методу черного ящика”

  1. Пингбэк: Топ-7 инструментов автоматизации мобильного тестирования

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *