Тестирование класса эквивалентности по сравнению с граничным тестированием - PullRequest
26 голосов
/ 15 декабря 2009

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

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

Ответы [ 6 ]

66 голосов
/ 23 декабря 2009

Проверка класса эквивалентности
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 * ​​1022 * Браузер: 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-тестирование - отличные инструменты, и вы должны их использовать, но они не идеальны и не ожидают, что при их использовании обнаружатся все дефекты. Используйте свое ноу-хау о системе, а также свой интеллект и интуицию, чтобы попробовать больше предметов и искать другие способы, которые могут привести к сбою. Ищи скрытые границы!

19 голосов
/ 15 декабря 2009

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

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

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

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

11 голосов
/ 23 декабря 2009

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

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

значения меньше 1 (0, -1, -2) недопустимый раздел значения от 1 до 12, допустимый раздел значения больше 12, недопустимый раздел

Для проверки эквивалентности достаточно выбрать одинзначение в качестве тестового ввода от каждого из этих классов разделов.Это будет означать тесты со значением -2,6, и 15 будет считаться достаточным для проверки поведения функции.Но эти значения не перехватывают Ошибка "off-by-one" , которая может возникать довольно часто.

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

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

1 голос
/ 29 декабря 2009

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

0 голосов
/ 10 декабря 2016

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

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

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

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

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

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

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

    D. Решение о покрытии

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

    A. Ошибка тестирования

    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

0 голосов
/ 13 октября 2014

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

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

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

...