Тестирование методом черного ящика

В этом пособии мы познакомимся с типами и методами тестирования “черного ящика”, cамим процессом, его преимуществами, недостатками и некоторыми инструментами автоматизации.

Мы также рассмотрим различия между тестированием методом “белого ящика” и “черного ящика”.

Большинство QA инженеров ежедневно проводит тестирование методом “черного ящика”.

Независимо от того, обучались мы этому или нет, каждый из нас проводил такое тестирование много раз в своей рабочей практике.

Из самого названия можно понять, что оно подразумевает взаимодействие с тестируемой системой, как с каким-то загадочным ящиком. Это значит, что вы не очень хорошо осведомлены о внутренней работе системы, но при этом понимаете, как она должна себя вести.

Рассмотрим это на примере тестирования велосипеда. Мы всегда должны сначала покататься на нем какое-то время, чтобы убедиться, что он не ведет себя необычным образом. Понимаете в чем смысл? И вот мы уже провели тестирование велосипеда методом “черного ящика”.

Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туторилов, задач по автоматизации и книг по QA.

Содержание

Что такое тестирование “черного ящика”?

Инструменты тестирования “черного ящика”

Поэтапное проведение тестирования

Преимущества и недостатки

Разница между тестированием “белого ящика” и “черного ящика

Заключение

Что такое тестирование “черного ящика”?

Тестирование “черного ящика” также известно как поведенческое тестирование, тестирование “непрозрачного или закрытого ящика”, тестирование на основе спецификаций или тестирование с глазу на глаз.

Это метод тестирования программного обеспечения, который анализирует его функциональность без полной информации о внутренней структуре/дизайне тестируемого элемента, и сравнивает входное значение с выходным.

Большинство приложений тестируется методом “черного ящика”. Чтобы обнаружить максимальное количество багов, используя этот метод, необходимо охватить большую часть тестовых случаев.

Такое тестирование проводится на протяжении всего жизненного цикла разработки и тестирования программного обеспечения, т.е. на этапах модульного, интеграционного, системного, приемочного и регрессионного тестирования.

тестирование черного ящика

Виды тестирования “черного ящика”

На практике существует несколько видов тестирования методом “черного ящика”, но если рассматривать основные его варианты, то к основополагающим относятся только функциональное и нефункциональное.

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

Этот тип тестирования затрагивает функциональные требования или спецификации приложения. На этом этапе тестируются различные действия или функции системы путем предоставления входных данных и сравнения фактического результата с ожидаемым.

Например, когда мы тестируем выпадающий список, мы нажимаем на него и проверяем, раскрывается ли он и все ли ожидаемые значения отображены.

К основным типам функционального тестирования относятся:

Познакомиться с функциональным тестированием поближе можно, прочитав статью “Что такое функциональное тестирование?”.

2. Нефункциональное тестирование (Non-Functional Testing)

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

Основные типы нефункционального тестирования включают:

О нефункциональном тестировании у нас тоже есть отдельная статья – “Что такое нефункциональное тестирование?”.

Инструменты для тестирования “черного ящика”

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

Эти инструменты записи и воспроизведения записывают тестовые случаи в виде скриптов, таких как TSL, VB script, Javascript, Perl и т.д.

Техники тестирования “черного ящика”

Чтобы систематически тестировать набор функций, необходимо разработать тест-кейсы. Тестировщики могут создавать их на основе документа спецификации требований, используя следующие техники тестирования “черного ящика”:

  • Эквивалентное разделение.
  • Анализ граничных значений.
  • Тестирование таблиц решений.
  • Тестирование переходов и состояний.
  • Предугадывание ошибок.
  • Методы тестирования на основе графов.
  • Сравнительное тестирование.

Давайте разберем каждую методику подробнее.

1. Эквивалентное разделение

Эта техника также известна как разделение на классы эквивалентности (Equivalence Class Partitioning, ECP). В этом случае входные значения для системы или приложения делятся на различные классы или группы на основе сходства результатов.

Таким образом, вместо использования каждого входного значения мы можем выбрать только одно из группы/класса для тестирования результата. Следовательно, сохраняется уровень тестового покрытия при сокращении количества переделанных тест-кейсов и, что наиболее важно, затрачиваемого времени.

Например:

Эквивалентное разбиение

Как показано на рисунке, текстовое поле “AGE” принимает только числа от 18 до 60. Следовательно, можно выделить три набора классов.

Два недопустимых класса будут следующими:

a) Меньше или равно 17.

b) Больше или равно 61.

Допустимый класс – от 18 до 60.

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

2. Анализ граничных значений

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

Границы относятся к значениям вблизи предела, при котором меняется поведение системы. При анализе граничных значений для проверки используются как валидные, так и невалидные входные данные.

Например:

Анализ граничных значений

Если мы хотим протестировать поле, в котором допустим ввод чисел от 1 до 100, мы выбираем граничные значения: 1-1, 1, 1+1, 100-1, 100 и 100+1. Вместо того чтобы использовать все значения от 1 до 100, мы просто используем 0, 1, 2, 99, 100 и 101.

3. Тестирование таблицы решений

Такие таблицы используются везде, где есть логические связи, такие как:

If
{
(Condition = True)
then action1 ;
}
else action2; /*(condition = False)*/

