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


         

Тестирование с отложенными реакциями


Пример: Object Request Broker (ORB) RACE, разработанный для однопроцессорных встроенных систем. И тест, и целевая система - объекты, существующие под управлением этого ORB. Стимулы и реакции - сообщения ORB, причем сообщения передаются между объектами только в промежутке между получением ими управления.

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

Если активный поток не является единственным, то требуется построение модели, аналогичной той, которая используется в случае 6 (см. ниже). Если такой поток - единственный, то данный случай проще случая 6, поскольку не требуется специальное построение сериализации событий. Однако случай 3 не может быть сведен к случаям 1 или 2, потому что возможны отложенные реакции целевой системы.

Задача построения модели для систем данного класса решается аналогично случаю 6. Однако для системы с конфигурацией такого рода потребовалась особая реализация обходчика: обычный тест UniTesK выполняется в собственном потоке управления с собственным стеком, в котором хранятся вызовы методов и их локальные переменные; в данном же случае тест не обладает собственным стеком вызовов и не имеет возможности выполнять какие-либо длительные действия.

Упрощенный алгоритм работы тестовой системы в случае 3 выглядит следующим образом:

1.обеспечить регулярное получение управления в активном потоке (например, подписаться на получение сигналов от таймера);
2.при очередном получении управления:
2.1проверить реакции от целевой системы, полученные за время ее самостоятельной работы, и состояние, в котором она находится; при необходимости сообщить об ошибках;
2.2если тест находится в состоянии ожидания реакций от целевой системы:
2.2.1если получены не все ожидаемые реакции и время ожидания еще не вышло, вернуть управление;
 2.2.2если все ожидаемые реакции получены, перейти к шагу 2.4;
 2.2.3иначе сообщить об ошибке;
2.3если тест находится в состоянии ожидания некоторого состояния целевой системы:
 2.3.1если не все ожидаемые реакции получены и время ожидания еще не вышло, вернуть управление;
 2.3.2если нужное состояние достигнуто, перейти к шагу 2.4;
 2.3.3иначе сообщить об ошибке;
2.4вычислить очередной стимул, который следует применить к целевой системе в текущем состоянии;
2.5если такой стимул найден, применить его, проанализировать немедленные реакции, при необходимости перейти в состояние ожидания реакций и вернуть управление;
2.6если существует состояние целевой системы N, которое уже существовало в процессе выполнения теста, но в котором были применены не все возможные стимулы, то попытаться перейти в него; найти в уже обойденной части графа состояний путь из текущего состояния в искомое, вычислить и подать нужные стимулы, перейти в режим ожидания состояния N и возвратить управление;
2.7если такое состояние не найдено, значит во всех обнаруженных состояниях применены все возможные стимулы; тест завершает работу.


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