Какие типы дефектов (багов) вы обычно находите при тестировании?

Ответ

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

Основные типы дефектов:

  1. Функциональные дефекты:

    • Описание: Функция работает не в соответствии с требованиями.
    • Пример: Кнопка "Рассчитать" не обновляет итоговую сумму. Причина — ошибка в обработчике события onClick.
      // Было (баг): функция не вызывалась
      button.addEventListener('click', calculateTotal); // Опечатка в имени функции
      // Исправлено:
      button.addEventListener('click', calculateTotal);
  2. Логические дефекты и ошибки данных:

    • Описание: Неверный алгоритм или обработка данных.
    • Пример: Двойное применение скидки в корзине.
      // Было (баг): скидка 10% применялась дважды
      function calculateTotal(price) {
      return price * 0.9 * 0.9;
      }
      // Исправлено:
      function calculateTotal(price) {
      return price * 0.9;
      }
  3. Дефекты пользовательского интерфейса (UI):

    • Описание: Проблемы с вёрсткой, отступами, выравниванием, отображением на разных разрешениях.
    • Пример: Текст выходит за границы контейнера на мобильном устройстве из-за отсутствия свойства overflow-wrap: break-word;.
  4. Дефекты API и интеграции:

    • Описание: Ошибки в работе эндпоинтов, неверные коды ответов, проблемы с форматами данных.
    • Пример: API возвращает ошибку 500 Internal Server Error при отправке даты в формате DD.MM.YYYY вместо ожидаемого YYYY-MM-DD.
  5. Дефекты производительности и безопасности:

    • Описание: Медленная загрузка страниц, утечки памяти, уязвимости (например, XSS).

Процесс работы: Все найденные дефекты документируются в баг-трекере (Jira, YouTrack) с чёткими шагами для воспроизведения, ожидаемым и фактическим результатом, окружением и критичностью.

Ответ 18+ 🔞

Слушай, ну вот сидишь ты, тестируешь этот интерфейс, вроде всё гладко, кнопочки нажимаются... И тут — бац! — а эта, сука, кнопка «Рассчитать» нихуя не считает! Просто стоит, как пень, и смотрит на тебя. Это, блядь, классика жанра — функциональный дефект. Всё по ТЗ должно работать, а оно не работает. Залезаешь в код, а там:

// Было (баг): функция не вызывалась
button.addEventListener('click', calculateTotal); // Опечатка в имени функции
// Исправлено:
button.addEventListener('click', calculateTotal);

Ёпта, одна буква — и весь функционал накрылся медным тазом. Волнение ебать!

А бывает ещё хитрее. Вроде всё работает, цифры меняются, но чувствуешь подвох. Проверяешь — а скидка-то, блядь, применяется два раза! Клиент радуется, а бизнес в убытке. Это логический дефект, чистой воды.

// Было (баг): скидка 10% применялась дважды
function calculateTotal(price) {
  return price * 0.9 * 0.9; // Овердохуища скидка получится!
}
// Исправлено:
function calculateTotal(price) {
  return price * 0.9; // Ну вот, теперь норм.
}

Дальше — дефекты интерфейса. Открываешь на телефоне, а там текст, сука, вылез за все границы, полстраницы горизонтальным скроллом тянешь! Чувак, который верстал, видимо, делал это с закрытыми глазами. Не хватило банального overflow-wrap: break-word;. Пиздец, а не вёрстка.

Потом подключаешься к бэкенду, а там — интеграционная жесть. Шлёшь дату, как нормальные люди, DD.MM.YYYY, а сервер тебе в ответ: «Получай, мудила, 500 Internal Server Error!». А надо было, оказывается, YYYY-MM-DD. Сам от себя охуеешь.

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

А как со всем этим жить? Да просто! Всё это добро ты пихаешь в баг-трекер — Jira, YouTrack, неважно. Главное — описать так, чтобы даже тот полупидор, который это написал, смог воспроизвести. Шаги, скриншоты, что ожидал, что получил, на какой версии iOS и под какой луной. Иначе будет: «У меня всё работает, ёпта!». А ты ему: «Да иди ты нахуй, вот смотри!». И показываешь железобетонные доказательства. Красота!