Что такое парное тестирование
Метод попарного тестирования
Nov 19, 2018 · 4 min read
Что же такое pairwise testing?
Pairwise testing — техника тест-дизайна, а именно метод обнаружения дефектов с использованием комбинационного метода из двух тестовых случаев. Он основан на наблюдениях о том, что большинство дефектов вызвано взаимодействием не более двух факторов (дефекты, которые возникают при взаимодействии трех и более факторов, как правило менее критичны). Следовательно, выбирается пара двух тестовых параметров, и все возможные пары этих двух параметров отправляются в качестве входных параметров для тестирования. Pairwise testing сокращает общее количество тест-кейсов, тем самым уменьшая время и расходы, затраченные на тестирование. Техника известна уже больше 20 лет, но только последние 5 лет мы можем наблюдать ее активное использование.
Дл я Pairwise testing используют алгоритмы, которые базируются на построении ортогональных матриц, или алгоритмы All-Pairs.
Тестирование с помощью ортогональных матриц
Данная техника тест-дизайна относится к статическим способам тестирование и используется в том случае, когда мы имеем дело с большим количеством входных данных, следовательно, исчерпывающие тестирование является недостижимым. Ортогональные матрицы применяются в конфигурационном, регрессионном, производительном, а так же в тестировании пользовательского интерфейса.
Для того, чтобы построить ортогональную матрицу для этого примера необходимо сделать так, чтобы два любые столбика (в нашем случае это параметры 1, 2 и 3) содержали в себе все возможные комбинации только один раз.
Таким образом, ортогональная матрица для нашего случая будет выглядеть таким образом:
Как мы видим, в столбцах 1 и 3 есть все возможные комбинации: (x,x),(x,y),(y,y),(y,x). Для других пар столбцов это правило работает аналогично.
Тестирование с помощью алгоритма All-Pairs
Аll-pairs testing — комбинаторный метод тестирование программного обеспечения, который проверяет все возможные дискретные комбинации параметров для каждой пары входных параметров системы. Исходя из этого, мы получим меньшее число комбинаций, чем при использовании ортогональных матриц.
Рассмотрим пример. Предположим, нам необходимо протестировать приложение для покупки/продажи б/у ноутбуков, мы имеем следующие переменные:
Если мы захотим протестировать все возможные комбинации, то мы должны составить 2 х 2 х 3 х 2 х 2 х 2 = 96 тест-кейса. Не многовато ли работы для тестирования формы?
Далее нам необходимо организовать переменные и значения.
Т.е. для каждого набора в столбце 1 мы помещаем оба значения столбца 2. То же самое мы повторяем с 3 столбцом.
У нас есть комбинация покупка&Киев и продажа&Харьков, но нету комбинации продажа&Киев и покупка&Харьков. Исправим это, поменяв местами значения во втором наборе третьего столбца.
Повторяем такие же манипуляции для колонок 4 и 5.
Колонка Доставка является более проблематичной, ведь нам не хватает комбинаций на покупка&встреча и продажа&почтой чтобы не нарушать отсортированные данные, нужно ввести еще 2 тестовых случая для этих комбинаций. Значком тильды “
” мы маркируем переменные, которые выступают произвольными. Таким образом мы получаем следующую таблицу.
Таким образом, мы получили готовые 8 тест-кейсов вместо 96.
Утилиты для автоматизации pairwise testing
Существует ряд ПО, которые помогут вам не только качественно, но и быстро создать тест-кейсы из большого количества параметров, самые популярные из них:
Заключение
Суммируя все вышесказанное, pairwise testing — прекрасный метод для повышения эффективности написания тест-кейсов. Он значительно сокращает количество комбинаций, которые будут покрыты, но остается очень хорошим с точки зрения обнаружения неисправностей. Метод очень прост в использовании, для его эксплуатации достаточно лишь определиться с функционалом для проверки, исследовать выбранный сценарий и его параметры и применить алгоритм, который определит оптимальное число тестов с полным перебором пар.
Что такое парное тестирование
Что пишут в блогах
Заказать — https://shop.testbase.ru/buy/book. Пока самовывоз (см ниже где и когда!!). С почтой разберемся чуть позже.
Где: Кострома / онлайн
2 декабря буду выступать в Костроме. Приходите увидеться очно, или подключайтесь онлайн.
Онлайн-тренинги
Что пишут в блогах (EN)
Blogposts:
Разделы портала
Про инструменты
Каждый тестировщик пишет тесты по определенному принципу. Даже тот, кто слыхом не слыхал ни о каких методиках, так или иначе руководствуется рядом принципов, которые, как правило, держит в голове, или в редких случаях на бумаге. Но скажите, какой бывалый тестировщик не представлял себе фантастическую ситуацию, когда эти принципы реализованы в коде: софт создает тест-кейсы. Конечно до такой радужной перспективы еще очень далеко, но первые шаги на этом поприще уже сделаны…
Описание метода
Представьте себе, что вам нужно протестировать систему с большим числом параметров, влияющих на её работу. Ярким примером такого рода может быть конфигурационное тестирование: например проверка работы системы под различными операционными системами или работа сайта в различных браузерах. Кто знает, какое сочетание параметров приведет к сбою? Каждый тестировщик знает, что все комбинации не проверить. К примеру, для проверки всех сочетаний 10 параметров с 10 значениями каждый, потребуется 10,000,000,000 тестов, в то время как метод перебора пар позволяет реализовать сравнимое по качеству тестирование (учитывая количество и критичность найденных в результате багов) используя всего 177 тестов.
Итак, в чем же трюк? Метод парного тестирования основан на довольно простой, но от того не менее эффективной идее, что подавляющее большинство багов выявляется тестом, проверяющим один параметр, либо сочетание двух. Ошибки, причиной которых явились комбинации трех и более параметров как правило значительно менее критичны, чем пары параметров и тем более одного, не говоря уже о том что никто не мешает дополнить свое тестовое покрытие кейсами на желаемые комбинации параметров.
Перебрать все пары немудрено, трудность в том, чтобы обеспечить при этом минимум тестов, комбинируя проверки нескольких пар в одном тесте. Тут нам на помощь приходят математические методы, уходящие корнями к английским математикам девятнадцатого века. Одним из плодов их трудов стали ортогональные матрицы. Я лишь упоминаю их вскользь, дабы любители линейной алгебры могли навести справки, благо информации в интернете предостаточно. Что важно нам, так это то, что велосипед изобретать не нужно, и методы, по которым мы можем сформировать оптимальное покрытие, давно изобретены.
Рассмотрим как происходит оптимизация. Возьмем для примера таблицу параметров и значений следующего вида:
Переберем значения первого параметра со вторым (строки №1-4), первого с третьим (строки №5-8) и второго с третьим (строки №9-12). Удалив повторяющиеся наборы параметров (выделены серым), получим следующую таблицу тестов:
Зеленым выделены уникальные пары всех параметров в таблице. Теперь начинается самое интересное, значения выделенные белым не являются необходимыми для перебора всех пар в таблице, поэтому могут быть заменены на любое другое значение. Поэтому заменив их, мы можем оптимизировать тесты, добавив проверку пар из 5, 6 и 7 строк во вторую и третью строки, получим:
Как видно из примера выше, оптимизация даже такого малого набора параметров не так проста как могло бы показаться. При этом сложность задачи возрастает пропорционально росту числа параметров. Однако эта задача решаема, в чем мы убедимся в последствии.
Применение
Как показывает опыт, метод эффективен лишь на поздних этапах разработки, либо дополненный основными функциональными тестами. Например, если вы проводите конфигурационное тестирование, то прежде чем использовать парное тестирование следует убедиться, что основной сценарий функционирует на всех операционных системах с параметрами по умолчанию (что-то типа BVT). Это значительно облегчит локализацию будущих багов, ведь при парном тестировании в одном тесте фигурирует множество параметров со значениями не по умолчанию, каждый из которых может стать причиной сбоя и его локализация в этом случае весьма затруднительна. А в случае провала BVT следует отказаться от использования метода парного тестирования, так как многие тесты будут провальными, а исключение даже одного теста влечет за собой потерю как правило нескольких пар и смысл использования метода теряется.
Поэтому метод следует использовать лишь на стабильном функционале, когда текущие тесты уже теряют свою эффективность.
Для того чтобы воспользоваться методом необходимо выполнить несколько простых шагов:
1. Определиться с функциональностью, которую будем проверять
Как говаривал Козьма Прутков «Нельзя объять необъятное», поэтому прежде всего необходимо разделить функциональность на части: компоненты, функции, сценарии. Функциональность небольшой программы, например по записи дисков, упрощенно можно представить в виде всего двух сценариев: запись диска, стирание диска. Выбираем запись диска и переходим к следующему шагу.
2. Исследовать выбранный сценарий и выявить его параметры и их значения
На данном этапе следуют спросить себя, какие параметры сценария могут повлиять на его выполнение? В качестве параметров могут выступать как настройки самой программы, так и внешние факторы.
Упрощенно, параметры и их значения при записи диска можно представить в виде:
Вы наверняка обратили внимание, что параметр «Скорость записи» имеет значения, недопустимые для “DVD”, как же быть?. У этой маленькой задачки, есть несколько вариантов решения, одно из которых – это разделить таблицу на две. Стоит учитывать, что на практике параметров в этом сценарии гораздо больше, и несостыковок, было бы значительно больше.
Итак, поделив таблицу по типу носителя получим:
говориМ о тестировании
простым языком
Тест-дизайн. Техника попарного тестирования
Как быть в ситуации, когда необходимо не просто протестировать продукт, а продукт с множеством взаимосвязанных входных данных? Здесь нам на помощь опять приходит тест-дизайн.
Сегодня мы поговорим об еще одной технике составления тестов — техника попарного тестирования (не путать с парным тестированием) или, как ее еще называют, Pairwise testing.
Эта техника используется, когда нам необходимо комбинировать очень много различный вариантов входных данных. Цель ее состоит в том, чтобы сократить количество полученных тестов, но при этом сохранить качественное покрытие.
По традиции приведу определение из ISTQB:
Попарное тестирование (pairwise testing) — разработка тестов методом черного ящика, в которой тестовые сценарии разрабатываются таким образом, чтобы выполнить все возможные отдельные комбинации каждой пары входных параметров.
Ее стоит использовать в том случае, когда входные данные связаны друг с другом. Точнее результат выполнения теста напрямую зависит от того, какие комбинации данных будут подаваться на входе.
Рассмотрим очень простой пример. Предположим, у нас есть форма с полями “Логин”, “Пароль” и кнопкой “Войти”.
Каждое поле может принимать два значения: пустое и заполненное. В обычной ситуации, когда результат работы формы не зависит от того, какие именно комбинации полей подаются на вход, нам достаточно провести всего три теста
Т.е. мы в наших тестах проверяем отдельно работу каждого поля, не задумываясь о том, что различные комбинации Логина/Пароля могут сломать систему. Но что, если у нас добавляется еще и зависимость полей? Тогда нам необходимо рассмотреть все возможные комбинации значений между полей. Для нашего примера это означает, что добавится еще один тест.
На первый взгляд выглядит достаточно просто, добавился всего один тест. Но давайте посмотрим на более реальном примере.
Опять же, даже здесь немного упростим проверку и выделим только самые базовые значения.
Таким образом общее количество тестов будет следующим: 2*2*2*2*2*2 = 64
Даже сейчас это большая цифра. Такое тестирование будет малоэффективным и потребует большое количество ресурсов. Вот здесь на помощь приходит техника попарного тестирования, которая позволяет сократить количество тестов во много раз.
Суть ее состоит в том, что мы берем только комбинации пар каждых значений, вместо комбинаций всех значений:
Вручную комбинировать каждую пару нет необходимости. Существуют программы, которые позволяют это сделать автоматически, достаточно только указать параметры и значения. Например, PICT, либо онлайн генераторы https://pairwise.teremokgames.com и т.д.
В нашем случае, после комбинации тестов с помощью попарного тестирования мы сократили количество проверок до 4-х
В каждом тесте мы проверяем сразу несколько пар комбинаций: E-mail — Никнейм, Никнейм — Пароль, Условия — Символы, E-mail — Пароль и т.д.
Подведем итог. Если мы столкнулись с тестированием механики, которая предусматривает различные комбинации входных данных, то в сокращении числа тестов нам как раз и поможет техника попарного тестирования.
И не забывайте пользоваться программами, которые избавят вас от ручного комбинирования.
Открытый вебинар «Метод Pairwise Testing в Black Box тестировании»
Всем доброго времени суток!
Предлагаем вашему вниманию подробное описание открытого урока, посвящённого попарному тестированию. Мероприятие прошло всего пару дней назад и было приурочено к запуску курса «QA-специалист».
Преподаватель — Нина Деваева — Senior Tester, Team Leader и ISTQB-сертифицированный тестировщик, эксперт по направлению Quality Assurance.
На открытом уроке поговорили о необходимости такого вида техники тест-дизайна, как попарное тестирование (pairwise testing). Изучили кейсы применения на практике и подробно рассмотрели инструментарий, доступный для работы.
Перед началом вебинара поставили следующие цели:
Тест дизайн – это этап процесса тестирования ПО, на котором проектируются и создаются тестовые случаи (тест-кейсы) в соответствии с определёнными ранее критериями качества и целями тестирования. Некоторые испытывают затруднение, когда их спрашивают, зачем нужен тест-дизайн. Между тем, ответ кроется в одном из принципов тестирования, а именно: исчерпывающее тестирование недостижимо. И это действительно так за исключением каких-либо тривиальных случаев, когда входных данных очень мало. Да и по большему счёту мало какой бюджет «потянет» все возможные проверки, которыми можно покрыть наш продукт.
Тестирование методом черного ящика
Хорошо известный метод, не требующий длительных разъяснений. Если вкратце, то black box testing — это функциональное или нефункциональное тестирование, которое выполняется без знания внутренней структуры компонента или системы. Метод основан на работе исключительно с внешними интерфейсами тестируемой системы.
Техники тест-дизайна при использовании метода черного ящика, включают:
Так что же такое попарное тестирование?
Попарное тестирование (pairwise testing) — это разработка тестов методом черного ящика, в которой тестовые сценарии разрабатываются таким образом, чтобы выполнить все возможные отдельные комбинации каждой пары входных параметров. Собственно говоря, попарное тестирование позволяет нам сэкономить много времени.
Для pairwise testing используются алгоритмы, основанные на построении ортогональных массивов или на All-Pairs алгоритме, которые опираются на теоретические исследования в области комбинаторных алгоритмов, алгоритмов дискретной математики и, в частности, латинских квадратов. Давайте остановимся на этих алгоритмах подробнее.
Тестирование с использованием ортогонального массива
Orthogonal array testing — систематический подход к тестированию всех парных комбинаций переменных с использованием ортогональных массивов. Такой подход значительно уменьшает количество комбинаций переменных при проверке всех парных комбинаций.
Ортогональный массив по сути — это таблица, где m — число строк, n — число столбцов, которое соответствует числу входных параметров, k — количество вариантов значений элементов таблицы. Таблица обладает следующими свойствами:
Например, у нашего приложения есть 3 входных параметра, причем каждый бинарный (принимает значение «1» или «2»). Таким образом, все возможные комбинации входных данных можно представить так:
Для наглядности давайте предположим, что у нас есть приложение «Фонарик», которое:
Теперь давайте посмотрим, как будет выглядеть наша выборка после перевода в ортогональный массив:
Как видим, мы сократили число кейсов с 8 до 4 при 3 разных параметрах, принимающих бинарное значение. Это реальный выигрыш, который положительно отразится и на бюджете, и на ресурсах, которые мы используем.
All-Pairs Algorithm (алгоритм всех пар) — это комбинаторная методика, которая была специально создана для парного тестирования. В её основе лежит выбор возможных комбинаций значений всех переменных, в которых содержатся все возможные значения для каждой пары переменных. Исходя из определения, число комбинаций будет меньшее, чем при использовании ортогональных массивов.
При тестировании с использованием All-Pairs алгоритма выполняют следующие шаги:
Тулзы для попарного тестирования
Чтобы не тратить время на сведение всех данных, можно и нужно использовать инструменты для попарного тестирования. Вот некоторые из них:
Практика и ещё раз практика
Теперь давайте попробуем, как эти инструменты работают на деле. Итак, постарайтесь выполнить два простых задания:
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 пример файла
|