Тестирование софта - статьи


         

к различным классам систем, предоставляющих


Целевое ПО в этих проектах принадлежало к различным классам систем, предоставляющих процедурный интерфейс:
  • ядра операционных систем,
  • телекоммуникационные протоколы,
  • серверы,
  • run-time поддержка компиляторов и отладчиков.
Следуя общей схеме процесса UniTesK, описанной выше, удалось полностью автоматизировать работы фаз 2, 3, 5, 6. Фаза 1 выполняется вручную, фаза 4 - полуавтоматически. Перенос опыта и инструментов UniTesK на тестирование компиляторов вскрыл ряд проблем. В этой статье мы опишем применение этого подхода к тестированию оптимизирующих модулей в компиляторах. Главная проблема здесь заключается в том, что нет эффективного способа создавать для оптимизатора такие спецификации, из которых можно было бы извлекать эффективные оракулы. Поэтому в предлагаемом подходе мы используем лишь следующие фазы процесса UniTesK:
  1. Построение абстрактной модели входных данных целевой системы.
  2. Проектирование критерия тестового покрытия в терминах абстрактной модели.
  3. Интеграция сгенерированных и вручную написанных компонентов тестовой системы.
  4. Пропуск тестов, включающий
    • анализ результатов целевой системы при помощи оракулов;
    • измерение тестового покрытия в терминах модели/спецификации или в терминах реализации.
В рамках предлагаемого подхода оракул проверяет только сохранение семантики программы во время оптимизации. Для этого в качестве тестовых воздействий на оптимизатор берутся такие программы, семантика которых полностью представляется их трассой. Такое свойство тестов позволяет свести задачу проверки сохранения семантики к сравнению трассы с некоторой эталонной трассой. Итак, суть подхода такова:
  • Построить для тестируемого оптимизатора представительное множество тестовых воздействий следующим образом:
    • построить абстрактную модель входных данных оптимизатора;
    • в терминах абстрактной модели сформулировать критерий покрытия этих входных данных;
    • перебрать соответствующие тестовые воздействия;
  • Протестировать оптимизатор следующим образом:
    • пропустить тесты через компилятор при активированном тестируемом оптимизаторе;
    • вынести вердикт относительно сохранения семантики тестов после оптимизации.
В следующих разделах статьи описываются детали процесса тестирования оптимизаторов в соответствии с предлагаемым подходом.В конце приводятся экспериментальные данные по применению методологии, обсуждаются область применимости и ограничения этого подхода и приводится обзор близких работ. Предварительный вариант настоящей статьи был доложен на международном семинаре ``Понимание программ''[].

Содержание  Назад  Вперед