$$OUT=-

$$START!

V. Тестирование

V. Testing

V. 1.Основные положения 

V. 1. General rules

 

Класс может содержать особые функции, которые начинаются ключевым словом TEST вместо FUNCTION. Они предназначены для тестирования и выполняются всегда на этапе компиляции.

  • Если тесты не выполняются для класса успешно, класс должен быть помечен атрибутом UNTESTED.
  • Если на этапе тестирования выполнялись не все строки кода, подлежащего тестированию, класс так же должен быть помечен атрибутом UNTESTED.
  • Если хотя бы один оператор ASSERT не выполняется в тестах класса, класс так же должен быть помечен UNTESTED.
  • Если класс должен быть помечен как UNTESTED, но он не имеет этого атрибута, это считается ошибкой, и компиляция завершается на этапе тестирования.

 

 

Class can contain special functions starting with a keyword TEST in place of the FUNCTION. Such functions are intended to test and executed always on a compilation stage.

  • If tests are not executed successfully, a class should be marked with an attribute UNTESTED.
  • If not all lines of code were executed on a test stage, the class should be marked as UNTESTED.
  • If at least one statement ASSERT was failed, the class also should be marked as UNTESTED.
  • If a class should be marked as UNTESTED but it has no such attribute, this concerned as an error, and a project is not compiled.
 

Тестированию подлежат:

  • Все строки кода.
  • Все условные ветви кода.

 

Тест считается покрывающим, только если все подлежащие тестированию строки кода выполнялись при тестировании класса хотя бы один раз. Если это условие не выполнено, класс должен быть помечен как UNTESTED.

 

Which code should be tested:

  • All the lines of code.
  • All the conditional branches.

 

A set of tests is concerned to be "covering" only if all the lines which should be tested were executed during a class testing at least once. If this condition was not satisfied, the class should be marked as UNTESTED.

 

Все секции функции TEST должны иметь операторы ASSERT. Компилятор не может проконтролировать качество использования этих операторов, поэтому отсутствие таких операторов в секции вызывает только предупреждение.

 

All the sections of code in a TEST function should have ASSERT statements. The compiler can no control correctness of usage of such statements though, so an absence of ASSERT statements leads just to warnings.

 

Тестированию не подлежат:

  • Нативные функции.
  • Абстрактные классы.
  • Классы, не содержащие методов.
  • Методы, не содержащие операторов.
 

What is not necessary to test:

  • Native functions.
  • Abstract classes.
  • Classes not having methods.
  • Methods not having statements.
 

Однако, при тестировании класса, унаследованного от абстрактного, все не переопределённые  методы его абстрактного предка должны быть протестированы, чтобы сам класс считался протестированным.

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

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

 

 

Therefore while testing a class inherited from an abstract class all the not redefined methods of an abstract ancestor should be tested to ensure that a derived class is tested.

It is allowed to place in an abstract class some testing functions with parameters, intended to test partially (or totally) functions of an abstract class.

Tests with parameters are not called automatically but these can be called from other TEST functions. In part if to create such parameterized tests in an abstract class these can be used to simplify testing the abstract class together with derivatives of it.

 

V. 2. Синтаксис 

V. 2. Syntax

 

Функция тестирования начинается заголовком, в котором слово TEST используется вместо слова FUN|CTION.

 

Testing function starts from a header which differs from a function header by a keyword FUN|CTION.

 

Тестирующие функции могут иметь параметры, но такие тесты не вызываются автоматически: они могут быть вызваны только из других тестирующих функций.

 

Testing functions can have parameters but such parameterized tests are not called automatically: these can only be called from other tests.

 

Тестирующая функция может начинаться оператором IMPORT, в котором перечисляются классы, дополнительно требующиеся для запуска этой процедуры.

 

Testing function can start from its individual IMPORT statement, where additional classes are listed, necessary for the test to launch it.

 

Как и другие функции, тестирующая функция разбивается на секции секционными комментариями
-------------- 'текст'

Но для тестирующих функций имеется дополнительное требование: секция должна содержать как минимум один оператор ASSERT.

 

Like other functions testing function also is separated onto sections with section comment
------------ 'text'

But for testing functions an additional requirement is there: each section should contain at least one ASSERT statement.

 

Оператор ASSERT предназначен для проверки булевского выражения. Если значение выражения в операторе
ASSERT выражение
ложно, утверждение не выполняется. При наличии хотя бы одного проваленного утверждения класс считается не оттестированным.

 

An ASSERT statement is intended to check a Boolean expression value. If a value in an
ASSERT expression
is false, then assertion is failed. When at least one failed assertion is present then the class is concerned untested.

   

 

$$STOP!