摘要:在我们的自动化测试项目中,经常遇到的一个困扰是脚本通过率无法令人满意,本文将以SilkTest为例讲解如何构造高质量的自动化测试方案。
关键词:SilkTest,无人守值,自动化测试
问题的提出:
曾经在做一个SilkTest(以下简称ST)项目过程中,遇到这样的问题:由于产品和ST开启Extension后偶尔会起冲突,导致产品不可预期的Crash(手工无法重现),从而导致ST就在那Hang住了,从而导致后续的脚本无法得到运行,这里出现第一个问题:如何保证脚本可持续运行?而当我们解决了单次脚本可持续运行的问题,同时又出现了另一个问题,因为产品和ST的冲突导致产品偶然性的Crash,而当我们再次运行时,又会发现脚本又是可以通过的。那么当脚本运行完后,我们得到的结果其实并不能真正反应产品的Defect情况,而且跑完脚本后,我们还需要再次运行那些Fail掉的脚本,而且往往很多是非Defect造成的,可能源于脚本的不稳定(对于这个问题,我建议大家还是最大程度增强脚本的稳定性),工具的不稳定,网络的不稳定等等原因引起,这些问题导致我们需要花非常多的时间去手动的运行或检查这些Fail掉的Case,出现的第二个问题是:如果保证我们得到最最接近产品真实Defect的测试结果?我相信这个问题也同样出现在其他的自动化工具中。
解决方案
一、解决思路
对于以上问题,我们引入无人值守解决方案,对于无人守值,我们的定义是:自动处理脚本运行过程中遇到的错误和异常;消除非产品问题导致脚本失败的用例(即提高脚本的通过率)。对于第一个解决办法是自动处理错误和异常,一般的做法是a. 尽量减少用例之间的关联;b. 对用例脚本在运行前进行清理,而对运行后进行恢复 c. 少数情况下可以编写小型的监控工具来处理一些非预期窗口的弹出(该方法在以往的项目中被证实是非常高效的)。对于第二个提高脚本的通过率,我们的解决办法是利用RE-RUN机制,这也是本文介绍的重点。
二、Re-Run机制流程图
三、Re-Run机制核心代码
该代码主要包括2部分:在执行用例前检查是否运行当前用例CheckIfRun和在执行完用例后更新当前用例的状态到状态表UpdateTCStatus,如下图:
……………………
查看全文请点击下载:http://www.51testing.com/html/07/n-221707.html
五、其他扩展
为了更好地利用该解决方案,我们开发了一ST的管理工具—Multi Auto Test Manager,如下图: