Привет, дорогой читатель!
Если ты здесь, значит, ты либо только начинаешь свой путь в мире QA, либо ищешь простые и понятные объяснения сложных тем. В любом случае, ты попал по адресу.
Для чего же нужен тест-дизайн? Тест-дизайн — это сердце тестирования. Он позволяет определить, что и как мы будем тестировать. А без хорошего тест-дизайна даже самый умный и опытный тестировщик будет биться головой о стену, пытаясь понять, почему его тесты не находят ошибок.
Начнем, наверное, с самой популярной техники тест-дизайна - Анализ граничных значений.
Что такое анализ граничных значений?
Это метод тестирования, в котором основное внимание уделяется значениям на границах допустимого диапазона. Ошибки часто проникают именно в этих "крайних" точках, и проверка их помогает быстро их находить.
Представь, что у тебя есть пачка макарон, которую тебе нужно сварить на ужин. На упаковке с макаронами написано: "Варить 8-10 минут". Эти 8 и 10 минут - это граничные значения. Если варить макароны меньше 8 минут, они могут остаться твердыми, а если больше 10 минут - стать слишком мягкими и разваренными.
Пример применения:
Предположим, у нас есть форма регистрации на сайте, и одно из полей — это возраст с допустимым диапазоном от 18 до 60 лет. Граничные значения будут: 17, 18, 19, 59, 60, 61. Здесь 17 и 61 — это значения за пределами границ, которые должны вызвать ошибку или предупреждение. Почему мы выбираем именно эти значения?
18 и 60: Это минимальное и максимальное допустимые значения. Тестируя их, мы удостоверяемся, что система корректно принимает граничные допустимые значения.
17 и 61: Это значения, которые на единицу меньше или больше минимального и максимального допустимых значений соответственно. Тестируя их, мы проверяем, как система реагирует на значения, которые лежат вне допустимого диапазона. Очень часто ошибки скрываются именно на таких значениях, когда логика обработки граничных условий написана некорректно.
19 и 59: Это значения, которые на единицу больше или меньше минимального и максимального допустимых значений соответственно. Они представляют собой внутренние граничные значения. Тестируя их, мы убеждаемся, что система корректно обрабатывает значения, которые находятся непосредственно внутри диапазона.
Давай продолжим изучение техник тест-дизайна. Давай перейдем к не наименее популярной технике - Классы эквивалентности.
Классы эквивалентности - это группировка тестовых данных, в рамках которой все элементы ведут себя одинаково. То есть, если система корректно обработает одно значение из класса, то она корректно обработает и все остальные значения этого класса
Давай представим, что у тебя есть коробка карандашей. Есть красные, синие и зеленые карандаши. Если ты решишь проверить, хорошо ли рисует один красный карандаш, и он оказался хорошим, это может значить, что и другие красные карандаши тоже хорошие. Так вместо того чтобы проверять каждый карандаш, ты проверяешь только по одному из каждой "группы" или "класса".
Ниже Пример применения данной техники, чтобы разложить всё по полочкам.
Возьмем за основу всю ту же форму регистрации на сайте, одно из полей - это возраст с допустимым диапазоном от 18 до 60 лет.
Допустимый класс: значения от 18 до 60. Здесь можно выбрать одно значение, например, 30, и удостовериться, что система корректно его принимает.
Недопустимый класс 1: значения меньше 18. Можно проверить, например, значение 10 и убедиться, что система его отклоняет.
Недопустимый класс 2: значения больше 60. Аналогично, проверим значение 70.
Продолжим наше изучение техник тест-дизайна техникой Попарного (Pairwise) тестирования.
Попарное тестирование - это метод тестирования, при котором из множества возможных вариантов входных данных выбираются и проверяются только уникальные пары. Это позволяет сократить общее количество тестовых примеров, при этом охватывая наиболее критичные комбинации.
Давай представим, что у тебя есть коробка мороженого с разными вкусами и разными топпингами (посыпками). Ты хочешь попробовать все комбинации вкусов и топпингов, чтобы понять, какие из них вместе самые вкусные. Есть ванильное мороженое, есть шоколадное. Также мы имеем 2 вида топпингов - шоколадный и карамельный. У тебя есть 4 варианта вариации мороженого - ванильное + шоколад, ванильное + карамель, шоколадное + шоколад, шоколадное + карамель. Но что, если у тебя мало времени или ты просто не хочешь есть столько мороженого? Ты можешь использовать "попарное тестирование". Это значит, что ты выберешь только несколько мороженых, но так, чтобы каждый вкус и каждая посыпка были попробованы хотя бы раз. Таким образом сократив количество съеденного мороженного до 2: ваниль + шоколад, шоколад + карамель. Получается, что ты попробовал оба вкуса мороженого и оба топпинга, но всего с двумя морожеными, а не с четырьмя.
Теперь приведем пример использования в работе тестировщика.
Допустим, у нас есть веб-сайт, на котором можно выбрать цвет фона (белый или черный) и размер текста (маленький, средний или большой). Вместо того чтобы тестировать все 6 возможных комбинаций, мы можем выбрать только основные попарные комбинации, например:
Белый фон + маленький текст
Белый фон + средний текст
Черный фон + средний текст
Черный фон + большой текст
Таким образом, проверив только 4 комбинации, мы охватили все уникальные попарные взаимодействия между цветом фона и размером текста.
И вот мы плавно подошли к последней технике тест-дизайна, про которую я бы хотела рассказать сегодня - Таблица принятия решений.
Таблица принятия решений - это инструмент для визуализации и анализа различных комбинаций условий и их ожидаемых результатов. Она представляет собой таблицу, в которой столбцы представляют условия, а строки - действия или результаты на основе этих условий.
Представь, что ты хочешь устроить пикник в парке. Но чтобы пикник был идеальным, нужно подумать о погоде и времени суток.
Вопросы на которые нам нужно ответить:
Светит ли солнце?
Утро или день?
Что мы возьмем с собой на пикник:
Очки от солнца
Зонт от дождя
Шапка
Светит ли солнце? | Утро или день? | Что взять? |
---|---|---|
Да | Утро | Очки от солнца + Шапка |
Да | День | Очки от солнца |
Нет | Утро | Шапка + Зонт от дождя |
Нет | День | Зонт от дождя |
Теперь, когда ты готовишься к пикнику, ты просто смотришь на небо и чувствуешь, утро это или день, и потом по таблице решаешь, что взять с собой. Таким образом, ты всегда будешь готов к пикнику в любой погоде. Также и в тестировании.
Пример:
Представим, что мы разрабатываем интернет-магазин. Одна из ключевых функций магазина - возможность оформления заказа. Однако перед тем как разрешить клиенту совершить покупку, система должна убедиться, что все условия для этого выполнены.
Вопросы на которые нам нужно ответить:
Авторизован ли пользователь?
Есть ли товары в корзине?
Доступен ли выбранный способ оплаты для данной страны?
Действия магазина:
Разрешить оформить заказ
Предложить авторизоваться или зарегистрироваться
Уведомить о пустой корзине
Предложить другой способ оплаты
Авторизован? | Товары в корзине? | Способ оплаты доступен? | Действие |
---|---|---|---|
Да | Да | Да | Разрешить оформить заказ |
Да | Да | Нет | Предложить другой способ оплаты |
Да | Нет | Да или Нет | Уведомить о пустой корзине |
Нет | Да или Нет | Да или Нет | Предложить авторизоваться или зарегистрироваться |
С помощью этой таблицы мы можем понять, как система должна реагировать в зависимости от разных ситуаций. Это помогает учесть все возможные комбинации и убедиться, что интернет-магазин будет работать корректно в любых условиях.
Мы рассмотрели четыре ключевые техники тест-дизайна: граничные значения, классы эквивалентности, попарное тестирование и таблицу принятия решений. Каждая из них имеет свои особенности и применяется для решения определенных задач в процессе тестирования.
Использование этих техник позволяет нам глубже понять продукт, выявить потенциальные слабые места и улучшить качество разработки. Это не просто инструменты - это способы думать, анализировать и улучшать работу с продуктом.
Надеюсь, что эта статья дала тебе ценный взгляд на тестирование и поможет в твоей дальнейшей работе. Тестирование - это важный этап в разработке, и правильное применение техник тест-дизайна позволит сделать продукт лучше.