Тестирование поиска
Поиск — одна из наиболее используемых функций. Пользователи ожидают быструю работу, релевантные результаты и корректную обработку запросов.
Функциональные тесты поиска
| Тест-кейс | Ввод | Ожидаемое поведение |
|---|---|---|
| Точное совпадение | “iPhone 15 Pro” | Товар в результатах |
| Частичное совпадение | “iPhone” | Все товары iPhone |
| Нет результатов | “xyznonexistent123” | Дружелюбное сообщение с предложениями |
| Пустой поиск | (пустая строка) | Все результаты или запрос ввода |
| Спецсимволы | <script>alert(1)</script> | Санитизировано, без XSS |
| SQL injection | ' OR 1=1 -- | Безопасная обработка |
| Очень длинный запрос | 1000+ символов | Корректная обработка |
Релевантность поиска
Результаты должны ранжироваться по релевантности:
- Точные совпадения в заголовке — первыми
- Частичные совпадения в заголовке — вторыми
- Совпадения в описании — третьими
Фильтры поиска
Если поиск поддерживает фильтры:
- Применить фильтр — обновляются ли результаты?
- Применить несколько фильтров — корректно ли комбинируются?
- Убрать фильтр — возвращаются ли результаты?
- Точны ли счётчики фильтров?
- Обновляется ли URL с состоянием фильтра?
Тестирование пагинации
Основные тесты пагинации
| Тест-кейс | Ожидаемо |
|---|---|
| Первая страница | Элементы 1-N, Назад отключена, Далее активна |
| Средняя страница | Правильные элементы, обе кнопки активны |
| Последняя страница | Оставшиеся элементы, Далее отключена |
| Всего = 0 | Без элементов пагинации |
| Отрицательный номер | Перенаправление на страницу 1 |
| Страница за пределами | Последняя страница или пустое состояние |
Тестирование сортировки
Базовая проверка сортировки
Для каждого сортируемого столбца:
- По возрастанию: Элементы в порядке А-Я или от меньшего к большему
- По убыванию: Элементы в порядке Я-А или от большего к меньшему
- Визуальный индикатор: Стрелка показывает текущее направление
- Сортировка по умолчанию: Начальная загрузка показывает ожидаемый порядок
Граничные случаи сортировки
| Сценарий | Что проверить |
|---|---|
| Null/пустые значения | Где отображаются? Первыми? Последними? |
| Одинаковые значения | Применяется ли вторичная сортировка? |
| Числа как строки | “2” vs. “10” — числовая или алфавитная? |
| Регистр | “apple” vs. “Banana” — чувствительна ли к регистру? |
Практическое упражнение
Комплексный аудит функциональности
Проведите полный аудит:
- Позитивные тесты: Выполните стандартные потоки и проверьте результаты
- Негативные тесты: Невалидный ввод, граничные значения, условия ошибок
- Интеграционные тесты: Поток данных между связанными компонентами
- Тесты безопасности: Обход валидации, попытки несанкционированного доступа
- Тесты производительности: Время отклика, поведение при медленной сети
Задокументируйте находки
| № | Тест-кейс | Шаги | Ожидаемо | Фактически | Статус | Серьёзность |
|---|---|---|---|---|---|---|
| 1 | [Описание] | [Шаги] | [Ожидаемо] | [Фактически] | Пройден/Провален | Высокая/Средняя/Низкая |
Типичные ошибки
- Согласованность данных после ошибок: Остаются ли данные согласованными?
- Кнопка «Назад»: Неожиданные результаты при нажатии?
- Параллельная модификация: Два пользователя изменяют одни данные
- Пустые состояния: Поведение без данных
- Максимальный объём: Поведение с большими данными
Профессиональные советы
Совет 1: Тестируйте с реалистичными данными включая спецсимволы и множество языков.
Совет 2: Уделяйте больше внимания негативным сценариям — там QA приносит наибольшую пользу.
Совет 3: Ведите личный чеклист найденных багов. Паттерны повторяются между проектами.
Ключевые выводы
- Систематическое тестирование охватывает функциональные, интеграционные, аспекты безопасности и производительности
- Негативные тест-кейсы выявляют больше багов
- Проверяйте и UI, и базовые данные
- Документируйте с чёткими шагами воспроизведения
- Создавайте личные чеклисты на основе обнаруженных паттернов