Индустрия программирования


4. Тестовый пакет - часть 7


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

Полученные тесты являются компиляционными тестами, содержащими нарушения стандарта,
проверяемые на этапе компиляции. Это ограничение основано на следующих допущениях:

  1. Для любого ограничения, налагаемого стандартом языка C++, которое может быть
    проверенно на этапе компиляции, и для любой реализации компилятора с языка C++, есть только
    два случая: либо реализация способна обнаружить нарушения этого ограничения во время
    компиляции, либо получается потенциально исполнимый код, содержащий это нарушение.
    Последний случай считается несоответствием стандарту C++, даже если в процессе выполнения
    программы появились сообщения об ошибках (ошибках исполнения кода программы). Ситуация,
    при которой реализация проверяет данные ограничения в процессе выполнения программы,
    кажется практически невероятной.
  2. Даже если реализация сама способна исправить ошибки программы, она должна выдать
    сообщения о них, и конечный код должен отличаться от кода, полученного в ситуации, когда
    ошибок нет.
  3. Все исключительные ситуации (как вызываемые так и обрабатываемые) могут быть проверены
    с помощью А-тестов. Соответствующие тесты должны содержать соответствующую функцию
    обработки исключительной ситуации, и во всем другом быть обычными А-тестами.
  4. Для других ошибок этапа выполнения (которые не сводятся к обработке исключительных
    ситуаций) стандарт языка C++ не содержит ограничений (касающихся поведения реализации),
    которые позволяют написать аттестационные тесты.

Общие требования к тестам

Основные требования, предъявляемые к тестам, следующие:

  1. Необходим отдельный тест для каждой спецификации. Однако, выяснено, что это
    требование не может быть выполнено и, следовательно, должно стать целью. Основными
    причинами этого стали: