фабпждфуквп. Савин Тестирование dot-com. Пособие по жестокому обращениюсбагам и в интернетстартапах com роман Савин
Скачать 5.26 Mb.
|
Что такое система трэкинга багов Важная оговорка: нет двух интернет-компаний, у которых про- цесс трэкинга багов и все нюансы системы трэкинга багов были бы идентичны. Каждый, как известно, извращается как хочет. Моя цель — развить ваше понимание предмета так, чтобы 205 К Жизнь замечательных багов 207 вы со спокойной улыбкой мастера смогли адаптировать полу- ченные знания к любым процессам и системам, которые встре- тятся вам на пути. Забудем о тестировании ПО. Допустим, мы совершаем тест-драйв на автомобиле, который со- бираемся купить. Проверяем ускорение, вхождение в поворот, удобство панели управления и сотню других важных вещей. По- сле этого садимся за стол и записываем вещи, которые обманули ожидания (т.е. баги), на пронумерованные страницы новой тетради в клеточку. Один баг на одну страницу. Например на странице под номером 1 пишем: "Неудобно пользоваться навигаци- онной системой"; на странице под номером 2 пишем: "Задержка в ускорении после на- жатия на педаль акселератора"; на странице под номером 3 пишем: "Слишком маленький багажник". Наша ни в чем не повинная тетрадь на самом деле является не только выброшенными на ветер деньгами, но и простейшей вер- сией того, что называется системой трэкинга багов (СТБ). Вспомним о тестировании. Опять же на примитивном уровне СТБ может представлять собой простой текстовый файл с записями о багах, который лежит на интранете и доступен участникам цикла разработки ПО. Итак, концептуально СТБ — это инфраструктура, позволяющая • создавать, • хранить, • просматривать и • модифицировать информацию о багах. Существует множество профессиональных СТБ — от бесплатной Багзиллы (Bugzilla) до многотысячедолларового тест-директора (Test Director by Segue), и естественно, что интернет-компании исполь- зуют для трэкинга багов не тетрадки или текстовые файлы, а именно специальное ПО, непосредственно созданное для трэкинга багов. О таком ПО и процессе трэкинга багов мы и поговорим сегодня. Каждый баг, занесенный в СТБ, представляет собой вирту- альную учетную карточку 208 Тестирование Дот Ком. Часть 3 Каждая такая карточка существует не сама по себе, а как часть процесса трэкинга багов (далее — Процесс). С каждым багом, занесенным в СТБ, начинается новый Процесс. Вопрос: Как определить, на какой стадии Процесса находится каждая конкретная карточка? Ответ: Ничего нет проще — нужно просто посмотреть на ее ат- рибуты. Пример Одним из атрибутов является статус бага. Статус может принимать одно из трех значений: • Open (открыт), • Closed (закрыт) либо • Re-open (повторно открыт). Пример Процесса После того как баг заносится в СТБ, его статус автоматически стано- вится "Open"; после того как баг зафиксирован и регрессивное тести- рование подтвердило успех починки, мы меняем статус на "Closed"; если же тот же баг, после того как мы его закрыли, был найден снова, то мы меняем "Closed" на "Re-Open". Важно понять, что Процесс как формальный свод правил перви- чен и такой зверь, как СТБ, приобретается именно как инстру- мент для материализации Процесса. Другими словами, после инсталляции ответственный товарищ настраивает СТБ в соответствии с процессом, выбранным компа- нией, а не наоборот. В примере со статусом мы взглянули на процесс с высоты птичь- его полета. Опустимся же на землю и увидим все подробности. Допустим, мы нашли баг. Сам факт нахождения бага, даже если это критический дефект, не имеет никакого значения и веса, пока вы не сообщили об этом баге. Два вопроса: Кому сообщить? Как сообщить? Кому? Программисту, если это баг кода, либо продюсеру, если это баг спека. Как? Здесь есть много путей: можно позвонить, послать е-мейл, сказать пару ласковых при личной встрече и т.д. Жизнь замечательных багов 209 Стандартный путь, принятый в софтверных компаниях, — это занести баг в СТБ. Таким образом, одной из основных функций СТБ является обес- печение коммуникации между участниками Процесса. Как фактически происходит занесение бага в СТБ? Например, так: вы • открываете веб-браузер; • печатаете в нем URL вашей СТБ в локальной сети и нажимаете Enter; • после того как загрузилась страница СТБ, вводите имя пользователя и пароль; • нажимаете на кнопку "New bug" (Новый баг); • на веб-форме "Новый баг" заполняете поля и выбираете значения; • нажимаете на кнопку "Submit new bug" (Занести новый баг). Все очень просто. Кстати, отныне баг в зависимости от контекста будет иметь одно из следующих значений или оба значения: • баг как отклонение фактического результата от ожидаемого ре- зультата и/или • баг как созданная в СТБ виртуальная учетная карточка, являю- щаяся, по чьему-либо субъективному мнению, презентацией не- кой проблемы. В чем разница, спросите вы. Отвечаю: проблема, занесенная в СТБ, может и не являться багом, например господин, опрометчиво занес- ший баг в СТБ, неправильно понял спек. Это была ненавязчивая вводная часть, и настоящее веселье только начинается. Атрибуты бага BUG NUMBER (НОМЕР БАГА) Каждому новому багу СТБ автоматически присваивает уникаль- ный, следующий по порядку номер. Например, подходите вы к программисту и спрашиваете: "Слушай, браза, как там 1232 по- живает?" 210 Тестирование Дот Ком. Часть 3 SUMMARY (КРАТКОЕ ОПИСАНИЕ) Краткое описание — это максимально информативное и сжатое описание проблемы. Как правило, текстовое поле для краткого описания не превышает 100 символов и в эти 100 символов (включая пробелы) нужно уместить информацию, достаточную для понимания сути проблемы. Кстати, то, как тестировщик формулирует краткое описание, наглядно говорит о его профессионализме. Пример самого плохого Summary "Ничего не работает". За такое Summary раньше били по голове канде- лябром, и хотя сейчас времена другие, но все равно, пожалуйста, ни- когда, никогда не пишите в кратком описании ничего подобного. Почему поле для краткого описания такое короткое? Потому что баги, занесенные в СТБ, выглядят примерно так, списком, на зна- чения которого можно кликнуть мышкой и получить полную ин- формацию по конкретным багам: Bug Summary 1 Неверное значение колонки result таблицы ее transaction для VISA 2 Неверное значение баланса Switch после покупки 3 Ошибка при логине: "SQL Error" 4 Корзина не сохраняет выбранные книги Если есть номер спека, то можно давать краткое описание в та- ком формате: <номер спека> : <само краткое описание>, например: 7422: неверное значение баланса Switch после покупки. Если баг начинается с номера спека, то баги • можно сортировать по колонке Summary, таким образом баги, принадлежащие к одному спеку, будут кучковаться вместе, и • можно искать по номеру спека, используя функциональ- ность СТБ "Поиск". Очень, кстати, удобно и вам, и про- граммистам, и продюсерам. Жизнь замечательных багов 211 Итак, в кратком описании сжато и информативно излагаем суть проблемы. DESCRIPTION AND STEPS TO REPRODUCE (ОПИСАНИЕ И ШАГИ ДЛЯ ВОСПРОИЗВЕДЕНИЯ ПРОБЛЕМЫ) Это многострочное текстовое поле. Я пользуюсь следующим форматом для заполнения этого атрибута: Description: Полезная информация о баге: описание, комментарии, нюансы и т.д. Steps to reproduce: Конкретные шаги для воспроизведения проблемы. Bug: Фактический результат. Expected: Ожидаемый результат. Пример для бага 1 Description: При оплате картой VISA в колонке result таблицы cc_transaction в базе данных записывается неверное значение. Используйте следующую информацию для воспроизведения проблемы: Эккаунт: testuser1/pa$$w0rd Наименование товара: book117 Данные карты: Номер: 9999-5148-2222-1277 Окончание действия: 12/07 CW2: 778 SQL1: select result from cc_transaction where id = <номер заказа>; Steps to reproduce: 1. Открой www.main.testshop.rs 2. Введи имя пользователя. 3. Введи пароль. 4. Нажми кнопку "Войти". 5. Введи наименование товара в поле поиска. 6. Нажми кнопку "Найти". 7. Кликни линк "Добавить в корзину". 8. Кликни линк "Корзина". 9. Кликни линк "Оплатить". 10. Выбери вид карты. 11. Введи номер карты. 12. Введи срок окончания действия. 13. Введи CW2. 14. Нажми кнопку "Завершить заказ". 15. Запиши номер заказа. 16. Запроси базу данных с SQL1. Bug: 20. Expected: 10. 212 Тестирование Дот Ком. Часть 3 Важный момент: Steps to reproduce могут использоваться для воспроизведения проблемы и программистами, и тестировщиками, и продюсе- рами. В тест-кейсах можно допустить употребление принятых в отделе качества сокращений и акронимов, а также ссылок к внешним документам: коллеги-тестировщики поймут и простят, но многие очевидные для тестировщика вещи совершенно не- очевидны, например, для продюсера. Поэтому, пожалуйста, пи- шите четкие и подробные шаги, чтобы ваши коллеги из других отделов без проблем воспроизводили баги и нахваливали ваши описания. Вот небольшой список наиболее часто встречающихся элемен- тов веб-страницы, который позволит вам более четко описывать и шаги для воспроизведения багов, и шаги тест-кейсов. Я текст. Вещь незаменимая Текст (text) Не знаю, какое описание дать здесь. Текст есть текст. Кстати: 1. Текст может быть неверного содержания* (противоречащий спеку): например, неверное сообщение об ошибке. 2. Нужного текста может не быть вовсе*. 3. Может быть неправильным шрифт (font), цвет (color), размер (size) текста. Естественно, что проблемы неверного содержания элемента или полного его отсутствия могут быть не только у текста, но и у всех остальных элементов. Я линк. Просто линк Линк (link) Также известен как ссылка или гиперссылка. Если нажать на линк (или, по-простому, "кликнуть линк") (click link), то мы попадем • либо на другую веб-страницу, • либо на определенное место страницы, на которой находится линк (например, если на одной странице есть список названий глав книги (Содержание) и сами главы, то название каждой главы в Содержании может быть слинковано с началом текста главы). Жизнь замечательных багов 213 Кстати: 1. Линк может быть сломан (broken link), т.е. нажимаем на линк и никуда не идем либо получаем сообщение, что страница не найдена. 2. Линк может вести не туда , куда нужно (misleading link), напри- мер, вы кликаете на линк " Контактная информация", а попадаете на страницу 'Корзина". Для проверки сломанных линков есть прекрасный бесплатный тул, называемый Хепи 's Link Sleuth (можете скачать его из Интернета). Картинка (image) Ну, куда же мы без них. Картинки — это графические файлы (как правило, GIF либо JPG), на которые ссылается HTML-код, веб-стра- ницы и которые через Интернет летят на жесткий диск наших ком- пьютеров. Если вы в окне браузера видите картинку, то знайте, что она сохранена на жестком диске... Кстати: Сломанная картинка (broken image): ситуация, когда, как правило, путь к графическому файлу в HTML-коде указан неверно или путь ука- зан верно, но сам файл поврежден (corrupted/damaged) и на веб-стра- нице мы видим лишь рамку, в которой должна была быть картинка: Слинкованная картинка (linked image) По сути это линк, который представлен не текстом, а картинкой. Соответственно у слинкованной картинки могут быть болезни как линков, так и картинок. 214 Тестирование Дот Ком. Часть 3 Я имя текстового поля: А я текст внутри текстового поля Однострочное текстовое поле (textbox) Однострочное текстовое поле (или просто "текст-бокс") — это один из элементов веб-формы (web form), которая может быть на веб-стра- нице. Для примера: веб-форма всегда является частью веб-страницы с регистрацией, когда вы вводите имя, пароль, е-мейл (и т.д.) и нажимаете кнопку "Зарегистрироваться". Все остальные элементы, перечисленные далее: • многострочное текстовое поле; • поле для пароля; • радиокнопка; • чекбокс; • кнопка, также являются элементами веб-формы. Кстати, текстовое поле используется для введения множества видов текстовой информации: от имени пользователя до ввода текста, увиденного на кепча (от англ. captcha, читается как кэпча). Веб-индустрия использует кепча (которое является динамически сгенерированной картинкой) для того, чтобы превентировать автоматические программы от использования веб-сайта. Идея в том, что человек может распознать символы, изображенные на кепча, а компьютер — нет. Вот пример кепча — страница регист- рации на Yahoo!. На ней изображено (буквы латинские): рЗт4ак: Verify Your Registration *Enter the code shown: This helps Yahoo! prevent automated registration. В отношении проблем: Размер текст-бокса (MAXLENGTH), т.е. максимальное количество символов, которое можно ввести в текстовое поле, может быть больше или меньше, чем указано в спецификации. Проверка количества символов, которое может принять в себя тек- стовое поле, проводится в рамках тестирования интерфейса пользо- вателя (UlTesting). More info Жизнь замечательных багов 215 Я имя многострочного текстового поля: А я текст внутри многострочного текстового поля. Такие вот дела. Многострочное текстовое поле (text entry area) используется для ввода информации, которая не умещается в одно- строчном текстовом поле. Например, для создания постинга на интернет-форумах под предмет сообщения (subject) отдается текст- бокс, а под само сообщение — многострочное текстовое поле. Кстати, прекрасным, истинно сероящичным тестом является проверка того, умещается ли наш ввод в соответствующую колонку базы данных. Под вводом в данном случае подразумеваются данные, введенные посредством текст-бокса или многострочного текстового поля. Пример При регистрации наш новый пользователь заполняет соответст- вующую веб-форму и нажимает на кнопку "Зарегистрироваться". Некий файл (например, написанный на языке Python и живущий на сервере с приложением) трансформирует эту форму в язык, понятный базе данных (язык называется SQL — Structured Query Language, произносится как "эс-кью-эл"), и создает новую строку (record) в таблице, называемой, например, USER ADDRESS (адрес пользователя). Допустим, что при создании таблицы USERADDRESS программист ошибочно указал максимальный размер колонки ADDRESS1 в 7 символов (VARCHAR (7)) вместо 37, положенных по спеку. Это при- ведет к тому, что при создании новой строки в USERADDRESS дан- ные, включаемые в колонку ADDRESS1, будут ограничены 7 симво- лами, а 8-й и прочие символы будут отсечены (truncated) (кстати, пробел — это тоже символ): USER_ADDRESS RECORD ID ADDRESS 1 ADDRESS2 CITY STAT E Country ZIP CODE 1 12 49th Apt. 2 San Francisco CA USA 94118 2 121 Ano Moscow Russia 117602 3 221b Ba London UK NW1 4 82 Boul Paris France 75018 Что делаем? Правильно, заносим баг, и, после того как баг зафик- сирован и проверен нами, адреса, хвосты которых были отсечены, уже выглядят так: 216 Тестирование Дот Ком. Часть 3 USER_ADDRESS RECORDJ D ADDRESS 1 ADDRESS2 CITY STAT E Country ZIP CODE 1 12 49th Avenue Apt. 2 San Francisco CA USA 94118 2 121 Anokhin Avenue Moscow Russia 117602 3 221b Baker Street London UK NW1 4 82 Boulevard de Clichy Paris France 75018 Кстати, хорошей идеей для ввода при тестировании является описа- тельный ввод, например, в текст-бокс Адрес 1 (данные которого идут в ADDRESS1) нужно было бы ввести не милую сердцу 82 Boulevard de Clichy, а строку "а запятая является 38-м символом, 11111111111" и затем проверить базу данных. Если ADDRESS 1 содержит строку "а запятая является 38-м символом", — ни символом больше, ни символом меньше, то ADDRESS 1 вмещает ровно 37 символов и код ведет себя согласно спеку. В любом ином случае (36 или меньше символов либо 38 или больше символов) у нас есть баг. Я имя поля для пароля: ******* Поле пароля (passwordfield) Это однострочное поле для ввода текста с тем нюансом, что каждый символ, введенный в это поле, тут же автоматически преобразуется в * (звездочку, или, по-англ. — asterisk) либо в жирную метку (bullet). Преобразование в звездочки (или буллеты) сделано для того, чтобы какой-либо добрый, сердечный человек не подсмотрел ваш пароль и не очистил ваш, например, банковский эккаунт. Кстати, важной вещью в отношении пароля я&чяется профессиональная этика, согласно которой нужно |