jmeter设计实现,接口调试工具自动生成文档

4747 501 2022-08-06


本文将讲述jmeter设计实现,接口调试工具自动生成文档。

接口测试分为:功能测试、自动化测试、性能测试

一、接口功能测试:

  1、制定测试计划、分配任务:环境搭建、测试接口
  2、从api文档中提取接口清单:提取三要素:URL地址+请求方式、类型(JSON串)、状态码
  3、设计接口测试用例并参数化覆盖测试用例:覆盖所有必选参数、组合可选参数、参数边界值、越界数据、参数取值范围是枚举变量,覆盖所有枚举值(性别、月份、周)、空数据、特殊字符、错误的数据、政治敏感词
  4、编写脚本实现,导入设计的测试数据:csv数据文件/用户参数
  5、测试结果汇总,BUG提交

二、接口自动化测试:

原则:

  1、只测试重要或重复调用的接口
  2、只设计正向测试用例
  3、自动化脚本可重读执行
  4、一个线程组只设置一个取样器,方便单个接口测试

jmeter接口自动化实现:

  1、参数化生成测试数据,使用断言判断响应结果
  2、使用setUp新增测试数据,tearDown最后删除自动化测试生成的数据
  3、从setUp线程组的取样器中提取数据
  4、跨线程组关联-调用函数:setProperty、Property

步骤(数据库-增删改查)跨线程组关联方式:

  1、添加测试计划(勾选独立运行每个线程组)
  2、添加http信息头管理器
  3、添加http请求默认值
  4、添加用户定义的变量(路径)
  5、添加setUp线程组进行新增
  6、setUp线程组下添加取样器:
    a、改请求方式-post
    b、路径填写变量名
    c、消息体上传JSON串,将参数清空;
    d、涉及到id可以用函数UUID生成后放到参数里,涉及到名字可以函数Random(随机数)需添加前缀,例:汪_函数
7、在新增取样器下添加响应断言:
    a、设置为响应状态码,模式匹配规则选择Equals,返回预期结果填写201
    b、设置为响应文本,模式匹配规则选择Substring,预期结果填写添加的前缀
8、在新增取样器下添加后置处理器-正则表达式提取器
    a、设置新的引用变量名
    b、正则表达式填写结果树下的格式:"xxxx":"(.*?)"
    c、模板:$1$
    d、匹配数字:0或者其他
    e、缺省值没有就勾选后面的框
9、设置函数setProperty
    a、属性名称,新设置,函数Property中会填写在属性名称中
    b、填写正则表达式提取器中的变量名
    c、生成后复制粘贴在BeanShell取样器中
10、在setUp线程组下添加BeanShell取样器
11、添加tearDown线程组删除测试数据
12、在tearDown线程组下添加取样器
    a、改请求方式-delete
    b、路径填写变量名+新增的id(需要用到上一个接口返回的数据那就用正则表达式提取器)
13、设置函数Property
    a、函数setProperty的属性名
    b、生成后复制粘贴在tearDown线程组下的取样器路径后面
14、在tearDown线程组下的取样器添加断言
    a、设置为响应状态码,模式匹配规则选择Equals,返回预期结果填写204
15、添加普通线程组(改)
16、在改线程组下添加取样器
    a、改请求方式-put
    b、路径填写变量名+想要修改的id(调用Property函数)
    c、消息体上传JSON串,将参数清空;
    d、id调用Property函数,其余字段前缀update_+时间函数
17、在改线程组下的取样器下添加响应断言
    a、设置为响应状态码,模式匹配规则选择Equals,返回预期结果填写200
    b、设置为响应文本,模式匹配规则选择Substring,预期结果填写添加的前缀
18、添加普通线程组(查)
19、在查线程组下添加取样器
    a、改请求方式-get
    b、路径填写变量名+想要修改的id(调用Property函数)
20、在查线程组下的取样器下添加响应断言
    a、设置为响应状态码,模式匹配规则选择Equals,返回预期结果填写200
    b、设置为响应文本,模式匹配规则选择Substring,预期结果填写添加改的前缀
21添加结果树

步骤-发送sql语句方式:

1、测试计划下导入jar包
2、测试计划下添加配置元件-JDBC
    a、定义变量名
    b、url:jdbc:sqlite:数据库资源路径db.sqlite3
    c、JDBC:org.sqlite.JDBC
3、在取样器下添加JDBC Request
    a、输入配置元件-JDBC中变量名
    b、编写sql语句:select 字段 from 表名 where 字段 like "查询的前缀_%"
    c、Variable names:填写变量名,几个字段填写几个变量名
4、在取样器下添加线程组
    a、改请求方式put/get/delete
    b、路径填写变量名+想要修改的id/查询的id/删除的id

