如何构建nits自动化测试框架?
如何构建nits自动化测试框架?
Nits需要什么,很简单也很麻烦,一要尽量把代码和数据隔离,二要扩展起来一定要简单。
数据流的存储暂时看来最好还是用xml去存储,缺点是xml的格式导致篇幅有点长,如果用例的操作比较多久需要很多屏才能看完整个用例,但是优点更明显,可读性很高,操作简单,许多类库可以帮我们去操作xml文件。这里我选了xstream,xml和类的转化很简单。
设计中,加上了两个配置文件,1个是环境配置EnviromentConfig.xml,主要放置的是我们需要支持的一些框架支持功能的配置,比如数据库的地址和用户信息,ssh测试机的地址和用户信息,服务器的路径,测试数据放置的地点等。1个是自定义配置ManualConfig.xml,不同项目可以把自己会用到的一些自定义参数放置到这个配置文件里,配置文件比较简单,全是key-value的存储方法,例如
<property key="host" value="114.113.199.11" />
<property key="path" value="/XXX" />
<property key="port" value="8080" />
另外用户会用到的方法,不管是验证结果的方法还是动态生成参数的方法都采用挂载,框架根据挂载的配置去反调。例如
<property key="getVolumeIdFromName" value="com.netease.marlboro.test.ebs.EBSHelper;getVolumeIdFromName"/>
<property key="compareJson" value="com.netease.marlboro.common.CommonResultChecker;CompareJson" />
<property key="sleep" value="com.netease.marlboro.common.CommonResultChecker;Sleep" />
同样的,这些也会放到两个配置文件里,公共支持的一些通用的方法配置到EnviromentConfig.xml,自定义的方法配置到ManualConfig.xml
经过上面两篇文章的介绍,软件测试工程师就可以开始使用框架去写自动化接口测试了。我们要写一个用例,目标是挂载一个云硬盘,以下存储的测试数据,我们针对测试数据来分析
<request>
<http>
<connection>post</connection>
<parameters>
<para name="Action" value="AttachVolume" />
<para name="VolumeId" value="v1" type="www.test-edu.com getVolumeIdFromName"/>
<para name="InstanceId" value="validInstance" type="config" />
<para name="ProjectId" value="aaa"/>
</parameters>
</http>
<result>
<check type="compareJson" value ="{|requestId|:|***|,|status|:true" />
</result>
</request>
1、http connection的值根据需要发送的方式写死,我们可以用post方法,也可以用put等,这里我们用post方式去发送
2、http服务器的地址在EnviromentConfig.xml里面配置好,其他的http url带的参数如上面配置
a)写死的部分如Action参数的写法
b)云硬盘需要新建到虚拟机的,虚拟机是相对固定的,我们换个环境可能就要换虚拟机,我们把虚拟机的InstanceId配置到ManualConfig.xml里面,key叫validInstance,value就是这次会用到的虚拟机uuid.InstanceId这个参数的写法就是从配置文件里去取validInstance对应的值赋给InstanceId这个参数。
c)有些参数是动态生成的,比如VolumeId就是卷的编号,这个编号是创建完了云硬盘会自动生成的,我们的取法是从数据库里拿到这个id.我自己写了一个根据卷名去取Id的方法,挂载到ManualConfig.xml,框架会根据getVolumeIdFromName对应的类和方法名去反调取得卷ID,赋给VolumeId参数
希望以上知识能够帮助到广大的软件测试工程师。

浙公网安备 33010602011771号