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

发表于:2017-9-12 10:37

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:baiyang    来源:51Testing软件测试网采编

  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配合,对接口测试用例进行持续集成,这样也好得到测试报告。
  上面就是小编对于基于数据驱动的接口单元测试框架设计的一些实践,总结和大家分享。还有一些细节和搭建遇到的困难以及解决,后续文章有机会和大家继续分享。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号