Я понимаю, как работает тестирование эквивалентности.
Как это то же самое или отличается от тестирования граничных значений?
Я понимаю, как работает тестирование эквивалентности.
Как это то же самое или отличается от тестирования граничных значений?
Проверка класса эквивалентности
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, то у вас есть три класса ввода
то для анализа граничного значения выберите вход = 19, 20, 21, 69, 70, 71. Этот тип анализа берет ошибки на границах.
Тестирование эквивалентности должно быть дополнено тестированием значения границы.
Например, для эквивалентного тестирования функции, которая принимает значения от 1 до 12
(скажем, месяцев в году) разделы были бы:
Для проверки эквивалентности достаточно выбрать одно значение в качестве тестового ввода от каждого из этих классов разделов. Это означало бы тесты со значением -2,6 и 15 считались достаточными для проверки поведения функции. Но эти значения не ломают Ошибка по очереди, которая может возникать довольно часто.
При тестировании граничных значений тестовые входы будут: -1,0,1,11,12,13 (на границах), которые будут улавливать ошибки.
Я вижу, что оба эти методы тестирования являются дополнением друг к другу.
Анализ граничных значений является частью или подмножеством разделения эквивалентности. При анализе граничных значений вместо некоторого случайного значения выбираются только значения на границе.
Анализ граничных значений преодолевает недостаток разделения классов Equivalance. Если длина исправления g9 приведена, например. Мобильный номер (10 цифр.)
Нижняя граница в этом случае равна - digit - 1 (т.е. 10 - 1 = 9) Верхняя граница в этом случае - цифра +1 (т.е. 10 + 1 = 11)
Теперь мы можем выполнить тест для 9 и 11
Динамические типы тестирования -
Тестирование на основе спецификации
а. Эквивалентное разделение
A1. Boundary value analysis
A2. Decision Tables
A3. Use case Testing
A4. State Transition testing
Структурное тестирование
а. Тестирование покрытия
В. Покрытие кода
С. Покрытие справки
Д. Принятие решения
Тестирование на основе опыта
а. Ошибка при тестировании
В. Экспериментальное тестирование
Эквивалентное разделение - это метод, при котором тестер делит условия теста на группы и наборы. Система должна обрабатывать их эквивалентно, следовательно, называемые классами эквивалентности. Для проверки одного условия из каждого раздела будет работать, чтобы предположить, что все условия будут работать в этом разделе.
EX → Проверить добавление значений одной цифры. то есть значения между 0 и 9.
Значения меньше -9, т.е. -10, -11,.... (Неверный раздел)
Значения меньше 0, то есть -1, -2,.... до -9 (Действительный раздел)
Значения между 0-9, т.е. 0,1.... до 9 (Действительный раздел)
Значения больше 9, то есть 10,11 (недопустимый раздел)
Тестирование добавления для любых двух значений каждого раздела достаточно.
Проверка граничных значений. Он основан на тестировании на границах раздела.
EX → Рассмотрим ниже комбинацию.
Добавление -9 и -10,
Добавление -10 и -11
Добавление 0 и -1
Добавление 0 и 1
Добавление 9 и 10
Добавление 11 и 10