Верификации и тестированию подвергаются вычислительные (алгоритмические)
процессы, порождаемые программами.
В основу разрабатываемой автоматизированной учебно-исследовательской
системы верификации и тестирования программ включены следующие положения.
Вычислительный процесс (ВП), реализующий тот или иной метод преобразования информации через вычисление значений переменных по формулам и алгоритмам, может быть реализован как разными алгоритмами, так и описан на разных алгоритмических языках. Чтобы уйти от этого разнообразия предлагается использовать машинный код, задаваемый системой команд конкретного процессора (реального или виртуального), по которому на основе концепции вычислений [2] строится
графо-аналитическая модель (ГАМ) вычислительного процесса [3].
При построении ГАМ всё множество команд программы разбивается на замк-
нутые подмножества, образующие линейные, условные и объединительные верши-
ны, которые описываются примитивами в виде вырожденных кубических покрытий.
Далее, с использованием свойств ВП как графа, осуществляется построение комплексных кубических покрытий для всех переменных, подлежащих верификации в
анализируемых программах. При этом эталонное покрытие хранится в Базе знаний,
а покрытия верифицируемых программ (например студенческих) в Базе данных. Эти
покрытия и подлежат сравнению на эквивалентность [4].
Другой способ верификации основан на построении контролирующих тестов
вычислительных процессов, подлежащих сравнению и их эквивалентность устанавливается перекрёстным тестированием. При построении тестов используется понятие простой логической неисправности константного типа условий-предикатов (УП)
вычислительных процессов. Полнота контроля заданных константных неисправностей обеспечивает обход требуемых вершин и дуг графа ВП существенными значениями УП=TRUE’ \/ FALSE’. Для оценки полноты тестового контроля разработан и
реализован метод моделирования логических неисправностей путём их непосредственного внесения в машинный код программы через её исполнение [5].
|