Skip to content
PПромтбук
RUEN
04Тестирование

Поиск edge cases

Систематический поиск граничных случаев для функции / API / UI.

Найди edge cases для: {{target}}.

Подход: перебери оси, на которых может всё сломаться.

1. По типам входных данных

  • Пустота: "", [], {}, null, undefined
  • Граничные числа: 0, -1, MAX_INT, MIN_INT, NaN, Infinity, дробные где ожидается целое
  • Длина: строка из 1 символа, из 10000 символов, очень длинная
  • Кодировки: ASCII, Unicode, emoji, RTL (арабский), CJK, control chars
  • Whitespace: " ", "\n", "\t", trailing/leading
  • Регистр: "ABC", "abc", "AbC"
  • Спецсимволы: SQL-injection-ish "'; DROP TABLE", XSS "<script>", URL-encoded
  • Несуществующие значения: ID которого нет в БД

2. По времени

  • Очень быстро: два клика подряд, double-submit
  • Очень медленно: запрос длится 30 сек
  • Прерывания: отмена в середине
  • Параллельно: 10 одновременных запросов
  • Out of order: webhook пришёл после следующего

3. По состоянию

  • Пустое: ни одной записи в БД
  • Большой объём: 1M записей, длинный список
  • Изменённое во время операции: запись удалили пока редактируешь
  • Несогласованное: в БД мусор после миграции

4. По правам и контексту

  • Без прав: anonymous user
  • С другой ролью: user vs admin
  • Чужие данные: ID принадлежит другому пользователю
  • Просроченный токен: session timeout

5. По сети

  • Offline: что произойдёт?
  • Slow connection: таймаут
  • DNS fail: резолв не удался
  • Сервер отвечает 500 / 429 / 504
  • Сервер вернул некорректный JSON

6. По устройству (UI)

  • Узкий экран: 320px
  • Очень широкий: 4K
  • High-DPI: retina
  • Touch vs mouse
  • Клавиатура: Tab навигация, Enter, Esc
  • Тёмная тема
  • Reduced motion
  • Низкая память / медленный процессор

7. Бизнес-edge

  • Граничные суммы: 0₽, отрицательная сумма, очень большая
  • Возвраты: возврат после возврата
  • Локализация: разные валюты, форматы дат
  • Таймзоны: UTC vs локальная
  • DST: переход на летнее/зимнее время

Формат

## Должно работать
- ...

## Должно мягко отказать (ошибка пользователю)
- ...

## Должно отбросить (4xx)
- ...

## Должно залогировать и продолжить
- ...

Принципы

  • "Так не будет" — будет. Покрой.
  • Различай "ошибка пользователя" и "ошибка системы" — реакция разная
  • Edge case = тест. Если не покрыт тестом, это будущий баг
К подразделу «Тестирование»
Похожие промты