- Регистрация
- 24.09.2021
- Сообщения
- 38 365
Автор: Ольга Назина Название: Техники локализации плавающих дефектов (2019) Описание: Ох уж эти мистические «плавающие ошибки». Сколько вокруг них мифов! Но, когда причина найдена, всегда оказывается, что нет плавающих багов, а есть недолокализованные.Поэтому мы будем учиться локализовывать баги, которые «не воспроизводятся». Учиться искать причину проблемы без помощи разработчика. Учиться смотреть в код и искать причину снаружи. Делить бисекционно и читать логи. В общем, всё, что нужно для воспроизведения! Воспроизведение ошибки Прочитайте логи — если есть доступ к логам, всегда в первую очередь смотрим туда! Если у нас веб-приложение, проверьте, что ушло с клиента на сервер. Проверьте граничные значения — баги часто тусят на границах. Попробуйте пойти «от обратного» — подумать, как получить саму проблему. Этот метод хорошо работает для багов с кэшом Составьте таблицу отличий — у вас то все работает. Что отличает ваш кейс от падающего? Что записывать в таблицу отличий: Состояние объекта. Действия, которые с ним выполняли. Устройство, на котором воспроизводится. Время выполнения действия (какой релиз?). Способ воспроизведения (GUI, API). Количество открытых вкладок в браузере. В отлове багов помогает понимание того, где копятся баги и какого рода: как влияет на работу системы concurrency, миграция данных, перетипизация переменной внутри кода… Зная последствия, вы будете понимать, что именно записать в таблицу отличий. Локализация ошибки Посмотрите код — возможно, это будет самым быстрым решением. Используйте бисекционное деление. Придумайте теорию (на баг влияет то и то) — подтвердите ее, а потом попробуйте опровергнуть. Выкиньте лишнее из шагов — возможно, именно это сбивает вас с толку На курсе мы будем рассматривать каждую из техник. Вы сможете сразу применить ее на практике на специально подобранных домашних заданиях, которые показывают именно данную технику или конкретную проблему (миграции данных, стыка интеграции и т.д.) Спойлер: Программа курса: Это практический курс: теории минимум. Типичная лекция — на 10-15 минут. Короткая лекция «как это применять» и тут же практика! Конечно, есть и сложные лекции (на 30 минут). Есть и короткие, на 7 минут. Нет жесткой привязки ко времени лекции. Сколько надо дать теории, столько и говорю, а дальше уже практикуйтесь.Для локализации багов мы будем применять техники: Черного ящика — как понять, что происходит, если нет доступа в код. Белого ящика — куда можно посмотреть в коде? Смотреть будем на примере приложения folks с открытым исходным java-кодом. Разумеется, у вас на проекте код будет выглядеть по-другому, но зато вы получите представление, где там могут вылезти баги. Баги, которые мы будем рассматривать на курсе, не были внесены в приложение нарочно — так что все приближено к реальности. Лекции идут в фирменном стиле тренера, с картинками. Посмотрите примеры видео на youtube-канале тренера, чтобы понять, подходит ли вам такой стиль изложения.Если вы переживаете, что не сможете что-то сделать (например, задания на просмотр кода), вот вам задача для самопроверки — соберите проект folks и запустите тесты. Инструкция есть, есть даже видео-инструкция по установке java, maven на Windows, Если справитесь, то и все остальное будет вам по плечу! Программа курса 0. Введение 1. Уточнение устройств, на которых есть баг — какие есть линейки; 2. Исследование состояний — отредактированную…Если у нас есть пользователь, то какой он? А как регистрировался? Как это может повлиять на воспроизведение бага? 3. Использование классов эквивалентности и граничных значений 4. Опровержение своих теорий 5. Метод бисекционного деления 6. Чтение логов 7. Просмотр запросов с клиента на сервер 8. Воспроизведение «от обратного» 9. Проверка по коду 10. Проверка соответствия типов данных 11. Проверка стыка интеграции 12. Проверка данных после миграции 13. Проверка concurrency Идет забор данных из базы по 1000 записей за раз. Что, если в этой 1000 встретились 2 одинаковых клиента? Строка базы заблокирована первым изменением — второе разваливается. Интеграция по SOAP \ REST. Если запросов много, там тоже можно влететь на изменение одного и того же клиента. И в этом случае к вам придут “у меня тут ошибка”, а вы понять не можете, откуда она взялась, так как текст невразумительный. Надо помнить про параллельную работу, чтобы локализовать причину. 14. Заключение Подводим итоги. |