Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Эквивалентный класс — это одно или больше значений ввода, к которым ПО применяет одинаковую логику.

Читайте также:
  1. I блок. 9 класс.
  2. I. Точка зрения классической теории.
  3. II блок. 10 класс.
  4. III блок. 11 класс.
  5. IX блок. 11 класс
  6. VII блок. 9 класс
  7. VIII блок. 10 класс

Предположим, что наш книготорговый веб-сайт запускает новую кампанию "Больше тратишь — больше скидка". Вот табличка из спека.

 

Потраченная сумма, руб- Скидка, %
200 — 500  
500—1000  
1000 — 5000  
5000 и более  

Мы, конечно, сразу увидели 3 бага спека:



Тестирование Дот Ком. Часть 3


Баг1:

Непонятно, по какой ставке рассчитывается скидка, если по­трачены следующие суммы: ровно 500 руб., ровно 1000 руб., ровно 5000 руб., так как каждая из этих сумм находится не в одной, а в двух корзинах со скидками.

Баг 2:

Что означает "Потраченная сумма"? Это количество дензна­ков, выплаченных только за книги, или полная сумма к оплате, включая оплату книг и расходы на доставку?

Баг 3:

Для полноты картины нужно дописать эквивалентный класс от 0 до 199,99, на значения которого никакая скидка не рас­пространяется.

Что делаем?

Правильно: идем к продюсеру. Извещаем о баге программиста. "Размораживаем" спек. Вносим в него изменения.

Вот перед нами уже отредактированная табличка:

 

Стоимость купленных книг, руб. Скидка, %
0—199,99  
200,00 — 499,99  
500,00 — 999,99  
1000,00 — 4999,99  
5000,00 и более  

У нас получилось 5 эквивалентных классов:

 

Класс 1: 0—199,99
Класс 2: 200,00 — 499,99
Класс 3: 500,00 — 999,99
Класс 4: 1000,00 — 4999,99
Класс 5: 5000,00 и более

Нигилистический настрой и практическая методология



Каждое значение внутри каждого класса является эквивалентным всем другим значениям этого класса.

Почему? Потому что ко всем значениям класса должна приме­няться одинаковая логика кода. Например, при стоимости куп­ленных книг и 1215,11 руб., и 1745,45 руб., и 2000 руб. (класс 4) полагается скидка 4%.

Составными частями класса являются:

1. Значение или корзина значений ввода (например, от 500,00 до 999,99) и

2. Логика для вывода, т.е. ожидаемого результата (скидка 3% в случае с классом 3).

Польза раскладывания значений ввода на эквивалентные клас­сы состоит в том, что мы отсеиваем огромное количество значений ввода, использовать которые для тестирования про­сто бессмысленно.

Отсев происходит путем применения знаний о тестировании по­граничных значений.

3. ПОГРАНИЧНЫЕ ЗНАЧЕНИЯ (boundary values)

Все очень просто. Давайте представим себе наши эквивалентные классы из предыдущего примера:

Вертикальная пунктирная линия — это первое возможное значе­ние класса (нижний предел).

Вертикальная сплошная линия — это последнее возможное зна­чение класса (верхний предел).



Тестирование Дот Ком. Часть 3


Пограничные значения — это конкретные предельные зна­чения, образующие водораздел между эквивалентными клас­сами.

Для каждого эквивалентного класса может быть лишь один из трех вариантов:

а. Есть только нижний предел (класс 5).

б. Есть нижний и верхний пределы (класс 2, класс 3, класс 4).

в. Есть только верхний предел (не рассматриваемый в данном
примере класс, который ограничен только сверху гипотети­
ческим отрицательным значением, непосредственно пред­
шествующим классу 1).

Пограничным тестированием (boundary testing) называется применение метода тестирования пограничных значений.

Вот полная версия метода тестирования пограничных значений.

а. Сначала тестируется нижний предел данного класса (если
он имеется).

б. Затем тестируется верхний предел данного класса (если он
имеется).

в. Затем тестируется любое значение внутри данного класса.

