Ежедневно, с 8:30 до 22:30
Предзаказ
2075

Техники локализации плавающих дефектов

Средняя оценка 0.0 из 5 на основании 0 голосов (0)
0 0
0
Сайт:
500 ₽
5000 ₽
-90%
Кэшбэк: 5% (25 ₽)
Курс будет выдан в течение 1-3 часов после оплаты.

Ох уж эти мистические «плавающие ошибки». Сколько вокруг них мифов! Но, когда причина найдена, всегда оказывается, что нет плавающих багов, а есть недолокализованные.

Поэтому мы будем учиться локализовывать баги, которые «не воспроизводятся». Учиться искать причину проблемы без помощи разработчика. Учиться смотреть в код и искать причину снаружи. Делить бисекционно и читать логи. В общем, всё, что нужно для воспроизведения!

Если вы не можете воспроизвести ошибку, то:

  1. Прочитайте логи — если есть доступ к логам, всегда в первую очередь смотрим туда! Если у нас веб-приложение, проверьте, что ушло с клиента на сервер.
  2. Проверьте граничные значения — баги часто тусят на границах.
  3. Попробуйте пойти «от обратного» — подумать, как получить саму проблему. Этот метод хорошо работает для багов с кэшом
  4. Составьте таблицу отличий — у вас то все работает. Что отличает ваш кейс от падающего?

Что записывать в таблицу отличий:

  1. Состояние объекта.
  2. Действия, которые с ним выполняли.
  3. Устройство, на котором воспроизводится.
  4. Время выполнения действия (какой релиз?).
  5. Способ воспроизведения (GUI, API).
  6. Количество открытых вкладок в браузере.

В отлове багов помогает понимание того, где копятся баги и какого рода: как влияет на работу системы concurrency, миграция данных, перетипизация переменной внутри кода… Зная последствия, вы будете понимать, что именно записать в таблицу отличий.

Локализация ошибки

Если вы можете воспроизвести баг, но не можете локализовать (слишком много шагов воспроизведения / слишком большой файл, внутри которого есть ошибка), то:

  1. Посмотрите код — возможно, это будет самым быстрым решением.
  2. Используйте бисекционное деление.
  3. Придумайте теорию (на баг влияет то и то) — подтвердите ее, а потом попробуйте опровергнуть.
  4. Выкиньте лишнее из шагов — возможно, именно это сбивает вас с толку

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

Это практический курс: теории минимум. Типичная лекция — на 10-15 минут. Короткая лекция «как это применять» и тут же практика! Конечно, есть и сложные лекции (на 30 минут). Есть и короткие, на 7 минут. Нет жесткой привязки ко времени лекции. Сколько надо дать теории, столько и говорю, а дальше уже практикуйтесь.

Для локализации багов мы будем применять техники:

  • Черного ящика — как понять, что происходит, если нет доступа в код.
  • Белого ящика — куда можно посмотреть в коде? Смотреть будем на примере приложения folks с открытым исходным java-кодом. Разумеется, у вас на проекте код будет выглядеть по-другому, но зато вы получите представление, где там могут вылезти баги. Баги, которые мы будем рассматривать на курсе, не были внесены в приложение нарочно — так что все приближено к реальности.

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

Если вы переживаете, что не сможете что-то сделать (например, задания на просмотр кода), вот вам задача для самопроверки — соберите проект folks и запустите тесты. Инструкция есть, есть даже видео-инструкция по установке java, maven на Windows, Если справитесь, то и все остальное будет вам по плечу!

Характеристики
Наличие Предзаказ Тип Видео Размещение на сайте 15.03.2019 Артикул 2075

Программа курса

0. Введение

Что такое локализация и зачем она вообще нужна тестировщику.

Как умение локализовывать задачи экономит время команды и убирает панику.

Как знание о типовых проблемах помогает воспроизводить баги, которые «не воспроизводятся».

1. Уточнение устройств, на которых есть баг

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

Как понять, в какой момент едет верстка? Какие инструменты использовать:

  • как замерить размер окна;
  • какие есть линейки;
  • как посмотреть размер окна в консоли.

2. Исследование состояний

Изучим разные состояния объекта. Если проблема при сохранении — а кого мы вообще сохраняем?

  • свежесозданную карточку
  • отредактированную
  • удаленную

…

Если у нас есть пользователь, то какой он? А как регистрировался? Как это может повлиять на воспроизведение бага?

3. Использование классов эквивалентности и граничных значений

Что такое классы эквивалентности.

Почему на границах встречаются баги.

Зачем тестировать ноль и как его найти, если у нас не строка ввода?

4. Опровержение своих теорий

Как опровергать свои теории и зачем это нужно.

  • таблица отличий;
  • метод «найди 5 отличий»;
  • принцип минимализма (отсеивание лишнего).

5. Метод бисекционного деления

Что такое бисекционное деление.

Как его использовать тестировщику для локализации бага.

Как оно используется в разработке и к каким проблемам может привести.

6. Чтение логов

Что такое логи. Что в них записывается?

