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

         

Сопоставление с другими подходами к автоматизации создания тестов


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

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

Можно выделить следующие источники для построения тестовых данных, тестовых воздействий и их последовательностей.

  • Структура тестируемой системы.
    • Синтаксис сигнатур тестируемых операций и/или разбиение входных данных на области.

    • Структура типов данных.

    • Связи по типам — использование одних и тех же типов данных для параметров и результатов тестируемых операций и др.

    • Структура кода (прежде всего, потока управления) операций.

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

    • Ограничения, связанные с каждой операцией отдельно от остальных.

    • Ограничения, связывающие поведение нескольких операций.

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



    Источник данных для проверки Нет проверок Требование отсутствия исключений и серьезных сбоев Ограничения типов данных Ограничения на одну операцию Совместные ограничения для нескольких операций
    Источник тестовых воздействий
    Синтаксис сигнатур и/или разбиение входных данных Методы и инструменты генерации тестов на основе покрывающих наборов[11]
    Структура типов OTK/Pinery [12,13] Инструменты Parasoft (Jtest, C++test, .TEST [14])

    Ограничения в виде утверждений, постусловий и инвариантов

    JCrasher [15]
    Azov
    Связи по типам
    Методы генерации структурных тестов на основе генетических алгоритмов [16-18]
    Структура потока управления CodeScroll API Tester, Suresoft Technologies [19]
    Методы генерации структурных тестов с использованием разрешения ограничений (constraint solving) [20,21]
    Ограничения типов данных Pinery [13] Azov

    Ограничения в виде инвариантов данных типа и действий по корректному построению этих данных

    T-VEC Test Vector Generation System [22]

    Ограничения в виде постусловий и инвариантов

    Ограничения на одну операцию
    Lurette [23]
    Совместные ограничения для нескольких операций
    Методы и инструменты генерации тестов на основе автоматных моделей, включая Stateflow, Statecharts, SDL, LOTOS, Lustre или специализированные нотации [24,25]
    UniTESK [26]

    Таблица 2. Классификация подходов к автоматическому построению тестов.

    Классификация имеющихся на рынке инструментов, а также ряда исследовательских методов, использующих автоматическую генерацию тестов, на основе выполняемых проверок и видов данных, используемых для построения тестов, показана в Табл. 2. Технология Azov в этой таблице попадает сразу в несколько клеток, поскольку сочетает при генерации тестов использование структуры типов, связей по типам, действий по инициализации данных типа и (иногда) специфических действий по инициализации системы перед использованием определенной операции. Для проверок используются ограничения типов результатов и фактор отсутствия сбоев при вызове тестируемой операции.

    Заметим, что кроме технологии Azov связи по типам используются при генерации тестов только рядом методов построения структурных тестов на основе генетических алгоритмов [19-21].



    Содержание раздела