г. Затем тестируется верхний предел класса, непосредственно
предшествующего данному классу (если предшествую­
щий класс имеется).

д. Затем тестируется нижний предел класса, непосредствен­
но следующего за данным классом (если следующий класс
имеется).

а, б, в являются позитивными тестами, гиднегативными тестами.

Давайте же возьмем и протестируем эквивалентный класс 2. Суть тестирования заключается в том, чтобы удостовериться, что для покупок от 200,00 до 499,99 руб. (включительно) будет дана скидка 2%. Опустим шаги сценариев и поговорим только о дан­ных для них. Следуем методике тестирования эквивалентного класса, нам нужно лишь пять вариантов данных:

а. 200,00;

б. 499,99;

в. 315,11;

г. 199,99;

д. 500,00.


Нигилистический настрой и практическая методология



Почему нам хватило только 5 сценариев, мы поговорим через минуту.

А сейчас давайте посмотрим, сколько возможных вариантов только для позитивных тестов у нас потенциально есть для

класса 2:

30 000 (по количеству копеек в 299,99 руб. плюс один слу­чай, когда потрачено 200,00 руб.).

Наша методика позволила обойтись лишь 3 тестами (пози­тивные тесты: а, б, в), которыми мы по сути протестировали 30 000 значений. По-моему, выглядит впечатляюще.

Теперь о 5 сценариях, которых было достаточно для позитивного и негативного тестирования класса 2.

Представим себе схематично логику кода для решения вопроса о скидке для класса 2:

ЕСЛИ сумма > 200,00 И сумма < 499,99,

ТО скидка = сумма / 100 х 2.

Теперь рассмотрим, как каждый из наших тест-кейсов точечно бьет по возможным проблемам кода. Прошу особого внимания — ничего сложного нет, но много нюансов.

 

 

 

 

 

Тест-кейс Код с выделенной жирным шрифтомчастью, которая проверяется данным тестом
Возможная проблема кода, разоблачаемая тестом, и пример проблемы
Ожидаемый результат
а. Сначала тестируется нижний предел данного класса (если нижний предел имеется): ЕСЛИ сумма > 200,00И сумма < 499,99, ТО скидка = сумма/100 х 2
Ошибка в знаке равенства и/или сумме нижнего предела. Пример (знакравенства перед 200,00 пропущен): ЕСЛИ сумма > 200,00 И сумма < 499,99, ТО скидка = сумма/100 х 2
2% от 200


Тестирование Дот Ком. Часть 3


 

 

 

 

 

 

 

 

б. Затем тестируется верхний предел данного класса (если верхний предел имеется): 499,99 ЕСЛИ сумма > 200,00 И сумма < 499,99,ТО скидка = сумма/100 х 2
Ошибка в знаке равенства и/или сумме верхнего предела. Пример (499,00 вместо 499,99): ЕСЛИ сумма > 200,00 И cvmmq < 499,00,ТО скидка = сумма/100 х 2
2% от 499,99
в. Затем тестируется любое значение внутри данного класса: 315,11 ЕСЛИ сумма > 200,00И сумма < 499,99,ТО скидка = сумма/100 х 2
Ошибка в знаках больше (>) и меньше (<). Пример (больше вместо меньше и меньше вместо больше): ЕСЛИ сумма < 200,00 И сумма > 499,00: ТО скидка = сумма/100 х 2
2% от 315,11
г. Затем тестируется верхний предел класса, непосредственно предшествующего данному классу (если предшествующий класс имеется): 199,99 ЕСЛИ сумма > 200,00 Исумма < 499,99, ТО скидка = сумма/100 х 2
Тонкий момент. Здесь мы проверяем две вещи: 1. Наличие скачка от верхнего предела предьщущего класса к нижнему пределу нашего класса. Это делается для следующей ситуации. Допустим, программист напечатал 100,00вместо 200,00:ЕСЛИ сумма > 100,00И сумма < 499,99, ТО скидка = сумма/100 х 2. Если сделана такая ошибка, то она не будет обнаружена ни тестом а, ни тестом б, ни тестом е. 2. Логическое "И", так как если бы у нас было "ИЛИ": ЕСЛИ сумма > 200,00 ИЛИсумма < 499,99, ТО скидка = сумма/100 х 2, то к данному классу принадлежало бы любое в принципе возможное значение
Скидка не равна2% от 199,99
д. Затем тестируется нижний предел класса, непосредственно следующего за данным классом (если следующий класс имеется): 500,00 ЕСЛИ сумма > 200,00 И сумма < 499,99,ТО скидка = сумма/100 х 2
1. Наличие скачка от верхнего предела нашего клас­са к нижнему пределу следующего за ним класса. Это делается для следующей ситуации. Допустим, программист напечатал 599,99вместо 499,99:ЕСЛИ сумма > 200 И сумма < 599,99,ТО скидка = сумма/100 х 2

