Анализ граничных значений – обычно сокращенно BVA – является распространенным методом тестирования “черного ящика “. Этот подход проверяет наличие дефектов в программном обеспечении, проверяя входные значения на границах допустимых диапазонов.
В этой статье мы рассмотрим, что такое тестирование с помощью граничного анализа, почему оно полезно, а также изучим некоторые подходы, техники и различные инструменты для тестирования границ.
Что такое анализ граничных значений в тестировании программного обеспечения?
Анализ граничных значений – это один из видов функционального тестирования. Этот тип тестирования заключается в проверке соответствия каждой функции программного обеспечения требованиям и спецификациям. В случае граничного тестирования эта функциональность включает в себя то, как программное обеспечение работает с различными входными данными.
BVA – это метод тестирования программного обеспечения, который проверяет, как программное обеспечение будет реагировать на входные данные на границах входных данных или около них. По сути, каждый вход имеет допустимые диапазоны. Например, у вас может быть поле для ввода пароля, которое принимает пароли от 8 до 12 символов. Граничное тестирование проверяет пароли с длиной символов 7, 8, 12 и 13.
Мысль заключается в том, что на границах пределов, т.е. 7, 8, 12 и 13, вероятность ошибки выше, чем на числах внутри границ, таких как 9, 10 и 11. Хотя в примере с полем, принимающим от 8 до 12 символов, преимущества могут показаться незначительными, они становятся более очевидными, когда вам нужно написать тестовые примеры для полей, принимающих от 1 до 20 символов или числа от 1 до 1000 и т. д.
Поэтому, чтобы сэкономить время и сократить количество тестовых случаев в рамках функционального тестирования, анализ граничных значений рассматривает ценности:
- При минимальном значении
- Непосредственно ниже минимального значения
- При максимальном значении
- Непосредственно над максимальным значением
Преимущества анализа граничных значений при тестировании
Граничное тестирование имеет ряд неоспоримых преимуществ для команд QA.
#1. Повышение качества программного обеспечения
Кошмарный сценарий для тестировщиков – это ошибки и дефекты, которые остаются незамеченными. Когда нужно проверить так много вещей, некоторые дефекты могут остаться незамеченными. Граничное тестирование доказывает функциональность областей программного обеспечения, в которых с большей вероятностью могут быть ошибки, что приводит к улучшению качества сборки программного обеспечения и, в конечном итоге, к созданию более надежного и стабильного приложения.
#2. Увеличение охвата тестами
BVA в тестировании программного обеспечения так полезен, потому что он помогает сократить количество тестовых случаев, необходимых для полного покрытия тестами. Анализ граничных значений гарантирует, что важные значения и каждое значение могут быть проверены более тщательно.
#3. Раннее обнаружение дефектов
Тестирование по границам значений является частью подхода, в котором приоритет отдается раннему обнаружению дефектов. Вылавливание ошибок на ранних стадиях означает, что команды разработчиков могут сэкономить время и деньги, даже не говоря о том, что на ранних стадиях разработки их гораздо проще исправить.
#4. Эффективность
Тестирование по границам значений является очень эффективным, так как снижает потребность в большом количестве тестовых случаев. Действительно, сокращение входных данных до всех, кроме наиболее вероятных, может значительно сэкономить время команд тестирования как на написание, так и на выполнение тестовых примеров.
Недостатки анализа граничных значений при тестировании
Конечно, ни одна методика тестирования программного обеспечения не является совершенной и не имеет своих ограничений. Хотя анализ граничных значений имеет множество преимуществ, работа с этим методом функционального тестирования сопряжена с некоторыми ограничениями.
#1. Узкая сфера применения
BVA работает на границах или краях допустимых входных данных. В общем случае он игнорирует средние входы, полагая, что они будут в порядке, если действительны входы на краях. Однако не исключено, что с некоторыми из этих непроверенных ценностей могут возникнуть проблемы.
#2. Слишком упрощенно
Граничный анализ – это упрощение. Хотя это и позволяет сократить количество тестовых случаев, такой подход менее подходит для очень сложных доменов с множеством границ, взаимодействий или зависимостей. Действительно, он может не справиться со сложными сценариями, поэтому для адекватного покрытия вам придется искать другие методы.
#3. Допущения
Любой процесс, который пытается повысить эффективность, рискует упустить конкретные ошибки. BVA фокусируется на границах на краю диапазона. При этом необходимо сделать предположения о других исходных данных, которые находятся по обе стороны от граничных значений. Тестировщики должны найти баланс между эффективностью и покрытием, что представляет собой небольшой риск, если использовать только граничное тестирование.
#4. Опора на точные спецификации и требования
Эффективность BVA зависит от качества и точности спецификаций и документации по требованиям. Любые непроверенные ошибки в этих документах могут просочиться в тестирование граничных значений и привести к тому, что специфические ошибки останутся непроверенными и необнаруженными до критических поздних стадий разработки.
#5. Опора на классы эквивалентности
Выполнение тщательного BVA требует глубокого знания классов эквивалентности. Точная установка этих классов требует опыта и некоторой справочной информации о приложении.
Проблемы анализа граничных значений
в тестировании программного обеспечения
К этому моменту вы уже должны достаточно ясно представлять себе плюсы и минусы граничного тестирования. Однако если вы хотите внедрить этот подход в собственное тестирование программного обеспечения, вы должны знать о различных трудностях, которые вам придется преодолеть.
Вот некоторые из проблем, связанных с внедрением тестирования граничных значений в тестирование программного обеспечения.
#1. Очерчивание границ
Определение границ в простых системах не представляет особых трудностей для компетентных тестировщиков. Однако бывают и более сложные ситуации, например:
- Сложные входные области с разнообразными входными переменными или сложными взаимосвязями
- Недокументированные границы, которые не были четко обозначены в документах спецификации
- Динамические границы, которые меняются в зависимости от действий пользователя или других условий
#2. Неоднозначные требования
Плохо написанные или нечеткие документы с требованиями могут препятствовать определению граничных значений. Ясность, полнота и стремление к составлению исчерпывающих спецификаций требуют времени, но в конечном итоге они окупаются.
#3. Экспертиза
Анализ граничных значений может быть обманчиво сложным. Действительно, командам тестировщиков нужны сотрудники с опытом и знаниями в этой области, чтобы разобраться в тонких нюансах техники. Более того, тестировщики должны обладать определенными знаниями о программном обеспечении или, как минимум, иметь надежные документы спецификации, на которые можно опереться.
#4. Ошибки
Граничный анализ позволяет сократить количество тестовых примеров, необходимых для проверки достоверных и недостоверных входных данных. Однако дефекты, которые находятся за пределами диапазона тестирования, могут остаться незамеченными. Более того, ошибки “off-by-one” – это распространенные ошибки кодирования, которые могут возникать на границах или вблизи них. Тестировщики должны знать о таких сценариях и предусмотреть их.
#5. Взрыв тестового случая
При наличии множества входных границ тестовые примеры могут быстро стать сложными и выйти из-под контроля. В таких ситуациях время и деньги, которые можно сэкономить с помощью граничного тестирования, теряются, что сводит на нет все преимущества решения. Сложные программные конструкции с большим количеством комбинаций и перестановок могут иметь аналогичный эффект.
#6. Ограничения инструментов анализа
Средства автоматизации тестирования программного обеспечения могут помочь командам провести адекватный анализ граничных значений. Однако даже в самых лучших случаях эти инструменты требуют некоторого ручного вмешательства как для тестирования, так и для создания тестов. Эта ситуация может усугубляться для сложных конструкций с многовариантными взаимодействиями.
Различные типы граничных значений
тестирование при тестировании программного обеспечения
В книге ” Тестирование программного обеспечения: A Craftsman’s Approach” авторы Пол К. Йоргенсен и Байрон ДеВрис описывают четыре различных типа тестирования граничных значений, к которым относятся:
1. Тестирование нормального граничного значения (NBVT)
- Проверяет допустимые входные значения на краях входной области
- Исследует минимальные и максимальные значения наряду с входами, расположенными выше и ниже границы
- Это классический тип анализа граничных значений
2. Робастное тестирование граничных значений (RBVT)
- Аналогично NBVT выше, но включает также недействительные входы
- Проверяет на границах и за их пределами, а также учитывает недействительные входы
- Фокусируется на поиске ошибок в экстремальных или неожиданных результатах
3. Тестирование граничных значений в худшем случае (WBVT)
- Проверяет поведение программного обеспечения, используя экстремальные допустимые и недопустимые значения
- Исследует значения на границе входных областей и значения за этими границами
- Стремится понять поведение программного обеспечения в более экстремальных условиях
4. Надежное тестирование граничных значений в худшем случае (RWBVT)
- Используется сочетание RBVT и WBVT для наиболее тщательного тестирования граничных значений
- Проверяет действительные и недействительные входные значения как на типичных, так и на экстремальных границах
- Предоставляет наилучшие возможности для поиска дефектов, связанных с границами
Эти подходы различаются по полноте охвата, при этом RWBVT является самым тщательным. Однако тестировщики должны признать, что для открытия этого дополнительного уровня обнаружения дефектов требуются дополнительные затраты времени и сил.
Эквивалентное разбиение и граничное значение
анализ: сходства и различия
Эквивалентное разбиение и анализ граничных значений часто используются в сочетании друг с другом. Действительно, эти два метода в значительной степени дополняют друг друга. Однако они описывают разные подходы к проверке вводимых данных. Вот сходства и различия между ними.
1. Сходства
Эквивалентное разбиение и анализ граничных значений – отличная пара. Вот некоторые общие черты обеих техник.
- Оба они относятся к методам тестирования “черного ящика”, то есть фокусируются на входных и выходных данных, которые можно протестировать без предварительного знания исходного кода приложения.
- Они оба являются частью тщательного подхода к тестированию входных данных.
- Они оба помогают тестировщикам найти баланс между полным покрытием тестами без написания чрезмерного количества тестовых случаев.
2. Различия
Чтобы изучить различия между разбиением на эквивалентности и анализом граничных значений, нам нужно рассмотреть каждый из них в отдельности.
Эквивалентное разбиение
- Разделяет входные данные на классы эквивалентности, которые должны приводить к схожим результатам работы системы
- Используется одно репрезентативное значение из каждого класса, и система тестируется с этим значением
- Она занимается определением допустимых и недопустимых классов эквивалентности
Анализ граничных значений
- Проверяет значения на границах или краях классов эквивалентности
- Проверьте несколько значений, включая минимальное, максимальное и значения по обе стороны от границы
- Ищет ошибки, которые находятся на границе границ
Примеры эквивалентного разбиения и анализа граничных значений
Чтобы закрепить ваше понимание разделения эквивалентности и анализа граничных значений, приведем несколько примеров.
Пример эквивалентного разбиения:
Допустим, у вас есть поле ввода для регистрации автомобилей. Как правило, американские регистрационные знаки содержат от 6 до 7 символов. Для простоты мы не будем рассматривать специальные номерные знаки.
Действительные данные = пластины 6 или 7 символов
Недопустимые данные = таблички с символами >6 или >7.
Пример анализа граничных значений:
Используя тот же пример с номерным знаком, что и выше, анализ границ позволит проверить
Действительные данные = Таблички с 6 или 7 символами
Неверные данные = Таблички с 5 или 8 символами, а в некоторых случаях – с 4 и 9 символами
Пример анализа граничных значений
Возможно, лучший способ полностью понять эту концепцию – рассмотреть еще один-два примера анализа граничных значений.
Пример тестирования граничных значений №1
Чтобы более подробно изучить тестирование граничных значений, давайте рассмотрим пример домена проверки возраста.
У нас есть поле, в котором пользователь может ввести свой возраст.
Граничные значения:
- Минимальный возраст = 18 лет
- Максимальный возраст = 120 лет
Пример граничных тестовых случаев:
Всего существует шесть тестовых примеров:
- 17, 18 и 19, которые ниже минимального, минимального и выше минимального, соответственно
- 119, 18 и 19, которые ниже максимального, максимального и выше максимального, соответственно
Пример тестирования граничных значений #2.
В следующем примере пограничного тестирования мы рассмотрим сайт с минимальной скидкой в 20% на заказы от 100 долларов.
В данном примере при покупке на сумму более 600 долларов предоставляется скидка 25 %. Тест на граничную стоимость будет работать с вложениями от $100 до $600.
Граничные значения:
Минимальная квалификационная скидка = $100
Максимальная квалификационная скидка = $600
Пример граничных тестовых случаев:
И снова мы генерируем в общей сложности шесть тестовых примеров, а именно:
- $99,99, $100 и $100,01, что ниже минимального, минимального и выше минимального, соответственно
- $599,99, $600 и $600,01, что ниже максимального, максимального и выше максимального, соответственно.
Является ли тестирование границ в тестировании программного обеспечения точным?
В исследовательской статье ” Тестирование черного ящика с помощью методов разделения эквивалентности и анализа граничных значений” авторы рассматривают использование разделения эквивалентности и анализа граничных значений для тестирования академической информационной системы для университета Матарам в Индонезии.
Авторы использовали для тестирования популярный инструмент Selenium с открытым исходным кодом и выполнили в общей сложности 322 тестовых случая. Тестирование на эквивалентность и анализ граничных значений выявили около 80 неудачных случаев, что привело к соотношению валидных и невалидных тестовых оценок примерно 75:25. В целом, использование комбинации разбиения на эквивалентности и BVA при тестировании программного обеспечения привело к тщательному и полезному тестированию программного обеспечения.
Лучшие инструменты для тестирования граничных значений
Хотя специализированные программные средства для тестирования границ встречаются редко, существует множество заметных инструментов для тестирования, способных справиться с этой задачей.
#3. TestCaseLab
TestCaseLab – это облачный инструмент управления тестированием, который может помочь в тестировании BVA. Программное обеспечение позволяет командам создавать и управлять тестовыми случаями с помощью интуитивно понятного и привлекательного пользовательского интерфейса. TestCaseLab – гибкий и многофункциональный инструмент, но у него есть свои ограничения, в том числе ограниченные возможности по созданию отчетов и настройке.
#2. Micro Focus UFT One
Micro Focus UFT One – это инструмент для тестирования программного обеспечения, ориентированный на функциональное и регрессионное тестирование. Он поддерживает различные платформы, устройства, тестирование API и предлагает широкие возможности интеграции. Он предлагает создание тестов без кода и с использованием ключевых слов и может помочь командам с легкостью создавать тестовые случаи анализа граничных значений. Есть некоторые ограничения, которые необходимо учитывать, например, крутая кривая обучения и недостаточная мощность по сравнению с такими инструментами, как ZAPTEST.
#1. ZAPTEST
ZAPTEST – это комплексный инструмент для автоматизации тестирования программного обеспечения с расширенными возможностями RPA. Он создан для того, чтобы предоставить тестировщикам удобный и надежный набор средств автоматизации тестирования, которые помогут проверить программное обеспечение различными способами, в том числе с помощью BVA при тестировании ПО.
Некоторые из наиболее убедительных примеров использования ZAPTEST для анализа граничных значений включают создание тестовых примеров, обработку тестовых данных, выполнение тестов, а также отчетность и анализ. Благодаря набору шаблонов и высокому уровню настройки, а также созданию тестовых примеров без кода, пользователи ZAPTEST могут быстро и легко создавать и управлять надежными тестовыми случаями для всех типов анализа границ.
Помимо создания и управления тестовыми случаями, возможности RPA в ZAPTEST могут помочь командам тестирования в тестировании на основе анализа граничной стоимости и другими способами. Например, вы можете автоматизировать выполнение тестовых примеров, генерировать тестовые данные и создавать мощные интеграции с другими инструментами тестирования.
Советы по тестированию граничных значений
- Сочетайте анализ граничных значений с разделением на эквивалентности, чтобы убедиться, что ваши тестовые примеры охватывают различные сценарии входных данных.
- Используйте сценарии с недопустимыми входными данными (т. е. негативное тестирование), чтобы проверить, как программное обеспечение справляется с ошибками и неожиданными входными данными.
- Потратьте время на определение граничных значений для различных типов данных, таких как текст, числа, булевы символы и т.д.
- Приоритетное тестирование граничных значений для критических функций или областей, где вероятность возникновения ошибок выше
- Используйте реалистичные данные, которые представляют собой те данные, которые пользователи будут вводить в ваши домены.
Заключительные мысли
Анализ граничных значений – полезный подход к функциональному тестированию. Если у вас есть входной домен, необходимо проверить, что он принимает корректные данные и отправляет сообщения об ошибках при получении некорректных данных. Тестирование с помощью граничного анализа позволяет эффективно проверять функциональность, создавая только тестовые случаи, необходимые для комплексного тестирования.
Граничное тестирование рассматривает значения в допустимом диапазоне или около него и проверяет, как система реагирует на эти входные данные. В итоге вы экономите время и сокращаете усилия, поскольку вам не нужно создавать лишние тестовые примеры. В быстро меняющемся мире разработки программного обеспечения, где сроки, кажется, наступают быстро, командам тестирования нужна любая помощь, которую они могут получить.