Как читать логи. Как читать стектрейс ошибки.

Логи на сервере и на клиенте.

7. Просмотр запросов с клиента на сервер

На клиенте помимо JS-логов можно смотреть, что вообще ушло на сервер.

Это помогает понять, где произошла ошибка и кто виноват: клиент или сервер. Учимся это делать.

8. Воспроизведение «от обратного»

Техника расследования закрытой комнаты. Наиболее актуальна для багов с кэшом.

Вот есть баг, из кэша достаются неправильные данные. Как воспроизвести? Идем от обратного, пытаемся получить “плохие данные” разными путями.

9. Проверка по коду

Как читать код, при условии, что разработчики идут вам на встречу и разделяют потроха логики и описание объектов.

Читаем java-объект и схему создания БД. Выверяем их на соответствие друг другу.

Внимание: у вас на проекте может быть не java, но принцип все тот же. На примере домашнего задания вы увидите, как можно найти баг, исследуя код

10. Проверка соответствия типов данных

Если поле встречается в коде несколько раз:

  • в объектной модели;
  • в схеме создания БД;
  • где-то еще

Важно проверять соответствие типов. Смотрим, какие встречаются баги на несоответствие типов.

11. Проверка стыка интеграции

Какая бывает интеграция между системами.

Какие бывают баги на стыке интеграции.

Куда смотреть в первую очередь.

12. Проверка данных после миграции

Зачем тестировщику нужна как чистая база, так и база, живущая веками?

Примеры ошибок, вылезающих после миграции и почему они не ловятся на свежей тестовой БД.

13. Проверка concurrency

Типичная ошибка — выполнение CRUD над одним пользователем. Тестировщик может найти баги, переключаясь между вкладками интерфейса. Но это про поиск багов, а не про локализацию, казалось бы, да?

Но о concurrency важно знать, так как параллельная работа может быть и на другом уровне:

  • Идет забор данных из базы по 1000 записей за раз. Что, если в этой 1000 встретились 2 одинаковых клиента? Строка базы заблокирована первым изменением — второе разваливается.
  • Интеграция по SOAP REST. Если запросов много, там тоже можно влететь на изменение одного и того же клиента.

И в этом случае к вам придут “у меня тут ошибка”, а вы понять не можете, откуда она взялась, так как текст невразумительный. Надо помнить про параллельную работу, чтобы локализовать причину.

14. Заключение

Подводим итоги.

Об авторах

Фото: Ольга Назина
0.0
Ольга Назина
Тренер школы Software Testing, специалист по ручному и автоматизированному тестированию. Автор курсов по Postman, Charles Proxy и локализации дефектов.
Фото: Software Testing
0.0
Software Testing
Учебный центр портала Software-Testing.ru, работающего с 2004 года. Курсы для тестировщиков: API и Postman, SQL, Docker, DevTools, тестирование безопасности.

Отзывы и комментарии

Отзывов ещё нет, будьте первыми

Написать отзыв
Нажимая "Отправить" Вы соглашаетесь с правилами публикации и даёте согласие на обработку персональных данных. Администрация не несёт ответственности за содержание отзывов.

Похожие товары:

Постер товара: Основы дебага: все об отладке кода в Ruby on Rails
Скидка 54%
Предзаказ
Средняя оценка 0.0 из 5 на основании 0 голосов
Основы дебага: все об отладке кода в Ruby on Rails
Ruby on Rails
Постер товара: Продвинутая работа с ошибками в Go (Golang)
Скидка 90%
Предзаказ
Средняя оценка 0.0 из 5 на основании 0 голосов
Продвинутая работа с ошибками в Go (Golang)
Go (Golang)
Постер товара: Обучение тестированию с нуля
Скидка 82%
Предзаказ
Средняя оценка 0.0 из 5 на основании 0 голосов
Обучение тестированию с нуля
Ручное тестирование и тест-дизайн
Постер товара: Chrome DevTools: Инструменты тестировщика
Скидка 85%
Предзаказ
Средняя оценка 5.0 из 5 на основании 1 голосов
Chrome DevTools: Инструменты тестировщика
Ручное тестирование и тест-дизайн
Постер товара: Аудит и оптимизация QA-процессов
Скидка 89%
Предзаказ
Средняя оценка 0.0 из 5 на основании 0 голосов
Аудит и оптимизация QA-процессов
Тестирование и QA
Постер товара: Курс-практикум «Транзакции и работа с ними»
Скидка 75%
Предзаказ
Средняя оценка 0.0 из 5 на основании 0 голосов
Курс-практикум «Транзакции и работа с ними»
Архитектура и System Design
Постер товара: Тестирование без требований: выявление и восстановление информации о продукте
Скидка 87%
Предзаказ
Средняя оценка 0.0 из 5 на основании 0 голосов
Тестирование без требований: выявление и восстановление информации о продукте
Ручное тестирование и тест-дизайн
Постер товара: Тестирование в Python
Скидка 90%
Предзаказ
Средняя оценка 5.0 из 5 на основании 1 голосов
Тестирование в Python
Python-бэкенд