轻量级自动化测试框架解析

    因为工作的关系,转而对QTP自动化测试进行一些调研。

    在此过程中,得到一份流传甚广的轻量级自动化测试框架(Qtp),花了一个礼拜时间断断续续看一下,受益匪浅。

    因为同样理由得到这份自动化测试框架的同仁应该也有不少,节省大家时间,也避免自己以后回过头来看又一头雾水,大概做一下记录吧。

   

    此轻量级自动化测试框架的特点主要有以下几点

    1.使用Vbs的Function代替Qtp脚本中的Action。直接减少QTP脚本的数量

    2.使用单一QTP脚本入口,冗余文件很少

    3.所有用例需要用到的测试数据都储存在一个或多个Excel中,方便更改维护

    4.每一个单独的业务流程即是一个Class,方便脚本的维护和升级

    5.因为相关的测试用例都使用Function代替,所以这个框架在一定程度上是通用的。

    相关脚本可以自行在网上搜索“轻量级自动化框架”

  或下载左图(右键选择属性得到地址,放入下载工具下载)

 

    脚本结构

    脚本主要使用数个类进行层级架构,从规格来看,每个类都包括2个方法:

    1.init*方法:读取指定的excel文件,从其中提取合乎规格的数据,生成一个数组对象

    2.start*方法:生成一个数组对象,使其等于init方法中生成的数组对象,再建立一个下级类的对象,分别以得到的数组对象中的各个项为参数调用下级类中的start方法

    以TestProject类举例来说:InitTestProject方法读取指定的excel文件,该文件格式如下

     

    则InitTestProject生成了一个数组对象,数组对象的格式为(大意)

  

     然后,start方法生成一个数组对象,并使其与InitTestProject生成的对象相等。然后再生成下级类TesSet的对象,反复调用其start*方法,每次都将数组中的一行以参数传递。

 

    为方便理解,再全面解析一下:

    例如,当前我们以下几个excel文件(可对照下载的样例)

    testsets文件:该文件保存各个测试用例的名称及其所在excel文件名,以及对应测试用例所在的sheet名

     

     (图1)

     189test.xls文件:该文件保存指定测试用例及其测试数据,结合上图,即第3行的测试用例

     另外该文件中的Sheet=loginData中保存了对应的测试用例

     

     (图2)

    

     (图3) 

 

     结合脚本的具体使用,在运行过程中是如下情况

     第一步:建立TestProject类对象,执行StartTestProject方法,内部过程为

     (1)利用InitTestProject方法根据图1生成数组对象,内容为

       ------------------------------

       189test       189test.xls       189test

       189test_2   189test_2.xls   189test_2 

       ------------------------------

      (2)建立TesSet类的对象,将建立的数组对象的值依次传入,以调用StartTestSet方法

          在第一次循环中,即是以189test/189test.xls/189test传入调用startTestSet方法

     第二步:执行startTestSet方法。传入数据为189test/189test.xls/189test,此数据指定了目标用例的路径和数据路径,内部过程为:

      (1)用InitTestSet方法根据图2生成数组对象,内容为

       ------------------------------

     

       登录189     5    6

       ------------------------------ 

       此次的数组对象似乎在EXCEL中无法看到,但实际上,它是指示了一个业务流程的范围。上行的意思为:登录189业务,具体的用例在第5行开始,第6行结束

      (2)建立TestCase类的对象,将建立的数组依次传入,以调用StartTestCase方法

     第三步:执行StartTestCase方法,传入数据为登录189/5/6,此数据定义了用例的具体行数。内部过程为:

      (1)用StartTestCase方法根据图2生成数组对象,内容为

 

       ------------------------------

 

       maillogin    login   loginData

       Demo         login   sheet

       ------------------------------ 

      (2)建立TestTask类的对象,将建立的数组依次传入,以调用StartTestTask方法

          在第一次循环中,即是以maillogin/login/loginData传入调用StartTestTask方法

     第四步:执行StartTestTask方法,传入数据为maillogin/login/loginData,此数据定义了用例对应的脚本文件名称,方法名称,测试数据所在Sheet。具体来说各个数据

     maillogin:测试用例的具体vbs脚本名称,该vbs文件下含有一个同名类

     login:用例方法,该值表示在maillogin.vbs文件下有一个login方法

     loginData:数据所在sheet 该值表示测试数据存在于sheet:loginData(图3)中

     第五步:创建第四部所指定用例的对象,并将指定数据文件的生成一个数组,再依次将至

     因为用例指定文件为maillogin.vbs文件,因此创建了同名maillogin类的对象

     执行方法login,该方法为登录189邮箱,执行的次数为loginData的行数,即第一次执行时,以kongxm/121212为参数执行login方法

    

     --------

     作者的框架只是提供了一个思路,从结构和内容上来看,似乎还有许多地方没有完成

     框架作者有意在其中导入更多的数据控制,但我在实际使用中,又有了新的想法和理解

     第一:这个轻量级框架的测试结果输出,是以XML格式输出,说的简单些,就好比每执行一个用例,将指定结果打印到某个文件里。我想,既然是基于EXCEL的框架,或许也可以更好的利用EXCEL的一些特性。例如EXCEL中包含了用例的输入信息,或许也可以将用例结果的输出信息提取出来,再输入到EXCEL文件中,结合EXCEL本身,就是一份完整的测试报告

     例:用例为 X+X=?

          EXCEL包含的测试数据为  1   2

          则最后输出 1 2 3 (判断) 至EXCEL文件或是一个新文件  :判断格对前3格进行判断,若格1+格2=格3则显示PASS

    

      第二:该框架似乎只是单向性的设计,虽然可以将每个用例都选择性执行,但似乎缺乏一个循环。比如说我现在尝试使用的邮箱系统,覆盖面较全的用例固然可以做出,但因为测试的时候,要在好几个服务器上重复测试。要实现这种效果,这个框架目前的结构似乎没有办法。在我现在看来,要实现该功能大概有2种方式,1是简单的在EXCEL格式中复制用例,2是在当前的基础上,再添加一个最顶层的类和对应的EXCEL文件,该类专门用于测试的初始化循环。

      不过,也可能作者本身就有考虑这个问题,也有对应的使用方式,只是我目前还没看到而已

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值