自动化框架说明
框架的目的:维护、稳定、高效、准确
以下将就这四个方面讨论一下自动化测试
一.维护
维护通俗的说法就是封装提取共同点,便于管理,就如一武林高手练到一定的境界,猛然顿悟,将自已毕生所学提取并淬炼,形成自已独有的东西。扯远了,回到自动化测试中,如果我们不使用所谓的框架,就用原生的,一个脚本洋洋洒洒几百行,也能使用,就如一个人裸体,虽能吃喝拉撒,但终究不能出去见人,必须穿上华丽光鲜的外衣,这样才能出去忽悠人,如何得到这件外衣的过程,就是自动化测试脚本封装的过程。
任何程序都是从上到下顺序执行的,根据这一特点,我们可以得出任何程序最终都是集合在某一个文件中来运行的。比如watir是能过require与include把程序加载并在最后的测试脚本中执行的,再比如selenium是通过import与继承把程序集中在测试脚本中的,当然还有QTP的ExcuteFile,等等。也就是说我们只需要把原生的脚本根据其某些语句的共同点,分别放到不同的文件中去,然后再串接起来。如同做外衣,先把袖子,领子,衣身做好,再用针线给连接起来一样,当然这件外衣你可以做成中山装,可以做成西装,亦可做成唐装,也就是说自动化框架的目录结构你可以随便定,你把这些具有共同点的文件放到哪都行,但要保持一个主线:测试对象、测试数据、期望值分开存放管理,然后通过语言去解析这三个文件,再把这解析三个文件的脚本串到测试脚本中,并在测试脚本中调用,这样一个自动化框架的模型就出来了~~~~有木有。。有木有。。。
二.稳定
稳定压倒一切,稳定才能和谐。上访者频频,截访者精疲力尽,最后大家两败俱伤。自动化脚本一样,如果脚本自身时不时的出个问题,最后开发与测试都会伤不起的。以房价为例,现在我国房价居高不下,老在调控调控,但P民还是老抱怨:为什么房价涨收入却不涨?如何让P民不抱怨?
1. 如果房价3万收入6万还抱怨吗?
2. 或者房价涨500收入也跟着涨500还抱怨吗?
自动化测试的过程也一样,测试脚本在运行的同时,被测试系统也在运行,测试脚本是房价,被测试系统是P民,必须两个对象和谐统一,才能稳定。估计在最初学习自动化测试时,大家都遇到过timeout的情况,这就是不和谐的表现,同样的给出两个解决办法:
1. Wait等待,且给一个很长的时间值,即测试脚本等被测试系统运行爽了后再往下执行
2. Exist,判断测试脚本与被测试系统是否同步,如果不同步,即Hold住,等两者同步后再往下执行
根据这两种解决方案,我们只需要在解析对象的文件中,用上这两种中的任一种方法,就可解决对象稳定和谐统一。至于具体哪种方案后,后面再进行说明。
三.高效
稳定了,一片欢腾,红歌唱响祖国大地。
再仔细分析下稳定的两种方案:根据国情,房价3万,P民6万的收入
基本不可能,毕竟我们还处于社会主义初级阶段嘛,故弃掉该方案,OK,知足吧。根据第二方案,即在每个对象调用前判断一下是否存在,如果不存在就等待,并且给定一个等待的时间,否则超时。列举一个曾经碰到的问题:点击某超链接,跳到新的页面再进行一系列的操作,但如果点击超链接时,没有跳到新的页面,故下面的操作都会超时,就会有一个很长的时间,这样就不高效了。解决这问题的办法:加一个全局的标志变量,如果一旦有一个超时,标志变量就改变,然后根据项目的实际情况判断是选择退出脚本还是下面的操作都不再进行判断元素是否出现
四.准确
准确包括脚本本身的正确性与Log,运行报告的正确性
脚本本身的正确性要靠大家自已的素质及组内成员互相review。但报告的正确性我们是可以把握的。处理方法:
1. 定义一个全局的键值对变量(key=>value)
2. 在框架的每一个函数中都加上捕获异常的语句,如果出现错误,就把错误信息加到键值对变量中
3. 在运行完成后,把键值对变量的信息放到HTML文件中去,并生成XML文件
4. 生成XML文件的作用就是为了批量运行时获取脚本的运行结果
5. Log的处理在是框架的每一个函数中都加上一个输出信息到本地文件的函数
写了这多,不知道对大家是否有用,望大家提出意见,共同讨论,共同进步。