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

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

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

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

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

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

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

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

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

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

  • Определить классы эквивалентности
  • Это главный шаг техники, т.к. во многом от него зависит эффективность её применения.
  • Выбрать одного представителя от каждого класса эквивалентности.
  • На этом этапе следует выбрать один тест из эквивалентного набора тестов.
  • Выполнение тестов
  • На этом шаге следует выполнить тесты от каждого класса эквивалентности.

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

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

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

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

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

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

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

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

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

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

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

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

Эффективность: позволяет значительно сократить количество тестов, необходимых для проверки функциональности, за счет того, что тесты группируются в классы.

Простота: техника является простой в понимании и применении, даже для новичков в тестировании.

Улучшение качества тестирования: позволяет более полно покрыть функциональность, так как тесты охватывают все возможные сценарии использования.

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

Невозможность учесть все возможные входные данные: техника предполагает, что все возможные входные данные можно разбить на классы, что может быть невозможно в случае большого количества входных параметров.

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

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

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

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

Условие:

  • В поля ввода можно внести русские/английские буквы;
  • Заглавные и строчные буквы; т.к. имена и фамилии могут быть составными наличие символа “-” (дефис)
    Исходя из условий, разбиение на классы эквивалентности происходит следующим образом:
    1) Допустимые значения (блок позитивных тестов):
    2) Все буквы русского (от А до Я)/английского (A-Z);
    3) Заглавные и строчные буквы;
    4) Допускается написание имени/фамилии через дефис.
    5) Недопустимые значения (блок негативных тестов):
    6) Цифры (от -∞ до +∞);
    7) Специальные символы, отличные от дефиса и угловых скобок (< >).
    Используя данные классы можно протестировать поля ввода с помощью 5 тестов.
    Из блока допустимых значений:
  • Русские буквы, заглавные и строчные: «Иван», «Петр», «Михаил», «Светлана», «Екатерина»
  • Английские буквы, заглавные и строчные: «John», «Alice», «Michael», «Peter», «Sophie»
  • Составные имена и фамилии с дефисом, русские буквы, заглавные и строчные: «Анна-Мария», «Илья-Олегович», «Александровна-Петрова», «Юрий-Михайлов», «Ольга-Николаевна»
  • Составные имена и фамилии с дефисом, английские буквы, заглавные и строчные: «Mary-Anne», «John-Peter», «Sophie-Grace», «Michael-Scott», «Oliver-James»
  • Из блока недопустимых значений:
  • Имена и фамилии, содержащие другие символы, например, цифры, пробелы, специальные символы. Эти значения следует отнести к некорректным вводам и обработать соответствующим образом.
  • %$#/ и < >
  • +1026;

Вместо заключения

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

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

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

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

I believe in QA, все о тестировании