Тестирование класса эквивалентности по сравнению с граничным тестированием

Я понимаю, как работает тест на эквивалентность.

Как это то же самое или отличается от граничного тестирования?

6 ответов

Тестирование класса эквивалентности
EC-тестирование - это когда у вас есть несколько тестовых элементов (например, значений), которые вы хотите протестировать, но из-за затрат (времени / денег) у вас нет времени, чтобы протестировать их все. Поэтому вы группируете тестовый элемент в класс, где все элементы в каждом классе должны вести себя одинаково. Теория заключается в том, что вам нужно протестировать только один из каждого элемента, чтобы убедиться, что система работает.
Пример 1
Дети до 2 лет катаются на автобусе бесплатно. Молодые люди платят 10 долларов, взрослые - 15 долларов, а пенсионеры - 5 долларов.
Классы:
Цена:0 -> Возраст:0-1
Цена:10 -> Возраст:2-14
Цена:15 -> Возраст:15-64
Цена:5 -> Возраст:65-бесконечность

Пример 2 (более одного параметра)
Сотовые телефоны K80, J64 и J54 работают под управлением Java 5. K90 и J99 работают под управлением Java 6. Но есть два возможных браузера FireFox и Opera, J-модели работают на FF, а K-модели работают на O.
Классы:
Браузер:FF, Java:5 -> Телефоны:J64,J54
Браузер:FF, Java:6 -> Телефоны:J99
Браузер:O, Java:5 -> Телефоны:K80
Браузер:O, Java:6 -> Телефоны:K90

Опасности тестирования класса эквивалентности
Существует опасность использования ЕС-тестирования, которое редко упоминается в книгах по тестированию, но очень важно помнить.
То, что два элемента / значения должны принадлежать к одному классу и вести себя одинаково, не означает, что они действительно ведут себя одинаково.
Это означает, что только потому, что вы тестируете одно значение в классе, ВСЕ значения в классе ведут себя одинаково. Мой реальный пример - это мобильные телефоны, у которых была определенная платформа Java. Они должны были работать одинаково, но на самом деле это не так. Таким образом, тестирование только одного значения в классе - это хорошо, но недостаточно. EC-тестирование - это хороший инструмент, но он не дурак, и будьте осторожны с ним. Если контрольные примеры дешевые и быстрые (например, автоматизация), тестируйте больше, или почему бы не проверить их все!

Тестирование граничных значений
Тестирование BV - это когда вы решаете проверить значения на границе каждого класса, который вы определили. Теория состоит в том, что большинство дефектов происходит по краям класса.пример
Классы:
Цена:0 -> Возраст:0-1 (Граничные значения 0, 1)
Цена:10 -> Возраст:2-14 (Граничные значения 2, 14)
Цена:15 -> Возраст:15-64 (Граничные значения 15, 64)
Цена:5 -> Возраст:65-бесконечность (Граничные значения 65)

Критика граничного тестирования
1) Я и другие специалисты по тестированию, у которых я проходил курсы, не уверены, что большинство дефектов скрыто по краям каждого класса. И я никогда не видел исследований, доказывающих, что это так. 2) Тот факт, что вам нужно использовать BV Testing, доказывает, что EC Testing имеет недостатки, так как вы тестируете более одного значения каждого класса. 3) Легко использовать при использовании значений, таких как целые числа. Но каково граничное значение класса моделей телефонов или версий браузеров?

Скрытое граничное тестирование
Граничные значения класса часто основаны на спецификации того, как должна работать система. Это все хорошо и хорошо, но большинство систем содержат границы, которые не описаны ни в одной спецификации, и вам придется искать их самостоятельно. Например, "Сколько символов я могу вставить в тестовое поле до того, как система выйдет из строя и сломается.", "Насколько большим может быть файл данных, прежде чем он станет настолько медленным для чтения, что его раздражает".
Примеры из реального мира
- Вставка миллиона символов в текстовую область в FireFox 3.5 на win 7 приводит к сбою.
- ReCaptcha имеет ограничение в 16003 символа, обрабатывает ли ваша система 413, которые она возвращает ему, если кто-то поместит 16004+ символов в поле. Или это сломается

Резюме
EC-тестирование и BV-тестирование - отличные инструменты, и вы должны их использовать, но они не идеальны и не ожидают, что при их использовании обнаружатся все дефекты. Используйте свои ноу-хау о системе, а также свой интеллект и интуицию, чтобы попробовать больше предметов и искать другие способы, которые могли бы дать сбой. И искать скрытые границы!

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

Например, если условие ввода находится в диапазоне от 20 до 70, то у вас есть три класса ввода

  1. менее 20
  2. от 20 до 70
  3. более 70

затем для анализа граничных значений выберите вход = 19, 20, 21, 69, 70, 71. Этот тип анализа выявляет ошибки на границах.

Проверка эквивалентности должна быть дополнена проверкой граничного значения.

Например, для эквивалентного тестирования функции, которая принимает значения от 1 до 12
(скажем месяцы года) разделы будут:

  • значения меньше 1 (0,-1,-2), неверный раздел
  • значения между 1-12, допустимый раздел
  • значения больше 12, неверный раздел
  • Для проверки эквивалентности достаточно выбрать одно значение в качестве тестового ввода для каждого из этих классов разделов. Это будет означать тесты со значением -2,6, и 15 будет считаться достаточным для проверки поведения функции. Но эти значения не фиксируют ошибку Off-by-one, которая может происходить довольно часто.

    При тестировании граничного значения входные данные теста будут: -1,0,1,11,12,13 (на границах), что будет отлавливать ошибочные данные по одной.

    Я вижу, что оба эти метода тестирования дополняют друг друга.

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

    Анализ граничных значений преодолевает недостаток разделения классов Equivalance. Если фиксированная длина, например, g9iven. Номер мобильного телефона (10 цифр.)

    Нижняя граница в этом случае - цифра - 1 (т.е. 10 - 1 =9). Верхняя граница в этом случае - цифра +1 (т.е. 10 + 1 =11).

    Теперь мы можем выполнить тест для 9 и 11

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

    1. Спецификация на основе тестирования

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

        A1. Boundary value analysis
      
        A2. Decision Tables
      
        A3. Use case Testing
      
        A4. State Transition testing
      
    2. Структурное тестирование

      А. Тестовое покрытие

      B. Покрытие кода

      C. Заявление о покрытии

      D. Охват решениями

    3. Тестирование на основе опыта

      А. Проверка ошибок

      B. Исследовательские испытания

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

    EX >> Проверьте сложение однозначных значений. т.е. значения между 0 и 9.

    1. Значения меньше -9, т.е. -10,-11, …. (Неверный раздел)

    2. Значения меньше 0, т.е. -1,-2, …. до -9 (Действительный раздел)

    3. Значения между 0-9, т.е. 0,1…. до 9 (действительный раздел)

    4. Значения больше 9, т.е. 10,11 (неверный раздел)

    Достаточно проверить сложение для любых двух значений каждого раздела.

    Тестирование граничных значений - оно основано на тестировании на границах между разделами.

    EX >> Рассмотрим ниже комбинацию.

    1. Добавление -9 и -10,

    2. Добавление -10 и -11

    3. Сложение 0 и -1

    4. Добавление 0 и 1

    5. Сложение 9 и 10

    6. Сложение 11 и 10

    Другие вопросы по тегам