Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

testirovanie_dot-com

.pdf
Скачиваний:
85
Добавлен:
29.03.2015
Размер:
5.51 Mб
Скачать

ЧАСТЬ2

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

КЛАССИФИКАЦИЯ ВИДОВ

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

цикл

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

ИЗУЧЕНИЕ И АНАЛИЗ ПРЕДМЕТА ТЕСТИРОВАНИЯ

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

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

Пока мы еще не остыли от цикла разработки, предлагаю немедленно рассмотреть цикл тестирования.

Поехали.

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

Если посмотреть на процесс более абстрактно, можно увидеть три вещи, которые явились моделью пылесосного тестирования:

1.Прочитали, например, пункт 2п инструкции, чтобы понять, как работает режим влажной уборки.

2.Мгновеннов умесоставили план проверки влажной уборки:

а. Налить горячую воду в верхний бачок пылесоса. б. Нажать на кнопку Power.

в. Нажать на кнопку Pressure. г. И т.д. и т.п.

3.Осуществили проверку согласно плану.

131

132

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

 

Перейдем от тестирования пылесосов к тестированию ПО.

Цикл тестирования ПО состоит из трех этапов:

1.Изучение и анализ предмета тестирования.

2.Планирование тестирования.

3.Исполнение тестирования.

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

Свяжем цикл тестирования с циклом разработки:

1. Изучение и анализ предмета тестирования

начинаются перед утверждением спека (в завершение стадии "Разработка дизайна продукта и создание документации") и продолжаются на стадии "Кодирование".

2.Планирование тестирования происходит на стадии "Кодирование".

3.Исполнение тестирования

происходит на стадии "Исполнение тестирования и ремонт багов".

Важный момент:

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

лагаю, чтобы мы, изучая цикл тестирования, абстрагировались от цикла разработки.

Что нам это даст? Гибкость, так как,

зная цикл тестирования как независимый процесс, мы сможем легко связать его с любым циклом разработки ПО в любой ин- тернет-компании.

Цикл тестирования ПО

133

Итак, независимый процесс, называемый циклом тестирования ПО, состоит из трех стадий:

1.Изучение и анализ предмета тестирования.

2.Планирование тестирования.

3.Исполнение тестирования.

1.Изучениеианализпредметатестирования

Вопрос: что можно протестировать в интернет-проекте?

Легитимные варианты ответа:

интерфейс пользователя (например, что определенная кнопка называется "Купить", а не "Кипуть");

скорость работы веб-сайта (например, то, что при одно-

временной работе с сайтом 200 пользователей скорость загрузки веб-страницы составляет не более 5 секунд);

документацию (например, что спек не содержит противоречий и неточностей).

Все это правильно, но есть нечто более важное.

Вопрос: для чего пользователи приходят на наш веб-сайт? Ответ: для удовлетворения своих потребностей — покупка книг, чтение анекдотов, проверка баланса кредитной карты и т.д. и т.п.

Вопрос: как можно удовлетворить потребности пользователя?

Ответ: нужно

придумать (продюсер),

написать (программист),

протестировать (тестировщик) и

передать пользователям (релиз-инженер)

средства, которые эти потребности удовлетворят. Этими средст- вамиявляютсяФУНКЦИОНАЛЬНОСТИинтернет-проекта.

Вот формальное определение:

функциональность (functionality, feature) — это средство для решения некой задачи.

Примеры из реальнойжизни

Функциональность компьютерных колонок "Volume" решает задачу "Как изменить громкость звука".

Функциональность "Казино" решает задачу "Как незаметно для себя потратитьвсеотпускныеденьги".

Функциональность"Принтер"решаетзадачу"Какраспечататьдокумент".

134

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

 

Примеры из виртуальнойжизни

Функциональность "Корзина"решаетзадачу "Как хранить информацию о товаре,выбранном пользователем".

Функциональность "Добавление товарав корзину"решаетзадачу "Как добавитьтоварвкорзину".

Функциональность "Удаление товара из корзины" решаетзадачу "Как удалитьтоваризкорзины".

Проверка работы функциональностей называется функциональ-

ным тестированием (functional testing).

Стратегический момент: так как функциональное тестирование это ось, вокруг которой вертится деятельность большинства тестировщиков, то, следовательно, вокруг нее же будет "вертеться " и большинство наших последующих бесед.

Важность функционального тестирования состоит в том, что

функциональности — это не что иное, как продукт, предоставляемый пользователям интернет-компанией, и если про-

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

Основными источниками знания о функциональностях служат:

документация...

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

хомо сапиенс, т.е.

информация постигается через межличностное общение. Так, в случае возникновения сомнений никогда не мешает подойти к продюсеру, хлопнуть его по плечу и попросить: "Старина, будь добр, объясни мне по-простому пункт 146 вот этого спека". Здоровая дружеская атмосфера в коллек-

тиве — это отличное средство для предотвращения оши-

бок в толковании(идеальной питательной среды длябагов);

сам веб-сайт,

