在去年实施了一年的三端(PC、无线M站、无线APP【Android、IOS】)后,今年7月份开始,我们开始进行接口自动化的实施,目前已完成了整个框架的搭建以及接口的持续测试集成。今天做个简单的分享。

  在开始自动化投入前,需要先问几个问题

  1. 为什么要投入人力做自动化?
  2. 以及有UI自动化的情况下,为什么还要做接口自动化?
  3. 测试人员需要有代码能力吗?如果需要,需要什么程度的代码能力?

  以上都是开放式问题,有机会再相互探讨。

  在打算实施接口自动化后,需要解决如下几个问题

  1. 接口自动化要测试哪些接口,我们要怎么测试这些接口,每个接口需要分别覆盖什么?
  2. 工欲善其事必先利其器,接口自动化测试如何选型工具?很多工具都具有接口测试功能,如何挑选工具
  3. 如何做到持续集成?

  接口测试从测试关注点上看可以分为单接口测试以及联合接口测试

  单接口测试关注内容为:

  1. 响应状态
  2. 响应时间 
  3. 请求数据格式:协议、编码、字段
  4. 响应数据格式:编码、字段

  联合接口测试关注多个接口组合特定业务场景测试;

  在进行持续集成的接口自动化测试中,我们重点关注的是多个接口联合测试,即业务场景实现过程中各个依赖接口的自动化测试,而在手工测试中,去重点关注单个接口的各个测试内容;

  测试工具的比较

  在工具选择上我们也比较了目前市面上比较常用的测试工具以及自研方案

  从调研情况看,选择还是非常多,市面上有非常成熟的工具供选择,也可以自研工具平台。在难以取舍情况下,我们列出如上的几个维度对工具进行横向比较,在综合考虑我们团队的情况,选择了jmeter进行接口自动化开发工具

  整个接口自动化就围绕如下内容,其中Java是团队的第一编程语言,使用Jenkins进行任务管理以及调度,达到课持续集成,使用ant作为构建桥梁,连接jenkins和jmeter

  

  工具选择好后,就开始设计系统的业务流程以及设计标准了,虽然是测试,但是也要以开发标准对待写代码,开玩笑的说以专业精神对待业余爱好

  首先对于一个可持续集成测试系统,首先要易于使用,能很方便的执行、查看测试结果以及定位测试问题;还要团队成员,哪怕别的团队成员也可以很方便的使用本系统,不需要具备很多的专业背景或者深入的了解系统细节才能使用;

  整个系统的flow如下,jenkins作为最上层的入口,负责结果展示、发生邮件、启动执行系统,ant根据执行的target,调动jmeter执行自动化任务,每个自动化任务需要执行的数据集从另一套系统,我们内部叫奥卡姆剃刀系统读取测试数据,执行结果一种是标准的junit执行报告结果,用于生成简易的测试报告,另一份是自定义的测试结果集,用于分析测试数据以及往第三方关联系统分发测试结果

  

   数据流程定义好后,就是实际的编码设计阶段了,由于做接口自动化中,特别是设计复杂业务数据时,需要自定义开发一些扩展包,beanshell是我们常用的,但是这个有一个问题就是beanshell不支持即时的语法检查,只有在运行期间出错了才能知道语法有问题,也无法对脚本进行调试查看运行期间的各种数据状态,针对这个问题,我们采用如下设计方式进行解决,

  采用PO模型方式组织代码,基于mvc设计模式开发代码,将jmeter作为view层,只负责业务流程,所有的实现在扩展包里实现,扩展包使用intellij idea开发调试,测试通过后打包给jmeter使用,调试和测试也在idea下完成,使用junit作为测试单元,使用测试桩完成所有接口以及业务逻辑的调试

  

展示了部分结果如下

后面有空再写写实现的一些细节以及遇到的坑吧,感慨下今年过的好快,好几天就结束了,年前定下的小目标还记得嘛  哈哈

后续打算出个jmeter培训教程,不知道这方面是否有需求

