Система генерации тестовых данных
TEST DATA GENERATION SYSTEM

Изобретение относится к вычислительной технике, в частности к тестированию программного обеспечения.
Известна система формирования тестов [Патент РФ №2012924 С1 -ФОРМИРОВАТЕЛЬ ТЕСТОВ / Гремальский Анатолий Александрович, Беэан Виорел Евтемьевич, Рошка Андрей Алексеевич опубл. 15.05.1994], состоящая из генератор псевдослучайных кодов, мультиплексор выдачи теста, генератор случайной последовательности, блок памяти последовательности кодов микротестов, блок управления.
Недостатком данной системы является наличие генератора случайных последовательностей, что приводит к недостаточной достоверности формируемых тестов, а, так же, к увеличению времени подбора нужных тестовых наборов.
Наиболее близким по совокупности признаков является способ формирования тестов [Патент РФ №2261471 С1 - СПОСОБ ФОРМИРОВАНИЯ ДИАГНОСТИЧЕСКИХ ТЕСТОВ / Страхов А.Ф., Страхов О.А., Палькеев Е.П., Белокрылов В.Д. (RU) опубл. 27.09.2005], основанный на формировании комбинаций входных тестовых сигналов с заданными сочетаниями параметров сигналов и с заданными последовательностями подачи входных сигналов, соответствующими подаче входных сигналов при штатной работе реальных диагностируемых изделий данного типа, а также на определении параметров сочетаний выходных сигналов для выполнения каждой комбинации входных тестовых сигналов.
Устройство по данному способу имеет недостатки: ограниченная область применения и недостаточная достоверность формируемых тестов, а, так же, быстродействие, из-за использования метода полного перебора.
Изобретение направлено на совершенствование технологии генерации тестовых данных для тестирования программных продуктов, повышение быстродействия и качества генерации тестов.
Это достигается тем, что в системе генерации тестовых данных содержащей блок выделения методов, соединенный с блоком выделения дуг, счетчик связей, блок тестирования дуги и блок фиксации отработки, блок выделителя дуг соединен со счетчиком, к которому также присоединен блок фиксации отработки, счетчик, соединен с блоком тестирования дуги, причем блок тестирования блок тестирования дуг соединен с генератором функции приспособленности, который соединен с блоком генерации популяции, который, в свою очередь, подсоединен к генератору измененной популяции, имеющий связь с блоком фиксации отработки, а блок фиксации отработки соединен встречной связью с генератором измененной популяции.
Согласно изобретению, первым действием является выявление методов и списка всех дуг, которые необходимо покрыть тестовыми данными (наборами). Функцией приспособленности будет отношение кол-ва дуг, приведших к дуге на текущем тестовом наборе, к общему количеству дуг, которые дают возможность привести к этой дуге. Популяции генерируются изменением входных значений. Скрещивание выбранных особей происходит оператором кроссовера, который выбирает случайным образом точку раздела, потомки генерируются путем обмена отброшенными частями. Критерий остановки - установленное число поколений или схождение популяции.
Сущность изобретения иллюстрируется иллюстрациями, где на фиг. 1 изображена структурная схема системы генерации тестовых данных с использованием генетического алгоритма. На фиг. 2 показана диаграмма последовательностей. Фиг. 3 иллюстрирует блок-схему алгоритма для генерации тестовых данных.
Система содержит: блок 1 - выделитель методов, блок 2 - выделитель дуг, блок 3 -счетчик дуг, который осуществляет расчет кол-ва дуг, блок 4 - тестировщик дуг, осуществляет непосредственное тестирование дуги. Блоки 5, 6, 7 - осуществляют тестирование с использованием генетического алгоритма. Блок 5 - генератор функции приспособленности (фитнес функции), блок 6 - генерирует популяции, блок 7 генерирует измененные популяции данных. Блок 8 - является блоком фиксатором отработки, который проверяет необходимость завершения тестирования.
На диаграмме продемонстрирована последовательность интеграционного тестирования, при котором осуществляются поочередные вызовы методов, а затем возвраты с исключениями и нормальные возвраты. При этом критерием тестирования будет являться покрытие всех дуг (т.е. всех возможных передач управления между методами всех классов). Другими словами, для данной диаграммы последовательностей и тестируемым ПО тестовый набор удовлетворяет критерию покрытия дуг, если каждая дуга, которая представляет передачу сообщения, пройдет хотя бы один раз при выполнении на данном тестовом наборе. В целом необходимо, чтобы каждое сообщение в диаграмме было отправлено хотя бы один единственный раз.
Система работает следующим образом: на первом шаге происходит выделение списка всех дуг, которые необходимо покрыть тестовыми наборами. На втором шаге происходит генерация популяции данных. Функцию приспособленности определяем, как отношение числа дуг, приведших к конкретной дуге на текущем тестовом наборе, к общему числу всех дуг, которые могут привести к этой дуге, шаг 3 - оператора выбора, критерием останова является схождение популяции либо установленное число поколений, здесь происходит проверка пуст ли список дуг. Шаг 4 - выбирается необходимая дуга для проверки. Шаг 5 - выполнение программы на всех наборах данной конкретной популяции тестовых данных. На шаге 6 оператор выбора, проверка покрытия дуги. В шаге 7 происходит удаление текущей дуги, шаг 8 генерирует функцию приспособленности для новой популяции, текущей популяции присваивается значение новой. Шаг 9 - завершающий шаг, на котором находятся тестовые наборы данных. В системе присутствует блок генерации функции приспособленности, который соединен с блоком генерации популяции, который подсоединен к генератору измененной популяции, имеющий связь с блоком фиксации отработки, при чем блок фиксации отработки соединен встречной связью с генератором измененной популяции.
Данный метод генерации позволяет увеличить быстродействие, а также качество подбора тестовых данных. Генетический алгоритм осуществляют поиск баланса между эффективностью и качеством решений за счет «выживания сильнейших альтернативных решений», в неопределенных и нечетких условиях. Так же, имеет место быть универсальность метода, возможность использования его, как в тестировании интеграции программного обеспечения, тестировании интеграции ПО и для автоматического контроля микропроцессорных устройств.