I am having Playback Processing time issues with a Keyword Test that uses the Data Driven function. My Data Driven function uses an excel file to house the information. It seems to process pretty quickly in the beginning, but the longer it runs, the more time it takes between steps. It starts processing the first row at 11 seconds, around row 75 is is processing at 36 seconds, and after 150 rows, it is now processing at 55 seconds per row. It is a pretty complex Keyword test that has quite a few "If...Then/Else" and "If Object Exists/Else" statements.
Are there any techniques to keep the processing speed up or does this normally happen the longer TestComplete runs for one test? I have attached a flow chart of what I have mapped out via TestComplete, as I cannot load my actual test because the test details contains confidential data.
Solved! Go to Solution.
That's a very nice flow chart but it really doesn't help us see what's going on in TestComplete. Most people will just use a screenshot of the TestComplete code and use some editing tool to mark it up so we can't see the confidential parts.
To answer your one question, no, TestComplete should not be slowing down as it loops through the test.
I don't think complexity of your test would slow you down.
b'cos any computer operation those decision making process such as "if then else" are much faster.
first I would be looking at how you log your results. are you saving big pictures on your log file ? dose it save to external hard disc?
do you have enough RAM in your test machine? do you use external data base?
do you open lot of windows and screens one after other?
dose your app is working on back ground in each of these test operations?
did you check memory , processor usage in Task manager of test machine?
what configurations you have ? in terms of XL, Testcomplete, App, servers, DB.etc.
dose you have lot of waiting times in your test?
to improve your speed you can use these tips best-practices-performance-tips
also refer this
in my testing environment I find slowness when test progresses but it's due to heavy back ground processing in my application. (which it is suppose to ..)
so I close the app, let background finish and re start in particulate intervals.
Marsha_R - Here is a screenshot of my KeywordTest. Please let me know if any other information would be helpful for you.
NisHera - I am still looking into some of your suggestions. I will comment back after some research into your questions.
@NisHera's questions are good, but I'm curious about your code and I'm going to ask some more
It looks like you are checking for objects with If Object but you frequently expect that they aren't there, since your log messages are mentioning finding a new path. Between that and your use of coordinates to Click instead of object names, are you perhaps having trouble with your name mapping? I think we can help you simplify this a lot.
@Marsha_R Most of the "If Object" statements are created because the system itself wasn't built with automation in mind. Thus, the same field has slight variations, but it can't be found.
I have only been using TestComplete for a short time, so any tips or help to avoid the same loop multiple times would be appreciated. Is there anything specific that I can provide for you to help with the "If Object" field?
Also, @NisHera I have already been able to greatly reduce time with "Collect Test Visualizer data during test run" changed to "Off", but finding ways to reduce code length and efficiency is always welcome. I'll continue looking at your suggestions.
Yes, please show an example of where the same field has variations in names. I think using wildcards will help you with this.
@Marsha_R Here are a couple of examples. I am familiar with the wildcard, but how would I implement with these successfully?
Here's a good reference
In your first example, if
textnodeTdxrdesignbaisdropv1x2z12 is really the same object as 13, 14, and 15
then delete three of the lines in the mapping and change the remaining one to textnodeTdxrdesignbaisdropv1x2z*
This will let the object be matched with anything that comes up at the end of that pattern.