打算针对公司里一个比较适合自动化的小项目做自动化回归测试,针对这个项目编写框架,目前只完成了一部份,简单的小结一下。
框架使用EXCEL数据驱动,使用描述编程,分三层,第一层从测试配置里读取信息,负责控制及驱动不同的案例脚本执行,将执行结果返回控制列表中。第二层负责控制各案例内部执行流程以执行完整的业务逻辑,将执行结果返回案例列表中。第三层负责控制具体页面的业务逻辑,将执行结果返回上一层。除第一层放在主ACTION中以外,其余各层脚本均以函数的形式保存在一个VBS文件中。所有页面对象的描述均放在一个DESCRIPTION对象中,在VBS文件开始处建立该对象的实例,关于页面对象的描述有待进一步抽象,希望执行页面时更多考虑业务行为。目前已完成一些有关数据处理及后期页面信息处理有帮助的基本函数。
框架完全使用描述性编程完成,执行基本案例流程的效率及稳定性还是不错的,我今天中午跑了近200个案例,一气豁成,感觉比以前使用ACTION及对象库方式好了几倍。
现在的问题是如果页面发生修改或出现BUG,而导致无法执行正常流程,我该怎样有效记录下来。我的思路是截下错误页面的屏幕并在截图文件上输入文字信息,记载执行到出错页面时,使用的各项参数及所做的操作。成功的记录后,执行场景恢复,初始化,执行下一条案例。QTP自带的场景恢复无法满足我的要求,因为我出问题的地方在第三层的页面执行脚本里,场景恢复里那几个选项都满足不了我的要求。举个简单的例子,我执行转款的案例,第一层从EXCEL里读取数据,驱动第二层转款流程的脚本执行,第二层从EXECL中读取对应表中的记录驱动业务流程,登陆,查余额,转款,查余额变化,登出。第三层脚本执行登陆、转款等交易,这时页面的执行过程中可能出现找不到对象之类的中断,我使用什么方式完成场景恢复,在出错时记录场景信息,线束当前场景,返回第二层,初始化,执行新的案例。用ON ERROR合适吗?有没有有经验的兄弟,给出好的思路。谢谢了
呵呵,我已经找上解决的办法了,51TESTING上牛人多啊。BABEST的解决方案
Stop run
这种模式发生错误后,就抛出异常(可用Err对象得到异常里的错误信息),中止本函数,并一层一层的返回到上一层函数,最后到达Action函数后(Action本身也可以看成是个函数),就停止整个Test的执行。
在一层一层的返回上层函数的过程中,如果某个中间函数有On Error Resumt Next/On Error goto 0,就会把错误拦截下来,这个中间函数会继续往下执行,不会中止函数并返回上一层函数。