Класс эквивалентности (equivalence class) — одно или несколько значений ввода, к которым программное обеспечение применяет одинаковую логику.

Техника анализа классов эквивалентности

 это техника, при которой мы разделяем функционал (часто диапазон возможных вводимых значений) на группы эквивалентных по своему влиянию на систему значений. Такое разделение помогает убедиться в правильном функционировании целой системы — одного класса эквивалентности, проверив только один элемент этой группы. Эта техника заключается в разбиении всего набора тестов на классы эквивалентности с последующим сокращением числа тестов.

Техника анализа классов эквивалентности
Техника анализа классов эквивалентности

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

Признаки эквивалентности тестов:

  • направлены на поиск одной и той же ошибки;
  • если один из тестов обнаруживает ошибку, другие скорее всего, тоже её обнаружат;
  • если один из тестов не обнаруживает ошибку, другие, скорее всего, тоже её не обнаружат;
  • тесты используют схожие наборы входных данных;
  • для выполнения тестов мы совершаем одни и те же операции;
  • тесты генерируют одинаковые выходные данные или приводят приложение в одно и то же состояние;
  • все тесты приводят к срабатыванию одного и того же блока обработки ошибок;
  • ни один из тестов не приводит к срабатыванию блока обработки ошибок.

Техника анализа классов эквивалентности алгоритм использования:

  • Определить классы эквивалентности.

Это главный шаг техники, т.к. во многом от него зависит эффективность её применения.

  1. Выбрать одного представителя от каждого класса эквивалентности.

На этом этапе следует выбрать один тест из эквивалентного набора тестов.

  1. Выполнение тестов.

На этом шаге следует выполнить тесты от каждого класса эквивалентности.

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

Техника анализа классов эквивалентности классический пример:

Есть поле ввода с диапазоном допустимых значений от 1 до 100.

Сами понимаете, что на 95 тестов на допустимые значения и на несметное количество тестов на недопустимые значения уйдет очень много времени. И здесь нам помогут классы эквивалентности.

Исходя из того, с одной стороны, все допустимые значения могут влиять на поле ввода одинаково, следовательно все числа от 1 до 100 можно смело считать эквивалентными. С другой стороны, все недопустимые значения должны одинаково влиять на поле ввода (в идеале не должно быть возможности ввода этих значений в поле). Таким образом, есть уже несколько классов эквивалентности:

  1. допустимые значения (от 1 до 100);

недопустимые значения:

  1. от — ∞  до 0;
  2. от 101 до + ∞;
  3. специальные символы (# @ + — / _  : ; “ ‘ и т.д.);
  4. буквы.

Используя классы эквивалентности можно протестировать поле ввода минимум из 5 тестов.

На практике классы эквивалентности обязательны при тестировании всевозможных форм и полей ввода.

Плюсы и минусы техники  анализа эквивалентных классов

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

К минусам можно отнести неправильное использование техники, из-за которого есть риск упустить баги.

Техника анализа классов эквивалентности пример из реального проекта:

проект  — Btrack.com

протестировать поля ввода  — в Manage->Users Add user поля Имя/Фамилия

Условие: в поля ввода можно внести русские/английские буквы; заглавные и строчные буквы; т.к. имена и фамилии могут быть составными наличие символа “-” (дефис)

 

Исходя из условий, разбиение на классы эквивалентности происходит следующим образом:

Допустимые значения (блок позитивных тестов):

  1. все буквы русского (от А до Я)/английского (A-Z);
  2. заглавные и строчные буквы;
  3. допускается написание имени/фамилии через дефис.

Недопустимые значения (блок негативных тестов):

  1. цифры (от -∞ до +∞);
  2. специальные символы, отличные от дефиса и угловых скобок (< >).

 

Используя данные классы можно протестировать поля ввода с помощью 5 тестов.

Из блока допустимых значений:

  1. буква П/F;
  2. р и Р/g и G$
  3. Салтыков-Щедрин.

Из блока недопустимых значений:

  1. +1026;
  2. %$#/ и  < >.

Подытожим — Техника анализа классов эквивалентности одна из нескольких часто применяемых техник при планировании и разработке тестов. Значительно сокращает количество тестов необходимых для проверки функционала и время, с другой стороны в не опытных руках может стать инструментом который не только не поможет найти дефекты, но и сложит ошибочное представление о покрытие приложения тестами.

О других техниках читайте здесь: