Делимся опытом: как быстро найти проблему (BUG)

Java

Не только утечка памяти заставила меня плакать

Не только твои потребности не дают мне спать по ночам

Сколько будет завтра, ты держишь меня за руку

Что меня беспокоит, так это непостоянные потребности

Релиз всегда посреди ночи, а откат всегда вызывает беспокойство

Ошибки просачиваются в любое время, преследуя меня

Как программист, вы, должно быть, сталкивались с такими сценариями. Сегодня поговорим о том, как быстро локализовать проблему.

Сначала сосредоточься,То, что я написал ниже, это слова семьи.У меня небольшой опыт работы и ограниченные языковые навыки. Кроме того, в этой статье говорится с точки зрения внутренних разработчиков Java..

задний план

Следующий контент будет проанализирован по следующим реальным случаям, и сначала будут описаны конкретные случаи:

  • Случай 1. Домашняя страница приложения пуста.

    Подробное описание: Приложение, H5 и домашняя страница апплета предоставляются одним и тем же внутренним интерфейсом. Начальник тестирования сообщил, что домашняя страница приложения пуста.

  • Случай 2. Стоимость участия в программе Mini Program отображается неправильно.

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

  • Случай 3: Купон не может быть получен, и всплывающее окно показывает «Не удалось получить, купон доступен только для новичков»!

    Подробное описание: Это функция для получения купонов. Пользователи могут запрашивать купоны через это событие. Когда пользователь забирает купон, появляется всплывающее окно с сообщением: «Не удалось забрать, купон доступен только для новичков». При этом тестовый босс сообщил, что эта учетная запись является учетной записью новичка, пользователя, который только что зарегистрировался.

  • Случай 4: класс оценки столбца оценки xx, приобретенный пользователем, не может быть открыт.

    Подробное описание: Столбец оценки - это особый столбец нашей компании, в этом столбце есть класс оценки. Оценочный класс позволяет пользователям задавать онлайн-тестовые вопросы, а пользователи сначала тестируют, чтобы понять свой собственный статус. После того, как тест будет завершен, система порекомендует пользователю соответствующий учебный план столбца в соответствии с ситуацией ответа пользователя для изучения пользователем.

После объяснения предыстории, если бы это были вы, как бы вы справились с этими проблемами?

Воспроизведите проблему

Когда тест-босс отзывается о проблеме,Первое, что нужно сделать, это воспроизвести проблему. Если проблему можно воспроизвести, значит, больше половины ее решено, я как разработчик считаю, что эта уверенность должна быть. Если проблема может быть воспроизведена, ее необходимо устранить (стоимость ремонта бывает высокой и низкой, это не входит в рамки этой статьи), я действительно не могу найти код ошибки, я могу отлаживать ее построчно! так,Не паникуйте, когда сталкиваетесь с проблемами, сохраняйте спокойствие.

Что делать, если проблема не может быть воспроизведена? что делать?

В настоящее время мой общий подход заключается в том, чтобы перейти кПроверить журнал. Если в журнале есть сообщение об ошибке, мы можемБыстро найдите конкретный код, в котором находится ошибка, в соответствии с сообщением об ошибке.. Что делать, если в это время нет сообщения об ошибке? Хм... Я думаю об этом, кажется, что другого выхода нет. Проблему нельзя воспроизвести, и программа не сообщает об ошибке, поэтому я могу только побеспокоить начальника тестирования, чтобы он проверил ее еще раз, чтобы увидеть, можно ли ее воспроизвести.

Быстрое позиционирование

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

Как правило, разработка проектов компании делится на внутреннюю разработку, разработку интерфейса и разработку приложений.Упомянутое здесь быстрое позиционирование относится к необходимостиБыстро определите, какой из трех концов является проблемой.

Как быстро его найти?

Если вы знакомы с общим процессом этой функции и знаете, через какие этапы и модули будет проходить вся функция, вам будет очень полезно быстро найти проблему. Конечно, есть также некоторые инструменты мониторинга, которые могут помочь разработчикам быстро найти и помочь разработчикам понять весь процесс. Например: часовой, хождение по небу и т. д.

дать каштан:

Случай 1. Домашняя страница приложения пуста.

Случай 2: стоимость участия в программе Mini Program отображается неправильно

Эти две проблемы обратная связь с течением времени, я открыл приложение, H5, апплеты посмотрел и нашел: единственная домашняя страница приложения черно-белая, апплеты H5 и Home хороши, принимая во внимание приложение, H5, маленькую домашнюю программу, предоставленную внутренний интерфейс обрабатывает одни и те же данные, вероятность этой проблемы заключается в том, что в большом приложении есть проблема, поэтому, пожалуйста, обратитесь к коллегам по разработке приложений, чтобы помочь найти проблему.

Приложение, H5 и апплет имеют проблему с неправильным отображением цен на товары, поэтому я пришел к выводу, что это, вероятно, проблема внутренней логики. Вероятность написать неправильный код на трех концах и получить неправильную цену членства должна быть небольшой.

Случай 4: класс оценки столбца оценки xx, приобретенный пользователем, не может быть открыт.

Это онлайн-проблема отзывов о продукте.Когда начальник тестирования упомянул сторону разработки, начальник тестирования не смог воспроизвести это в то время. Из-за специфики оценочного курса от пользователей требуется задавать вопросы и вводить их в систему, система анализирует ответы пользователей, а затем дает системные рекомендации.

