Are you rewinding your datapool? If you are and you don't have your data reads correct, you might actually be reading more data than you really think you are and rewinding when you are not expecting it.
When I build data driven scripts that required the datapool to rewind, I always build it without rewind first to make sure all my data reads are correct and I get to the end of my data when I expect to. Only after I have it working correctly with a single pass do I turn on rewind and start running multiple passes.
Other than that, you don't give us nearly enough information to really be able to help you. I also question your statement about QALoad picking data rows at random. I wasn't aware that QALoad had a "random data" function. As far as I know, data is read sequentially. Please explain your statement.
Thanks for a quick getback. Yes i am using Rewind in datapool.
I have found that, when i use a datapool with multiple virtual users, the
value picked by one Virtual users from data pool is not picked by other
virtual user for that transaction.
vu 0 1
vu 1 2
vu 2 3
vu 0 4
vu 1 5
if vu2 is executing the transaction loop. then the value picked by vu0 is
4 and vu1 is 5.
I think there is some confusion about how Datapools work within a test script. A script (and all Virtual Users exeucting that script) have access to one copy of the test data, which the users will read sequentially. So in the above example, you have five records, and three users. Each user will ask for a record, and QALoad will handle giving out the first record to the first user that asks, and the second record to the second user that asks, and so on. If rewind is enabled, then the datapool is just set on a loop, so that the fifth request for data returns the fifth row, and the sixth request returns the first row (as opposed to an End of Local Datapool message which terminates the virtual user).
Note that I state a record is given when a virtual user asks for it, not in any sort of virtual user order. If I start three virtual users at the same time, Windows Threading might change which one of those three happens to get their request in for a datapool record first.