Введение к работе
Актуальность
Программное обеспечение (ПО) вычислительных систем характеризуется наличием большого количества ошибок Даже при том, что многие ошибки, которые изначально присутствуют в новом ПО, обнаруживаются и исправляются до того, как оно попадает к пользователю, остающиеся продолжают вызывать ненужные затраты и потери времени в течение еще длительного периода после завершения разработки ПО Таким образом, важнейшей задачей является повышение качества тестирования программных продуктов
Структурное тестирование программного продукта может быть сведено к тестированию вычислительного процесса (ВП), порождаемого программой при интерпретации ее команд вычислительной машиной Вычислительный процесс задается в виде графо-аналитической модели (ГАМ), под ГАМ при этом понимается описание вычислительного процесса в виде вершин, содержащих аналитические формулы, и дуг, образующих связи между вершинами
Во время тестирования ВП следует каким-либо образом оценить
контротирующие свойства используемых входных наборов, т е провести анализ
качества тестов Одним из решений данной задачи является создание
автоматизированной системы, проверяющей эффективность тестирования ВП
Такого рода система была разработана в рамках данной диссертации Эта система
является составной частью учебно-исследовательской системы
автоматизированного проектирования (САПР), используемой для автоматизации тестирования и верификации вычислительных процессов
Для оценки качества структурного тестирования были в свое время предложены разнообразные критерии покрытия тестируемого кода, в частности, покрытия операторов, ветвей, путей и т д Позднее был предложен метод мутационного тестирования, который, однако, в широком смысле также является подвидом анализа покрытия кода
В каждом конкретном случае из большого числа существующих методов оценки качества тестирования можно выбрать какой-либо наиболее подходящий Если исходить из задачи проектирования учебно-исследовательской САПР, то все упомянутые методы в том виде, в котором они чаще всего применяются, имеют ряд недостатков
Текст программы, порождающей тестируемый ВП, анализируется на уровне исходного языка высокого уровня (ЯВУ), для сбора нужной статистической информации необходима перекомпиляция, во время которой в программу вносится некоторая дополнительная информация - например, флаги, с помощью которых потом можно было бы восстановить путь исполнения Следовательно, такие системы проверки качества тестирования должны тесно взаимодействовать с компиляторами для всех возможных ЯВУ, на которых пишутся программы, порождающие тестируемые ВП
Подробное исследование свойств применяемых тестовых
последовательностей достигается, как правило, путем увеличения объема
собираемой информации и/или усложнения алгоритмов ее обработки, что могло бы отрицательным образом сказаться как на времени разработки системы, так и на ее итоговой производительности
Следовательно, возникает необходимость в создании нового критерия оценки качества тестовых наборов Можно сделать вывод, что разработка автоматизированной системы, оценивающей эффективность тестирования вычислительных процессов с помощью нового критерия качества тестирования, является актуальной задачей При этом должны быть соблюдены следующие условия
1)Все необходимые изменения должны вноситься в машинный код программы, порождающей тестируемый ВП, благодаря чему исчезнет необходимость перекомпиляции программы, в целом это позволит снизить зависимость системы от какого-либо конкретного ЯВУ
Объем используемой информации должен быть достаточным, чтобы получить адекватное представление о качестве используемых тестовых наборов, и при этом время работы системы должно быть небольшим
Общий алгоритм работы системы должен быть относительно легко реализуемым и при этом эффективным, для достижения этого требуется учитывать особенности тестируемых вычислительных процессов учебно-исследовательских программ, в частности, короткое время их выполнения
Целью работы является создание на основе нового критерия оценки качества тестовых наборов автоматизированной системы, способной за приемлемое время производить анализ качества тестирования вычислительных процессов учебно-исследовательских программ
Основные задачи работы состоят в следующем
Анализ существующих критериев качества тестирования и разработка на их основе нового критерия, позволяющего с помощью относительно простых алгоритмических решений и без значительных временных затрат эффективно оценивать качество входных наборов, применяемых при тестировании вычислительных процессов;
Разработка методов анализа и модификации машинного кода, позволяющих применять новый критерий качества тестовых наборов и достигать при этом максимальной производительности работы автоматизированной системы, оценивающей эффективность тестирования вычислительных процессов,
Создание на основе разработанных методов автоматизированной системы, позволяющей оценивать и повышать эффективность тестирования, данная система будет являться подсистемой учебно-исследовательской САПР верификации и тестирования вычислительных процессов
Методы исследования
В соответствии с целями и задачами диссертационной работы объектом исследования является вычислительный процесс программы, а предметом
исследования - моделирование в данном процессе неисправностей для оценки качества используемых при тестировании входных наборов
В работе использованы методы моделирования, технической диагностики, теория графов, теория множеств и теория программирования
В работе получены следующие научные результаты, выносимые на зашиту
Предложен новый критерий оценки качества тестовых наборов - критерий покрытия простых логических неисправностей в условиях-предикатах вычислительных процессов
Предложен метод прямого моделирования простых логических неисправностей, обеспечивающий базовую функциональность автоматизированной системы моделирования неисправностей
Предложены два дополнительных метода метод имитации опасных неисправностей и метод отладки бесконечных циклов, используемые в различных ситуациях вместо метода прямого моделирования неисправностей для предотвращения разного рода аварий
На основе перечисленных методов предложен алгоритм работы автоматизированной системы моделирования неисправностей, являющейся частью учебно-исследовательской САПР верификации и тестирования вычислительных процессов, и используемой для проверки и повышения эффективности тестирования
Практическое значение работы состоит в следующем
Дан пример использования логических неисправностей определенного вида для оценки качества тестовых наборов
Реализована и внедрена в учебный процесс автоматизированная система моделирования неисправностей, являющаяся подсистемой учебно-исследовательской САПР и призванная решать ряд задач при проведении тестирования ВП Полезность данной системы определяется возможностью сопоставления моделируемых неисправностей и используемых тестовых входных наборов, такое сопоставление позволяет, в частности, выполнять следующее
находить среди используемых тестовых наборов те, которые не проверяют новых по отношению к остальным наборам неисправностей и могут быть отбракованы,
находить среди моделируемых неисправностей те, которые не были обнаружены в процессе тестирования, анализ предоставленной информации о местоположении непроверенных неисправностей должен помочь пользователю системы добавить к имеющимся тестовым наборам дополнительные, которые могли бы обнаружить оставшиеся неисправности, таким образом, возможно циклическое улучшение качества тестирования до тех пор, пока не останется непроверенных неисправностей или пока пользователь не сочтет, что дальнейшее улучшение не является необходимым
Достоверность научных положений, выводов и практических рекомендаций диссертационной работы подтверждается детальным анализом проблем, связанных с моделированием неисправностей, корректным обоснованием предлагаемых решений, положительными результатами при обсуждении работы на различных научных конференциях, а также результатами использования на практике разработанных в рамках диссертации методов
Реализация результатов работы
Результаты, полученные в диссертации, используются на практике в учебном процессе кафедры Информатики и Прикладной Математики СПбГУ ИТМО, а также в ФГУП "Санкт-Петербургское ОКБ "Электроавтоматика"
Апробация диссертации
Основные положения диссертационной работы докладывались на XXXIV научной и учебно-методической конференции СПбГУ ИТМО (Санкт-Петербург, 2005), II конференции молодых ученых СПбГУ ИТМО (Санкт-Петербург, 2005), XXXV научной и учебно-методической конференции СПбГУ ИТМО (Санкт-Петербург, 2006), III конференции молодых ученых СПбГУ ИТМО (Санкт-Петербург, 2006)
Публикации
По теме диссертации опубликованы 5 печатных работ, в том числе три статьи в научных сборниках и две статьи в трудах научных конференций
Структура диссертации
Диссертация состоит из введения, четырех глав и заключения Общий объем диссертации составляет 159 страниц Список литературы содержит 71 наименование Работа иллюстрирована 28 рисунками