Главная страница
Навигация по странице:

  • Определите количество значений, которое может принимать каждая переменная

  • Определите ортогональный массив, у которого будет столбец для каждой переменной

  • Спроецируйте задачу тестирования на ортогональный массив ​. 5. Постройте тест-кейсы

  • Спроецируйте задачу тестирования на ортогональный массив

  • Заключительные комментарии

  • Применения и ограничения

  • Учебник по тестированию. Guide to Software Test Design


    Скачать 2.51 Mb.
    НазваниеGuide to Software Test Design
    АнкорУчебник по тестированию
    Дата24.02.2022
    Размер2.51 Mb.
    Формат файлаpdf
    Имя файлаKopland_A-Practitioner-s-Guide-to-Software-Test-Design_RuLit_Me_.pdf
    ТипGuide
    #372562
    страница6 из 11
    1   2   3   4   5   6   7   8   9   10   11

    Использование ортогональных массивов
    Процесс использования ортогональных массивов для выбора попарного подмножества для тестирования заключается в следующем:
    1. Определите переменные
    ​.
    2. Определите количество значений, которое может принимать каждая переменная
    ​.
    3. Определите ортогональный массив, у которого будет столбец для каждой переменной
    (каждый столбец ортогонального массива имеет столько же вариантов значений, сколько имеет ваша переменная).
    4. Спроецируйте задачу тестирования на ортогональный массив
    ​.
    5. Постройте тест-кейсы
    ​.
    Если всё это кажется довольно расплывчатым, значит пришло время для примера.
    Веб-системы, наподобие Brown&Donaldson и Регистрационная система Государственного университета, должны работать в ряде сред окружения. Давайте шаг за шагом выполним процесс выбора тестов с использованием ортогонального массива. Рассмотрим первый пример из введения, описывающий комбинации программного обеспечения, с которым должен работать веб-сайт.
    1. Определите переменные
    ​.
    Переменными являются: браузер, плагин, клиентская операционная система, веб-сервер и серверная операционная система.
    2. Определите количество значений, которое может принимать каждая переменная
    ​.
    8 браузеров - Internet Explorer 5.0, 5.5 и 6.0, Netscape 6.0, 6.1 и 7.0, Mozilla 1.1 и Opera 7.
    51

    3 плагина - без плагинов, RealPlayer и MediaPlayer.
    6 клиентских операционных систем - Windows 95, 98, ME, NT, 2000 и XP.
    3 веб-сервера - IIS, Apache и WebLogic.
    3 серверных операционных системы - Windows NT, 2000 и Linux.
    Перемножив 8*3*6*3*3, получим 1296 комбинаций. Для "полного" тестового покрытия должна быть проверена каждая из этих комбинаций.
    3. Определите ортогональный массив, у которого будет столбец для каждой переменной
    (каждый столбец ортогонального массива имеет столько же вариантов значений, сколько имеет ваша переменная).
    Какой размер нам нужен? Во-первых, он должен содержать пять столбцов, по одному для каждой переменной из данного примера. Первый столбец должен принимать восемь различных значений (от 1 до
    8) - браузеры. Второй столбец должен принимать значения от 1 до 3 - плагины. Третий столбец должен принимать значения от 1 до 6 - клиентские операционные системы. Четвертый и пятый столбцы должны принимать значения от 1 до 3 - веб-сервера и серверные операционные системы. Идеальным размером для ортогонального массива будет 8

    1

    6

    1

    3

    3

    (один столбец от 1 до 8, один столбец от 1 до 6 и три столбца от 1 до 3). К сожалению, такого ортогонального массива не существует. Но мы можем просто выбрать массив большего размера.
    Как тестировщик, вы не должны создавать ортогональные массивы. Всё, что вам следует сделать, это определить один из подходящих размеров и затем выполнить отображение тестовой задачи на массив.
    Существует ортогональный массив, который отвечает нашим требованиям. Это массив L

    64

    (8

    2

    4

    3

    ).
    Ортогональные массивы можно найти в ряде книг и в интернете. Излюбленной книгой является "Качество инженерного использования робастного проектирования" Мадхава С. Фадке. Кроме того, Neil J.A. Sloane из
    AT&T; поддерживает отличный каталог в интернете. См.
    ​ ​
    http://www.research.att.com/

    njas/oadir/index.html

    Мы заменили столбцы 8

    1

    и 6

    1

    (один столбец со значениями от 1 до 8 и один столбец со значениями от 1 до
    6) на 8

    2

    (два столбца со значениями от 1 до 8). А столбце 3

    3

    (три столбца со значениями от 1 до 3) на 4

    3
    (три столбца со значениями от 1 до 4).
    Количество комбинаций всех возможных значений всех имеющихся переменных - 1296, что означает, что для полного покрытия должно быть создано и пройдено 1296 тест-кейса. Используя этот ортогональный массив, все пары всех значений всех переменных могут быть покрыты всего лишь 64-мя тестами, что является сокращением количества тест-кейсов на 95%.
    52

    53

    Таблица 6-5: Ортогональный Массив L

    64

    (8

    2

    4

    3

    )
    4. Спроецируйте задачу тестирования на ортогональный массив
    ​.
    Значения браузера у нас проецируются на первый столбец ортогонального массива/ Ячейка, содержащая "1", будет представлена значением "IE 5.0"; содержащая "2" - значением "IE 5.5"; содержащая "3" - значением "IE 6.0" и т.д. Отображение:
    1 ↔ IE 5.0 2 ↔ IE 5.5 3 ↔ IE 6.0 4 ↔ Netscape 6.0 5 ↔ Netscape 6.1 6 ↔ Netscape 7.0 7 ↔ Mozilla 1.1 8 ↔ Opera 7
    Частично заполненный первый столбец дает:
    54

    55

    Таблица 6-6: L

    64

    (8

    2

    4

    3

    ) с частичным отображением первого столбца.
    Понятно, что происходит? В первом столбце, который мы выбрали для отображения выбранного браузера, каждая ячейка, содержащая значение "1", заменяется на "IE 5.0". Каждая ячейка, содержащая значение "2", заменяется на "IE 5.5". Каждая ячейка, содержащая значение "8", заменяется на "Opera 7" и т.д.
    Продолжаем, пока не заполним отображение (замену) всех ячеек в первом столбце. Замечу, что отображение между первым, вторым и третьим значениями переменной является совершенно произвольным. Не существует логической связи между "1" и "IE 5.0" или "7" и "Mozilla 1.1". Но, несмотря на то, что первоначально отображение задается произвольно, как только мы его выбрали, назначение и использование должны оставаться одними и теми же в каждом столбце.
    56

    57

    Таблица 6-7: Массив L

    64

    (8

    2

    4

    3

    ) с полным отображением его первого столбца.
    Теперь, когда был отображен первый столбец, давайте перейдем к следующему. Во втором столбце массива будем проецировать значения плагина. Ячейка, содержащая значение "1", будет заменяться на значение "без плагинов" (плагин отсутствует); ячейка, содержащая значение "2" - на значение "RealPlayer"; ячейка, содержащая значение "3" - на значение "MediaPlayer"; ячейка, содержащая значение "4", пока проецироваться не будет. Отображение:
    1 ↔ Без плагинов
    2 ↔ RealPlayer
    3 ↔ MediaPlayer
    4 ↔ Не используется
    (в этот раз)
    Заполнение второго столбца дает:
    58

    59

    Таблица 6-8: Массив L

    64

    (8

    2

    4

    3

    ) с полным отображением его первого и второго столбцов.
    После того, как были отображены первый и второй столбцы, позвольте отобразить следующие три столбца одновременно.
    Отображение клиентской операционной системы:
    1 ↔Windows 95 2 ↔ Windows 98 3 ↔ Windows ME
    4 ↔ Windows NT
    5 ↔ Windows 2000 6 ↔ Windows XP
    7 ↔ Не используется
    (в этот раз)
    8 ↔ Не используется
    (в этот раз)
    Отображение для серверов:
    1 ↔ IIS
    2 ↔ Apache
    3 ↔ WebLogic
    4 ↔ Не используется
    (в этот раз)
    Отображение для серверной операционной системы:
    1 ↔ Windows NT
    2 ↔ Windows 2000 3 ↔ Linux
    4 ↔ Не используется
    (в этот раз)
    Заполнение оставшихся столбцов дает:
    60

    61

    Таблица 6-9: Массив L

    64

    (8

    2

    4

    3

    ) с полным отображением всех столбцов.
    Если бы в массиве не осталось ячеек, которые не назначены, то отображение ортогонального массива и, таким образом, набор тест-кейсов, был бы завершен. Что можно сказать о не назначенных ячейках - во-первых, почему они существуют? Во-вторых, что ними делать?
    Не назначенные ячейки существуют из-за того, что ортогональная матрица была выбрана "слишком большой". Идеальным размером массива будет 8

    1

    6

    1

    3

    3

    - когда один столбец изменяется от 1 до 8, еще один столбец - от 1 до 6 и три столбца - от 1 до 3. К сожалению, ортогонального массива конкретно такого размера не существует. Ортогональные массивы не могут быть построены для параметров произвольных размеров. Они могут быть фиксированных, «квантовых» размеров. Можно построить один больший или меньший по размеру, но построить один точного размера нельзя. Известный тестировщик ПО Мик Джаггер дает отличный совет относительно этого: "
    Вы не всегда можете получить то, что хотите, но если
    постараетесь, то, возможно, это будет то, что вам нужно

    ".
    Известный тестировщик ПО:
    Если массива нужного размера не существует, то выберите тот, который чуть больше и примените следующие два правила, чтобы справиться с «избытком». Первое правило касается лишних столбцов.
    Если выбранный ортогональный массив содержит больше столбцов, чем необходимо для конкретного тестового сценария - просто удалите их. Массив останется ортогональным. Второе правило касается лишних значений переменной. В нашем примере столбец 3 принимает значения от 1 до 8, но нам необходимы только значения от 1 до 6. Заманчивым представляется удалить строки, содержащие эти ячейки, но делать этого нельзя. Так может быть потеряна "ортогональность". Каждая строка в массиве существует для того, чтобы обеспечить как минимум одну парную комбинацию, которая больше не встретится в массиве. Если вы удалите строку, то потеряете этот тест-кейс. Вместо того, чтобы удалять их, просто замените лишние клетки на любые допустимые значения для переменной. Некоторые автоматизированные инструменты случайным образом выбирают для каждой ячейки любое из множества допустимых значений; другие - выбирают один допустимое значение и используют его в каждой ячейке столбца. Приемлемым будет любой подход. Используя второй подход, мы завершим заполнение ортогонального массива. Следует отметить, что поддержка аспекта "сбалансированности" массива при назначении этих лишних ячеек может быть трудной.
    62

    63

    Таблица 6-10: L

    64

    (8

    2

    4

    3

    ) с полным отображением всех ее столбцов, включая «лишние» ячейки.
    5. Постройте тест кейсы
    ​.
    Осталось построить тест-кейсы для каждой строки ортогонального массива. Обратите внимание, что массив определяет только входные условия. Для определения ожидаемого результата для каждого теста необходим оракул (обычно им является тестировщик).
    Алгоритм Allpairs
    Одним из способов определить все пары является использование ортогональных массивов. Второй способ заключается в использовании алгоритма, который генерирует пары непосредственно, не прибегая к таким
    «внешним» устройствам, как ортогональный массив.
    Джеймс Бах представляет алгоритм для генерации всех пар в Lessons Learned на Software Testing. Кроме того, он предлагает программу под названием
    Allpairs​, которая генерирует все пары комбинаций. Она доступна по адресу
    ​ ​
    http://www.satisfice.com

    . Нажмите на кнопку "Test Methodology" и найдите "Allpairs".
    Давайте применим алгоритм Allpairs к предыдущей задаче тестирования веб-сайта.
    Джеймс Бах представляет на сайте
    ​ ​
    http://www.satisfice.com

    инструмент для создания всех парных комбинаций. Нажмите на "Test Methodology" и найдите "Allpairs".
    Уорд Каннингем представляет возможность обсуждения и исходный код
    Java-программы для генерации все парных комбинаций на сайте http://fit.c2.хcom/wiki.cgi?AllPairs

    После того, как вы скачаете и распакуете Allpairs, создайте таблицу переменных и их значений с разделителями табуляции. Если вы используете Windows, то самый простой способ - это запустить Excel, ввести данные в электронную таблицу, а затем сохранить таблицу операцией SaveAs как файл с расширением .txt. Следующая таблица была создана и сохранена как "
    input.txt

    ".
    Таблица 6-11: Входные значения в программу Allpairs.
    Теперь запустите программу "Allpairs", выполнив команду: allpairs input.txt> output.txt где файл "
    output.txt

    " будет содержать список всех тестовых пар.
    Будет создана следующая таблица:
    64

    Таблица 6-12: Выходные значения из программы Allpairs.
    Когда определенное значение в тесте-кейсе не имеет значения, потому что все его пары уже выбраны, оно помечается как . Алгоритм Баха выбирает значение, которое было в паре наименьшее количество раз по отношению к другим в тестовом наборе. Значение с приставкой "" может быть заменено на любое другое, при этом покрытие всех пар по-прежнему сохранится. Это можно делать, чтобы чаще проверять наиболее часто используемые или наиболее критические комбинации. Кроме того, программа Баха отображает информацию о том, как пары были сделаны. В ней перечислена каждая пара; показано, сколько раз пара встречается в таблице, и указан каждый тест, который содержит эту пару.
    65

    Из-за характера "сбалансированности" ортогональных массивов такой подход потребует шестьдесят четыре тест-кейса. "Несбалансированный" характер алгоритма выбора всех пар требует только сорок восемь тест-кейсов, что меньше на 25%.
    Следует отметить, что комбинации, выбранные методом ортогонального массива, могут быть не такими же, как те, которые выбраны Allpairs. Но это не важно. Важно лишь то, чтобы были выбраны все парные комбинации параметров. Это будут комбинации, которые мы хотим проверить.
    Сторонники алгоритма Allpairs обращают внимание, что если имеются 100 параметров, каждый из которых способен принимать одно из двух значений, то при использовании сбалансированного ортогонального массива потребуется 101 тест-кейс, в то время как несбалансированный поиск всех пар требует всего лишь десять тестов. Поскольку большинство программ имеют большое количество входных данных, каждый из которых принимает одно из нескольких значений, то они утверждают, что подход поиска всех попарных комбинаций превосходит.
    Инструмент AETG от Telcordia реализует подход тестирования всех попарных комбинаций. См
    ​ ​
    http://aetgweb.argreenhouse.com

    Заключительные комментарии
    В некоторых случаях существуют ограничения на определенные значения некоторых переменных.
    Например, IIS от Microsoft и MacOS от Apple не совместимы. Определенно точно, что методы поиска всех попарных комбинаций выберут эту комбинацию для проверки (помните, что выбираются все пары). При создании подмножества попарных значений вручную, учет этих различных ограничений может быть трудоемким. У инструментов rdExpert и AETG такая способность есть. Необходимо определить ограничения, и инструмент выберет пары, учитывая эти ограничения.
    Учитывая два подхода к попарному тестированию - ортогональные массивы и алгоритм Allpairs, какой является более эффективным? Те, кто выступают за ортогональные массивы, считают, что тестовое покрытие, которое обеспечивается Allpairs, существенно уступает. Они отмечают, что равномерное распределение тест-кейсов в области предоставляет покрытие некоторых неисправностей, которые сложно обнаружить при попарном режиме поиска неисправностей. Другие эксперты, которые поддерживают подход
    Allpairs, отмечают, что Allpairs на самом деле проверяет все пары, что и является его целью. Они утверждают, что нет доказательств того, что подход с ортогональными массивами обнаруживает больше дефектов. Также они отмечают, что инструмент Allpairs доступен в Интернете бесплатно. Но обе стороны признают, что не существует никаких задокументированных исследований, в ходе которых сравнивалась бы эффективность одного подхода относительно другого.
    Захватывающей надеждой попарного тестирования является то, что путем создания и запуска 1-20% тестов вы найдете 70-85% от общего объема дефектов. Но это не обещание, а только надежда. Многие испытали это значительный результат. Попробуйте эту технику. Узнайте, работает ли она для вас.
    Кохен сообщал, что в дополнение к уменьшению количества тестов и увеличению найденных дефектов, тесты, созданные с помощью алгоритма Allpairs, также обеспечивают более полное покрытие кода. Набор из 300 случайно выбранных тестов достигает 67% заявленного покрытия и 58% действительного покрытия, в то время как 200 тестов из всех пар достигает 92% критического покрытия и 85% действительного покрытия, т.е. видим значительное увеличение покрытия при меньшем количестве тестов.
    Заключительный комментарий: вполне возможно, что некоторые важные попарные комбинации могут быть пропущены обоими попарными подходами. Правило 80:20 говорит нам, что важность комбинаций
    66
    распределена не равномерно. Подумайте сами и определите, какие дополнительные тесты должны быть созданы для этих комбинаций.
    В предыдущем примере мы можем быть уверены, что распределение браузеров не одинаково.
    Действительно, было бы удивительно, если бы 12.5% наших пользователей использовали IE 5.0, 12,5% - IE
    5.5, 12.5% - IE 6.0 и т.д. Некоторые комбинации встречаются чаще, чем другие. Кроме того, некоторые существующие комбинации используются настолько редко, что абсолютно точно должны работать правильно (хорошим примером является тест "закрыть ядерный реактор"). В случае, если попарная методика пропустит важную комбинацию, то добавьте эту комбинацию в ваши тест-кейсы сами.
    Применения и ограничения
    Как и другие подходы тест-дизайна, представленные ранее, метод попарного тестирования может значительно сократить количество тестов, которые нужно создать и исполнить. Они в равной степени применимы на модульном, интеграционном, системном и приемочном уровнях тестирования. Всё, что требуется - это комбинации входов, каждый из которых принимает различные значения до такой степени, что результат может привести к комбинационному взрыву, так как для тестирования существует слишком много комбинаций.
    Помните, что не существует "физики дефектов программного обеспечения", которая гарантирует, что попарное тестирование будет действовать в ваших интересах. Существует только один способ узнать это - попробовать самому.
    Резюме
    ● Если количество тестовых комбинаций очень велико, не пытайтесь проверить все комбинации для всех значений всех переменных, а проверяйте все пары переменных. Это значительно сокращает количество тестов, которые нужно создать и исполнить.
    ● Исследования показывают, что большинство дефектов являются либо одиночными (тестируемая функция просто не работает и любой тест на эту функцию найдет дефект), либо двойными (это пара из функции/модуля, с которыми функция/модуль проваливаются, хотя все остальные пары выполняются успешно). Попарное тестирование определяет минимальный набор, который поможет нам проверить все одиночные и попарные дефекты. Отличной мотивацией для использования этой техники является успех её применения на многих проектах, как задокументированных, так и не задокументированных.
    Ортогональный массив

    - это двумерный массив чисел, с таким интересным свойством - в каждой паре столбцов будут встречаться все комбинации значений этих столбцов.
    ● Не существует основной "физики дефектов программного обеспечения", которая гарантирует, что попарное тестирование будет действовать в ваших интересах. Существует только один способ узнать это - попробовать его.
    1   2   3   4   5   6   7   8   9   10   11


    написать администратору сайта