ПРИЛОЖЕНИЕ 2 Плакат НЛО (найти, локализовать и оформить ошибку) А это вам уже от меня чек-лист перед заведением бага. В картиночках! Полную версию плаката можно найти у меня в блоге — статья так и называется: «Плакат НЛО (найти, локализовать и оформить ошибку)»1 План действий: 1. Скачать плакат. 2. Отдать в типографию, напечатать на цветном принтере в формате А1. 3. Повесить на стену и сверяться с ним при заведении бага. Он яркий, прикольный да еще и полезный. Три в одном! 1 См. версию покрупнее в самом начале книги. И по ссылке из QR-кода!
338 Часть V. Приложения
Приложение 2. Плакат НЛО (найти, локализовать и оформить ошибку) 339
ОГЛАВЛЕНИЕ От автора.......................................................................................................... 9 Персонажи ................................................................................... 10 ЧАСТЬ I. Вводная ........................................................................13 Глава 1. Что такое баг? ...............................................................................15 1.1. Определение бага .................................................................. 16 1.2. Когда мнение миллионов нытиков — не баг ....................... 28 1.3. Ошибка, дефект и сбой — чем различаются ........................ 29 Официальное определение ....................................................................... 31 То есть баг — это сбой, а не ошибка? ........................................................ 31 1.4. Вопросы для самопроверки .................................................. 32 1.5. Ответы на вопросы для самопроверки................................. 32 Глава 2. Как заводить задачи в баг-трекер? ...................................33 2.1. Процесс баг-трекинга ........................................................... 34 2.2. Как заводить задачи в баг-трекер? ....................................... 38 1. Выберите тип .......................................................................................... 38 2. Локализуйте проблему ........................................................................... 39 3. Придумайте короткий и ёмкий заголовок ............................................ 41 4. Приложите скриншот ............................................................................ 42 5. Опишите шаги воспроизведения и результат ....................................... 43 6. Обоснуйте ожидаемый результат ........................................................... 44 7. Что еще? ................................................................................................. 45 2.3. Тотальная паранойя — друг тестировщика! ......................... 48 2.4. Сколько задач заводить?....................................................... 49 1. Одна проблема = один баг ..................................................................... 49 2. Группируем схожие проблемы в одной задаче ...................................... 52 3. Золотая середина .................................................................................... 53
342 Оглавление 2.5. Вопросы для самопроверки .................................................. 54 2.6. Ответы на вопросы для самопроверки ................................ 54 ЧАСТЬ II. Локализация ошибок .......................................... 55 Глава 3. Как локализовывать ошибки? .............................................57 3.1. Что такое локализация? ........................................................ 58 3.2. Как локализовывать ошибки? .............................................. 59 Копаем рядом (принцип лопаты) ............................................................. 59 Строим догадки и... Опровергаем их! ....................................................... 63 Не увлекаемся! ........................................................................................... 66 3.3. Почему я, а не разработчик? ................................................ 68 3.4. Итого про локализацию ....................................................... 70 3.5. Вопросы для самопроверки .................................................. 71 3.6. Ответы на вопросы для самопроверки ................................ 71 Глава 4. Как понять, ошибка на клиенте или на сервере? .......73 4.1. Клиент-серверная архитектура ............................................ 74 Пример в картинках .................................................................................. 74 Краткие определения .................................................................. 81 4.2. Кто виноват, клиент или сервер? ......................................... 82 Общий принцип ........................................................................................ 82 Когда есть API ............................................................................................ 84 Когда нет API ............................................................................................. 85 Выводы ........................................................................................ 86 4.3. Вопросы для самопроверки .................................................. 87 4.4. Ответы на вопросы для самопроверки ................................ 87 Глава 5. Логи в локализации багов ....................................................89 5.1. Что такое логи? ..................................................................... 90 5.2. Зачем логи нужны? ............................................................... 92 1. Понять, что произошло ......................................................................... 92 2. Воспроизвести ошибку .......................................................................... 92
Оглавление 343 3. Собрать статистику ................................................................................ 93 4. Восстановить потерянные данные ........................................................ 93 5. Понять, что что-то не так ...................................................................... 94 5.3. Потребители логов ................................................................ 94 5.4. Как появляются логи? .......................................................... 95 5.5. Что должно быть в логах? ..................................................... 95 1. Дата и время ........................................................................................... 96 2. Поток ...................................................................................................... 96 3. Уровень логирования ............................................................................. 98 4. Название задачи ....................................................................................102 5. Что сейчас происходит? ........................................................................102 5.6. Чего не должно быть в логах? ............................................. 103 Загрузка каждой записи из миллиона .....................................................103 10 стеков подряд .......................................................................................103 5.7. Количество логов ................................................................ 104 5.8. Логи на сервере ................................................................... 106 5.9. Логи на клиенте .................................................................. 106 5.10. Как логи помогают в локализации багов? ....................... 107 5.11. Вопросы для самопроверки .............................................. 108 5.12. Ответы на вопросы для самопроверки ............................. 109 Глава 6. Как найти минимальные данные для воспроизведения бага? ...................................................111 6.1. Что такое минимальные данные для воспроизведения? ... 112 6.2. Зачем искать минимальный файл? .................................... 113 6.3. Как найти минимальные данные? ..................................... 113 6.4. Метод бисекционного деления .......................................... 115 Применение тестировщиками .................................................................116 Применение разработчиками ..................................................................121 Пример применения метода.....................................................................123 6.5. Вопросы для самопроверки ................................................ 124 6.6. Ответы на вопросы для самопроверки............................... 125
344 Оглавление Глава 7. Примеры локализации ............................................................127 7.1. Примеры локализации бага, найденного тестировщиком 128 1. «Вы используете устаревший браузер» в поддерживаемом браузере при переходе на сайт из документов Office .........................................128 2. Ломается структура файла, если в нем первые колонки пустые .........131 3. Система зависает при загрузке файла Excel с 780 тыс. и более строк ........................................................................133 4. NaN при выборе сеанса «Перегрин» на 10.10 в 16:45 ..........................135 5. Игра «Паук» для iPad: приложение вылетает при показе статистики ..........................................................................136 6. В СДО комменты отображаются в HTML-тегах..................................138 7. Вам не хватает «минус 4 тыс.» на балансе ............................................141 7.2. Примеры локализации при воспроизведении чужой проблемы ................................................................. 143 1. Ошибка создания из-за concurrency .....................................................143 2. Null в логах — кто же он? ......................................................................145 3. Fail story: ошибку так и не нашли .........................................................149 4. Коварный Zabbix: локализация падения сервера ................................152 5. Перевернутая фоточка .........................................................................153 Глава 8. Итого про локализацию ........................................................157 ЧАСТЬ III. Оформление задач ............................................ 159 Глава 9. Оформление названия ............................................................161 9.1. Как назвать задачу? ............................................................ 162 9.2. Как оформлять плохо… ..................................................... 163 9.3. Как оформлять хорошо? .................................................... 163 Что? Где? Когда? .......................................................................................164 Кратко, но ёмко! .......................................................................................168 9.4. Название бага: советы ........................................................ 169 В названии — проблема! ...........................................................................169 Избегайте слов-паразитов ........................................................................169 9.5. Название улучшения: советы ............................................. 171 В названии — предложение! .....................................................................171 Убирайте лишние слова ............................................................................172
Оглавление 345 9.6. Инструмент для проверки названий: «Багред» ................. 173 9.7. Вопросы для самопроверки ................................................ 173 9.8. Ответы на вопросы для самопроверки .............................. 174 Глава 10. Описание бага ..........................................................................175 10.1. Шаблон бага ...................................................................... 176 10.2. Принципы оформления ................................................... 176 10.3. Шаги бага .......................................................................... 177 1. Ссылка — всегда хорошо. Особенно прямая .......................................177 2. Ссылки недостаточно! ..........................................................................180 3. Нужна авторизация? Дайте данные......................................................181 4. Не пишите в баге «Ввести 6,9»! .............................................................182 5. А оно воспроизводится по твоим шагам? ............................................186 6. Чем меньше, тем лучше ........................................................................187 7. Шаг = цель ............................................................................................188 8. Шаг — всё важное .................................................................................189 9. Всё лишнее — в доп. инфо ....................................................................190 10. Опиши и приложи ...............................................................................191 10.4. Результат ............................................................................ 193 1. В задаче есть фактический и ожидаемый результаты ..........................193 2. Сначала фактический, потом ожидаемый результат ..........................195 3. Ожидаемый результат надо обосновать ...............................................196 10.5. Итого про оформление бага ............................................. 198 10.6. Вопросы для самопроверки .............................................. 199 10.7. Ответы на вопросы для самопроверки ............................. 199 Глава 11. Описание улучшения ............................................................. 201 11.1. Шаблон улучшения .......................................................... 202 11.2. Нюансы оформления ........................................................ 202 1. Как везде — не значит круто ................................................................ 202 2. Улучшение надо продумывать вплоть до тестов ................................. 203 3. Улучшение умрет при плохом описании ............................................. 205 4. Избегайте поп-апов ............................................................................. 206 5. Забудьте про слово «добавить»! ........................................................... 208
346 Оглавление 11.3. Пример улучшения: «Проверять надежность пароля при регистрации» .............................................................. 208 11.4. Итого по улучшению ........................................................ 211 11.5. Вопросы для самопроверки ............................................. 211 11.6. Ответы на вопросы для самопроверки ............................. 211 Глава 12. Как правильно вложить аттач в задачу? .................... 213 12.1. Общее правило вложений: говорящее название ............. 214 12.2. Общая ошибка: нет отсылки на аттач по тексту .............. 215 12.3. Скриншот: правила оформления ..................................... 217 12.4. Видео: правила оформления ............................................ 218 12.5. Файл: правила оформления .............................................. 219 12.6. Скрипт или утилита как вложение в задачу ..................... 221 12.7. Итого по вложениям ......................................................... 222 12.8. Вопросы для самопроверки .............................................. 223 12.9. Ответы на вопросы для самопроверки ............................. 223 Глава 13. Дополнительные поля ........................................................ 225 13.1. Что можно встретить в баг-трекере? ................................ 226 13.2. Приоритет / важность (Priority / Severity) ........................ 226 13.3. Версия ............................................................................... 228 Проявилось в версии .............................................................................. 228 Исправить в версии ................................................................................ 228 13.4. Исполнитель ..................................................................... 230 13.5. Комментарий .................................................................... 231 13.6. Бизнес-обоснование ......................................................... 232 13.7. Время на исполнение / тестирование .............................. 232 13.8. Другие поля ....................................................................... 233 13.9. Вопросы для самопроверки .............................................. 236 13.10. Ответы на вопросы для самопроверки ........................... 236
Оглавление 347 Глава 14. Паттерны и антипаттерны обоснования задач ....... 237 14.1. Обоснование ..................................................................... 238 14.2. Антипаттерны: плохое обоснование ................................ 242 Очевидно же ........................................................................................... 242 Мамой клянусь! ...................................................................................... 245 Зайчики обиделись ................................................................................. 249 14.3. Хорошие паттерны обоснования ..................................... 253 Пруфлинк ............................................................................................... 254 Единообразие ..........................................................................................261 Проблема, или #жизньболь ................................................................... 262 14.4. Когда обоснование не нужно ........................................... 265 14.5. Итоги обоснования ........................................................... 267 14.6. Вопросы для самопроверки .............................................. 268 14.7. Ответы на вопросы для самопроверки ............................. 269 Глава 15. Примеры оформления задач ............................................ 271 15.1. Nginx error при просмотре программы лояльности ......... 272 15.2. Не загружаются файлы с большим количеством (более 165 тыс.) строк ....................................................... 273 15.3. Добавить определение марок автомобилей Datsun, FAW, Tesla при обработке ........................................................... 275 15.4. Гиперссылка на любую страницу сайта из приложений MS Office открывает страницу об использовании устаревшего браузера ....................................................... 276 15.5. Не обновляется поле «Пол» при обработке имени унисекс после обработки в Подсказках женского или мужского имени ........................................................ 278 Глава 16. Итого про оформление ....................................................... 281 16.1. Название............................................................................ 282 16.2. Описание бага ................................................................... 282 16.3. Результат бага .................................................................... 283 16.4. Описание улучшения ........................................................ 284 16.5. Вложения в задачу............................................................. 284
348 Оглавление ЧАСТЬ IV. Процессы и инструменты ..............................287 Глава 17. Процесс баг-трекинга ...........................................................289 17.1. Сообщил устно — исправили ........................................... 290 1. Каждое отвлечение — потеря времени .............................................. 290 2. Ой, я забыл исправить! ....................................................................... 292 3. Ой, я забыл сообщить! ........................................................................ 292 4. Слишком много отвлечений .............................................................. 293 17.2. Использование баг-трекинговых систем ......................... 294 17.3. Преимущества инструментов ........................................... 295 Статус проекта ........................................................................................ 295 История каждой задачи .......................................................................... 296 Все задачи в одном месте ....................................................................... 297 Гибкая настройка .................................................................................... 297 Итого преимущества .............................................................................. 297 17.4. Вопросы для самопроверки .............................................. 298 17.5. Ответы на вопросы для самопроверки ............................. 298 Глава 18. Инструменты баг-трекинга ...............................................299 18.1. Самодельные инструменты .............................................. 300 Почта ...................................................................................................... 300 Ворд .........................................................................................................301 18.2. Специализированные инструменты ................................ 301 18.3. Вопросы для самопроверки .............................................. 303 18.4. Ответы на вопросы для самопроверки ............................. 303 Глава 19. Workflow — жизненный цикл задач..............................305 19.1. Цикл: Open — Closed ........................................................ 306 Схема 1. Open — Open — Closed ............................................................ 306 Схема 2. Open — Closed .......................................................................... 306 Схема 3. Open — Closed — Reopen ......................................................... 307 Схема 4. Open — Resolve — Closed ......................................................... 308 19.2. Цикл, когда участников много ......................................... 309 Схема 5. Со старшим разработчиком .................................................... 309 Схема 6. С тест-менеджером ...................................................................310 Схема 7. С аналитиком ............................................................................310 19.3. Резюме по workflow ........................................................... 311
Оглавление 349 Глава 20. Как закрывать задачи? ...................................................... 313 20.1. Чек-лист закрытия задачи ................................................ 314 1. Документация ......................................................................................315 2. Комментарий .......................................................................................315 3. Тестовые данные ..................................................................................315 20.2. Подготовьте примеры для новичков ............................... 316 20.3. Общее ................................................................................ 317 Глава 21. Ретроспективный анализ ошибки .................................. 319 21.1. Зачем анализировать? ...................................................... 320 21.2. Мой метод анализа ........................................................... 321 21.3. Шаблон ............................................................................. 322 21.4. Примеры применения ...................................................... 322 Пример 1 ................................................................................................. 322 Пример 2 ................................................................................................. 323 21.5. Как я к этому пришла? ..................................................... 324 21.6. Когда метод не работает ................................................... 326 21.7. Резюме ............................................................................... 328 Глава 22. Послесловие ........................................................................... 331 ЧАСТЬ V. Приложения ..........................................................333 Приложение 1. Шпаргалка от Павла ................................................ 335 Приложение 2. Плакат НЛО (найти, локализовать и оформить ошибку) .............................................. 337
www.bhv.ru Назина О. Е. Что такое тестирование. Отдел оптовых поставок: Курс молодого бойца E-mail: [email protected] y Изучите приложение y Придумайте список тестов y Найдите ошибки в программе y Оформите тест-кейсы и чек-листы y Опишите баги и улучшения y Создайте свое портфолио Эта книга — тренинг по тестированию программ с домашними заданиями. Выполните их все, и тестовые задания от работодателя вас точно не испугают! В результате вы получите портфолио, которое можно смело показывать при трудоустройстве даже в самую крутую компанию. Книга дает все необходимые базовые знания для специалиста по тестированию ПО и указывает направления для дальнейшего развития. За годы работы Ольга протестировала десятки продуктов и обучила тысячи людей делать это правильно. Этот колоссальный опыт она собрала в одной книге, которая в нескучной манере рассказывает о том, как стать отличным тестировщиком. Книга не только развлекает и образовывает читателя, но также дает все необходимые для специалиста по тестированию знания. От самых азов и до сложных концепций, которые пригодятся на руководящих должностях, — вы найдете в этой книге все, что поможет вам выделиться на фоне других тестировщиков. Книга обязательна к прочтению для русскоязычного QA. Арсений Батыров, руководитель отдела ручного тестирования в компании InDriver Ольга Назина — основатель Багреда (справочного ресурса для тестировщиков) и портала Testbase, на котором собраны полезные материалы по тестированию. Автор статей на Хабре и бесплатных уроков на Youtube. 16 лет проработала в тестировании, 9 из которых активно учила новичков. Провела более 200 курсов для начинающих тестировщиков, материал которых послужил основой для этой книги.
www.bhv.ru Назина О. Е. Тест-дизайн. Практическое руководство для начинающих Отдел оптовых поставок: E-mail: [email protected] y Выделяем классы эквивалентности y Ищем границы в классах эквивалентности y Применяем готовые чек-листы y Исследуем приложение по турам y Пишем варианты использования функций y Оформляем Decision Table y Рисуем State & Transition Diagram Почему у некоторых тестировщиков получается придумывать полезные тесты лучше, чем у других? Почему они реже пропускают баги? Может быть, они знают какие-то секретные приемы и техники? Ничего подобного! Эффективные тестировщики применяют те же самые приемы, что и все остальные. Разница лишь в том, КАК они их применяют. О каких приемах идет речь? Разбиение на классы эквивалентности, pairwise, деревья решений, диаграммы состояний и переходов — все эти и другие техники подробно и с наглядными примерами описаны в этой книге. А еще в ней рассказано, как и в каких случаях их нужно применять. В книге есть бонус — подборка чек-листов для стандартных операций. Это такие «напоминалочки»: что нужно не забыть проверить в той или иной ситуации. Используйте их в работе, пополняйте и расширяйте в соответствии с особенностями своей системы! Ольга Назина — генеральный директор обучающего центра ООО «Тестбейз». Тестировщик, тренер и писатель. Автор статей на Хабре и бесплатных уроков на YouTube. Создала порталы Багред («Главред» для тестировщиков) и Testbase, на котором собраны полезные материалы по тестированию. Проработала в тестировании 16 лет, 9 из которых активно учила новичков. Провела более 200 курсов для тестировщиков, материал которых послужил основой для этой книги. От автора бестселлера «Что такое тестирование. Курс молодого бойца»