If I call an action X from another test A using LoadAndRunAction
, are transaction times 开发者_Python百科that are collected in the called action reported correctly?
I.e. if I insert such a caller script A into a LoadRunner scenario, will LoadRunner's result reports include both the transaction times measured in test A and action X?
Honestly I am just asking because I am too lazy to test this ad hoc.
Background: We have some LR szenarios that use QTP scripts to simulate GUI user activity. Those QTP scripts are quite big and get deployed to every load generator again and again. The idea is to deploy the big QTP test once manually, and to write a compact QTP test that calls the big test, and insert that comptact test into the LR scenario.
OK, now that I found out answers myself, it's just fair to share them:
LoadAndRunAction
does not report its transaction times correctly, the caller does not see the transactions measured in the callee.
You can, however, use a conventional action call to call the target action. However, this does not work except for the most trivial callees since LoadRunner Controller somehow messes up the dependencies between the caller and the callee, trying to deploy caller stuff to the load generator that does not exist.
The solution for us was to create a dumb QTP caller script A that calls a second QTP test B which does nothing but calls the "real" QTP test C, all using "Insert call to external action". That is:
- Develop A and B using a QTP machine which already holds C
- Copy A and B to the controller
- Insert A into the scenario
- Pre-deploy (i.e. just copy) B and C to all load generators
Result: LoadRunner successfully deploys A to the load generators, executes it. A does its call to the B test, which in turn calls C. C does transactions, which are reported through B and A to the scenarios' run results. Mission accomplished. (Naturally, B and C need to be stored in exactly the same path on all machines, and the action references in A and B must be based on absolute, not relative paths).
Of course, one has to be careful about modifying B or C. Each modification must be distributed to all other load generators manually. A can be updated to usual way (since it always will be deployed).
精彩评论