который мы изучаем посредством эксплоринга. Эксплоринг (exploring (англ.) — "исследование", "разведка") —

это изучение того, как работает веб-сайт с точки зрения пользователя.

Цикл тестирования ПО

135

 

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

В интернет-компаниях эксплоринг, как правило, применяется в двух случаях:

когда написан код и отсутствует документация. Подоб-

ная ситуация часто поджидает первого тестировщика, приходящего в работающую интернет-компанию;

для самообучения. Например, в крупных интернет-компа- ниях вновь нанятые тестировщики в течение нескольких недель проходят тренинг, часть которого посвящена эксплорингу.

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

Кстати, хорошая идея для тестировщика, помогающая лучше понять функциональности своего проекта, — это стать обычным пользователем своего и аналогичных веб-сайтов. Выражение "Eat your own dog food" ("Ешь еду своей собаки") для тестировщика означает "Если ты тестируешь веб-сайт, продающий книги, то ты должен сам покупать книги по Интернету".

Идем дальше.

Конечной целью этапа Изучение и анализ предмета тестирова-

ния является получение ответов на два вопроса:

а. Какие функциональности предстоит протестировать? б. Как эти функциональности работают?

После того как ответы получены, мы переходим к следующему этапу цикла.

2. Планирование тестирования

Эта стадия требует от тестировщика наибольшего творчества и профессионализма, так как именно на ней решается множество головоломок, отвечающих на один простой вопрос: "Как будем тестировать?", причем качество продукта (а значит, и счастье пользователей) напрямую зависит от, не побоюсь сказать, мудрости

найденных решений.

136

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

 

Мудрость найденных решений проявляется в двух вещах:

а) кратких, простых и изящных путях для проверки функциональностей;

б) компромиссе между

объемом тестирования, который возможен в теории;

объемом тестирования, который возможен на практике.

Ответы на "один простой вопрос" предстают перед миром в виде тест-документации (test documentation),

ядро которой составляют наши любимые тест-кейсы. Во многих случаях создание тест-документации сопровождается написанием тестировщиком вспомогательных тулов (tool — компьютерная программа), которые облегчают исполнение тестирования.

Идем дальше.

3. Исполнение тестирования

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

Исполнение функционального тестирования выглядит следующим образом:

сначала идет проверка новых функциональностей по новым тест-кейсам. Кстати, давайте вспомним, что во многих случаях новые тест-кейсы редактируются, проходя обкатку первым исполнением;

затем проверка старых функциональностей по старым тест-кейсам.

То же самое, но в профессиональной терминологии:

тестирование новых функциональностей (new feature testing) и соответственно

регрессивное тестирование (regression testing).

Мы исполняем тест-кейсы, рассчитывая найти баги. Давайте еще раз вспомним, что

после нахождения бага тестировщик заносит запись о нем в систему трэкинга багов;

после того, как программист починил баг,

тестировшик проверяет:

Цикл тестирования ПО

137

а) действительно ли баг был починен. Проверка осущест вляется путем исполнения шагов, которые ранее приве

ли к багу, или, в профессиональной терминологии, пу тем генерации ввода, который привел к выводу, не со ответствующему ожидаемому результату;

б) не появились ли новые баги как нечаянное следствие изменения кода при починке. Проверка осуществляется

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

Тестирование, исполняемое в пунктах а) и б), также называется регрессивным тестированием (bug regression testing). Соответственно выражение "regress that bug"

(проведи регрессивное тестирование этого бага) означает, что нужно последовательно исполнить пункты а)

и б).

Идем дальше.

Давайте сделаем небольшое обобщение.

Так как этапы 1. Изучение и анализ предмета тестирования и

2. Планирование тестирования переплетены между собой, мы объединим их в контейнер знания, который называется

подготовка к тестированию (test preparation или, по-

простому, test preps).

Итак, большая часть нашего дальнейшего общения будет посвящена двум вещам:

Подготовка к тестированию (testpreparation);

Исполнение тестирования (test execution).

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

Функциональность — это средство для решения некой задачи.

Проверка работы функциональностей называется функциональным тестированием.

Эксплоринг — это изучение того, как работает веб-сайт с точки зрения пользователя.

Ядро тест-документации составляют наши любимые тест-кейсы.

Вспомогательные программы ("тулы") пишутся для облегчения исполнения тест-кейсов.

Мы выделили два основных этапа цикла:

подготовка к тестированию; исполнение тестирования.

138

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

7.Исполнение тестирования идет в два этапа:

тестирование новых функциональностей и

регрессивное тестирование.

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

1.Почему полезно представлять себе цикл тестирования ПО независимым от цикла разработки ПО?

2.Назовите источники информации о функциональностях.

3.Что такое эксплоринг и как он помогает в состоянии документационного вакуума?

4.Назовите два основных элемента стадии подготовка к тестированию.

5.Что такое регрессивное тестирование? Назовите две ситуации, при которых проводится регрессивное тестирование.

6.Почему сначала тестируются новые функциональности?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]