Actions v/s Functions?

When implementing automation for real projects using QTP, one question that puzzles many framework designers is whether to use Actions or Functions?

Well in this article I will be discussing the challenges associated with the use of Actions and why I personally prefer using Functions over Actions. The article is only based on my professional experience and personal opinions about the subject. One may or may not agree with the same

Before we start it is important for us to understand difference between Action and Function.

An Action is a feature of QTP while Function is a VBScript feature. An Action can have associated DataTable, Object Repository, Input/Output Parameters and return values. Functions on the other hand can only have input/output parameters (using ByVal or ByRef) and return values.

Consider the details on an Automation project which needs to be implemented

  • No. of scripts = 1200
  • No. of Unique code components (Re-usable + Non re-usable) = 500
  • Shared object repository with all objects
  • All scripts to be stored in HP Quality Center


First we will assume that we use Actions to implement the above project

  • The 500 re-usable actions that need to be created can be stored using different approaches
  1. One re-usable script per Test: We can store each re-usable action in an individual script. The problem with this approach though would be that finally we would have around 500 (hosting re-usable actions) + 1200 QTP scripts in the suite
  2. Store all re-usable actions in a Single Test: We can store all 500 re-usable actions in a single script. The problem with this approach is the Test containing all actions would become huge in size and any small corruption in the same can lead to disasters as it would require re-linking of all actions used in script
  3. Store multiple re-usable actions in scripts base on category: Assuming avg. 10 re-usable actions per script, we would have 50 scripts supporting these re-usable actions. This is better than above 2 approaches
  • To create the test case we need to make calls to external re-usable actions. The path to the test needs to be provided in such a case. One can provide an absolute path of the test where the re-usable action resides. But this creates a huge problem when the scripts containing re-usable actions are moved to a different location. This problem can be sorted out by using relative paths of the Test instead of an absolute path.

Now consider the challenges we will face using the above action approach

  • While debugging a test we come to know that one of the Actions needs to be updated with some additional code. To do so we will have to close the current script and open the script containing the re-usable action. Update the code and save the script. Then re-open the script which we were debugging and re-run the script. If during re-run we realize that there are few more changes required then we would have to repeat the process. This make maintenance a painful task
  • When upgrading QC or moving actions from one location to another location there is a risk of QTP scripts giving error in missing actions in missing resources pain. This would require to open each script and fix the issue
  • Since we are using shared object repository, each local object repository would be empty. When we use a blank action (No Code + No Local OR) the size occupied by the Action is 197KB. This means for 500 actions we would have ~96MB of space wasted for no reason. This is a huge overhead when using QC as the scripts are downloaded from the QC server to the local machine

To summarize the key challenges we faces using Actions are

  • Painful maintenance as QTP doesn’t allow opening multiple tests at the same time
  • Missing actions in script when moving re-usable actions from one location to another or QC version is upgraded
  • Corruption of the script containing the re-usable action will require all the callee tests to update the call. This would require to open each callee script and fix the call
  • Each actions consume additional 197KB of space

Now if we move to functions over Actions we can easily do away with above challenges

  • Instead of action the code would be stored in Function. These functions would be present in the library files.
  • QTP allows opening multiple library files at the same time. This makes debugging and maintenance also easier
  • Functions will only take the space required for the script code and no additional overhead
  • Functions are more flexible when it comes to re-usability

To conclude, Functions over Actions has many advantages and should be preferred in implementing any keyword or data driven framework

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值