教你一招:基于数据驱动的接口单元测试

1、前言

  Hello,小伙伴们,本文将继续分享基于数据驱动的接口单元测试自动化测试方案。

  用到的技术包括:maven、kubbo、junit4,json开发包、Jenkins等。

  2、数据驱动

  2.1 数据驱动的概念

      数据驱动测试是从数据文件(如Excel文件、文本文件、XML文件或数据库等)中读取测试数据,然后通过变量传入事先编写或录制好的测试脚本中,这些变量既可传递测试输入数据也可传递测试输出的验证数据。测试数据只出现在数据文件中,测试脚本负责测试逻辑业务过程、测试状态以及数据文件读取,因此,测试数据和测试脚本是分开存放的。数据文件中的每一行表示一组测试数据,通过循环遍历数据文件中的每一行,将数据逐一注入到相同的测试流程进行反复的测试验证。

      数据驱动的测试适应于对相同流程进行大数据量测试且测试结果可被预期的情况,一旦应用程序功能上发生变动,测试脚本和测试数据都可能需要发生相应的改动。

  2.2 数据驱动测试技术的特点,为什么使用数据驱动?

  数据驱动的核心就是从数据文件中读取输入数据,将数据与测试代码分离,从而可以在不修改测试代码的情况下通过更新测试数据完成对测试用例的增加、更改和删除。通过变量的参数化,将测试数据传入测试代码,不同的数据文件对应不同的测试用例。

  因此,数据驱动测试的主要特点是提高了测试代码的灵活性,增加测试覆盖面,以及提高应对测试对象变更的能力。

  使用数据驱动,目的是使测试数据(参数变量)和测试行为(逻辑代码)分离,提高用例的健壮性和可复用性;降低脚本创建和维护成本;测试数据单独存放于数据文件中便于补充、修改和维护;数据存放结构清晰简单,有利于测试结果分析和错误跟踪。

  3、测试数据管理

      小编的项目中,是通过添加测试数据到数据文件(Excel文件),运行代码,中读取测试数据,然后通过变量传入事先编写好的测试代码中。

      缺点:通过修改数据文件直接操作,存在误操作风险

  4、项目目录结构(采用maven)

  如图所示,给出小编项目目录结构,将项目中的工具类、测试类、测试数据文件、Kubbo配置等标识出来。

  测试数据文件操作(excel)

  RPC服务自定义API接口

  数据驱动测试基类

  每个方法的测试类示例

  5、用例组织和规则约束

  用例组织

  例如:getLinkCount(获取link数)方法,属于link服务,那么就在src/test/java源文件夹下面,新建测试接口的类:Link_getLinkCount.java

         命名规则

  测试类命名规则:服务+接口方法名称,例如Link_getLinkCount.java(获取link数接口的测试类,属于link服务,方法名称是getLinkCount,故该方法的测试类,命名为Link_getLinkCount.java)(建议统一、便于代码组织)

      示例

  6、测试方法步骤

      1、声明参数变量;

      2、从数据文件读取该参数变量的值

      3、组装接口调用参数,把参数变量加入其中

      4、rpc客户端调用所测试接口,当前测试的方法

      5、接收从rpc服务端返回的信息(json或者其它)

      6、通过json开发包(gson)解析从服务器返回的json

      7、添加断言(预期的结果和解析的实际结果是否一致)

      下面给一个实例:

     测试基类的test

     数据文件读取参数变量的值

     方法测试类中调用接口服务示例

  7、持续集成

  对于庞大的测试用例,一个个执行或者通过测试套件执行,都不是很方便。我们通过和Jenkins集成,把写好的代码提交到git后,maven和Jenkins配合,对接口测试用例进行持续集成,这样也好得到测试报告。

  上面就是小编对于基于数据驱动的接口单元测试框架设计的一些实践,总结和大家分享。还有一些细节和搭建遇到的困难以及解决,后续文章有机会和大家继续分享。
End.
更多热门文章:http://www.51testing.com

时间: 2024-07-28 15:00:19

教你一招:基于数据驱动的接口单元测试的相关文章

教你一招 - 如何安装nopcommerce2.5

教你一招 - 如何安装nopcommerce2.5 29. 五月 2012 16:22         /          wcf         /          教你一招 . 解决方案         /          评论 (0) 1.确认服务器安装有iis..net framework4.mvc3.sql server. 2.下载官方no source版压缩包,如果是学习的话也可以下载with source code版. 下载地址 3.把下载的压缩包解压到指定目录,在iis里面

教你一招如何开发平台无关的内核驱动