Это типичныйПроблемы, связанные с данными о поведении пользователей, могут возникать только у пользователей с определенным характерным поведением и данными.. Когда возникает эта проблема, тест также очень трудно воспроизвести. Вы можете проверить журнал, чтобы увидеть, есть ли какие-либо сообщения об ошибках.

Когда в то время возникла эта проблема, поскольку проект был подключен к платформе sentry, сторона разработки также получила электронное письмо с напоминанием о системном сбое и ошибке, и причина была быстро найдена.

Интерфейс позиционирования

Ну, после вышеупомянутых раундов грубого суждения, есть большая вероятность, что это внутренняя ошибка. Теперь все, что нам нужно сделать, это,Быстро найти нужный интерфейс. Если используется мобильный терминал, используйте Чарльза, чтобы получить пакет, и терминал H5 напрямую откроет консоль Chrome.

так просто~~ Маме больше не нужно беспокоиться о том, что я не могу найти интерфейс~~ Конечно, в реальном рабочем процессе это может быть не так просто. Страница внешнего интерфейса может запрашивать более N интерфейсов.

поднять каштаны

Случай 2. Стоимость участия в программе Mini Program отображается неправильно.

Поскольку приложение, H5 и апплет используют один и тот же интерфейс для получения информации о продукте, я отдам приоритет отладке на платформе H5.В конце концов, мне не нужно открывать Charles, что удобно~~

chrome控制台

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

Позвольте мне поделиться своим опытом здесь, он может не подходить для всех сценариев. Возьмите этот случай в качестве примера: откройте страницу сведений о продукте и откройте консоль. Основываясь на моем общем понимании системы, я уверен, что должен быть интерфейс, который возвращает цену продукта участника, и я не знаю, какой интерфейс.

Хорошо, что нам делать в это время? Угадай интерфейс! Конечно, это не случайное предположение. Чтобы получить цену членства продукта, этому интерфейсу, скорее всего, потребуется передать идентификатор продукта из внешнего интерфейса в серверный. Где находится идентификатор продукта? Идентификатор продукта обычно отображается в URL-адресе текущей страницы. Итак, введите идентификатор продукта в поле фильтра консоли (отмечено красным на рисунке). На этом этапе большинство запросов можно отфильтровать.

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

код таргетинга

После обнаружения интерфейса мы можем подготовиться к просмотру кода и исправлению ошибки!

Я не знаю, если вы когда-нибудь столкнулись с такой ситуацией. Откройте код, на первый взгляд, этот код так долго, и мне не было написано раньше, что мне делать? Давайте поговорим о том, какБыстро найти коды ошибок.

Поднять каштаны:

Случай 2. Стоимость участия в программе Mini Program отображается неправильно.

После нашей предыдущей жестокой операции мы, наконец, обнаружили проблему.

//接口返回数据
{
    "price":9900,
    "discountPrice":8900,
    "vipPrice":0,
}

Стоимость членства отображается некорректно, т.е."vipPrice":0Есть проблема с этим полем.

Откройте код, найдите контроллер, соответствующий интерфейсу, найдите ВО, возвращенный контроллером, и найдите ВО вvipPriceМетод установки поля, правая кнопка мышиfind Usages. поздравляю, на этот раз вы нашли этоvipPriceНа какой строке стоит значение , можно ориентироваться на это, а ошибка находится возле этого кода. Взгляни на этоvipPriceКак рассчитывается значение, неправильная ли логика расчета?

Если в это время, к сожалению, ВО Контролера будет пропущено черезBeanUtilsЭти служебные классы отображают свойства, затем вы запускаетеfind UsagesМожет оказаться невозможным найти, где установлено свойство. Увы, классно использовать при написании кода, и рвет, когда что-то не так. Дальше можно только проверить, где используется этот ВО, а потом перейти к коду для проверки.

Случай 3: Случай 3: Купон не может быть получен, и всплывающее окно показывает «Не удалось получить, купон доступен только для новичков»!

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

代码搜索

Ха-ха-ха, поздравляю, вы нашли его быстро, вPayUserRuleCheckerстрока 51, это просто?

решить проблему

Теперь, когда конкретный код найден, проблема может быть устранена. В настоящее время это зависит от личного опыта.Опытные программисты могут увидеть проблему с первого взгляда.

Вот несколько замечаний:

  • научиться фокусироваться. Кода логики может быть много для всего метода обслуживания, но проблемы типа "цена членства отображается некорректно" должны быть связаны с расчетом цены членства, вам нужно только сосредоточиться на этом кусочке логики.
  • научиться отлаживать. В некоторых случаях, даже если код проблемы найден, проблема все равно не найдена (например, в журнале ошибок написано, что есть проблема со строкой хх, откройте строку хх и посмотрите на нее, интересно, как можно было здесь есть проблема). В это время вы должны попытаться отладить код и найти проблему с помощью отладки во время выполнения и анализа данных.

как избежать

Заимствуем фразу тест-босса: «Без багов не бывает, и в этой жизни не бывает багов».

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

простое резюме

В завершение подведем краткие итоги:

  1. Не паникуйте, если вы столкнулись с проблемой, пока ее можно воспроизвести, ее можно исправить.

  2. Быстро найдите три терминала APP, H5 и небольших программ, чтобы найти человека, ответственного за проблему.

  3. Найдите проблемный интерфейс и найдите код проблемы

    • Как быстро найти проблемный интерфейс
    • Как быстро найти код проблемы
  4. debug then fix

  5. Обобщайте опыт и избегайте повторных правонарушений


Добро пожаловать в публичный аккаунт:

Coder小黑