Что тест содержит
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].