Хорошо, теперь, когда я сам узнал ответы, справедливо поделиться ими:
LoadAndRunAction
неправильно сообщает время транзакции, вызывающая сторона не видит транзакции, измеренные в вызываемой стороне.
Однако вы можете использовать обычный вызов действия для вызова целевого действия. Однако это не работает, за исключением большинства тривиальных вызовов, поскольку контроллер LoadRunner каким-то образом запутывает зависимости между вызывающим и вызываемым, пытаясь развернуть материал вызывающего абонента в несуществующем генераторе загрузки.
Для нас было решено создать тупой сценарий вызывающего QTP A, который вызывает второй тест QTP B, который ничего не делает, но вызывает «настоящий» тест QTP C, все с использованием «Вставить вызов во внешнее действие». То есть:
- Разработка A и B с использованием машины QTP, которая уже содержит C
- Скопируйте A и B в контроллер
- Вставьте А в сценарий
- Предварительное развертывание (то есть просто копирование) B и C на все генераторы нагрузки
Результат: LoadRunner успешно развертывает A на генераторах нагрузки, выполняет его. A выполняет вызов к тесту B, который, в свою очередь, вызывает C. C выполняет транзакции, которые передаются через B и A в результаты выполнения сценариев. Миссия выполнена. (Естественно, B и C должны храниться в одном и том же пути на всех машинах, а ссылки на действия в A и B должны основываться на абсолютных, а не относительных путях).
Конечно, нужно соблюдать осторожность при изменении B или C. Каждую модификацию необходимо распространить на все остальные генераторы нагрузки вручную. A можно обновить обычным способом (поскольку он всегда будет развернут).