相信搞过内核驱动开发的人员都面临过这样的问题:为了让上层代码尽可能的不改变,需要底层驱动对上层提供的接口在各种形态上都要保持不变,但是底层的逻辑实现又不可避免的有差异,甚至有些时候在同一款产品形态上都会有很大差异,那么我们此时该如何设计驱动架构,使代码看起来既好看又易于维护呢?接下来我们来具体分析一下. 举一个例子,现在有两种规格的定时器,内部实现逻辑不一样,要操作的寄存器也有差别,那么我现在有三种产品形态,一种形态上使用feature1,一种形态上使用feature2,另一种形态上这两种fea

视频太大怎么办教你一招轻松压缩

观看视频是我们日常生活中打发时间的一种方式,刚刚过去的春节我相信很多小伙伴在路途中都会靠下载的视频来度过漫漫的回家路吧,当然小编也不例外.踏上回家的路之前,就想提前下载电影和一些有意思的视频,无奈手机内存不够,不能下载很多,基于这样的情况,可以把下载好的视频进行压缩,下面来分享一个无损压缩视频的方法,视频太大怎么办教你一招轻松压缩!可以使用迅捷压缩软件1:打开电脑上的视频压缩软件,点击页面中的视频压缩就可以进入对应的操作中.2:添加需要进行压缩的视频,点击添加文件或者添加文件夹的按钮就可以选择需

Linux高可用集群方案之配置heartbeat v2基于crm+hb_gui接口,配置ipvs高可用集群

  基于crm+hb_gui接口配置ipvs高可用集群    基于crm+hb_gui+ldirectored接口配置ipvs高可用集群 

Linux高可用集群方案之配置heartbeat v2基于crm+hb_gui接口,配置http+msyql+nfs高可用集群

  基于crm+hb_gui接口配置http+mysql+nfs高可用集群    基于crm+hb_gui接口配置ipvs高可用集群    基于crm+hb_gui+ldirectored接口配置ipvs高可用集群 

Matlab与.NET基于类型安全的接口混合编程入门

原文:[原创]Matlab与.NET基于类型安全的接口混合编程入门 如果这些文章对你有用,有帮助,期待更多开源组件介绍,请不要吝啬手中的鼠标. [原创分享]Matlab.NET混编调用Figure窗体 http://www.cnblogs.com/asxinyu/archive/2013/04/14/3020813.html [原创]开源.NET下的XML数据库介绍及入门  http://www.cnblogs.com/asxinyu/archive/2013/03/25/2980086.htm

教你一招搞定微信朋友圈照片模糊不清

我们在微信朋友圈发照片时会发现图片变模糊了,有一些齿边,不够清晰,这是因为微信默认启用了图片压缩功能,减小图片大小,节省流量.有强迫症的同学肯定会有不爽的赶脚,ytkah教你一招搞定微信朋友圈照片模糊不清. 1.发送照片的时候,点击右下角的“+”号按钮,然后选择“照片”. 2.选中要发送的照片后,点击左下角的“预览”(这个是重点).在预览照片的左下角看到一个“原图”单选,点中后发送,就可以将未压缩的原照片进行发送了. 这样选原图发送朋友圈,照片就不会模糊了,赶紧去试试吧!

Linux高可用集群方案之配置heartbeat v2基于crm+hb_gui接口,配置高可用httpd,mysql,lvs

本章主要配置heartbeat v2基于crm+hb_gui接口,配置高可用httpd,mysql,lvs. 如何安装heartbeat v2.httpd.nfs.配置心跳连接.ssh密钥通信.同步时间.添加名称解析.配置yum源等请参照: >> Linux高可用集群方案之配置heartbeat v2基于haresources配置文件的httpd高可用集群 http://ccschan.blog.51cto.com/11854461/1922966  ll  本文导航    · 前期准备及相关

军颐教您一招识破医托骗术

军颐教您一招识破医托骗术 患上了疾病之后,患者就会急切的想要了解关于疾病的讯息,那么,很多患者就会产生疑虑,什么医院才能治癫痫病呢?不管是哪家医院,其实只要是正规的治疗效果好的医院都是可以治疗癫痫的,现在的科学技术对于治疗癫痫还是能治好的.而在漫长的医疗发展道路上,北京军颐医院首当其冲,用真正的先进医疗技术成果帮助更多的患者走向健康,其中的百分之八十以上的患者通过药物或者药物结合手术,病情得到了很好的控制. 在当今这个社会病人看病都不能正常的正确的找到一家专业的医院,那是为什么呢?因为现在有太多