Что тест содержит

dbStart 

Стандартный, перечисляем в нем все нужные таблички БД — folk, device. 

Etalon

Эксель со страницами:

Пример страницы "Поиск":





Q_1Q_2...Q_N
ФИО...Автор измененийIDЕЛЕНАТест... Query N
Морозова Елена Викторовна

11

1
Галкина
Тест211
1

Пример страницы "Сортировка"




S_1S_2...S_N
ФИО...IDsurname ASCpatronymic DESC...Пол
Морозова Елена Викторовна
121
 1
Галкина
212
 1


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

Как работает тест

  1. Однократно загружает все записи из dbStart, в котором информация представлена в обычном для БД виде.
  2. Проверяет все одиночные запросы для каждой страницы из etalon, сравнивая полученные записи с ожидаемыми (напротив которых для данного запроса стоят единички в Etalon).
  3. Генерирует сложные тест-кейсы для всех возможных парных комбинаций функций поиска, фильтрации и сортировки. (Единственная невозможная пара - это одновременное использование Поиска и Расширенного Поиска). Пример: "Поиск" + "Фильтрация" или "Расширенный поиск" + "Фильтрация по полю". 
  4. Рассчитывает на основе эталона ожидаемое значение результата поиска для сгенерированных кейсов.
  5. Для сложных кейсов есть ограничения:
    1. Максимальное количество кейсов для пар поисковых запросов – 80% от общего числа кейсов. 
    2. Максимальное количество кейсов для троек поисковых запросов – 50% от общего числа кейсов. 

Логирование

Для каждого тест-кейса тест пишет в лог:

Алгоритм для генерации кейсов

  1. Берем декартово произведение для каждой колонки каждого листа с каждой колонкой каждого листа.
  2. Случайным образом выбираем 80% и 50% результирующих кейсов в качестве пар и троек.

Опции для фильтрации по колонкам

Фильтрация по текстовому полю:

  1. EMPTY – поле пустое.
  2. NOT_EMPTY – поле непустое.
  3. RE[] – аналог фильтрации "Выражение" в интерфейсе, в квадратных скобках указывается поисковый запрос вида [Иванов %].

Фильтрация по дате:

  1. EMPTY – поле пустое.
  2. NOT_EMPTY – поле непустое.
  3. DEQ[] – проверка на совпадение с конкретной датой, в квадратных скобках указывается дата вида [01.01.2012].
  4. DIN[] – проверка на то, что дата находится в указанном интервале, в квадратных скобках указывается интервал дат вида [01.11.2011;02.12.2011].

Фильтрация по булевскому значению (да/нет):

  1. EMPTY – поле пустое.
  2. NOT_EMPTY – поле непустое.
  3. BV[] – проверка на значение флага, в квадратных скобках указывается значение вида [true] или [false].

Фильтрация по enum-полю:

  1. EMPTY – поле пустое.
  2. NOT_EMPTY – поле непустое.
  3. E[] – проверка на значение поля, в квадратных скобках указываются литеры вида [MALE,FEMALE].