上海代写论文网专业提供代写毕业论文、代写本科论文服务

相关文章推荐

联系方式
一类接口自动化测试系统的开发研究
发布时间:2021-11-04

  摘    要: 为将互联网软件版本迭代产生的重复接口测试操作从人工测试转为系统自动测试,提出了一种接口自动化测试系统以实现高效的测试与维护。结果表明,该系统满足接口自动化测试需求,可有效减少软件测试成本,提高测试效率。

  关键词 :     自动化测试;接口测试; Spring Boot; MVC;

  Abstract: In order to transfer the repeated interface testing operation generated by the iteration of Internet software versions from manual testing to system automatic testing, an interface automatic testing system is proposed to achieve efficient testing and maintenance. The results show that the system meets the requirements of interface automatic testing, which can effectively reduce the cost of software testing and improve testing efficiency.

  Keyword: automatic testing; interface testing; Spring Boot; MVC;

  1、 引言

  随着互联网产品版本的快速更迭,产品测试的时间愈来愈少,但软件的质量要求却越来越高。测试人员往往需要花费大量时间针对不同版本,做重复的测试工作,效率低下。接口自动化测试因具有设计实现简单、开发维护成本低、容易提高测试效率等特点,逐渐受到重视。接口测试是对系统或组件之间的接口进行测试,主要是校验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系[1]。相比UI层(主要是WEB或APP)自动化测试而言,接口自动化测试收益更大,有着更高的投入产出比,经常作为开展自动化测试的首选[2]。近年来,软件自动化测试技术发展很快,出现了很多成熟的自动化测试工具,常见的Web自动化测试工具和框架有:QTP、Selenium和Test NG等[1,2,3]。本文设计实现的接口自动化测试系统通过Spring Boot开发的用例管理平台管理配置用例数据和接口参数,用例执行模块采用unitest框架,利用Python语言实现。目前该方案已内部试用,可以很方便测试人员进行用例维护和测试用例执行等操作,效果良好。

  2、 系统介绍

  接口自动化测试系统主要由用例管理平台和用例执行模块两部分组成,如图1所示。其中用例管理平台包含接口模板、用例管理、用例分组管理、数据源配置和用例运行报告。基本功能涉及到对各个模块的增加、删除、更新、查找等基本操作。
 

一类接口自动化测试系统的开发研究
 

  2.1、 相关技术

  该系统用例管理平台采用MVC设计模式,使用当前最流行的Spring Boot框架进行开发。前端采用Angular JS进行页面开发[4]。后端采用Java与My SQL数据库进行开发。

  图1 接口自动化测试系统框图
图1 接口自动化测试系统框图

  (1) Spring Boot

  Spring Boot是基于Spring4.0的一种全新框架,不仅继承了Spring框架的原有特性,而且采用约定大于配置简化了应用的搭建和开发过程[5]。Spring Boot的Spring Boot Starter将常用的依赖分组进行了整合,将其合并到一个依赖中,一次性添加到项目的Mave或Gradle构建中;Spring Boot的自动配置特性利用了Spring 4对条件化配置的支持,合理地推测应用所需的bean并自动化配置它们[6]。另外,Spring Boot内嵌tomcat,在开发过程中很容易对项目进行调试。

  (2) MVC架构

  MVC代表的是模型(Model)、视图(View)和控制器(Controller),它将数据和展现层进行解耦,被视为构建用户界面的一种很流行的方式。其架构可以分为3层,如图2所示。其中模型用于封装与应用的业务逻辑相关的数据以及对数据的处理方法,视图由数据的多种表述所组成,它将会展现给用户;控制器会作为用户和数据的中间协调者,控制终端用户的行为,并引导他们在应用的不同视图间进行跳转[7]。

  (3) Python相关库

  Unittest单元测试框架由Test Case、Test Suite、Text Test Runner、Test Loader和Test Result 5部分组成[8]。其中Test Suite为测试集或测试套件,用来组织测试用例,执行自动化过程中不同用例之间执行互不干扰。不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果[9]。Requests库基于urllib,用于接口测试的各种请求。HTMLTest Runner是unittest模块的一个扩展,可用于将结果集生成为HTML格式的测试报告。Smtplib则用于测试完成后发送测试报告邮件。

  图2 MVC架构
图2 MVC架构

  2.2 、数据库表结构设计

  自动化测试系统数据库表数目较多,包括接口模板表、用例表、用例分组表、用例关联表、服务配置表和运行报告表等,这里仅展示几个主要的表结构。

  图3 数据库部分表结构
