это основной инструмент при создании
Компиляторы[,,] - это основной инструмент при создании программного обеспечения, поэтому их надежность особенно важна. Наряду с другими методами верификации и валидации для компиляторов, тестирование попрежнему остается важным элементом в семье этих методов. Необходимость автоматизации тестирования компиляторов также представляется очевидной, поскольку реальные объемы добротных наборов тестов и сложность анализа результатов весьма велики. Подход UniTesK [] является методологий построения надежного и качественного ПО на основе использования моделей этого ПО. UniTesK использует модельный подход в следующих целях:
- для построения критериев правильности реализации ПО,
- для построения критериев полноты и эффективности проверки качества ПО,
- для построения входных тестовых данных и процедур анализа результатов целевого ПО.
- Построение абстрактной модели или спецификации поведения целевой системы.
- Извлечение тестового оракула (т.е. процедуры анализа результата целевой системы) из спецификации.
- Разбиение пространства входных данных целевой системы на домены,
- Проектирование критерия тестового покрытия в терминах абстрактной модели.
- Интеграция сгенерированных и вручную написанных компонентов тестовой системы.
-
Пропуск тестов, включающий
- анализ результатов целевой системы при помощи оракулов;
- измерение тестового покрытия в терминах модели/спецификации или в терминах реализации.
- Спецификации и модели обычно строятся на основе функциональных требований к системе, и часто структура спецификаций следует структуре требований, что позволяет явным образом связать требования к системе с результатами тестирования и метриками тестового покрытия.
- Спецификации и модели, а значит и тесты, могут разрабатываться до завершения реализации целевой системы, что сокращает общее время разработки ПО.
- Спецификации и модели обычно компактнее и проще реализации, что упрощает ре-юз и сопровождение как самих моделей, так и тестов, которые строятся на их основе.
- Достижение исчерпывающего покрытия в соответствии с критериями, определенными на спецификациях и моделях, как правило, обеспечивает уровень покрытия реализации, сравнимый с уровнем, достигаемым при традиционном тестировании, но за счет существенно меньших трудозатрат.
Целевое ПО в этих проектах принадлежало к различным классам систем, предоставляющих процедурный интерфейс:
- ядра операционных систем,
- телекоммуникационные протоколы,
- серверы,
- run-time поддержка компиляторов и отладчиков.
- Построение абстрактной модели входных данных целевой системы.
- Проектирование критерия тестового покрытия в терминах абстрактной модели.
- Интеграция сгенерированных и вручную написанных компонентов тестовой системы.
-
Пропуск тестов, включающий
- анализ результатов целевой системы при помощи оракулов;
- измерение тестового покрытия в терминах модели/спецификации или в терминах реализации.
-
Построить для тестируемого оптимизатора представительное множество тестовых воздействий следующим образом:
- построить абстрактную модель входных данных оптимизатора;
- в терминах абстрактной модели сформулировать критерий покрытия этих входных данных;
- перебрать соответствующие тестовые воздействия;
-
Протестировать оптимизатор следующим образом:
- пропустить тесты через компилятор при активированном тестируемом оптимизаторе;
- вынести вердикт относительно сохранения семантики тестов после оптимизации.