Приходилось ли вам находить и документировать баги в приложениях?

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

Ответ

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

Пример 1: Отсутствие серверной валидации Веб-приложение принимало форму с email, не содержащим символ @, что вызывало необработанное исключение на сервере и HTTP 500.

  • Ожидаемое поведение: Возврат статуса 400 с сообщением об ошибке валидации.
  • Фактическое поведение: Внутренняя ошибка сервера (500).

Пример 2: Отсутствие защиты от повторной отправки (Double Submit) В мобильном приложении быстрое двойное нажатие кнопки "Отправить" приводило к созданию двух идентичных заказов.

  • Причина: Отсутствие блокировки UI или токена идемпотентности на бэкенде.
  • Решение: Добавление индикатора загрузки (UI) и проверка уникального ключа запроса (бэкенд).

Пример кода для воспроизведения сценария двойной отправки:

import requests

# Эмуляция двух быстрых последовательных запросов
url = "https://api.example.com/order"
data = {"item_id": 123}

response1 = requests.post(url, json=data)
response2 = requests.post(url, json=data)

# Ожидаемые ответы после исправления:
# Первый запрос — успех (201)
# Второй идентичный запрос — ошибка конфликта (409) или идемпотентности
print(f"First request status: {response1.status_code}")  # Ожидается 201
print(f"Second request status: {response2.status_code}") # Ожидается != 200

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