图3 数据库部分表结构

  3 、系统实现

  3.1 、用例管理平台子系统

  接口自动化测试系统主要由用例管理平台中共有种功能模块,大部分主要涉及各个功能模块的增删改查。下文以其中用例分组模块为基础讲述具体实现过程。用例分组管理模块包含对象test Group、test Group Controller、用例分组和用例关联对应的增删改查方法以及runCase Group方法。其中增删改查业务逻辑并不复杂,主要对应数据库的insert、delete、update、select四大操作,根据参数执行对应方法获得数据。run Case Group方法通过在java中使用Run Time.get Runtime().exec(),开启单独进程中执行Python脚本文件,并通过输入输出流截取Python脚本文件的运行报告结果信息,写入数据库。

  自动化测试系统的基本操作流程为:

  (1)添加数据源,配置来源数据库的主机、数据库、用户名和密码。
  (2)服务配置,配置服务编码、名称、服务地址等。
  (3)添加接口模板,配置接口名称、接口地址、请求方式、响应体类型等。
  (4)添加用例,根据接口模板创建单个用例的编码名称,请求地址等。时序图如图4所示。
  (5)添加用例分组,创建用例分组的名称编码和项目编码等。
  (6)关联用例,选中用例分组,关联若干测试用例,并赋予编号顺序。
  (7)用例运行,运行已关联用例的用例分组,并选择是否发送邮件。
  (8)查看用例运行报告。包括用例分组执行时间。

  图4 测试用例创建时序图
图4 测试用例创建时序图

  3.2 、用例执行子系统

  用例执行子系统采用unittest框架,并利用Requests、HTMLTest Runner和Smtplib相关库用于模拟请求、生成测试报告和发送邮件功能。

  主要代码工程结构说明如下:

  (1) common:存放一些公用方法,其中commonModel.py用于封装一些解析报文的方法,Email Utils.py用于获取最新的测试报告并发送邮件,Globalvar.py用于存放一些定义的全局变量。
  (2) config:进行为配置文件的配置和读取,其中lbas_script.conf为主配置文件,env.py负责封装操作数据库的sql语句,load_config_data.py则进行配置文件的加载和初始化。
  (3) db:封装Mysql和Mongodb数据库操作的增删改查等基本方法。
  (4) http:封装http请求和响应方法。其中httpclient.py用于发送响应状态请求和结果上报请求,httpModel.py用于封装各种请求模型,http Request.py用于封装内部用户的请求方法。
  (5) operation:用例执行的主要文件。其中interface Auto Test.py用于测试用例的封装执行,结果校验和报告生成。

  接口测试的步骤抽象为:

  (1)数据准备,从数据库中取出测试相关数据。如图5所示。
  (2)接口请求,利用Requests向接口地址发送http模拟请求。
  (3)响应值校验。
  (4) DB数据校验。

  图5 数据准备程序流程图
图5 数据准备程序流程图

  最终生成的HTML测试报告放置在nginx服务器上。在接口自动化测试管理平台系统通过点击url访问,可显示测试用例通过与否以及测试报告详情。

  4 、结束语

  针对当前互联网软件版本迭代产生的人工进行重复的接口测试存在效率低下问题,本文设计实现了一种接口自动化测试系统,测试人员可以通过自动化测试管理界面进行测试用例设计与维护以及相关服务配置,经过系统上线的运行测试结果,预期效果良好。但是使用该框架还存在很多不足,例如当涉及自动化测试项目较多时,会出现庞大的接口数量,导致用例维护困难和性能瓶颈。因此下一步会针对项目和用例情况对数据库进行分表设计,以提升用例管理和优化性能。

  参考文献

  [1]蒋灵仙基于Testng的Web接口测试的自动化框架设计与实现(D].浙江工业大学2016.
  [2]罗云.基于Test NG框架的接口测试系统设计与实现[D]华中科技大学2016.
  [3]朱建华基于Spring的Web自动化测试平台设计与实现[D].大连理I大学,2019.
  [4]王少丽基于Angular JS的前端开发框架的设计与应用[D].大连海事大学,2018.
  [5]邓笑基于Spring Boot的校园轻博客系统的设计与实现[D]华中科技大学,2018.
  [6][美]Craig Walls Spring实战[M]张卫滨北京人民邮电出版社2016:296-299
  [7] [美Goffroy Warin,张卫滨孙丽文精通Spring MVC4[M].北京人民邮电出版社,2017:32-33.
  [8]王娜.基于python的接口自动化测试框架设计[J].电脑知识与技术, 2020, 16(12):246-248.

对应分类:
版权所有:上海论文网专业权威的论文代写、论文发表的网站,秉承信誉至上、用户为首的服务理念,服务好每一位客户
本站部分论文收集于网络,如有不慎侵犯您的权益,请您及时致电或写信告知,我们将第一时间处理,邮箱:shlunwen@163.com