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

«Какие методы поиска и исправления ошибок в коде вы используете?» — вопрос из категории Тестирование, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для поиска и исправления ошибок применяю многоуровневый подход:

1. Инструменты разработки:

  • Логирование: SLF4J, Log4j для отслеживания потока выполнения.
  • Отладка: Пошаговый дебаггер в IntelliJ IDEA или Eclipse.
  • Профилирование: VisualVM, JProfiler для поиска утечек памяти и узких мест.
  • Статический анализ: SonarQube, SpotBugs для выявления потенциальных проблем до запуска.

2. Практический пример и исправление:

// Проблема: Отсутствует проверка границ массива.
public class BugExample {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3};
        System.out.println(getElement(arr, 3)); // ArrayIndexOutOfBoundsException
    }
    static int getElement(int[] arr, int index) {
        return arr[index]; // Ошибка здесь
    }
}

Исправление: Добавить валидацию входных данных.

static int getElement(int[] arr, int index) {
    if (index < 0 || index >= arr.length) {
        throw new IllegalArgumentException("Индекс " + index + " вне границ массива.");
    }
    return arr[index];
}

3. Автоматизация: Пишу модульные (JUnit, TestNG) и интеграционные тесты для предотвращения регрессии.