Главная страница

Роман Савин - тест dot com. Пособие по жестокому обращениюсбагам и в интернетстартапах com роман Савин


Скачать 5.26 Mb.
НазваниеПособие по жестокому обращениюсбагам и в интернетстартапах com роман Савин
АнкорРоман Савин - тест dot com.pdf
Дата26.04.2017
Размер5.26 Mb.
Формат файлаpdf
Имя файлаРоман Савин - тест dot com.pdf
ТипПособие
#5534
страница16 из 24
1   ...   12   13   14   15   16   17   18   19   ...   24
А что, если я неправильно понял эту информацию или она,
подобно постмодернизму, устарела?
Далее.
Вопрос: Что значит, что "внутренний рынок американских зап- частей очень велик"? Насколько он велик? Ответ: ...
Карточным домиком были наши рассуждения. А ведь все ка-
залось таким логичным...
Давайте лучше пойдем к продюсеру, покажем ему нашу блок- схему и попросим совета.
Пришли, показали, попросили.
Продюсер делает пару звонков, и мы идем к бизнес-аналитику.
Тот видит нашу блок-схему, поднимает данные по транзакциям за последние два года, и вот что мы имеем.

194
Тестирование Дот Ком. Часть 3
а. Самое большое количество сделок было между японскими пользователями (Японец —» Японец). Продюсер добавляет, что продвижение на японском рынке — это главный при оритет компании, как было сказано на очередном съезде, в смысле было сказано на последнем собрании.
б. Вторым по приоритетности идет Американец —» Японец.
Вот данные по сделкам. Продюсер добавляет, что недавно были заключены контракты с крупными американскими автозаводами о том, что те будут использовать наш веб-сайт для продаж за рубеж.
в. Третьим будет Американец —> Американец, так как вот цифры. Продюсер добавляет, что конкурирующие сайты и другие каналы поставок завоевали местный рынок.
г. Четвертым будет Японец —» Американец, так как вот циф ры. Продюсер добавляет, что японские компании распре деляют запасные части через своих авторизованных аме риканских дилеров, а американские дилеры японских ино марок используют наш сайт неохотно.
Затем мы попросили дать процент для каждого флоу относитель- но общей суммы сделок по всем четырем флоу (это было немного больше, чем было нужно, так как я уже знал приоритетность ка- ждого флоу, но, как говорят, "кашу маслом не испортишь" и "куй железо, пока горячо"):
Блок-схема по спеку #1123
Теперь у нас есть данные, соответствующие реальности и осно- ванные
• на информации из объективных источников и
• на мнении компетентных лиц.
У нас есть не просто приоритеты, а приоритеты, подкрепленные цифрами (проценты) и пониманием бизнеса (комментарии про- дюсера).

Нигилистический настрой и практическая методология
195
И еще мы снова видим, что эти превосходные, проверенные дан- ные снова абсолютно противоречат нашему, казалось бы, незыб- лемому, но на поверку очень даже "зыблемому" "Абсолютно очевидно".
Что делать, если вдруг есть две функциональности с одинако-
вым приоритетом? С чего начать? Начните с той, которая бо-
лее сложная и трудоемкая.
Последний вопрос в отношении оценки риска — это использова- ние полученной информации. Флоу с более высоким приорите- том (который мы отражаем в поле тест-кейса "Приоритет") тес- тируется
• в первую очередь и
• более тщательно.
Кроме того, в дальнейшем у вас всегда будет аргумент, почему вы тестировали именно это и именно в таком объеме. И этим аргументом будут данные по оценке риска, которые вы использо- вали как профессионал-тестировщик, ориентированный на сча- стье пользователя.
2. ЭКВИВАЛЕНТНЫЕ КЛАССЫ (equivalent classes)
Это суперполезная вещь, которой мы немедленно дадим опре- деление:
эквивалентный класс — это одно или больше значений ввода,
к которым ПО применяет одинаковую логику.
Предположим, что наш книготорговый веб-сайт запускает новую кампанию "Больше тратишь — больше скидка". Вот табличка из
спека.
Потраченная сумма,
руб-
Скидка,
%
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), и для удобства понимания всей стадии исполнения тестирования мы начнем именно с него.
1   ...   12   13   14   15   16   17   18   19   ...   24


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