基于Jmeter的接口自动化测试实践
在去年实施了一年的三端(PC、无线M站、无线APP【Android、IOS】)后,今年7月份开始,我们开始进行接口自动化的实施,目前已完成了整个框架的搭建以及接口的持续测试集成。今天做个简单的分享。
在开始自动化投入前,需要先问几个问题
- 为什么要投入人力做自动化?
- 以及有UI自动化的情况下,为什么还要做接口自动化?
- 测试人员需要有代码能力吗?如果需要,需要什么程度的代码能力?
以上都是开放式问题,有机会再相互探讨。
在打算实施接口自动化后,需要解决如下几个问题
- 接口自动化要测试哪些接口,我们要怎么测试这些接口,每个接口需要分别覆盖什么?
- 工欲善其事必先利其器,接口自动化测试如何选型工具?很多工具都具有接口测试功能,如何挑选工具
- 如何做到持续集成?
接口测试从测试关注点上看可以分为单接口测试以及联合接口测试
单接口测试关注内容为:
- 响应状态
- 响应时间
- 请求数据格式:协议、编码、字段
- 响应数据格式:编码、字段
联合接口测试关注多个接口组合特定业务场景测试;
在进行持续集成的接口自动化测试中,我们重点关注的是多个接口联合测试,即业务场景实现过程中各个依赖接口的自动化测试,而在手工测试中,去重点关注单个接口的各个测试内容;
测试工具的比较
在工具选择上我们也比较了目前市面上比较常用的测试工具以及自研方案


从调研情况看,选择还是非常多,市面上有非常成熟的工具供选择,也可以自研工具平台。在难以取舍情况下,我们列出如上的几个维度对工具进行横向比较,在综合考虑我们团队的情况,选择了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的接口自动化测试实践的更多相关文章
- Lego-美团点评接口自动化测试实践
Lego-美团点评接口自动化测试实践 2018-02-07 转自:Lego-美团点评接口自动化测试实践 目录 一.概述 1.1 接口自动化概述 1.2 提高ROI 针对“减少投入成本” ...
- 基于HttpRunner的接口自动化测试平台HttpRunnerManager(二)
https://github.com/HttpRunner/HttpRunnerManager HttpRunnerManager Design Philosophy 基于HttpRunner的接口自 ...
- Lego:美团点评接口自动化测试实践
概述 接口自动化概述 众所周知,接口自动化测试有着如下特点: 低投入,高产出. 比较容易实现自动化. 和UI自动化测试相比更加稳定. 如何做好一个接口自动化测试项目呢? 我认为,一个“好的”自动化 ...
- ant +jmeter+jenkins接口自动化测试二
[Jmeter篇]Jmeter+Ant+Jenkins接口自动化测试集成之半路逆转(二) 橙子探索测试发表于橙子探索测试订阅 72 [Jmeter篇]jmeter+Ant+Jenkins接口自动化测试 ...
- ant+jmeter+jenkins接口自动化测试一
[Jmeter篇]jmeter+Ant+Jenkins接口自动化测试集成(一) 橙子探索测试发表于橙子探索测试订阅 90 一.简介 1.什么是ant? ant是构建工具,把代码从某个地方拿来,编译,再 ...
- 基于Python的接口自动化测试框架
项目背景 公司内部的软件采用B/S架构,目的是进行实验室的数据存储.分析.管理. 大部分是数据的增删改查,但是由于还在开发阶段,所以UI的变化非常快,难以针对UI进行自动化测试,那样会消耗大量的精力与 ...
- 使用Jmeter执行接口自动化测试-如何初始化清空旧数据
需求分析: 每次执行完自动化测试,我们不会执行删除接口把数据删除,而需要留着手工测试,此时会导致下次执行测试有旧数据 我们手工可能也会新增数据,导致下次执行自动化测试有旧数据 下面介绍两种清空数据的方 ...
- 基于python的接口自动化测试+ddt数据驱动
在测试接口时,一个接口会先写好测试用例,这个用例主要针对功能,传入参时考虑到各种场景,正常的,异常的,如:参数缺省,参数传一个六位数字写用例时考虑边界情况等. 一个接口设计用例时有可能会十几条到几十条 ...
- Jmeter实现接口自动化测试
一.环境准备 1.Jdk1.7或以上: 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133 ...
随机推荐
- 通过网络路径获取的图片 btye 图片流互转
楼主有一个需要用户用的网站要上传图片,图片不保存到网站,而是要专门存放到一个图片服务器上面,于是需要通过byte的形式来传输 之前写的一个本地图片流转于byte互转 后来发现通过网络路径获取的图片这个 ...
- 2017 多校训练 1006 Function
Function Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total ...
- Problem D
Problem Description An entropy encoder is a data encoding method that achieves lossless data compres ...
- tamper-proof 对象 nonextensible对象 sealed对象 frozen对象
tamper-proof 对象JavaScript的缺点之一就是每个对象都可以被相同执行上下文的代码修改,很容易导致意外覆盖,或则一不小心把native 对象覆盖.Ecmascript 5提供了 t ...
- Unity中的Mono & Linux上编译Mono的流程
前段时间编译了一下Unity的Mono,看了很多相关的文章,也遇到很多新坑.所以来总结一下,加深自己对Mono的理解 为什么Unity可以跨平台运行呢 通常Unity的脚本有C#.JS.Boo.不过现 ...
- .net中LAMBDA表达式常用写法
这里主要是将数据库中的常用操作用LAMBDA表达式重新表示了下,用法不多,但相对较常用,等有时间了还会扩展,并将查询语句及LINQ到时也一并重新整理下: 1.select语句:books.Select ...
- 激光相机数据融合(3)--KITTI数据集
KITTI数据集提供了双目图像,激光数据,和imu/gps位置信息,其中还包括了大量的算法.下载地址为:http://www.cvlibs.net/datasets/kitti/raw_data.ph ...
- 一个在java后台实现的对图片进行加网纹或水印的工具类
import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphic ...
- 基于 nodejs 的 webSockt (socket.io)
基于 nodejs 的 webSockt (socket.io) 理解 本文的业务基础是在基于 nodejs 的 socket.io 的直播间聊天室(IM)应用来的. 项目中具体的 框架如下 expr ...
- 【Java】java 中的泛型通配符——从“偷偷地”地改变集合元素说起
一直没注意这方面的内容,想来这也算是基础了,就写了这个笔记. 首先java的通配符共有三种----先别紧张,现在只是粗略的过一下,看不看其实无所谓 类型 介绍 <?> 无限定通配符,等价于 ...