Учебник по тестированию. Guide to Software Test Design
Скачать 2.51 Mb.
|
каждого перехода. Тест-кейсы также могут быть прочитаны прямо из таблицы состояний и переходов. Строки таблицы, выделенные серым цветом, показывают все допустимые переходы: Текущее состояние Событие Действие Следующее состояние пусто вводИнформации стартТаймераОплат ы Осуществлено пусто оплата - пусто пусто печать - пусто пусто выдачаБилета - пусто 83 пусто отмена - пусто пусто срокОплатыИстек - пусто Осуществлено вводИнформации - Осуществлено Осуществлено оплата - Оплачено Осуществлено печать - Осуществлено Осуществлено выдачаБилета - Осуществлено Осуществлено отмена - Отменено заказчиком Осуществлено срокОплатыИстек - Отменено (не оплачено) Оплачено вводИнформации - Оплачено Оплачено оплата - Оплачено Оплачено печать Билет Обилечено Оплачено выдачаБилета - Оплачено Оплачено отмена возвратДенег Отменено заказчиком Оплачено срокОплатыИстек - Оплачено Обилечено вводИнформации - Обилечено Обилечено оплата - Обилечено Обилечено печать - Обилечено Обилечено выдачаБилета - Использовано Обилечено отмена возвратДенег Отменено заказчиком Обилечено срокОплатыИстек - Обилечено 84 Использовано вводИнформации - Использовано Использовано оплата - Использовано Использовано печать - Использовано Использовано выдачаБилета - Использовано Использовано отмена - Использовано Использовано срокОплатыИстек - Использовано Отменено (не оплачено) вводИнформации - Отменено (не оплачено) Отменено (не оплачено) оплата - Отменено (не оплачено) Отменено (не оплачено) печать - Отменено (не оплачено) Отменено (не оплачено) выдачаБилета - Отменено (не оплачено) Отменено (не оплачено) отмена - Отменено (не оплачено) Отменено (не оплачено) срокОплатыИстек - Отменено (не оплачено) Отменено заказчиком вводИнформации - Отменено заказчиком Отменено заказчиком оплата - Отменено заказчиком Отменено заказчиком печать - Отменено заказчиком Отменено заказчиком выдачаБилета - Отменено заказчиком Отменено заказчиком отмена - Отменено заказчиком Отменено заказчиком срокОплатыИстек - Отменено заказчиком Таблица 7-2: Тестирование всех возможных переходов по таблице переходов состояний. Кроме того, в зависимости от системного риска, вы можете создавать тест-кейсы для некоторых или всех недопустимых пар состояние/событие для того, чтобы убедиться, что система не реализует неверные пути. 85 Применение и ограничения Диаграммы состояний и переходов являются отличными инструментами для захвата определенных системных требований, а именно таких, которые описывают состояния и связанные с ними переходы. Эти диаграммы могут использоваться для того, чтобы направить наши усилия по тестированию на выявление состояний, событий и переходов, которые должны быть проверены. Диаграммы состояний и переходов не применяются, если система не имеет ни одного состояния или не должна реагировать в реальном времени на события, возникающие вне пределов системы. Примером может служить программа начисления заработной платы, которая считывает отработанное работником время, вычисляет зарплату, вычитает отчисления, сохраняет запись, печатает зарплатный чек, а затем процесс повторяется. Резюме ● Диаграммы состояний и переходов направляют наши усилия по тестированию на выявление состояний, событий, действий и переходов, которые должны быть проверены. Совместно они определяют, как система взаимодействует с внешним миром, событиями его процессов, а также допустимые и недопустимые значения этих событий. ● Диаграмма состояний и переходов - это не единственный способ документирования поведения системы. Возможно, они более легки для понимания, но таблицы состояний и переходов могут быть проще в использовании на постоянной и временной основе. ● Рекомендуемым уровнем тестирования с использованием диаграмм состояний и переходов является создание такого набора тестов, в котором все переходы осуществляются по крайней мере один раз. В системах с высокой степенью риска можно создать еще больше тест-кейсов, приближаясь ко всем возможным путям. Практика 1.Это упражнение относится к веб-сайту регистрационной системы Государственного университета, описанной в приложении Б. Ниже приведена диаграмма состояний и переходов для процесса "регистрации на курс" и "исключения из курса". Определите набор тестов, которые вы считаете достаточными для покрытия процесса регистрации и исключения. В диаграмме используются следующие термины: События: ● create (создать) - создать новый курс, ● enroll (зачислить) - зачислить студента на курс, ● drop (исключить) - исключить студента из курса. Атрибуты: ● ID - номерной идентификатор студента, ● max - максимальное количество студентов, которое может содержать в себе курс, ● #enrolled - количество студентов, которые в настоящее время зачислены на курс, 86 ● #waiting - количество студентов, которые в настоящее время находятся в Списке Ожидания для этого курса. ● Тесты: ● isEnrolled - отвечают на вопрос "зачислен ли студент на курс?", ● onWaitList - отвечают на вопрос "находится ли студент в Списке Ожидания?". Списки: ● SectionList - список студентов, зачисленных в группу, ● WaitList - список студентов, ожидающих зачисление в заполненную группу. Символы: ● ++ - увеличение на 1, ● -- - уменьшение на 1. 87 88 Рисунок 7-13: Диаграмма состояний и переходов для зачисления и исключения из курса в Государственный университет. Ссылки Binder, Robert V. (1999). Testing Object-Oriented Systems: Models, Patterns, and Tools . Addison-Wesley. Fowler, Martin and Kendall Scott (1999). UML Distilled: A Brief Guide to the Standard Object Modeling Language (2 nd Edition) . Addison-Wesley. Harel, David. "Statecharts: a visual formalism for complex systems." Science of Computer Programming 8, 1987, pp 231–274. Mealy, G.H. "A method for synthesizing sequential circuits." Bell System Technical Journal , 34(5): 1045–1079, 1955. Moore, E.F. "Gedanken-experiments on sequential machines," Automata Studies (C. E. Shannon and J. McCarthy, eds.), pp. 129–153, Princeton, New Jersey: Princeton University Press, 1956. Rumbaugh, James, et al. (1991). Object-Oriented Modeling and Design . Prentice-Hall. 89 Глава 8. Domain-тестирование "Стоя за выступом автомобиля Ориент Экспресс, как бы своего, и накренившись подальше от станции, Специальный Агент Чу уже почувствовал глаза врага, наблюдавшего за ним из чернильной тени и узнал, что за ним уже наблюдают, и хотя он никогда не пробовал в своей жизни прессованный табак, он имитировал это оружие, как знаток, так как он уже знал, что он Чузен Ван, Чау Чу не имея выбора кроме того, как выбрать жевание этого чу-чу." Лорен Хаарсма Введение В главах по тестированию классов эквивалентности и граничных значений мы рассмотрели тестирование одиночных переменных, которые требовали оценки в указанных диапазонах. В этой главе мы рассмотрим тестирование нескольких переменных одновременно. Существуют две причины, по которым стоит обратить на это внимание: ● у нас редко будет достаточно времени на создание тест-кейсов для каждой переменной в нашей системе. Их просто слишком много. ● часто переменные взаимодействуют. Значение одной переменной ограничивает допустимые значения другой. В этом случае, если проверять переменные поодиночке, можно не обнаружить некоторые дефекты. Domain-тестирование - это техника, которая может применяться для определения эффективных и действенных тест-кейсов, когда несколько переменных могут или должны тестироваться вместе. Она использует и обобщает тестирование классов эквивалентности и граничных значений в n одномерных измерениях. Подобно этим техникам, мы ищем случаи, где граница была неверно определена или реализована. На заметку Domain-тестирование - это техника, которая может применяться для определения эффективных и действенных тест-кейсов, когда несколько переменных должны тестироваться вместе. В двухмерном измерении (с двумя взаимодействующими параметрами) могут возникнуть следующие дефекты: ● сдвиг границы - граница, перемещённая вертикально или горизонтально; ● направление границы - граница, повёрнутая под неправильным углом; ● пропущенная граница ; ● лишняя граница Рисунок 8-1 заимствован из книги Биндер'а. Он иллюстрирует все четыре вида дефектов графически: 90 Рисунок 8-1: Дефекты двухмерного пространства. Конечно, возможны взаимодействия между тремя или большим количеством переменных, но такие схемы гораздо сложнее визуализировать. Методика Процесс Domain-тестирования помогает нам выбрать эффективные и действенные тест-кейсы. Для начала, несколько определений: ● точка on (граничная точка) - является значением, которое лежит на границе. ● точка off (исключенная точка) - является значением, которое не лежит на границе. ● точка in (внутренняя точка) - является значением, которое удовлетворяет всем граничным условиям, но не лежит на границе. ● точка out (внешняя точка) - является значением, которое не удовлетворяет никакому граничному условию. 91 Выбор точек on и off является более сложным, чем это может показаться: ● если граница замкнута (определяется оператором, содержащим равенство, т.е. ≤, ≥ или =) таким образом, что точки на границе включены в область определений, то точка on лежит на границе и входит в область определений. Точка off лежит вне области определения. ● если граница открыта (определяется оператором неравенства < или >) таким образом, что точки на границе не включены в область определений, то точка on лежит на границе, но не входит в область определений. Точка off лежит внутри области определения. Смущены? Видимо, нужны примеры: Рисунок 8-2: Примеры точек on, off, in и out для замкнутых и открытых границ. Слева приведен пример замкнутой границы. Определенная область состоит из всех точек, больших либо равных 10. Точка on имеет значение 10. Точка off располагается немного за границей и не входит в область определения. Точка in входит в область определений. Точка out находится за пределами области определений. Справа приведен пример открытой границы. Определенная область состоит из всех точек, больших (но не равных) 10. Опять же, точка on имеет значение 10. Точка off располагается немного за границей и входит в область определений. Точка in входит в область определений. Точка out находится за пределами области определений. После того, как выбраны эти точки, техника анализа области определения 1х1 ("один-на-один") учит нас выбирать следующие тест-кейсы: ● для каждого нестрогого условия (≥, >, ≤ или <) выбрать одну точку on и одну точку off; ● для каждого строгого условия (=) выбрать одну точку on и две точки off - одну чуть левее, чем граничное значение в условии и одну чуть правее этого же значения. Обратите внимание, что нет причин повторять одинаковые тесты для соседних областей. Если точка off для одной области является точкой in для другой области, то не нужно дублировать эти тесты. Биндер предлагает очень полезную таблицу для документирования тест-кейсов, полученных методом анализа области определения размерностью 1x1, под названием " Тестовая матрица области определения " (Domain Test Matrix). 92 Таблица 8-1: Пример тестовой матрицы области определения (Domain Test Matrix) Обратите внимание, что тест-кейсы 1-8 проверяют точки on и off для каждого состояния первой переменной X1, в то время как значение второй переменной X2 остается в типичной точке in. В тест-кейсах 9-16 в типичной точке in зафиксирована уже первая переменная, и для каждого состояния второй переменной проверяются точки on и off. Дополнительные переменные и условия будут следовать такой же схеме. Пример Прием в Государственный университет производится с учетом комбинации оценок за старший класс школы и баллов за тест ACT. В заштрихованных клетках следующей таблицы указаны комбинации, которые гарантировали бы поступление. В верхней части таблицы указан средний школьный балл (GPA), а в левой - баллы за тест ACT. Государственный университет является довольно эксклюзивной школой с точки зрения его политики приема. Разъяснение Оценка ACT является экзаменом, предназначенным для оценки общего развития образования школьников и их способности успешно учиться на уровне колледжа. Средний школьный балл основан на преобразовании буквенных оценок в числовые значения. ● A = 4.0 (отлично) ● B = 3.0 ● B = 3.0 (средне) ● D = 1.0 93 Таблица 8-2: Матрица приема в Государственный университет. Эта таблица может быть представлена в виде множества решений следующих трех линейных уравнений: ACT ≤ 36 (максимально возможный балл за тест ACT) GPA ≤ 4.0 (максимально возможный средний школьный балл) 10 * GPA + ACT ≥ 71 (третье уравнение можно найти с помощью старой доброй формулы из элементарной алгебры у = mx + b. Нужно использовать точки {ACT = 36, GPA = 3.5} и {ACT = 31, GPA = 4.0} и всё ваше упрямство для того, чтобы решить пару совместных уравнений, полученных при подстановке каждой из этих двух точек в уравнение y = mx + b). Рисунок 8-3: Матрица приема в Государственный университет в графической форме. Следующие тест-кейсы покрывают эти три границы, используя процесс domain-анализа 1x1: 94 Таблица 8-3: Тест-кейсы, построенные domain-анализом 1x1, для приема в Государственный университет. Тест-кейсы 1 и 2 проверяют ограничение GPA ≤ 4.0. Первый тест проверяет граничное значение GPA=4.0, а второй тест проверяет значение за границей - GPA=4.1. Оба этих случая используют типичные значения для ACT и GPA/ACT. Тест-кейсы 3 и 4 проверяют ограничение ACT ≤ 36. Третий тест проверяет граничное значение ACT=36, а четвертый тест проверяет значение за границей - ACT=37. Оба этих случая используют типичные значения для GPA и GPA/ACT. Тест-кейсы 5 и 6 проверяют ограничение 10 * GPA + ACT ≥ 71. Пятый тест проверяет значение в пределах границ (GPA=3.7 и ACT=34), а шестой тест проверяет значение за пределами границ (GPA=3.8 и ACT=32). Оба этих случая используют типичные значения для GPA и ACT. Применения и ограничения Domain-тестирование применимо в случае, когда несколько переменных (например, поля ввода) должны проверяться вместе - либо для эффективности, либо по причине их логического взаимодействия. Несмотря на то, что эта техника лучше всего подходит для числовых значений, она может быть обобщена и на другие типы - boolean, string, enumeration и т.д. Резюме ● Domain-тестирование облегчает одновременное тестирование нескольких переменных. Это полезно, потому что у нас редко будет достаточно времени на создание тест-кейсов для каждой переменной в наших системах. Их просто слишком много. Кроме того, переменные часто взаимодействуют. Если значение одной переменной ограничивает допустимые значения другой, то некоторые дефекты не могут быть обнаружены путем тестирования их по отдельности. ● Метод использует и обобщает тестирование классов эквивалентности и граничных значений в n одномерных измерениях. Подобно этим техникам, мы ищем ситуации, где граница была реализована неверно. ● Используя Domain-тестирование 1x1, для каждого нестрогого условия (≥, >, ≤ или <) мы выбираем одну точку on и одну точку off. Для каждого строгого условия (=) мы выбираем одну точку on и две точки off - одну чуть левее, чем граничное значение в условии и одну чуть правее этого же значения. 95 Практика 1. Государственный университет гордится подготовкой не только образованных студентов, но и хороших граждан своей нации (так гласит их рекламная брошюра). В дополнение к основным и дополнительным курсовым работам, в Государственном университете каждому студенту требуется принять (и пройти) ряд общеобразовательных занятий. К ним относятся: 1. высшая алгебра (студент может либо взять курс, либо показать компетентность путем тестирования); 2. национальная программа - обзорный курс по истории нашей нации, государства и места в мире; 3. от четырех до шестнадцати часов курсов социальных наук (цифры 100-299); 4. от четырех до шестнадцати часов курсов физических наук (цифры 100-299). 2. Для получения ученой степени может засчитываться не более чем двадцать четыре часа из комбинации курсов по социальным и физическим наукам. 3. Примените Domain-тестирование 1х1 к этим требованиями, получите тест-кейсы и используйте тестовую матрицу области определения (Domain Test Matrix) Биндера для их документирования. |