Учебник по тестированию. Guide to Software Test Design
Скачать 2.51 Mb.
|
Ежемесячный доход Количество домов Результат Описание $1000 1 корректно Минимальный доход, минимальное количество домов $83333 1 корректно Максимальный доход, минимальное количество домов $1000 5 корректно Минимальный доход, максимальное 30 количество домов $83333 5 корректно Максимальный доход, максимальное количество домов $1000 0 некорректно Минимальный доход, ниже минимального количества домов $1000 6 некорректно Минимальный доход, выше максимального количества домов $83333 0 некорректно Максимальный доход, ниже максимального количества домов $83333 6 некорректно Максимальный доход, выше максимального количества домов $999 1 некорректно Ниже минимального дохода, минимальное количество домов $83334 1 некорректно Выше максимального дохода, минимальное количество домов $999 5 некорректно Ниже минимального дохода, максимальное количество домов $83334 5 некорректно Выше максимального дохода, максимальное количество домов Таблица 4-1: Набор тест-кейсов, содержащих комбинации допустимых (на границе) и недопустимых (за границей) значений. График, на котором на оси х отложены значения "ежемесячного дохода", а на оси y - "количество жилых помещений", показывает положение точек тестовых данных. 31 Рисунок 4-3: Точки данных на границах и точки данных в непосредственной близости от границ. Обратите внимание, что четыре входных комбинации расположены на границах, а восемь находятся в непосредственной близости. Также обратите внимание, что точки вне границ всегда сочетают одно допустимое значение с одним недопустимым значением (только одной единицей измерения ниже или только одной единицей измерения выше). Примеры Тестирование граничных значений применимо к структуре (длине и типу символов) входных данных, а также к её значениям. Рассмотрим следующие два примера: Пример 1 Ссылаясь на веб-страницу заказа веб-сайта Браун и Дональдсон, описанного в Приложении А, рассмотрим поле "Количество". Ввести в это поле можно от одного до четырех цифровых знаков (0, 1, ..., 8, 9). Тестовым набором граничных значений для длины этого поля будут {0, 1, 4, 5} цифровых символов. Пример 2 Опять же, на странице заказа, рассмотрим поле "Количество", но на этот раз значения, а не структуру (длину и тип символов). Если сделкой является покупка или продажа, то минимальное возможное значение равно 1, так что для граничного тестирования используйте {0, 1, 2}. Верхняя граница значения этого поля является более сложной. Если сделкой является продажа, то какое максимальное количество акций, которое может быть продано? Это количество акций, имеющихся на данный момент в собственности. Для границ используйте {принадлежащиеАкции-1, принадлежащиеАкции, принадлежащиеАкции + 1}. Если сделкой является покупка, то максимальное значение (количество акций, которые будут приобретены) определяется как: акции = (балансАккаунта - комиссия) / ценаАкции , предполагая фиксированную комиссию. Для тестирования граничных значений используйте {акции-1, акции, акции + 1}. 32 Применения и ограничения Тестирование граничных значений может значительно уменьшить количество тестов, которые должны быть созданы и выполнены. Такое тестирование больше всего подходит для систем, в которых большая часть входных данных принимает значения в пределах диапазонов или из наборов данных. Тестирование граничных значений в равной степени применимо на модульном, интеграционном, системном и приемочном уровнях тестирования. Для тестирования граничных значений требуются входные значения, которые могут быть разделены на классы и границы, которые могут быть определены на основе системных требований. Резюме ● Несмотря на то, что тестирование классов эквивалентности полезно, его величайшим вкладом является то, что оно приводит нас к тестированию граничных значений. ● Тестирование граничных значений - это техника, используемая для уменьшения числа тестовых наборов до выполнимого уровня при сохранении приемлемого уровня покрытия тестами. ● Тестирование граничных значений фокусируется на границах, потому что там спрятано очень много дефектов. Опытные тестировщики сталкивались с этой ситуацией много раз. У неопытных тестировщиков может появиться интуитивное ощущение, что ошибки будут возникать чаще всего на границах. ● При создании тестов для каждого граничного значения выбирается одна точка на границе, одна точка чуть ниже границы и одна точка чуть выше границы. "Ниже" и "выше" являются относительными величинами и зависят от единиц измерения данных. Практика 1. Следующие упражнения относятся к веб-сайту "Регистрационная система Государственного университета", описанному в приложении Б. Определите границы и подходящие тестовые граничные значения для следующего: ● ZIP-код (почтовый индекс) - пять цифр. ● Сначала рассмотрите почтовый индекс только с точки зрения цифр. Затем определите минимальный и максимальный корректные почтовые индексы в США. Дополнительно 1 , определите формат минимального и максимального допустимых значений почтовых кодов для Канады. ● Фамилия - пятнадцать символов (включая алфавитные символы, точек, дефисы, апострофы, пробелы и числа). Дополнительно 2 создайте несколько очень сложных фамилий. Можете ли вы определить "правила" для корректных фамилий? Дополнительно 3 используйте телефонную книгу из другой страны - попробуйте Финляндию или Тайланд. ● Идентификатор пользователя - восемь символов, как минимум два из которых являются не буквой (число, спецсимвол, непечатаемый символ). ● Идентификатор курса - три буквенных символа, представляющие факультет последующим шестизначным числом, которое является уникальным идентификационным номером курса. Возможные факультеты: ○ PHY - физика ○ EGR - инжиниринг 33 ○ ENG - английский ○ LAN - иностранные языки ○ CHM - химия ○ MAT - математика ○ PED - физкультура ○ SOC - социология [1] На самом деле нет никаких дополнительных выгод, поэтому сделайте это просто для удовольствия. [2] На самом деле нет никаких дополнительных выгод, поэтому сделайте это просто для удовольствия. [3] На самом деле нет никаких дополнительных выгод, поэтому сделайте это просто для удовольствия. Литература Beizer, Boris (1990). Software Testing Techniques . Van Nostrand Reinhold. Glib, Tom and Dorothy Graham (1993). Software Inspection . Addison-Wesley. ISBN 0-201-63181-4. Myers. Glenford J. (1979). The Art of Software Testing . John Wiley & Sons. 34 Глава 5. Тестирование таблиц решений " Я потерпел неудачу на слушании моего первого дела об убийстве, обнаружив себя единственным свидетелем, и как бы горячо я не доказывал с Джоном Лоу, что преступник был прямо перед ними, и та самая дама, которую они допрашивали — эта знойная, но хитрая мисс Китвинкль, которая играла скорбящую простофилю, как профессиональный пианист играет на пианино — копы только продолжали улыбаться и набивать крекеры в мой клюв. " Крис Эско Введение Таблицы решений являются превосходным инструментом для сбора определенных видов требований системы и для документирования внутреннего устройства системы. Они используются для записи сложных бизнес-правил, которые должна реализовывать система. Кроме того, они могут служить инструкцией по созданию проверочных тестов. Таблицы решений являются жизненно важным инструментом в наборе персональных инструментов тестировщика. К сожалению, многие аналитики, проектировщики, программисты и тестировщики не знакомы с этой техникой. Методика Таблицы решений представляют собой комплекс бизнес-правил, основанных на заданных условиях. Основная форма: Правило 1 Правило 2 ... Правило p Условия Условие-1 Условие-2 Условие-m Действия Действие-1 Действие-2 Действие-n 35 Таблица 5-1: Основная форма таблицы решений. Условия от 1 до m представляют собой различные исходные условия. Действия от 1 до n - это действия, которые следует предпринять в зависимости от различных комбинаций входных условий. Каждое из этих правил определяет уникальное сочетание условий, которые приводят в исполнение ("запуск") действия, связанные с этим правилом. Обратите внимание, что действия не зависят от порядка, в котором оцениваются эти условия, а только от их значений (предполагается, что все величины доступны одновременно). Кроме того, действия зависят только от определенных условий, а не от любых предыдущих исходных условий или состояния системы. Возможно, конкретный пример прояснит эту концепцию. Компания по автострахованию дает скидку водителям, которые состоят в браке и/или хорошо учатся. Давайте начнем с условий. Следующая таблица решений имеет два условия, каждое из которых может принимать значение "Да" или "Нет". Правило 1 Правило 2 Правило 3 Правило 4 Условия Состоит в браке? Да Да Нет Нет Хороший студент? Да Нет Да Нет Таблица 5-2: Таблица решений с двумя бинарными условиями. Обратите внимание, что эта таблица содержит все комбинации условий. Задав два бинарных условия ("да" или "нет"), возможные комбинации будут: ("да", "да"), ("да", "нет"), ("нет", "да") и ("нет", "нет"). Каждое правило представляет собой одну из этих комбинаций. Нам, тестировщикам, нужно будет проверить, что определяются все комбинации условий. Пропущенное сочетание может привести к разработке такой системы, которая не сможет правильно обработать определенный набор исходных данных. Теперь про действия. Каждое правило является причиной "запуска" действия. Каждое правило может задать действие, уникальное для этого правила, или правила могут иметь общие действия. Правило 1 Правило 2 Правило 3 Правило 4 Условия Состоит в браке? Да Да Нет Нет Хороший студент? Да Нет Да Нет Действия Скидка ($) 60 25 50 0 Таблица 5-3: Добавление единственного действия в таблицу решений. Для каждого правила с помощью таблицы решений можно указать более одного действия. Опять же, эти правила могут быть уникальными или быть общими. 36 Правило 1 Правило 2 Правило 3 Правило 4 Условия Условие-1 Да Да Нет Нет Условие-2 Да Нет Да Нет Действия Действие-1 Выполнить X Выполнить Y Выполнить X Выполнить Z Действие-2 Выполнить А Выполнить В Выполнить В Выполнить В Таблица 5-4: Таблица решений с несколькими действиями. В такой ситуации выбрать тесты просто - каждое правило (вертикальная колонка) становится тест-кейсом. Условия указывают на входные значения, а действия - на ожидаемые результаты. В предыдущих примерах используются простые бинарные условия, но условия могут быть более сложными. Правило 1 Правило 2 Правило 3 Правило 4 Условия Условие-1 0-1 1-10 10-100 100-1000 Условие-2 <5 5 6 или 7 >7 Действия Действие-1 Выполнить X Выполнить Y Выполнить X Выполнить Z Действие-2 Выполнить А Выполнить В Выполнить В Выполнить В Таблица 5-5: Таблица решений со сложными условиями. В этой ситуации выбор тестов становится чуть более сложным - каждое правило (вертикальная колонка) становится тест-кейсом, но при этом должны быть выбраны значения, удовлетворяющие условиям. Выбирая необходимые значения, мы создаем следующие тест-кейсы: ID тест-кейса Условие 1 Условие 2 Ожидаемый результат Тест-кейс 1 0 3 Выполнить X / Выполнить А Тест-кейс 2 5 5 Выполнить Y / Выполнить В 37 Тест-кейс 3 50 7 Выполнить X / Выполнить B Тест-кейс 4 500 10 Выполнить Z / Выполнить B Таблица 5-6: Примерные тест-кейсы. Если тестируемая система имеет сложные бизнес-правила, а у ваших бизнес-аналитиков или проектировщиков нет документации этих правил, то тестировщикам следует собрать эту информацию и представить её в виде таблицы решений. Причина проста: представляя поведение системы в такой полной и компактной форме, тест-кейсы могут быть созданы непосредственно из таблицы решений. При тестировании для каждого правила создаётся как минимум один тест-кейс. Если состояния этого правила бинарные, то должно быть достаточно одного теста для каждого сочетания. С другой стороны, если состояние является диапазоном значений, то тестирование должно учитывать и нижнюю, и высшую границы диапазона. Таким образом мы объединяем идею тестирования граничных значений с тестированием таблиц решений. Ключевой момент Icon Для каждого правила создаётся как минимум один тест-кейс. Чтобы создать тестовую таблицу, просто измените заголовки строк и столбцов: Тест-кейс 1 Тест-кейс 2 Тест-кейс 3 Тест-кейс 4 Входные значения Условие-1 Да Да Нет Нет Условие-2 Да Нет Да Нет Ожидаемые результаты Действие-1 Выполнить X Выполнить Y Выполнить X Выполнить Z Действие-2 Выполнить А Выполнить В Выполнить В Выполнить В Таблица 5-7: Таблица принятия решений преобразуется в таблицу тест-кейсов. Примеры Тестирование таблиц решений может использоваться всякий раз, когда система должна реализовывать сложные бизнес-правила. Рассмотрим следующие два примера: Пример 1 Ссылаясь на веб-страницу заказов веб-сайта "Браун и Дональдсон", описанного в Приложении А, рассмотрим правила, связанные с заказом покупки. 38 Правило 1 Правило 2 Правило 3 Правило 4 Правило 5 Правило 6 Правило 7 Правило 8 Условия Верный идентификатор ? Нет Нет Нет Нет Да Да Да Да Верное количество? Нет Нет Да Да Нет Нет Да Да Достаточно средств? Нет Да Нет Да Нет Да Нет Да Действия Можно купить? Нет Нет Нет Нет Нет Нет Нет Да Таблица 5-8: Таблица решений для заказа на покупку на сайте "Браун и Дональдсон" Конечно, результат очевиден. Заказ на покупку можно разместить только тогда, когда доступны выбранный идентификатор, количество и на счету достаточно денежных средств. Данный пример был выбран для иллюстрации другой концепции. Исследуйте первые четыре столбца. Если идентификатор не допустимый, то остальные условия не важны. Часто таблицы, подобные этой, схлопываются, правила объединяются, а условия, которые не влияют на исход, помечаются меткой "НВ" как "не важные". Правило 1 теперь указывает, что если идентификатор не является допустимым, то нужно игнорировать другие условия и не выполнять заказ на покупку: Правило 1 Правило 2 Правило 3 Правило 4 Правило 5 Условия Верный идентификатор? Нет Да Да Да Да Верное количество? НВ Нет Нет Да Да Достаточно средств? НВ Нет Да Нет Да Действия Можно купить? Нет Нет Нет Нет Да Таблица 5-9: Схлопнутая таблица решений, исключающая "не важные" условия. Отметим также, что правило 2 и правило 3 могут быть объединены, потому что наличие достаточных денежных средств не влияет на действие. Правило 1 Правило 2 Правило 3 Правило 4 39 Условия Верный идентификатор? Нет Да Да Да Верное количество? НВ Нет Да Да Достаточно средств? НВ НВ Нет Да Действия Можно купить? Нет Нет Нет Да Таблица 5-10: Еще более схлопнутая таблица решений, исключающая "не важные" условия. Несмотря на то, что это отличная идея с точки зрения разработки, потому что можно будет написать меньше кода, это опасно с точки зрения тестирования. Всегда есть возможность, что таблица схлопнулась неправильно или неверно был написан код. В качестве основы для проектирования тест-кейсов всегда следует использовать несхлопнутую таблицу. Пример 2 Следующее изображение взято из Регистрационной системы Государственного университета. Она используется для добавления в систему новых студентов, для изменения информации о студенте и для 40 удаления студентов из системы. Рисунок 5-1: Изображение системы. Для добавления нового студента введите имя, адрес и телефонную информацию в верхней части экрана и нажмите Enter. Студент будет добавлен в базу данных и система вернет новый СтудентID. Чтобы изменить или удалить студента, введите СтудентID, выберите радио-кнопку "Удалить" или "Изменить" и нажмите Enter. Таблица решений отражает эти правила следующим образом: Пра вил о 1 Пра вил о 2 Пра вил о 3 Пра вил о 4 Пра вил о 5 Пра вил о 6 Пра вил о 7 Пра вил о 8 Пра вил о 9 Пра вил о 10 Пра вил о 11 Пра вил о 12 Пра вил о 13 Пра вил о 14 Пра вил о 15 Пра вил о 16 Усло вия Данн ые Нет Нет Нет Нет Нет Нет Нет Нет Да Да Да Да Да Да Да Да 41 |