Затем тестировщик определит два выхода (действие 1 и действие 2) для двух условий (True и False). Таким образом, на основе вероятных сценариев составляется таблица решений для подготовки тестовых наборов.

Например:

Возьмем пример банка XYZ, который предоставляет процентную ставку для пожилых мужчин в размере 10% и 9% для остальных людей.

таблица

В данном примере условие C1 имеет два значения true и false, C2 также имеет два значения true и false. Общее количество возможных комбинаций будет равно четырем. С помощью таблицы решений мы можем создавать тестовые примеры.

4. Тестирование переходов и состояний

Тестирование переходов и состояний – это техника, которая используется для тестирования различных состояний проверяемой системы. Они изменяются в зависимости от условий или событий. Определенные события вызывают разные состояния. Из них в результате получаются сценарии, которые тестировщику необходимо их протестировать.

Систематическая диаграмма переходов и состояний дает четкое представление об изменениях состояний, но она эффективна для более простых приложений. Проекты посложнее могут привести к созданию более сложных диаграмм переходов, что делает ее менее эффективной.

Например:

Тестирование перехода состояния

5. Предугадывание ошибок

Это классический пример тестирования, основанного на опыте.

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

Несколько распространенных ошибок, которые разработчики обычно забывают устранить:

  • Деление на ноль.
  • Обработка нулевых значений в текстовых полях.
  • Принятие кнопки Submit без какого-либо значения.
  • Загрузка файла без вложения.
  • Загрузка файла, размер которого меньше или больше установленного предела.

6. Методы тестирования на основе графов

Каждое приложение представляет собой совокупность объектов. Все такие объекты идентифицируются, и составляется граф. Из него определяются все связи между объектами, и для выявления ошибок пишутся соответствующие тестовые примеры.

7. Сравнительное тестирование

В этом методе для тестирования используются различные независимые версии одного и того же программного обеспечения, которые сравниваются друг с другом.

Поэтапное проведение тестирования

Когда при тестировании проекта/приложения соблюдается систематический процесс, качество проверки сохраняется на высоком уровне. В долгосрочной перспективе это может быть полезно для дальнейших процессов тестирования.

  • Самым важным шагом является понимание спецификации требований к приложению. Необходимо правильно задокументировать спецификацию требований к программному обеспечению (SRS).
  • Используя вышеупомянутые методы тестирования черного ящика, такие как анализ граничных значений, разделение на классы эквивалентности и т.д., определяются наборы допустимых и недопустимых входов с их желаемыми выходами, и на основе этого разрабатываются тестовые примеры.
  • Разработанные тестовые примеры выполняются путем проверки фактических результатов с ожидаемыми результатами, после чего тест-кейсу присваивается статус Пройден/Не пройден.
  • Неудачные тестовые случаи расцениваются как дефекты/баги и передаются команде разработчиков для их устранения.
  • Далее, на основе исправленных дефектов, тестировщик проводит повторное тестирование, чтобы проверить, повторяются баги или нет.

Преимущества и недостатки

Преимущества

  • Тестировщику не обязательно иметь техническое образование. Важно проводить тестирование, находясь на месте пользователя, с его точки зрения.
  • Тестирование можно начинать сразу после завершения разработки проекта/приложения. И тестировщики, и разработчики работают независимо, не вмешиваясь в пространство друг друга.
  • Этот метод более эффективен для больших и сложных приложений.
  • Дефекты и несоответствия могут быть выявлены на ранних стадиях тестирования.

Недостатки

  • Без технических знаний или знаний в области программирования существует вероятность игнорирования возможных условий тестируемого сценария.
  • В условиях жестких дедлайнов есть риск протестировать меньший объем и пропустить все существующие входы и их выходные тесты.
  • Полное тестовое покрытие невозможно для больших и сложных проектов.

Разница между тестированием “белого ящика” и “черного ящика”

Ниже приведены некоторые различия между этими двумя видами тестирования:

Black Box Testing White Box Testing
Это метод тестирования без знания фактического кода или внутренней структуры приложения.Это метод тестирования, основанный на знании кода и внутренней структуре приложения.
Это тестирование более высокого уровня, такое как функциональное.Этот тип тестирования выполняется на более низком уровне, таком как модульное или интеграционное.
Концентрируется на функциональности тестируемой системы.Концентрируется на фактическом коде - программе и ее синтаксисе.
Для тестирования методом "черного ящика" требуется спецификация требований.Для тестирования методом "белого ящика" требуется проектная документация с диаграммами потоков данных, блок-схемами и т.д.
Тестирование "черного ящика" выполняется тестировщиками.Тестирование "белого ящика" проводится разработчиками или тестировщиками со знанием программирования.

Заключение

Мы рассмотрели некоторые из основных моментов, касающихся тестирования методом “черного ящика” и его техник .

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

В заключение можно сказать, что это очень полезный метод проверки функциональности системы и выявления большинства дефектов.

Перевод статьи «Black Box Testing: An In-depth Tutorial with Examples and Techniques».

2 комментария к “Тестирование методом черного ящика”

  1. Пингбэк: Разбиение на классы эквивалентности

  2. Пингбэк: Функциональное и нефункциональное тестирование

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

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