В статье представлен метод SemaTESK автоматической генерации множеств тестов для фронт-эндов в трансляторах. Метод ориентирован на тестирование анализаторов статической семантики. Наиболее известные методы генерации семантических тестов работают путем фильтрации предварительно сгенерированных более или менее случайным образом синтаксических тестов. В отличие от этих методов, SemaTESK позволяет непосредственно генерировать тесты для контекстных условий. Это очень ощутимо сокращает время генерации и позволяет достигать сформулированные в статье критерии полноты. Предложенный метод специфицирования статической семантики позволяет формализовать неформальные требования, содержащиеся в нормативных документах (например, в стандартах). Метод включает в себя язык SRL для компактного формального специфицирования контекстных условий, а также инструмент STG для эффективной генерации множеств тестов из SRL-спецификаций. Метод SemaTESK был успешно применен в ряде проектов, в том числе по тестированию анализаторов статической семантики языков C и Java.
We present an automatic method, named SemaTESK, for generation of test sets for a translator front end. We focus on the validation and verification of static semantics checker. Most the know methods for semantics test generation produce test suites by filtering a pre-generated set of random texts in the target language. In contrast, SemaTESK allows to generate tests for context conditions directly. It significantly reduces generation time and allows reaching completeness criteria defined in the paper. The presented method to specify static semantics allows to formalize informal requirements described in normative documents (e.g. standard). The method includes SRL notation for compact formal specification of context conditions and STG tool for efficient generation of test suite from SRL specification. The SemaTESK method has been used in a number of projects, including testing static semantics checkers of C and Java.