Нигилистический настрой и практическая методология



 

  Если сделана такая ошибка, то она не будет обнаружена ни тестом а, ни тестом б, ни тестом в, ни тестом г. 2. Проверяется логическое "И", так как если бы у нас было "ИЛИ": ЕСЛИ сумма > 200,00 ИЛИсумма < 499,99, ТО скидка = сумма/100 х 2, то к данному классу принадлежало бы любое в принципе возможное значение
  Скидка не равна2% от 500,00

Замечу, что для удобства в понимании мы производили тестиро­вание класса 2 изолированно от его собратьев.

И теперь, поняв и разобравшись, давайте рассмотрим, как нам про­тестировать все эквивалентные классы данного спека:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Класс Значение Ожидаемая ставка скидки,%
Класс 1    
100,00
199,99
Класс 2 200,00  
315,11
499,99
Класс 3 500,00  
659,23
999,99
Класс 4 1000,00  
3265,26
4999,99
Класс 5 5000,00  
5075,00

Итого 14 тест-кейсов для тестирования всех возможных значе­ний. Неплохо. Очень даже неплохо!

На сером фоне 5 значений ввода, которые мы использовалчи для изолированного тестирования нашего любимого кляасса 2. Прошу отметить следующую вещь: теперь, когда мы тестируем класс 2



Тестирование Дот Ком. Часть 3


вместе с окружающими его собратьями, для класса 2 доста­точно 3 тест-кейсов, так как случаи г. (199,99) и д. (500,00) покрываются при тестировании класса 1 и класса 3 соответ­ственно.

Мы рассмотрели самый сложный вариант пограничного тестиро­вания, когда мы проверяли эквивалентные классы, включающие множества значений. Зато теперь, пройдя огонь, воду и медные трубы, нам ничего не стоит разобраться в более простом случае, когда эквивалентный класс содержит только одно значение.

Пример

Возьмем индекс, который должен быть равен 6 цифрам (Индекс_эл 005 из табл. 1, матричной раскладки поля "Индекс"). Применяем метод тестирования пограничных значений:

а. 6

б. 6

в. 6

г. 5
Д. 7

Таким образом, у нас есть:

один позитивный тест 6 и

два негативных теста 5 и 7.

Мы применяем метод

• как обособленно (тестирование скидок),
так и

в сочетании с другими методами генерирования и отбора
тестов (использование пограничных значений на матрич­
ной раскладке поля "Индекс").

Идея о возможности обособленного или интегрированного применения, конечно, относится к каждому из методов гене­рирования и отбора тестов.

Это все о пограничном тестировании.

Важная мысль перед списком изученных нами вещей о подготовке к тестированию:

Не методы должны управлять вашей подготовкой, а вы должны управлять методами так, чтобы с их помощью создать именно те тест-кейсы, которые с высокой вероятностью могли бы


Нигилистический настрой и практическая методология



найти баги. Для этого нужно в совершенстве владеть каж­дым из методов. И только практика может отточить ваши навыки. Практикуйтесь и помните о примере с шахматами, которым мы поставили себе мозги в начале нашей сегодняшней беседы.

Сегодня мы узнали и изучили:


Дата добавления: 2015-12-07; просмотров: 97 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.015 сек.)