|
Тестирование программ, работающих с СУБД, часто требует длительной загрузки тестового набора данных.
В принципе обычно всё организуется так, чтобы такая загрузка выполнялась как можно реже (в идеале не более одного раза).
Однако, тестирование грамотнее проводить на как минимум двух состояниях СУБД - пустой базе и "заполненной". Иногда "заполнений" может быть несколько.
И тут возникают проблемы:
Для решения этих проблем в izh_test был введён механизм "внутренних переменных" . В частности в такой внутренней переменной можно держать строку, указывающую на "состояние" СУБД.
Механизм использования этих переменных можно продемонстрировать следующим тестовым скриптом :
<test_script> <items> <if_property_not_equal> <name>db_state</name> <value>db_state_required_for_this_test</value> <items> .. fill db with right content .. </items> </if_property_not_equal> <set_property> <name>db_state</name> <value>db_state_changed_by_this_test</value> </set_property> 1. .. original test actions .. 2. .. actions to return DB content to original state db_state_required_for_this_test .. <set_property> <name>db_state</name> <value>db_state_required_for_this_test</value> </set_property> </items> </test_script> |
В приведённом примере тест сам знает какое состояние СУБД ему нужно и при необходимости сам заливает свои тестовые данные. Если же тест запускается после другого теста, который уже залил все необходимые данные, то соответственно и заливки не требуется.
Причём, строго говоря, выполнение команд скрипта должно продолжаться после
"1. .. original test actions .." |
"2. .. actions to return DB content to original state db_state_required_for_this_test ..". |
Тут получается определённая трудность с тем, как определить, испортил ли неудачный тест данные до такой степени, что их невозможно восстановить коротким скриптом. Пока непонятно как такую трудность решать. Возможно, только вручную указывая, когда нужно сбивать переменную - состояние СУБД, а когда нет. А в совсем запущенных случаях просто вручную чистить состояние всех внутренних переменных, заставляя систему явно перезаливать тестовые данные.
В дальнейшем планируется добавление специальных шаблонов типа "OnStartTest" и "OnFinishTest" в которых явно можно указать все предварительные и завершающие действия, которые должны выполняться для каждого теста входящего в пакет. В том числе в этих шаблонов можно перечислять действия связанные с поддержанием состояния СУБД
|