三、Jmeter性能测试

原则:

1、线程组:增删改查每个功能点都需要建立单独线程组,避免同一个线程组内添加多个取样器
2、参数化:尽量避免采用CSV,使用前缀_函数生成测试数据
3、查看结果数:一个测试计划就一个结果树
4、报告:添加聚合报告
5、分布式:数量过大采用分布式
6、新增/删除/修改:不要采用时间模式(集合点、QPS)压测,直接使用线程数和循环(特殊情况除外:双十一)

Jmeter性能实现

  • 例:半个小时内依次启动1000个用户,要求平均响应时间在3000ms内且错误率为0
    1、添加测试计划
    2、添加线程组
    a、线程数设置为1000
    b、时间设置为1800
    3、添加取样器
    a、设置协议、ip、端口号、请求方式、路径、内容编码
    4、测试计划下右击监听器下添加聚合报告/汇总报告(Std Dev偏差值:越小越好)看平均响应时间和错误率

  • 例:100个用户同时访问服务器,要求平均响应时间在3000ms内且错误率为0(高并发)
    1、添加测试计划
    2、添加线程组
    a、线程数设置为100
    3、添加取样器
    4、添加定时器:Synchronizng Time(同步定时器):高并发-多人同一时间进行某件事
    a、第一行(一组用户数)设置数量(总用户数可以整除一组用户数)100;总用户数为集合数,这里设置的数为出发数,假如设置了50那就是分了2组50人出发,但是需求是100人同时
    5、测试计划下右击监听器下添加聚合报告/汇总报告(Std Dev偏差值:越小越好)看平均响应时间和错误率

  • 例:模拟2个用户以20QPS(20次每秒)的频率访问服务器持续10秒,要求平均响应时间在3000ms内且错误率为0(高频率)
    1、添加测试计划
    2、添加线程组
    a、线程数设置为2
    b、循环次数设置为200
    3、添加取样器
    4、添加定时器:Constant(常量吞吐定时器):高频率-一个人多次进行某件事
    a、访问频率设置为1200(默认是分钟,其他单位需要换算)
    5、测试计划下右击监听器下添加聚合报告/汇总报告(Std Dev偏差值:越小越好)看平均响应时间和错误率以及访问频率(40左右)

  • 有啥好用的API文档工具推荐,无意间发现了一款工具,这里马不停蹄的来给大家分享一下。

  • eolink一个非常适合团队的在线API文档工具,也支持用docker自建文档服务,不过为了方便演示,我直接用了平台在线服务。

  • 1

  • 可以使用markdown语法来写API文档、数据字典文档、技术文档、在线excel文档。但像我这种资深的懒人程序员,其实更看重的是eolink的自动化生成文档的特性,它可以从代码注释中自动生成API文档,或者搭配RunApi客户端(类似postman的api调试工具)一边调试接口、一边自动生成文档。

  • 下边从头演示下,来瞅瞅这玩意好用在哪?

  • 初识eolink

  • eolink新建项目可选常规的API文档、在线表格、或者单页文档(不支持目录分层),允许对项目文档设置访问密码,自定义域名,这里并不是真正意义上的“域名”,只是在文档服务域名后加了一级目录,例如:

  • [图片上传失败…(image-4d8ad5-1626405125865)]

  • 可以复制现有的项目,或直接导入Postman、swagger的API接口配置Json文件。提供的开放API是自动化生成文档的关键,先记住有api_key、api_token这两个属性,后边详细讲。

  • 进入项目后点击右上角 + 编辑文档,eolink预置了几种文档模板,也可以把自定义的文档存为模板;支持在线Mock服务,提前定义好接口的数据格式,先提供在线临时接口,这样就可以和前端同步开发,后边无缝切换;还有个简单的API在线测试功能。

  • 在线表格样式很简洁

  • 导出文档有word、Markdown两种格式。

  • 支持版本控制,能看到每次修改的记录,回滚任意一个版本的修改。

  • 在向别人分享在线文档时,如果不想将整个API目录都暴漏,可以选择进行单页面分享。

  • 看到这感觉eolink很普通啊,好像没什么特别的地方,上边的这些文档都是需要我们手动书写的,比较繁琐不推荐这么搞,接下来咱们看看如何自动化生成文档。

  • 自动生成文档

  • eolink有三种自动生成API文档的方式:

  • 使用Runapi工具自动生成(推荐)

  • 使用程序代码注释自动生成

  • 自动生成数据字典

  • 自己写程序调用接口来生成

  • Runapi工具

  • Runapi是一个以接口为核心的开发测试工具(可以看做是Postman的精简版)。目前客户端支持win、mac、linux平台和在线版 ,包含接口测试、自动流程测试、Mock数据、项目协作等功能。

  • 单纯的Runapi和Postman相比优势并不大,而与eolink配合使用效率比较显著,用runapi测试接口的同时它将自动生成API文档到showdoc,也可共用showdoc的团队管理机制实现多人协作。

  • Runapi客户端可以创建带调试的API接口文档、或者Markdown格式的文档。

  • 比如我们新建个项目“程序员内点事”,分别建三个接口“点在”、“在看”、“关注”,紧接着快速生成参数和响应结果数据并保存。

  • 点击右上角的文档链接设置访问密码,不填默认是公开的,复制文档链接在浏览器中打开,看到API接口文档已经生成。runapi还有全局参数、环境隔离。其实Postman也支持这样的功能,不过毕竟不是国内产品,网络访问等方面很受限制。

  • 还有一个比较好的地方,Runapi支持接口执行前后的脚本,比如响应数据的断言测试,弹框显示都挺好用的。

  • 代码注释

  • 把接口的信息写在注释里也可以自动生成文档到eolink,但这种我并不太喜欢,主要是侵入性比较强,让代码的阅读性变的比较差,一坨坨看着很不爽。

  • /**

  • * eolink

  • * @catalog 测试文档/用户相关

  • * @title 用户注册

  • * @description 用户注册的接口

  • * @method post

  • * @url https://www.eolink.com.cn/home/user/login

  • * @param username 必选 string 用户名  

  • * @param password 必选 string 密码  

  • * @param name 可选 string 用户昵称  

  • * @return {"error_code":0,"data":{"uid":"1","username":"12154545","name":"吴系挂","groupid":2,"reg_time":"1436864169","last_login_time":"0"}}

  • * @return_param groupid int 用户组id

  • * @return_param name string 用户昵称

  • * @remark 这里是备注信息

  • * @number 99

  • */

  • public Object register(){


  • 这种方式的实现也比较简单,还记得前边的提到的api_key、api_token这两个属性嘛,现在派上用场了,下边我用windows环境演示。

  • 首先本地要有git环境:

  • https://npm.taobao.org/mirrors/git-for-windows/v2.17.0.windows.1/Git-2.17.0-64-bit.exe


  • 修改eolink_api.sh,替换我们api_key和api_token变量值,URL如果没搭建自己的文档服务不用改。

  • 将eolink_api.sh放在你的项目目录下,直接双击运行,脚本会自动递归扫描本目录和子目录的所有文本代码文件,并生成API文档。

  • eolink_api.sh生成的文档会放进你填写api_token的这个项目里。

  • 生成数据字典

  • 如果我们想直接从数据库字典表生成数据字典文档,eolink也是支持的,先下载官方提供的脚本


  • 修改脚本里的配置,数据库、api_key、api_token等信息,直接执行后数据库表结构信息同步到eolink。

  • 如下配置的变量名和解释

  • 效果就是如下图这样,生成了数据表字典文档,在一些特定场景下还是很方便的。

  • 开放API

  • eolink开放了文档编辑的API,我们可以在代码中调用API创建、编辑文档。这样使用的场景就比较灵活了。


  • API参数如下,文档内容,可传递markdown格式的文本或者html源码都可以。

  • 测试一下接口组装必要的参数,用简易在线API调试工具发送

  • {

  •   "api_key": "8e52cbad736aa9832b92acc4b34a830e961861279",

  •   "api_token": "9dcd8333afa7cde63bf84f8f0db5d2b2116079256",

  •   "page_title": "xiaofu",

  •   "page_content": "nihao"

  • }


  • 看到在eolink对应的项目里已经创建了名字为xiaofu的文档。

  • 说两句

  • 前边说过eolink现有的功能postman基本都支持,但postman功能过于繁杂不够简洁,加上网络条件等诸多限制,协同办公的效率并不高,而Runapi配合eolink在某些场景下能够很大程度上提升我们开发交付的效率,所以能自动生成的绝对不手写!

  • 再怎么BB吹嘘都是苍白的,好不好用,适不适合自己,动手搞一下一目了然

    上述是小编为大家准备的jmeter设计实现,接口调试工具自动生成文档。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:接口测试及常用接口测试工具,接口测试工具可以通过前置sql来实现
下一篇:史上最全的接口(API)设计规范,值得收藏,在线接口文档编写
相关文章

 发表评论

评论列表

2024-08-01 13:19:16

您的文章构思新颖,创意无限,令人赞叹不已。您的文笔生动形象,让人仿佛看到了文中所描述的场景。https://www.oottq.com/ott/2953.html