покрытие xml документа переменными и путями - PullRequest
1 голос
/ 12 марта 2010

Что касается покрытия, у меня есть набор переменных времени выполнения из моей программы. Бывает, что я получаю его из серии казней (автоматическое тестирование). то есть. его vector<vector<var,value>>

Я имею ограниченный набор переменных с ожидаемыми значениями и генерирую комбинацию s, то есть у меня есть vector<vector<var,value>(smaller than the execution vector)>. Теперь мне нужно сравнить и сказать, какая из сгенерированных мной комбинаций была точно выполнена в одном из тестов.

Мой алгоритм O (n ^ 4). Есть ли способ обуздать это? Что-то вроде пересечения множества. Я использую Java и векторы из-за безопасности потоков.

Eloboration: в моей программе очень большой набор переменных. Мне все равно. Все, что меня волнует, - это набор переменных со значениями, которые я знаю о них (значения Edge и значения, заданные разработчиком). Что я делаю, так это генерирую набор комбинаций для этих переменных со значениями, которые, я думаю, могут иметь смысл, поскольку после автоматического теста будет полезно сказать, что эти комбинации были исключены, а некоторые - нет.

Поскольку тест автоматизирован, у меня есть серия (<20) выполнений со всеми переменными и значениями в DS, которые я дал в вопросе. Моя проблема заключается в сравнении небольшого набора комбинаций с большим набором. Хэш может работать, если нет. переменных одинаковы, я полагаю. Мой алгоритм - грубая сила </p>

1 Ответ

0 голосов
/ 12 марта 2010

Я бы сгенерировал хэши из комбинации пар, так что если две комбинации равны, то они имеют одинаковый хеш. Если ваш набор ожидаемых комбинаций невелик, вы можете использовать этот хеш как ключ к Hashmap.

Для каждой комбинации в векторе выполнения сгенерируйте ключ хеша и найдите его в хэш-карте. Поиск по хэш-карте имеет амортизированное время O (1), поэтому для n записей выполнения и k ожидаемых комбинаций общее время составляет O (n + k).

Чтобы избежать коллизий, нужно соблюдать осторожность при выборе хэш-функции, но это не должно быть слишком сложной проблемой.

...