что такое попарное тестирование
говориМ о тестировании
простым языком
Тест-дизайн. Техника попарного тестирования
Как быть в ситуации, когда необходимо не просто протестировать продукт, а продукт с множеством взаимосвязанных входных данных? Здесь нам на помощь опять приходит тест-дизайн.
Сегодня мы поговорим об еще одной технике составления тестов — техника попарного тестирования (не путать с парным тестированием) или, как ее еще называют, Pairwise testing.
Эта техника используется, когда нам необходимо комбинировать очень много различный вариантов входных данных. Цель ее состоит в том, чтобы сократить количество полученных тестов, но при этом сохранить качественное покрытие.
По традиции приведу определение из ISTQB:
Попарное тестирование (pairwise testing) — разработка тестов методом черного ящика, в которой тестовые сценарии разрабатываются таким образом, чтобы выполнить все возможные отдельные комбинации каждой пары входных параметров.
Ее стоит использовать в том случае, когда входные данные связаны друг с другом. Точнее результат выполнения теста напрямую зависит от того, какие комбинации данных будут подаваться на входе.
Рассмотрим очень простой пример. Предположим, у нас есть форма с полями “Логин”, “Пароль” и кнопкой “Войти”.
Каждое поле может принимать два значения: пустое и заполненное. В обычной ситуации, когда результат работы формы не зависит от того, какие именно комбинации полей подаются на вход, нам достаточно провести всего три теста
Т.е. мы в наших тестах проверяем отдельно работу каждого поля, не задумываясь о том, что различные комбинации Логина/Пароля могут сломать систему. Но что, если у нас добавляется еще и зависимость полей? Тогда нам необходимо рассмотреть все возможные комбинации значений между полей. Для нашего примера это означает, что добавится еще один тест.
На первый взгляд выглядит достаточно просто, добавился всего один тест. Но давайте посмотрим на более реальном примере.
Опять же, даже здесь немного упростим проверку и выделим только самые базовые значения.
Таким образом общее количество тестов будет следующим: 2*2*2*2*2*2 = 64
Даже сейчас это большая цифра. Такое тестирование будет малоэффективным и потребует большое количество ресурсов. Вот здесь на помощь приходит техника попарного тестирования, которая позволяет сократить количество тестов во много раз.
Суть ее состоит в том, что мы берем только комбинации пар каждых значений, вместо комбинаций всех значений:
Вручную комбинировать каждую пару нет необходимости. Существуют программы, которые позволяют это сделать автоматически, достаточно только указать параметры и значения. Например, PICT, либо онлайн генераторы https://pairwise.teremokgames.com и т.д.
В нашем случае, после комбинации тестов с помощью попарного тестирования мы сократили количество проверок до 4-х
В каждом тесте мы проверяем сразу несколько пар комбинаций: E-mail — Никнейм, Никнейм — Пароль, Условия — Символы, E-mail — Пароль и т.д.
Подведем итог. Если мы столкнулись с тестированием механики, которая предусматривает различные комбинации входных данных, то в сокращении числа тестов нам как раз и поможет техника попарного тестирования.
И не забывайте пользоваться программами, которые избавят вас от ручного комбинирования.
Александр Александров про тренды и технологии тестирования, про влияние Covid19 на рынок QA
Продолжу хвастаться статусом книги.
Онлайн-тренинги
Что пишут в блогах (EN)
Разделы портала
Про инструменты
Если в качестве инструмента у вас имеется лишь молоток, каждая проблема начинает напоминать гвоздь. Абрахам Маслоу
В этой небольшой заметке я бы хотел рассмотреть инструмент для попарного тестирования от Microsoft – PICT (Pairwise Independent Combinatorial Testing). Уже несколько раз я применял его в своей работе и был доволен теми гибкими опциями, которые он имеет.
Для начала неплохо вспомнить, что такое Pairwise Testing. Есть интересная статья про парное тестирование на MSDN. Также про это можно почитать тут. Вкратце, Pairwise testing – это техника формирования наборов тестовых данных. Заключается она в следующем: формируются такие наборы данных, в которых каждое тестируемое значение каждого из проверяемых параметров хотя бы единожды сочетается с каждым тестируемым значением всех остальных проверяемых параметров. Предыдущее предложение может быть не совсем понятным, но принцип можно легко проиллюстрировать на следующем примере. Представим, что у нас есть параметры A, B и C принимающие значения Yes или No. Максимальное количество комбинаций значений этих параметров – 8. Но при использовании попарного тестирования достаточно четырех комбинаций, так как учитываются все возможные пары параметров (пара A и B, пара B и C, пара A и C):
Эту технику полезно применять тогда, когда нам не нужны все возможные сочетания значений параметров (особенно когда параметров много), а мы хотим только убедиться, что мы проверим все уникальные пары значений параметров.
Так что же PICT? PICT позволяет генерировать компактный набор значений тестовых параметров, который представляет собой все тестовые сценарии для всестороннего комбинаторного покрытия ваших параметров. К примеру представим, что у нас есть следующие параметры для тестирования (параметры относятся к тестированию создания разделов на жестком диске и взят из мануала к PICT):
Существует больше 4700 комбинаций этих значений. Будет очень сложно протестировать из за разумное время. Исследования показывают, что тестирование всех пар возможных значений обеспечивает очень хорошее покрытие и количество тест кейсов остается в пределах разумного. К примеру, это одна пара и другая; один тест кейс может покрывать много пар. Для набора приведенных выше параметров PICT создаст всего 60 тест кейсов (сравните с цифрой 4700!).
Рассмотрим работу с программой. Запускается PICT из командной строки.
На вход программа принимает простой текстовый файл с параметрами и их значениями, называемый Моделью, а на выход выдает сгенерированные тестовые сценарии.
Рассмотрим работу программы на примере из приведенной выше статьи из блога. Имеем следующие параметры и их значения: пол – мужской или женский; возраст – до 25, от 25 до 60, более 60; наличие детей – да или нет. Если перебирать все возможные значения, то количество сценариев будет 12. Составим модель и посмотрим какой результат нам выдаст программа.
Используем модель и получим 7 тестовых сценариев (вместо 12):
Разница не такая ощутимая, но она будет становится все более и более заметной при увеличении количества параметров или их значений.
Можно использовать прямой вывод и сохранение тест кейсов в Excel.
В результате будет создан Excel файл со следующим содержанием:
Но самое интересное это те возможности, которые предоставляет PICT для подобной генерации сценариев. Все они тщательно рассмотрены в мануале. Вот некоторые из них:
Pairwise Testing. Что такое попарное тестирование.
Всем привет!
Сегодня посмотрим поближе на методику попарного тестирования, или Pairwise testing. Появилась она аж в 1987 (олдфаг!), но из-за простоты и эффективности в некоторых ситуациях, метода популярна до сих пор.
В чем суть
Суть в парах, и в уникальной комбинации пар. История (и опыт) гласят нам, что большинство багов встречаются в тестах, которые проверяют 1 или 2 параметра. Вернее, чтобы значение одного параметра хотя бы 1 раз пересекалось с каждым другим значением другого параметра. Если баги выявляются в >2 параметров, то они скорей всего менее критичны.
Что за параметры вообще такие?
Сейчас разберем простой пример, и все сразу поймут, где можно эту методику использовать, и для чего она нужна.
Допустим, у нас есть условный сайт по продаже квартир. И там, чтобы выбрать квартиру, есть примитивные фильтры и варианты выбора:
На всякий:
Параметры: кол-во комнат, площадь и т.д.
Значения параметров: 1, 2, до 20,и т.д.
Как нам это протестить? Ну самый очевидный способ — просто перебрать все параметры:
Так, тут все просто:
Зеленый — это уникальные пары, 1-ая колонка с 3-ей, 1-ая с 2-ой, 2-ая с 3-ей.
Оранжевый — это повторяющиеся строки
Белый — непринципиально для решения пар
Удаляем повторяющиеся строки:
Теперь можем заменить белые строки на любые другие значения, и немного оптимизируем проверки:
Итого получилось 6 проверок вместо 21. Вполне сносно.
Но…. не все так просто.
Хорошо, если у нас примитивный фильтр, и там всего несколько значений и параметров.
А что будет, если у нас будет много значений? Прошло несколько версий, и наша система стала песец какая сложная
Тут на помощь приходят инструменты для попарного тестирования. Например, PICT от Microsoft.
Суть этого инструмента довольна проста: мы генерим наборы значений параметров, загоняем это в PICT, и программа нам выдает оптимальное кол-во сценариев, использую попарный метод.
Неплохо. Можно тестить любые фильтры, которые используют большинство сайтов (начиная от Яндекса и заканчивая Авито). Но уверены ли мы, что попарное тестирование настолько хорошо, что мы можем на него положиться в сложных системах?
Кстати.
PICT это все умеет, если что.
Что гуглить:
Ортогональные матрицы в математике.
Мысли о тестировании вслух
пятница, 11 июня 2010 г.
Что такое Pairwise Testing, и с чем его едят
№ | пол | возраст | дети |
---|---|---|---|
1 | мужчина | до 25 | детей нет |
2 | женщина | до 25 | детей нет |
3 | мужчина | 25-60 | детей нет |
4 | женщина | 25-60 | детей нет |
5 | мужчина | старше 60 | детей нет |
6 | женщина | старше 60 | детей нет |
7 | мужчина | до 25 | дети есть |
8 | женщина | до 25 | дети есть |
9 | мужчина | 25-60 | дети есть |
10 | женщина | 25-60 | дети есть |
11 | мужчина | старше 60 | дети есть |
12 | женщина | старше 60 | дети есть |
№ | пол | возраст | дети |
---|---|---|---|
1 | мужчина | до 25 | детей нет |
2 | женщина | до 25 | дети есть |
3 | мужчина | 25-60 | дети есть |
4 | женщина | 25-60 | детей нет |
5 | мужчина | старше 60 | детей нет |
6 | женщина | старше 60 | дети есть |
31 комментарий:
Несколько добавлений к статье.
1) Есть инструменты, которые умеют генерить комбинации по произвольному базисы (пары, тройки и тд).
3)Ищите инструмент, который умеет использовать предписаные сочетания. Есть комбинации параметров и их значений, которые либо наиболее вероятны, либо наиболее важны для проверки (известные конфигурации у клиентов, например). Их хочется проверять, но наврядли тул так удачно все сгенерит.
4) Перед пименением этого метода, надо обязательно воспользоваться другими методами, такими как разбиение на класы эквивалентности.
5) Есть параметры на которые перемножать не надо. У нас например, это encoding. Если все умножать на encoding, то количество комбинаций резко возрастет, а толку от них нет. Поэтому такой параметр просто добавляется к уже сгнеренным комбинациям, не увеличивая их числа.
Спасибо, очень полезная статья!
Рада, если статья оказалась полезной 🙂
Я познакомился с «pairwise» когда искал тул для «автоматической генерации тестов» на основании комбинации входных параметров.
Но увы, сама идея хоть и красивая, но на практике утопичная (LeshaL описал некоторые причины). Возможно для некоторых случаев и будет польза от таких генераторов (с применением средств автоматизации тестирования).
Но на практике тестировщику никак не уйти от ручного выбора комбинаций входніх параметров и задания очерёдности их прогона.
PICT и Pairwise тестирование
Pairwise тестирование (Парное тестирование), также известное как all pairs testing (тестирование «всех пар»), — это метод обнаружения дефектов с использованием комбинационного метода двух тестовых случаев. Он основан на наблюдении, что большинство дефектов вызвано взаимодействием не более двух факторов. Следовательно, выбирается пара из двух тестовых параметров, и все возможные пары этих двух параметров отправляются в качестве входных параметров для целей тестирования. Для облегчения генерации тестов для pairwise testing есть специальный инструментарий — PICT программа от Microsoft, о которой мы также поговорим в данной статье.
Pairwise testing приводит к сокращению количества тестовых случаев и, следовательно, к более быстрым и простым возможностям тестирования. Комбинационное тестирование более высокого порядка имеет большее количество тест кейсов, что делает тест более исчерпывающим, но также более дорогим и громоздким. Кроме того, большинство ошибок вызвано единственными входными параметрами или вызвано взаимодействием между двумя параметрами. Все эти ошибки могут быть устранены путем тестирования пар (test pair). Ошибки, вызванные взаимодействием трех или более параметров, обычно очень редки и дают меньше оснований для больших инвестиций в их поиск.
Давайте ниже рассмотрим суть проблематики, плюсы и минусы подхода а также посмотрим pairwise пример, который приложен в файле для скачивания.
Pairwise testing: проблематика
90% случаев команда тестирования должна работать в сжатые сроки. Таким образом, методы разработки тестов должны быть очень эффективными для максимального охвата и высокой вероятности обнаружения дефектов.
Примечание: Прежде чем переходить к примеру определимся с терминологией.
На экранах вы можете встретить следующие контролы – чек-боксы, листы, поля, радио-батоны и т.д.
Давайте будем их называть параметрами, а значения которые они принимают, например для дроп-даун листа это Option1, Option 2 и т.д. – это значения параметров.
Вполне возможно, что в литературе вы можете увидеть несколько другие термины, но такой русскоязычный вариант нам все же ближе…
Пример, где pairwise тестирование будет, как нельзя кстати
Предположим, что у нас есть тестируемое программное обеспечение, которое имеет набор контроллов (параметров), в свою очередь, каждый параметр может принимать значения (значения параметров), например:
Примечание: Давайте ради интереса посчитаем, какое кол-во комбинаций у нас получится…
Ради интереса, возьмем 2 шрифта (самых распространенных)*4 стиля * 3 размера(самых распространенных)*3 цвета*2 (учитываем эффекты) в 11 степени (11 переменных по 2 параметра) = 147 456
Таким образом мы подошли к сути проблемы, которая встает перед тестировщиком.
Суть проблемы тестирования программного обеспечения с большим количеством параметров и пути ее решения
Много параметров и много значений, которые принимают эти параметры, предполагают создание большого количества тестов, чтобы покрыть ими все возможные комбинации. Также абсолютно очевидно, что, сочетания этих переменных, могут вызывать ошибки. Баги из-за комбинации параметров, достаточно распространенное явление.
Закономерный вопрос тестировщика, что с этим делать? Ответ напрашивается сам собой, надо перебирать комбинации, но какие и в каком количестве? Таким образом, баги из-за «взаимодействия параметров» встречаются достаточно часто, но тестеры, порой, эти взаимодействия игнорируют из-за большого количества тестов (особенно этого пугаются новички). Тем не менее, не смотря на кажущуюся сложность вышеобозначенной задачи выход имеется и это pairwise тестирование, о котором подробнее поговорим дальше
Pairwise testing
Как мы отмечали в начале статьи, методика All Pairs testing очень полезна для разработки тестов для приложений с несколькими параметрами. Тесты составлены таким образом, что для каждой пары входных параметров системы существуют все возможные комбинации этих значений параметров. Тестовый набор охватывает все комбинации, поэтому он не является исчерпывающим, но очень эффективным в поиске ошибок.
Возможные варианты решения проблемы помимо pairwise тестирования
Прежде чем говорить о достоинствах, недостатках Pairwise тестирования а также инструментах, помогающих его реализовать, перечислим еще некоторые варианты решения вышеочерченной проблемы:
Monkey Testing
Полный перебор:
И если говорить непосредственно о pairwise testing, то данный метод базируется на исследовании, которое говорит, что 90% ошибок кроются в комбинациях пар и только 10 % ошибок дает сочетание троек, четверки. И если в кратце охарактеризоват данный метот, то это будет выглядеть следующим образом.
Метод «Всех пар» (all pairs testing)
Теперь давайте разберемся в чем заключается идея метода.
Идея и реализация метода pairwise testing
Вернемся к нашему примеру со страничкой из Word. В чем тут суть метода. Этот метод гарантирует, что мы каждый параметр протестируем в ПАРЕ со всеми другими параметрами.
Например, Arial со всеми стилями (обычный, курсив, жирный, маленький размер, белый цвет, и т.д. ) а именно со всеми значениями параметров других переменных. Тем самым мы обеспечим парное покрытие параметров, у каждого параметра будет своя пара с другим параметром из другой переменной. И так для всех. Для успешной реализации надо пройти через 3 шага:
Пример реализации этапов
Этап | Реализация pairwise тестирования |
---|---|
Определение параметров | Итак, определяем переменные: |
Определение значений | Каждый параметр имеет ряд значений: Примечание: обратите внимание на сокращения |
Построение таблицы | И только на 6-ом символе у нас произошло бы переполнение и мы дописывали бы строчки. В итоге у нас количество тестов для этой таблицы сократилось с 96 до 8 (по кол-ву строк). 4-ая, 5-ая, 6-ая колонки фэйковые, чтобы ощутить размер пользы. Так как если бы мы оставили наши 3 колонки, то получилось бы 3*2*2 = 12 против 6 тестов (не очень внушающие цифры). PICT pairwise testingВозвращаясь к многострадальному примеру с Word. Как построить таблицу all pairs testing? Выход очевиден – использовать спец фриварный инструментарий, например PICT. Инструмент pairwise тестирования (PICT) может помочь вам эффективно проектировать тестовые случаи для программных систем. С помощью PICT вы можете создавать тесты более эффективно, чем тесты, созданные вручную, и создавать их за короткий промежуток времени. PICT генерирует компактный набор вариантов значений параметров, представляющих тестовые наборы, которые вы должны использовать. Это позволяет получить всесторонний комбинаторный охват ваших параметров. Если кратко охарактеризовать преимущества PICT, то можно назвать: Примечание: Плюс ко всему PICT позволяет покрывать не только пары, но и тройки (используя спец синтаксис). Теперь давайте рассмотрим, ка работать с PICT. PICT, как пользоваться?PICT работает как инструмент командной строки. Вы готовите файл модели, детализирующий параметры интерфейса (или набора конфигураций, или данных), которые вы хотите протестировать. PICT генерирует компактный набор вариантов значений параметров, которые представляют собой тестовые случаи. Процесс установки, после скачивания и разархивации: Для генерации тестовых случаев необходимо проделать несколько шагов: После чего PICT обработает txt файл и в папке появиться xls документ с набором комбинаций (пример сформированного PICT файла cases_pict.xls можно скачать ниже). Более полный набор возможностей PICT можно найти в мануале PICTHelp.htm, который находится в папке с установленным PICT. Недостатки PICT
При имеющихся недостатках, во многих ситуациях, пользу от использования PICT pairwise testing сложно переоценить. Ведь как показал пример с Word вместо 147456 комбинаций было сгенерировано 15 тестов. В итоге от применения pict и pairwise все счастливы! Так как эти тест сеты можно и заказчику показывать с обоснованием целесообразности сокращения количества тестов и сэкономить время на рутинной работе тестировщика. Скачать PICT и pairwise пример файла
|