RECT/Tests/Reports
Обработка результатов тестирования
Представление результата одного теста в виде xml
Решено было результат каждого теста хранить в xml-формате.
При проведении тестирования на данный момент создается директория results_xml, в ней директория с именем, соответствующим дате проведения тестирования, а в ней еще одна директория с именем results + трехзначное число, равное порядковому номеру проведения в этот день тестирования. Сделано это для отделения результатов одних и тех же тестов друг от друга. Впоследствии имена поддиректорий, особенно последней, будут изменены на более "красивые".
Описание теста помещается в тег TESTDATA, который включает следующие тэги
- TIMENDATE - время проведения теста
- SHARES - используемые тестом серверов
- SLAVES - используемые тестом клиентов
- TEST - сам теста
- RESULT - результат теста
TIMENDATE включает следующие тэги:
- STARTTIME - начало выполнения всего suite, в котором находился сам тест
- TESTTIME - время прохождения этого теста
- DATE - дата проведения этого теста
SHARES включает следующие тэги:
- SHARE - описание каждого сервера тэгами:
- DESCRIPTION
- SYSINFO - значение указываемого параметра для share в yaml-конфиге. Значение по умолчанию - Windows.
SLAVES включает следующие тэги:
- SLAVE - описание каждого клиента тэгами:
- DESCRIPTION
- MOUNTOPTIONS, включающий тэги:
- OPTION с аттрибутами name, равному вводимой опции, и value, равному значению опции, если оно есть
- SYSINFO - значение указываемого параметра для share в yaml-конфиге. Значение по умолчанию - Windows. Аттрибутами данного тэга являются Cifstype, Sysname, Nodename, Release, Version, Machine, значения которых есть вывод slave.sysinfo()
TEST включает следующие тэги:
- NAME с аттрибутами modulename(имя модуля), classname(имя класса), methodname(имя самого теста)
- DESCRIPTION с аттрибутами shortdescr(краткое описание), fulldescr(полное описание)
RESULT включает следующие тэги:
- EXCEPTION, если тест упал, с аттрибутами code и reason
У тэга RESULT есть аттрибут value, равный значению результата теста (OK, FAIL, ERROR)
Пример xml
<TESTDATA>
<TIMENDATE>
<STARTTIME>16:59:52</STARTTIME>
<TESTTIME>0.0398</TESTTIME>
<DATE>2009-01-22</DATE>
</TIMENDATE>
<SHARES>
<SHARE sys="L">
<DESCRIPTION>//server/upload</DESCRIPTION>
<SYSINFO>Linux</SYSINFO>
</SHARE>
</SHARES>
<SLAVES>
<SLAVE sys="L">
<DESCRIPTION>LS -t:tcp -h localhost -p 13666 -t 10000</DESCRIPTION>
<MOUNTOPTIONS>
<MOUNTOPTION name="noperm" value=""/>
<MOUNTOPTION name="guest" value=""/>
<MOUNTOPTION name="setuids" value=""/>
<MOUNTOPTION name="forcemand" value=""/>
</MOUNTOPTIONS>
<SYSINFO Cifstype="CIFSETER" Sysname="Linux" Nodename="ximinez.saratov.etersoft.ru" Release="2.6.27-std-def-alt2" Version="#1 SMP Mon Nov 10 17:47:17 UTC 2008" Machine="i686">Linux</SYSINFO>
</SLAVE>
</SLAVES>
<TEST>
<NAME modulename="SetLockLL" classname="SingleSetLockOnLockL" methodname="testSetWriteLockOnReadLock"/>
<DESCRIPTION shortdescr="Set a write lock on a read lock (Denied) (shares: ['share1'], slaves: ['slave1'])" fulldescr="Set a write lock on a read lock (Denied) (shares: ['share1'], slaves: ['slave1'])"/>
</TEST>
<RESULT value="FAIL">
<EXCEPTION code="<type 'exceptions.AssertionError'>" reason="Error not raised"/>
</RESULT>
</TESTDATA>
Представление обработки результатов
Обработка полученных xml-к планируется следующая("+" отмечено, что сделано):
- join - комбинирование их в одну xml-ку (+)
- split - соответственно разбиение полученной ранее общей xml-ки на отдельные тесты(+)
- compare - сравнение полученных (замечу: как общую xml-ку, так и отдельные xml-ки) xml-к, т.е. получение таблицы с результатами о всех выбранных тестах (+)
Общий вид использования сейчас:
xml-run <option> -i <list_of_xml>
где <option> это ['join', 'split', 'compare']
Правда для опции compare вид команды такой:
xml-run <option> -m <mode> -i <list_of_xml>
где <mode> это ['html'(+), 'txt', 'wiki'(+)] - формат конечного отчета. Сделано пока только для html, wiki.
Если не указывать -m <mode>, по умолчанию отчет будет генерироваться в виде html
Необязательным параметром команды для опции join и compare является также '-o' <result_file> - для указания выходного файла.
Пока конечный результат для html выглядит как страница с 2 таблицами: первая с самими результатами, вторая с перечислением используемых конфигов.