Концептуальное рассмотрение процесса трэкинга багов
Задача 1: После того как мы нашли проблему в ПО, заносим новый баг.
Задача 2: Программист получает баг, старается понять, в чем проблема, и если это действительно баг, то
Задача 3: Программист начинает ремонт.
Задача 4: После того как ремонт закончен, программист должен сделать checkin кода в CVS.
Задача 5: Релиз-инженер запускает новый билд, чтобы отремонтированный код пришел из CVS на тест-машину.
Задача 6: Тестировщик проводит регрессивное тестирование, и если починка НЕ удалась, то
Задача 7: Баг возвращается программисту на новый ремонт.
Если же починка удалась,то
Задача 8: Баг закрывается. Goodbye my love, Goodbye.
Идем обратно к развилке после задачи 2. Допустим, программист не считает, что зарапортованная ситуация является багом. Тогда он:
Задача 9: Возвращает баг.
Задача 10: Тестировщик старается понять свою ошибку, и
если ошибка имела место и баг соответственно
места не имел, то
Задача 8: Баг закрывается.
Если же тестировщик считает, что это все-таки баг, то баг отправляется обратно программисту.
Задача 2: Программист снова пытается понять, баг ли это. И т.д.
248
Тестирование Дот Ком. Часть 3
Детальное рассмотрение процесса
Давайте вольем в рассмотренную форму содержимое, состоящее из атрибутов и их значений, как мы хотим это нашей компании www.testshop.rs.
Задача 1:
Атрибут | Комментарий по заполнению либо конкретное(ые) значение(я) атрибута |
Summary | Краткое описание |
Description and Steps to Reproduce | Описание и шаги... |
Attachment | Используем это поле, если нужна дополнительная иллюстрация |
Assigned to | Имя программиста |
Component | Название компонента |
Found on | Где был найден баг |
Version Found | Номер версии |
Build Found | Номер билда |
Severity | Значение серьезности |
Priority | Значение приоритета |
Notify list | По минимуму — имя продюсера |
Type | "Bug" |
Resolution | "Assigned" |
Задача 2:
|
|
Программист признает, что это баг:
Задача 3:
Resolution | "Fix in Progress" |
Задача 4: | |
Resolution | "Fixed" |
Version Fixed | Номер версии |
Build Fixed | Номер билда |
Assigned to | Имя релиз-инженера |
Задача 5: | |
Resolution | "Build in Progress" |
Жизнь замечательных багов
249
и после того, как новый билд появился на тест-машине:
Resolution | "Verify" |
Assigned to | Имя лица из Verifier |
Задача 6:
Баг НЕ починен:
Задача 7:
Resolution | "Verification Failed" |
Assigned to | Имя программиста |
Баг починен: Задача 8:
Resolution | "Fix is Verified" |
Status | "Closed" |
Обратно к задаче 2:
Программист НЕ признает, что это баг:
Задача 9:
Resolution | "Can't Reproduce", либо "Duplicate", либо "Not a bug", либо "3rd party bug", либо "No longer applicable" |
Assigned to | Имя тестировщика |
Задача 10: Баг:
|
|
Resolution | "Assigned" |
Assigned to | Имя программиста |
HE баг:
Status | "Closed" |
Конкретный пример
Тестировщик Антон Никонов при исполнении тест-кейса #NBST0001 обнаружил новый баг. Он открывает СТБ и заносит в нее нового жителя:
250
Тестирование Дот Ком. Часть 3
Атрибут: Summary. Значение:
"Спек. 1211: неверное значение колонки result таблицы
cc_transaction для VISA ".
Атрибут: Description and steps to reproduce.
Значение: "Description:
При оплате картой VISA в колонке result таблицы cc_transaction в базе данных записывается неверное значение. Используйте следующую информацию для воспроизведения проблемы:
Эккаунт: testuser1/pa$$wOrd
Наименование товара: book117
Данные карты:
Номер: 9999-5148-2222-1277
Окончание действия: 12/07
CVV2: 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. Введи CVV2.
14. Нажми кнопку "Завершить заказ".
|
|
15. Запиши номер заказа.
16. Запроси базу данных с SQL1.
Bug: 20. Expected: 10".
Жизнь замечательных багов
251
Атрибут: Assigned to.
Мистер Никонофф идет на страничку в интранете "Кто ответствен за что" и видит, что программистом Оплаты в настоящее время является О. Столяров. Так и запишем. Значение:
"О. Столяров".
Атрибут: Component Значение: "Оплата ".
Атрибут: Found on.
Баг был найден при тестировании на www.main.testshop.rs.
Значение:
"www.main.testshop.rs".
Атрибут: Version Found.
Антон знает, что номер версии и номер билда видны в комментариях HTML-кода на всех страницах нашего веб-сайта. Поэтому он открывает в окне браузера www.main.testshop.rs, делает клик правой кнопкой мышки и выбирает View Page Source (посмотреть код страницы). Запускается текстовый редактор, например Notepad (Блокнот), в котором виден HTML-код страницы, и в комментариях Антон находит номер версии и номер билда, например 7.0-58. Значение: "7.0".
Атрибут: Build Found.
Значение:
"55".
Атрибут: Severity.
Это обычный функциональный баг, четко подходящий под СЗ.
Значение:
"С5 ".
Атрибут: Priority.
Мы должны понять, какие будут последствия в случае если значение колонки result таблицы cc_transaction не равно 10 при оплате карточкой VISA. Мы задаем вопрос программисту, и выясняется, что в этом случае на машине для пользователей транзакция будет считаться недействительной,даже если деньги с карточку будут сняты и соответственно пользователь не получит своего
|
|
252
Тестирование Дот Ком. Часть 3
заказа. Довольно серьезный баг, если учесть, что VISA — это наиболее широко используемая платежная система. Исходя из вышесказанного, мы должны дать багу приоритет П1. Значение:
"Я7 ".
Атрибут: Notify list.
Согласно странице интранета "Кто ответствен за что", оплата курируется продюсером В. Новоселовым. Значение:
"5. Новоселов".
Атрибут: Туре. Значение: "Bug".
Атрибут: Resolution.
Мы знаем имя программиста, который должен заняться багом, и поэтому ставим резолюцию как "Assigned". Значение: "Assigned".
СТБ присвоила багу номер 3221.
После того как баг был занесен, е-мейлы летят к
• А. Никонову (Submitted by — автор бага),
• О. Столярову (Assigned to — держатель бага) и
• В.Новоселову (лицо из Notify list).
Поскольку держателем бага стал Олег Столяров, то за ним и следующее действие, а именно рассмотрение проблемы.
Проблема рассмотрена, и баг найден в коде Python файла create_payment.py:
ifcredit card== "VISA":
update _db(" update cc transaction set result = 20 where external id = " + transaction id).
Этот код, переведенный на язык Пушкина и Булгакова, означает:
Если используется кредитная карта VISA,
сделай значение колонки result таблицы cc_transaction равным 20 в строке, где значение колонки externalid равно значению переменной transactionid.
Жизнь замечательных багов
253
Как видим, это простой в починке баг, который исправляется изменением цифры 2 на цифру 1:
if credit card == "VISA ":
update_db("update cc transaction set result — 10 where external id - " + trans action id).
Олежек входит в СТБ:
Атрибут: Resolution.
Значение:
"Fix in Progress ".
Олежек исправляет баг на своем плэйграунде, делает скоренький юнит-тест и сохраняет баг в бранче CVS для релиза 7.0 и в стволе.
Затем он снова входит в СТБ и передает баг дальше:
Атрибут: Resolution.
Значение: "Fixed".
Атрибут: Version Fixed.
Значение:
"7.0".
Атрибут: Build Fixed.
Значение: "59".
Сегодня вторник, а значит, согласно страничке в интранете "Расписание релиз-инженеров", новый билд может запустить для нас релиз-инженер С. Щетинин, который сегодня находится на дежурстве по всем вопросам, связанным с багами.
Атрибут: Assigned to.
Значение:
"С. Щетинин".
С. Щетинин, только что вернувшийся с обильного обеда, прошедшего в ресторане "Mayflower" в окружении институтских дружков, таких же, как он, тунеядцев и игроков в покер, получает от СТБ е-мейл о том, что он стал новым держателем бага #3221.
С. Щетинин является держателем и множества других багов, ждущих своего регрессивного тестирования. Согласно расписанию билдов в компании www.testshop.rs, у нас есть 3 билда
254
Тестирование Дот Ком. Часть 3
в день: в 12:00, 15:00, 18:00 по московскому времени. Сейчас 14:45, и через 15 минут Станислав должен запустить новый очередной билд (59) для версии 7.0.
Запустив билд-скрипт для версии 7.0, он входит в СТБ и среди прочих меняет и #3221:
Атрибут: Resolution.
Значение:
"Build in Progress ".
После того как билд-тест сайта www.main.testshop.rs завершен и не было никаких ошибок (например, проблем с интеграцией кода одного программиста с кодом другого), сеньор Щетинин снова идет в СТБ:
Атрибут: Resolution.
Значение: "Verify".
Атрибут: Assigned to.
Значение:
"А. Никонов".
Если ошибки поломали билд, то начинается выяснение и устранение. Ошибка может быть допущена как релиз-инженером, так и программистом. В последнем случае срочно посылают е-мейлы программистам с целью выяснить, чем код поломал билд, чтобы те немедленно разобрались, в чем дело. Если проблема сломанного билда (broken build) не решается в течение, скажем, 60 минут, то, согласно правилам нашей компании, С. Щетинин возвращает на www.main.testshop.rs предыдущий билд, т.е. 58.
Тестировщик Антон Никонов получает радостное известие, что баг #3221 был зафиксирован и отремонтированный код ждет его на www.main.testshop.rs. Удостоверившись, что www.main.testshop.rs имеет версию и билд 7.0-59, он исполняет шаги, указанные в "Описании и шагах..." бага, и, удостоверившись, что значение result стало равным 10, закрывает баг:
Атрибут: Resolution.
Значение:
"Fix is Verified".
Атрибут: Status. Значение: "Closed".
Жизнь замечательных багов
255
А затем в качестве второй части регрессивного тестирования исполняет, например, тест-кейс с картой MasterCard. Флоу с MasterCard — это приоритетное флоу функциональности Оплата, и неплохая идея проверить, что ремонт ситуации с VISA не сломал флоу с MasterCard.
Краткое подведение итогов
1. СТБ —это
• с одной стороны, хранилище багов, а
• с другой — средство коммуникации.
2. Баг — это в зависимости от контекста
• расхождение между фактическим и ожидаемым результатами и/или
• запись (виртуальная карточка) в СТБ.
3. Настройки СТБ определяются процессом, а не наоборот.
4. Настройками СТБ и созданием эккаунтов ведает администратор СТБ.
5. Занести баг может любой, у кого есть счет в СТБ и соответствующая привилегия.
6. У бага в СТБ есть атрибуты, значения которых позволяют судить о состоянии и истории бага.
7. Значения некоторых атрибутов присваиваются автоматически (номер бага).
8. Мы никогда не заносим баг с кратким описанием "Ничего не работает".
9. Приложение (attachment) — это суперполезная вещь, так как служит графической (как правило) иллюстрацией бага.
10. У каждого открытого бага всегда есть держатель.
11. На интранете обязательно должна быть страничка "Кто ответственен за что".
12. Серьезность бага —это техническая категория.
13. Приоритет бага — категория, связанная с бизнесом.
14. Нет ни одного изменения бага, которое бы не стало достоянием гласности.
15. Функциональность — это только одно из значений емкого термина фича.
16. Значения резолюции — это этапы жизни бага.
Дата добавления: 2018-05-02; просмотров: 419; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!