基于Jmeter的接口自动化测试实践的更多相关文章

  1. Lego-美团点评接口自动化测试实践

    Lego-美团点评接口自动化测试实践 2018-02-07 转自:Lego-美团点评接口自动化测试实践 目录 一.概述  1.1 接口自动化概述  1.2 提高ROI    针对“减少投入成本”    ...

  2. 基于HttpRunner的接口自动化测试平台HttpRunnerManager(二)

    https://github.com/HttpRunner/HttpRunnerManager HttpRunnerManager Design Philosophy 基于HttpRunner的接口自 ...

  3. Lego:美团点评接口自动化测试实践

    概述 接口自动化概述   众所周知,接口自动化测试有着如下特点: 低投入,高产出. 比较容易实现自动化. 和UI自动化测试相比更加稳定. 如何做好一个接口自动化测试项目呢? 我认为,一个“好的”自动化 ...

  4. ant +jmeter+jenkins接口自动化测试二

    [Jmeter篇]Jmeter+Ant+Jenkins接口自动化测试集成之半路逆转(二) 橙子探索测试发表于橙子探索测试订阅 72 [Jmeter篇]jmeter+Ant+Jenkins接口自动化测试 ...

  5. ant+jmeter+jenkins接口自动化测试一

    [Jmeter篇]jmeter+Ant+Jenkins接口自动化测试集成(一) 橙子探索测试发表于橙子探索测试订阅 90 一.简介 1.什么是ant? ant是构建工具,把代码从某个地方拿来,编译,再 ...

  6. 基于Python的接口自动化测试框架

    项目背景 公司内部的软件采用B/S架构,目的是进行实验室的数据存储.分析.管理. 大部分是数据的增删改查,但是由于还在开发阶段,所以UI的变化非常快,难以针对UI进行自动化测试,那样会消耗大量的精力与 ...

  7. 使用Jmeter执行接口自动化测试-如何初始化清空旧数据

    需求分析: 每次执行完自动化测试,我们不会执行删除接口把数据删除,而需要留着手工测试,此时会导致下次执行测试有旧数据 我们手工可能也会新增数据,导致下次执行自动化测试有旧数据 下面介绍两种清空数据的方 ...

  8. 基于python的接口自动化测试+ddt数据驱动

    在测试接口时,一个接口会先写好测试用例,这个用例主要针对功能,传入参时考虑到各种场景,正常的,异常的,如:参数缺省,参数传一个六位数字写用例时考虑边界情况等. 一个接口设计用例时有可能会十几条到几十条 ...

  9. Jmeter实现接口自动化测试

    一.环境准备 1.Jdk1.7或以上: 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133 ...

随机推荐

  1. BZOJ-1968

    1968: [Ahoi2005]COMMON 约数研究 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 2308  Solved: 1768[Submit] ...

  2. centos 6.9安装zabbix 3.0

    Linux下常用的系统监控软件有Nagios.Cacti.Zabbix.Monit等,这些开源的软件,可以帮助我们更好的管理机器,在第一时间内发现,并警告系统维护人员. 今天开始研究下Zabbix,使 ...

  3. ⑤bootstrap表格使用基础案例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. idea java项目部署至Tomcat服务器

    1. 服务器部署TomCat     1. 安装JDK,配置环境变量     > 变量名:JAVA_HOME;变量值:C:\Program Files\Java\jdk1.7.0_45      ...

  5. WIN7+wampserver2.4+zend stadio10.6.1配置Xdebug

    一.前言 zend stadio调试很不方便,php5.3版本之前可使用zend debuger调试,php5.3以后就需要使用XDebug调试了.下面介绍我配置的经验,希望帮助更多的人 二.配置步骤 ...

  6. C#实现设置完整虚拟路径

    ){    mHttpUrl.Append(":");    mHttpUrl.Append(port);}string mServerName = "~/AppModu ...

  7. 工作中用到的一些shell命令

    1.将十进制转换为十六进制 for i in `seq 0 127`; do printf "%02x\n" $i; done

  8. 【Win 10 应用开发】UI Composition 札记(七):基于表达式的动画

    上一篇烂文中,老周给大伙伴们介绍过了几个比较好玩的动画.本篇咱们深化主题,说一说基于表达式的动画.这名字好理解,就是你可以用公式 / 等式来产生动画的目标值.比如,你想让某个可视化对象的高度减半,你的 ...

  9. python - dict.setdefault

    index = dict.serdefault(key,default) 尝试往dict中插入新键值key,如果key已存在就原dict不变,否则插入key:defalut:返回值为key在dict中 ...

  10. NOIP2017-普及组复赛第2题 题解

    Description 图书馆中每本书都有一个图书编码,可以用于快速检索图书,这个图书编码是一个正整数.  每位借书的读者手中有一个需求码,这个需求码也是一个正整数.如果一本书的图书编码恰好以读者的需 ...