/
Как работает комплексный тест на поиск
Как работает комплексный тест на поиск
Папка complex_search
в коде
Что тест содержит
dbStart
Etalon
feature.params.xml
dbStart
Стандартный, перечисляем в нем все нужные таблички БД — folk, device.
Etalon
Эксель со страницами:
Search
– соответствует обычному поиску.Extended Search
– соответствует расширенному поиску.Sorting
– сортировка.ByField
– фильтрация по колонкам (Field
— наименование поля из java-класса).
Пример страницы "Поиск":
Q_1 | Q_2 | ... | Q_N | ||||
ФИО | ... | Автор изменений | ID | ЕЛЕНА | Тест | ... | Query N |
---|---|---|---|---|---|---|---|
Морозова Елена Викторовна | 1 | 1 | 1 | ||||
Галкина | Тест | 2 | 1 | 1 | 1 |
Пример страницы "Сортировка"
S_1 | S_2 | ... | S_N | |||
ФИО | ... | ID | surname ASC | patronymic DESC | ... | Пол |
---|---|---|---|---|---|---|
Морозова Елена Викторовна | 1 | 2 | 1 | 1 | ||
Галкина | 2 | 1 | 2 | 1 |
- ID - поле, по которому будет сравнение, ID party.
- Слева от него - вся вспомогательная информация, которая может помочь при составлении кейсов.
- Query N - некий запрос, например, "Морозова". В тех ячейках, party которых запрос должен вернуть, ставится значение 1, в остальных пусто — запрос не возвращает этих контрагентов.
- Q_ID - уникальный идентификатор запроса в рамках всего теста. То есть первая строка в эталоне — это просто названия тестов. Они нужны, если что-то упадет, чтобы понять, что именно развалилось. Правила наименования — без русских букв и пробелов. А в остальном как хотите, главное, чтобы название было уникально
ID записей в Etalon и в dbStart совпадают.
feature.params.xml
Файл с параметрами для теста. Позволяет настраивать, какие именно тест-кейсы будут проверены.
Пример файла:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="toComplexSearchDescriptor.test_51_01_complex_search" parent="toComplexSearchDescriptor.party"> <constructor-arg index="0" value="BySurname:RegExp_All + ByActualityDate:EMPTY"/> </bean> </beans>
При запуске теста с таким конфигом будут проверены не все комбинации, а только конкретная – запрос с Q_ID = RegExp_All с листа BySurname + запрос с Q_ID = EMPTY с листа ByActualityDate
Как работает тест
- Однократно загружает все записи из dbStart, в котором информация представлена в обычном для БД виде.
- Проверяет все одиночные запросы для каждой страницы из etalon, сравнивая полученные записи с ожидаемыми (напротив которых для данного запроса стоят единички в Etalon).
- Генерирует сложные тест-кейсы для всех возможных парных комбинаций функций поиска, фильтрации и сортировки. (Единственная невозможная пара - это одновременное использование Поиска и Расширенного Поиска). Пример: "Поиск" + "Фильтрация" или "Расширенный поиск" + "Фильтрация по полю".
- Рассчитывает на основе эталона ожидаемое значение результата поиска для сгенерированных кейсов.
- Для сложных кейсов есть ограничения:
- Максимальное количество кейсов для пар поисковых запросов – 80% от общего числа кейсов.
- Максимальное количество кейсов для троек поисковых запросов – 50% от общего числа кейсов.
Логирование
Для каждого тест-кейса тест пишет в лог:
- Для одиночных запросов – "Q_ID".
- Для комбинированных запросов – "SheetName1:Q_ID1 + SheetName2:Q_ID2".
- Результат проверки запроса (ожидалось X записей, получено Y записей).
- В случае проверки сортировки записи выводятся в том порядке, в котором их ожидали получить и рядом в порядке, как они реально получены.
- В случае возникновения эксепшена в процессе поиска/фильтрации сортировки тест должен падать и выводить стектрейс эксепшена в лог.
Алгоритм для генерации кейсов
- Берем декартово произведение для каждой колонки каждого листа с каждой колонкой каждого листа.
- Случайным образом выбираем 80% и 50% результирующих кейсов в качестве пар и троек.
Опции для фильтрации по колонкам
Фильтрация по текстовому полю:
- EMPTY – поле пустое.
- NOT_EMPTY – поле непустое.
- RE[] – аналог фильтрации "Выражение" в интерфейсе, в квадратных скобках указывается поисковый запрос вида [Иванов %].
Фильтрация по дате:
- EMPTY – поле пустое.
- NOT_EMPTY – поле непустое.
- DEQ[] – проверка на совпадение с конкретной датой, в квадратных скобках указывается дата вида [01.01.2012].
- DIN[] – проверка на то, что дата находится в указанном интервале, в квадратных скобках указывается интервал дат вида [01.11.2011;02.12.2011].
Фильтрация по булевскому значению (да/нет):
- EMPTY – поле пустое.
- NOT_EMPTY – поле непустое.
- BV[] – проверка на значение флага, в квадратных скобках указывается значение вида [true] или [false].
Фильтрация по enum-полю:
- EMPTY – поле пустое.
- NOT_EMPTY – поле непустое.
- E[] – проверка на значение поля, в квадратных скобках указываются литеры вида [MALE,FEMALE].
, multiple selections available,
Related content
Как работают простые тесты на поиск
Как работают простые тесты на поиск
Read with this
Как собрать проект и запустить тесты
Как собрать проект и запустить тесты
Read with this
Работа со списком клиентов
Работа со списком клиентов
Read with this
Тесты на поиск
Тесты на поиск
Read with this
Почему не работает расширенный поиск?
Почему не работает расширенный поиск?
Read with this
Карточка клиента (набор полей)
Карточка клиента (набор полей)
Read with this