Книга посвящена всего лишь одному виду тестирования — тестированию доменного анализа (также его называют доменный анализ либо доменное тестирование).
Что это за вид тестирования, которому посвятили целых 488 страниц? Давайте разберемся.
Если мы с вами обратимся к глоссарию ISTQB, то определение доменного тестирования звучит следующим образом:
Доменное тестирование (domain analysis) — методика разработки тестов, относящаяся к методу черного ящика, использующаяся для определения действенных и эффективных тестовых сценариев в случаях, когда множественные параметры могут или должны быть протестированы одновременно. Методика базируется и обобщает методы эквивалентного разбиения и анализа граничных значений.
Если переформулировать проще, то определение будет следующим:
Доменное тестирование — это вид тестирования, направленный на анализ различных значений, поиск их взаимосвязи и составление эффективных тестов.
То есть суть доменного тестирования заключается в том, чтобы разделить набор условий тестирования на те значения, которые можно считать одинаковыми, и за счет этого протестировать эффективней.
Для понимания возьмем простой пример. Скажем, что у нас есть поле Логин и Пароль. В идеале, нам необходимо каждое поле протестировать по отдельности. Однако доменное тестирование позволяет сделать так, чтобы в одном тесте мы смогли проверить оба поля одновременно и без потери в качестве тестирования.
Пример из жизни. Возьмем два действия: 1. ехать в автобусе в качестве пассажира и 2. слушать аудиокнигу. Мы можем просто ехать в автобусе без прослушивания книги, как и слушать книгу, не едучи в автобусе. Но мы можем объединить эти два действия и слушать книгу, пока едем в автобусе. При таком объединении мы без потери качества и до нужного места доберемся, и книгу послушаем.
Конечно, тут тоже есть свои ограничения и нюансы. Например, будет так шумно, что мы ничего не услышим. Но и при реальном тестировании они тоже есть. Например, при вводе логина и пароля сайт выводит “общее” предупреждение, которое гласит: “Логин или пароль введены неверно”. То есть в этом случае мы не сможем понять, что именно неверно.
Разновидности доменного тестирования: признаки эквивалентности и анализ граничных значений
В основе использования доменного тестирования лежат различные техники, но наиболее популярные — это определение классов эквивалентности и граничных значений.
Давайте вспомним, что они означают.
Классы эквивалентности — это набор тестов, полное выполнение которого является избыточным и не приводит к обнаружению новых дефектов. Если мы ожидаем одинакового результата от выполнения двух и более тестов, эти тесты эквивалентны.
Граничные значения — это те места, в которых один класс эквивалентности переходит в другой. Эти места очень важны, их обязательно следует проверять в тестах, т.к. именно в этом месте чаще всего и обнаруживаются ошибки.
Цель доменного тестирования
Цель доменного тестирования — предоставить стратегию по выбору минимального набора показательных тестов.
Нет, естественно, не один, но должно остаться минимум тестов, которые будут самые эффективными.
Шаги для достижения цели:
- Для начала нужно разделить предполагаемые значения на отдельные группы, условия — это могут быть цифры, буквы, допустимый диапазон цифр, предполагаемые граничные значения.
- Далее необходимо выявить конкретный набор значений и выбрать из них наиболее показательные, представляющие каждую группу, включая обязательно границы. Здесь мы уже определяем значения, которые будем проверять.
- И далее необходимо скомбинировать эти значения таким образом, чтобы отдельные параметры можно было протестировать одновременно.
Давайте разберем все на конкретном примере.
К нам на тестирование поступает задача «протестировать форму авторизации». Форма состоит из двух полей: логин и пароль. Длина логина и пароля — от 5 до 10 символов. Логин может принимать различные символы, цифры и буквы на латинице. Пароль тоже может принимать символы, цифры и латиницу.
Решение:
- Для начала разделим все предполагаемые значения на группы:
- Кол-во значений от — ∞ до 4
- Кол-во значений от 5 до 10
- Кол-во значений 11 до + ∞
- Спец. символы
- Буквы (латиница)
- Цифры
2. Выявляем наборы значений, представляющие каждую группу:
- 4
- 5, 7, 10
- 11
- @, !, $
- a, b, w, l
- 2, 4
3. И далее скомбинируем эти значения в виде таблицы.
Таким образом, мы добились наиболее эффективных тестов, которые не только максимально покрывают необходимые проверки, но и экономят наше время.
Плюсы и минусы доменного тестирования
У доменного тестирования есть свои как плюсы, так и свои минусы.
К достоинствам можно отнести:
- Обнаружение ошибок при минимальном количестве тестов.
- Простой и понятный подход.
Недостатки:
- Низкая вероятность обнаружения ошибок за пределами границ допущенных значений. Потому что данный метод использует технику граничных значений.
- Низкая вероятность обнаружения ошибок в сложных формах, когда, например, возможно большое кол-во различных полей, символов или значений. Так как всегда присутствует человеческий фактор, можно запутаться и что-то не учесть.
- Часто бывает сложно разделить на группы, необходимые для тестирования, так как не всегда бывает легко применить технику классы эквивалентности.
Полезные хитрости
Также есть и свои полезные трюки, которые вам могут пригодиться.
- Производите сразу несколько позитивных тестов (например, ввод данных в несколько полей), вместо одного.
- Не стоит комбинировать больше семи позитивных значений одновременно, иначе тест будет громоздким. В случае обнаружения ошибки ее придется долго локализовывать.
- С негативными тестами так комбинировать, к сожалению, не получится, так как мы должны быть уверены, что тестируемая программа корректно отслеживает проблемы с каждым из полей.
- Не стоит в одном тесте комбинировать позитивные и негативные сценарии. Каждое негативное условие всегда проверяется отдельно.
- Начинайте проверку с граничных значений, так вы откините большое количество ненужных проверок.
Если подытожить, то доменное тестирование — это не новый вид тестирования, а рекомбинация и формализация уже существующих техник.
Основное его преимущество — это сокращение количества проверяемых значений без потери эффективности тестирования. То есть правильное применение техники приводит к уменьшению количества тестов без ухудшения качества тестирования.