Технология Azov автоматизации массового создания тестов работоспособности


Методическая основа технологии - часть 3


Код для получения этого значения заносится в базу данных.

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

Основная процедура построения теста для заданного интерфейса выглядит так.

  • В начало теста вставляется код инициализации для работы данной операции.

  • Затем строятся значения всех ее параметров. Для каждого типа аргумента вычисляется значение его порождающего типа (базового типа для указателей, ссылок и пр.), которое затем преобразуется в значение аргумента.

    • Если значение типа определено явно, используется это значение.

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

    • Значения других типов строятся автоматически. Для примитивных типов (числа, символы, строки) используются некоторые простые генераторы значений. Значения производных типов — указателей, ссылок, массивов и пр. — строятся из значений их базовых типов. Для перечислений используется первое возможное значение. Объекты структурных типов строятся по их полям, причем поля заполняются по этой же процедуре.

  • Вставляется вызов тестируемой операции с построенными аргументами.

  • Затем вставляется код финализации для всех построенных значений, для которых это необходимо.

  • В конце вставляется код финализации после работы тестируемой операции.

  • Для всех вызовов операций, использованных в коде, вставляются проверки ограничений на их результаты, указанные в соответствующих специализированных типах. Кроме того, для всех указателей, которые возникают при вызовах и используются в дальнейшем, проверяется их неравенство NULL.

Несколько более сложные действия выполняются при построении тестов для защищенных методов классов, которые нельзя вызвать из произвольного места. В этом случае генерируется класс, наследующий класс, в котором определен тестируемый метод. В генерируемом классе определяется общедоступный метод, являющийся оберткой унаследованного защищенного метода. В рамках построенного теста вызывается именно этот общедоступный метод.

Дополнительная работа необходима для построения значения типа, являющегося абстрактным, неполностью определенным классом. В этом случае, если нет возможности использовать объект одного из наследников этого абстрактного класса, такой класс-наследник генерируется. В нем все абстрактные (чисто виртуальные) методы определяются простейшим образом, и в качестве значения нужного типа используется объект этого класса-наследника.




Начало  Назад  Вперед



Книжный магазин