Ответ
Да, находил и документировал различные баги. Примеры включают логические ошибки, проблемы с валидацией и уязвимости, связанные с состоянием гонки.
Пример 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. После фиксации проводил верификацию исправления.