|
如何用工具对自己的业务实现自动化测试,是一个很多人都关心的问题。
在我看来,实现自动化测试有两种方式:一、对于特定的系统录制或者编写脚本,实现特定系统的自动化测试。二、自己编写测试工具,对于同一类的软件进行测试。这种软件的基本功能是,抓取被测对象,根据抓取的对象生成测试脚本。这个适合于需要测试的多个项目具有大致相同的特征,比如说,要测试的项目都是管理信息系统,项目中大部分功能都类似。都是新增、修改、删除。功能相似的情况下,要进行测试的范围也大致相同。比如对于新增,都要测试超长啊,无效的数据。这种情况下,编写一个通用的工具,制定公共的测试点,然后根据被测对象生成测试脚本是比较可取的方法。
下面我以 通过QTP工具实现对www.alipay.com中交易管理的自动化测试的过程为例子,说明一下我是如何做的及碰到的哪些问题。
首先说下被测系统的背景知识。www.alipay.com是个支付平台,买家和卖家在这里完成完整的交易支付过程。
下面我从几个方面来说一下实施自动化测试的一个大体的过程,当然这只是最基础的一部分,后面要做的工作还很多。
首先,对所测的业务系统进行分析,抽取公共操作,定义接口参数。目前我简单分析了几个部分:
创建交易;买家付款;卖家发货;买家确认收货;买家发起退款_未收货;卖家同意退款;买家发起退款_已收货;卖家拒绝退款_买家已收货;买家修改退款协议_已收货;卖家同意退款_买家已收货;买家发货;卖家确认收货退款;
其次,确定实现方式,也就是技术框架和细节。包括:
所有这些接口的调用方式;变量及函数的存放位置[位置有外部的vbx文件和QTP自己的文件]。
在QTP中,不支持调用脚本,只能调用脚本中的某个Action。所以最好把这些基础性的动作放在一个脚本文件中。
在QTP中,调用Action传参数可以通过两种方法实现:1、利用Action本身的参数。在Acition的属性中,可以定义输入输出参数。2、参数化输入数据。这两种方法都很容易的。
在别的脚本中调用其他脚本的Action时,还需要两个脚本共享对象库,被调用的Action还需要设置为Reusable。
最后,所有的技术细节都准备好后,就可以开始录制脚本了。
录制过程中,千万要记得把一些组件或者页面重命名为有意义的,这样在以后维护的时候可以更清楚一些。否则以后你回对着N个相同的页面名称加上“_n"这样的后缀的对象不知所措。
由于第一次接触QTP,工作过程中碰到了一些问题,把重要的列举如下:
1、如何在一个脚本中调用另外的脚本?解决办法:在QTP中脚本无法重复调用,只能调用脚本中的Action。如果一个脚本中的某个Action需要被外部调用,需要设置:a、脚本的属性为Reusable。b、设置脚本的object repository type 为 shared,这样,此脚本的对象可以被别的脚本使用。
2、登陆时用户名和密码的参数化问题:由于系统有两种用户,经常需要用不同的用户登陆,如果是把用户名和密码做成参数化,需要手工频繁修改参数。最后考虑把登陆部分放到外部文件中,以函数的形式调用。
3、如何只运行指定的Action?我把所有的交易动作都放在了一个脚本里,每个动作是一个Action。这样需要组合不同的Action完成不同的业务,需要运行指定的Action。现在还没有找到方法。暂时采用新建一个运行脚本,调用基础脚本里的各种操作完成业务。
4、一个Action的输入参数依赖于另一个Action的输出。这个在参数的传递上用什么来实现呢?用脚本里的全局参数来传递。
5、把登陆函数写到外部vbx脚本后,发现验证点失败,但是用肉眼观察是验证点是可以成功的。说明vbx不支持验证点吗?此问题尚未解决。
6、周五用自动化脚本进行CTU测试,发现用脚本顺序执行创建交易、买家付款、卖家发货交易后,没有记录到第一个动作和第三个动作的MAC地址,交换买家卖家身份重新执行还是这个情况。这个初步估计是脚本的问题,目前尚未解决。
[ 本帖最后由 walker1020 于 2007-7-27 23:22 编辑 ] |
|