Тестирование
November 20, 2023

2.1 Классы эквивалентности и граничные значения

Тут поговорим о 2-х самых популярных техниках тест-дизайна

Тест-дизайн - этап процесса тестирования ПО, на котором проектируются и создаются тестовые случаи (т.е. тест-кейсы) в соответствии ранее определенными критериями качества и целями тестирования (простыми словами - разработка (придумывание) тестов).

Цели тест-дизайна:

  1. Придумать тесты, которые обнаружат баги продукта.
  2. Минимизация количества таких тестов.

Техники тест-дизайна

1. Эквивалентное разбиение / Тестирование классов эквивалентности.

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

Пример: Существует компания, в которой решение о принятии на работу будет зависеть от возраста кандидатов.
0 - 13 лет - не принимаем
14 - 17 лет - part time (частичная занятость)
18 - 55 лет - full time
56 - 99 лет - не нанимаем
У нас есть 4 класса эквивалентности.

Правила эквивалентного разбиения:

  1. Определение классов эквивалентности
  2. 1 тест для одного класса (советуют брать для теста среднее значение из каждого класса)

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

Правила анализа граничных значений:

  1. Определение классов эквивалентности
  2. Определение границ диапазонов
  3. Проведение трех тестов для границ (на самой границе, значение + 1, значение -1)
    То есть если берем класс 18 - 55 лет - full time, тогда будут следующие тесты:
    17, 18, 19 и 54, 55, 56

На практике объединяют эти 2 техники. То есть на практике бы тестировали значения 17, 18, 19, 34 (среднее значение)...


Дополнения к уроку

1. Существует 2 подхода к граничным значениям:

  1. 2 граничных значения на границе (значение ниже/выше границы и значение границы).
    Пример: Мы можем ввести в поле от 2 до 6 букв. Границы для позитивного класса 2 и 6. Граничные значения 1, 2 и 6, 7
  2. 3 граничных значения на границе (граница, значение выше граничного и ниже граничного).
    Пример: Мы можем ввести в поле от 2 до 6 букв. Границы для позитивного класса 2 и 6. Граничные значения 1, 2, 3 и 5, 6, 7

2. Граничные значения определяются как для позитивных, так и негативных классов.

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

4. Значение из середины можно не тестировать и уж тем более указывать в граничные значения.

5. Если в поле можно ввести буквы - не надо ограничиваться только буквами. Числа, спецсимволы должны быть тоже проверены. А так же стоит проверять инъекции.

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

7. Если в поле есть ограничение на количество символов и одновременно валидация на тип данных, то включайте в тестовые данные значения, попадающие в этот диапазон. Например, в поле можно ввести от 2 до 6 чисел. Тестирование с буквами и спецсимволами начинайте от 2 символов. Иначе есть вероятность что валидация не сработает и не будет проверена.

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

9. В случае числа обращайте внимание на количество знаков после запятой. Они будут индикаторами того, какие граничные значения стоит тестировать.
Пример: поле принимает значения от 1.00 до 3.00. Значит граничные значения для позитивного класса будут следующие: 0.99, 1.00, 1.01 и 2.99, 3.00, 3.01

10. Классический подход к граничным значениям предполагает использовать значения от -∞ до +∞. Само собой не всегда есть возможность ввести такие величины. Поэтому допустимо начинать с того значения, которое можно ввести. Как минимум, это 1 символ или пустое значение в зависимости от требований.