Добавляем pairwise (попарное тестирование) в свой арсенал QA инженера |
03.05.2023 00:00 |
Автор: Никонов Владислав QA инженер имеет внушительный арсенал техник тест-дизайна: классы эквивалентности, граничные значения, попарное тестирование, диаграммы состояний и переходов, таблицы принятия решений, сценарии использования и альтернативные сценарии, перебор комбинаций, деревья решений ...эмм, это все что я помню, если что-то забыл, поправьте. Так вот, сценарии использования и альтернативные сценарии, мы обычно получаем от аналитиков из спецификации.. таблицы, деревья и диаграммы мало кто чертит, так как это занимает много времени (при дефиците ресурсов). Как правило, в ходу две популярные техники: классы эквивалентности и граничные значения, и только отдельные умнички используют pairwise ( попарное тестирование ). Скажу честно, принять эту технику я смог далеко не сразу. Я тогда еще не до конца преисполнился познанием и из-за непонимания было недоверие к, сгенерированным инструментом, кейсам. Конечно, на собесах, у всех от зубов отскакивает: "создаются все возможные отдельные комбинации каждой пары входных параметров" или "в 97 процентах случаев, баги находятся на комбинации двух параметров", но давайте разберемся, почему pairwise сложно применить ручками и поймем как забить на это и успешно применять его в своей работе. Попарное тестирование ручками Представим, что мы тестируем сайт, продающий блокноты. Пользователь может собрать блокнот сам, через форму, после заполнения которой видим изображение собранного блокнота. Форма: Для начала выпишем наши параметры с их значениями: Если использовать обычную комбинаторику, без оптимизации, мы получим 4*8*5*5*2*4*11*2 = 140800 кейсов, чтобы 100% покрыть весь функционал. Получил я эту цифру путем перемножения количества значений каждого параметра. Это я еще не посчитал цвета страниц при выборе чекбокса "Разноцветные страницы"...я если честно тут не уверен: по идее тут множественный выбор, а значит каждый цвет это не значение, а параметр, и правильнее сделать такую табличку: С учетом корректировки, получается...эээм, 4*8*5*5*2*4*11*2*2^11 = 288 358 400 кейсов. Ожидаемо много, оптимизируем:
Вот как поменялась наша табличка: Теперь, количество возможных комбинаций: 2*4*3*5*2*4*3*2*4 = 23040, что уже меньше чем 140800 кейсов. А теперь применим попарное тестирование ручками: Шаг 1: Располагаем параметры от большего количества значений к меньшему и заполняем значениями, стараясь чтобы пары значений из разных параметров встречались хотя бы один раз: Шаг 2: Ячейки помеченные желтым цветом, это любые значения параметров - можно вставить сюда любые значения: У нас получилось 36 проверок. Не буду утверждать, что я сделал все без ошибок, но вроде как большинство пар всех значений нашел... Шаг 3: Но согласитесь, в реальных кейсах не бывает такого, что бы не было бизнес логики.
С учетом перечисленных выше бизнес требований, все наши кейсы оказались неактуальными(( Я, честно, прошелся по каждому условию и отсеял кейсы из таблицы: Собственно, все =) На этом этапе, мы разобрались почему pairwise сложно применить ручками: это сложно, долго и безрезультатно в большинстве случаев. Но, как я и говорил, забейте! Топаем сюда и скачиваем PICT (pict.exe) для Windows, а если у вас Unix, то почитайте тут . Используем возможности PICTШаг 1: Откройте командную строку в директории, где находится pict.exe и запустите его: Шаг 2: Создаем текстовый файл с содержимым:
Прежде чем скормить файл PICT, обсудим нюансы. Синтаксис пикта интуитивно понятен, но хочу пояснить некоторые моменты:
Шаг 3: Давайте скормим наш файл PICT и получим сгенерированный список тестов: Для более удобной работы с получившимися кейсами, лучше направить вывод инструмента в .xls файл: В результате получаем красивый список проверок: PICT сгенерировал нам 43 проверки. А потратил я на составление текстового файлика буквально 30 минут, тогда как ручками таблицу я делал часа 2..если не дольше. Безусловно, в работе встречаются намного более сложные и запутанные условия, на описание которых придется потратить больше времени, но возможностей PICT, я думаю, вам будет достаточно для покрытия 90% задач. Пару слов о негативных сценарияхДа, PICT может вам помочь и в этом деле. Чтобы указать негативное значение у параметра используется префикс Шаг 1: В нашем файле с описанием параметров и условий добавим негативные значения в блок "Параметры и их значения" (Условия оставим без изменения):
Там где строковые параметры, думаю, логично обозначить негативное значение как Шаг 2: Даем наш файл на обработку пикту: Итого имеем 93 теста с позитивными и негативными сценариями! Да, все еще многовато, но тут уже вступает в игру приоритизация =) Хочу еще указать на парочку интересных моментов при работе с PICT: Регресс с PICT (Seeding)Каждый раз PICT генерирует новые комбинации сценариев и, соответственно, новый набор тестов. Иногда нам это не удобно, так как хочется проводить регресс по уже ранее созданным сценариям, просто добавляя какое-то новое условие или значение. Чтобы PICT понял нашу хотелку и работал со старым набором кейсов, необходимо указать ему на файл с ранее сгенерированными тестами, на базе которых будет сгенерирован новый набор: , где Сокращаем количество тестов с PICTНесмотря на то, что пикт, итак, сократил нам время на тестирование, некоторым этого может показаться мало. Для таких жадин существует возможность еще больше сократить количество кейсов, не сильно во вред покрытию. Ранее я говорил, что PICT генерирует каждый раз новые комбинации тестов и процесс генерации сильно зависит от начальных условий. Тем не менее каждый созданный набор гарантировано покрывает все необходимые комбинации, но некоторые комбинации пикт формирует более эффективно. Зная эту информацию мы можем воспользоваться опцией Я запустил для тестового набора с негативными и позитивными тестами, где изначально было 93 теста:
Результат попыток такой: 93, 97, 99, 94, 98, 95... Получается, что в моем случае, самая первая попытка была оптимальной. Зато когда я запустил seed для тестового набора с позитивными кейсами, где изначально было 43 теста:
То результат был следующий: 42 42 43 42. Таким образом мы сократили наш набор на 1 кейс =) Ну...тоже результат. О других полезностях интсрумента PICT можно почитать в PICT User's Guide и microsoft/pict/doc . И помните, PICT не боится большого количества параметров, он боится большого количества значений! Так что обязательно оптимизируйте данный момент перед тем как использовать попарное тестирование. Надеюсь вам, как и мне было интересно разобрать подробнее эту технику и вы обязательно включите ее в свой арсенал QA инженера. |