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



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

 

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

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


196


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


Баг1:

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

Баг 2:

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

Баг 3:

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

Что делаем?

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

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

 

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

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

 

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

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


197


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

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

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

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

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

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

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

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

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

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

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


198


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

а. 200,00;

б. 499,99;

в. 315,11;

г. 199,99;

д. 500,00.


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


199


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

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

класса 2:

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

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

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

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

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

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

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

 

 

Тест-кейс

Код с выделенной жирным шрифтомчастью, которая проверяется данным тестом
Возможная проблема кода, разоблачаемая тестом, и пример проблемы

 

Ожидаемый результат

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

200

ЕСЛИ сумма > 200,00И сумма < 499,99, ТО скидка = сумма/100 х 2

 

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

 

2% от 200

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

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


201


 

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

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Класс Значение Ожидаемая ставка скидки,%

Класс 1

0

0

100,00
199,99

Класс 2

200,00

2

315,11
499,99

Класс 3

500,00

3

659,23
999,99

Класс 4

1000,00

4

3265,26
4999,99

Класс 5

5000,00

5

5075,00

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

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


202


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


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

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

Пример

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

а. 6

б. 6

в. 6

г. 5
Д. 7

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

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

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

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

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

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

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

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

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

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


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


203


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

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

Краткое подведение итогов

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

2. Код — это убежище багов.

3. Суть тестирования заключается в поиске багов.

4. В отношении методов генерирования тестов:

 

• при использовании метода Черновик-чистовик: Черновик — это полет мысли и вдохновения, "мозговой штурм", не огра­ниченный суетными приличиями бренного света. Чистовик — это подчищенный, причесанный и классифицированный Чер­новик;

• матричная раскладка может быть лишь простой классифика­цией элементов на табл. 1, а может и бесконечно углубляться в дебри комбинаций и комбинаций. Главное помнить, что матричная раскладка создается для тестирования, а не тес­тирование было придумано для матричной раскладки;

• блок-схемы — это дочери добродетели под именем "Нагляд­ность".

5. В отношении методов отбора тестов:

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

6. Методы генерирования тестов и методы отбора тестов —
это ящик с инструментом.
Под каждую задачу используется
свой (свои) инструмент (-ты).

Вопросы для самопроверки

1. Какой настрой должен быть у тестировщика?

2. Что такое код?

3. Что такое тестирование?

4. Какие вы знаете методы генерирования тестов?


204


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


5. Какие вы знаете методы отбора тестов?

6. В чем суть метода Черновик-чистовик?

7. Есть ли ограничение на количество таблиц в матричной рас­кладке?

8. Каково основное преимущество блок-схем?

9. Кто может помочь тестировщику в оценке риска?

 

10. Какая практическая польза от приоритезации при оценке риска?

11. Приведите 5 правил тестирования пограничных значений. Ка­кие из них позитивные, а какие — негативные?

12. Что нам дает комбинирование методов?


ИСПОЛНЕНИЕ ТЕСТИРОВАНИЯ

ЖИЗНЬ ЗАМЕЧАТЕЛЬНЫХ БАГОВ

•ЧТО ТАКОЕ СИСТЕМА ТРЭКИНГА БАГОВ

• АТРИБУТЫ БАГА

• ПРОЦЕССТРЭКИНГА БАГОВ

К

ак мы знаем, цель исполнения тестирования — поиск багов. Но на самом деле найти баг — это только часть работы (хотя исамая сложная). После того как баг обнаружен,

• нужно занести его в систему трэкинга багов и

• после того как он зафиксирован:

а) проверить, на самом ли деле он был зафиксирован и

б) не повредила ли починка этого бага другие части на­
шего ПО.

Кстати, как мы помним, а и б называются регрессивным тес­тированием.

Процесс, который начинается с занесения бага в систему трэкин­га багов (Bug Tracking System), называется процессом трэкинга багов (Bug Tracking Procedure), и для удобства понимания всей стадии исполнения тестирования мы начнем именно с него.


Дата добавления: 2018-05-02; просмотров: 713; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!