Re: Генерирование тестов
От: Дмитрий Писаренко Россия http://dmitripisarenko.me
Дата: 05.03.11 19:17
Оценка:
Здравствуйте!

Если кому интересно, вот моё решение проблемы: Эту задачу можно разделить на 2 части:

1) Составление перечня всех возможных ситуаций в виде таблицы истинности.

2) Определение ожидаемого поведения для каждой ситуации (строки таблицы истинности из пункта 1).

Первый пункт реализуется относительно просто, при условии, что описание ситуации можно свести к набору булевых переменных. Небулевые переменные мне пока были не нужны.

Таблица истинности для булевых переменных состоит из 2^N строк (комбинаций), где N — количество переменных (2 для одной, 4 для двух, 8 для трёх и т. д.).

Второй пункт можно реализовать следующим образом:

Сначала надо формализовать описание ожидаемого поведения системы при помощи Drools. Например вот так:

import java.util.List;

import api.Situation;

global List outErrorCodes;

rule "01"
    when
        Situation( condition3 == false);        
    then 
        outErrorCodes.add("ERROR_CODE1");
end

rule "02"
    when
        Situation(condition1 == true, condition2 == true);
    then
        outErrorCodes.add("ERROR_CODE2");
end


Здесь у нас

а) 3 переменные, описывающие ситуацию (condition1, condition2 и condition3) и
б) одна переменная, описывающая ожидаемое поведение системы (outErrorCodes).

При условии, что значения переменных, описывающих ситуацию не зависят друг от друга, достаточно 8 раз подставить нужные значения в указанный файл, запустить правила, а потом вычитать ожидаемое значение из переменной outErrorCodes.

Это всё довольно тривиальные вещи, которые можно реализовать при помощи стандартных инструментов Drools.

Всего доброго

Дмитрий
Дмитрий Писаренко

http://dmitripisarenko.me
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.