基于Jmeter5.2.1

断言之响应断言

响应断言:对服务器的响应接口进行断言校验,来判断接口测试得到的接口返回值是否正确。

测试字段就是指要断言的内容的匹配处。

响应文本:就是响应的body部分;

响应代码:http响应代码,如101,200,302,404,501等。当我们要验证404,501等http响应代码时,需要勾选“ 忽略状态”。因为当http 响应代码为400,500时,jmeter默认这个请求时失败的;

响应信息:响应代码对应得响应信息,例如“OK",区分大小写;

模式匹配规则:

包括:返回结果包括你指定的内容,支持正则匹配

字符串:与 “包括”差不多,都是指返回结果包括你指定的内容,但是subString不支持正则字符串

测试模式:结果的期望值

结合fiddler查看结果

配置元件之添加自定义变量

Jmeter快捷键

ctrl+数字快捷键:

其他快捷键:

ctrl+ E 清空结果树

ctrl+ T 启用/禁用

ctrl+ R 运行

配置元件之csv参数化

  登录接口的测试,要用到多条测试用例,例如正确的用户名和密码,正确的用户名和错误密码,密码为空,错误的用户名和密码,可以把这四组数据放到本地txt文本文件里面,再通过jmeter去读取,然后循环执行线程请求,请求一次就取一行数据。

也可以不用txt存储数据,用csv格式的文本来存储数据,结果是一样的:

函数助手之__CSVRead

函数助手之__RandomString

当我们想要用10个不同的手机号去注册,可以使用随机组合的字符串去实现,随机在某些集合内取值后随机组成多位字符串。

这种随机有个弊端,就是取值集合若成员过少,就有可能出现重复数据。

后置处理器之正则表达式提取器提取相应结果

后置处理器之正则表达式提取器提取数组数据

假如我要提取百度首页的五个导航:

提取完成。

逻辑控制器之ForEach控制器

在上面提到用正则取出数组数据,但是怎么使用这些数据呢?可以用foreach循环来利用每个数据。

新建一个百度请求,放在循环控制器里面,随便给百度首页发点什么,变量取id:

结果:成功发了五次请求,每次参数hehe的值取自id。

后置处理器之JSON JMESPath Extractor提取响应结果

利用JSON JMESPath Extractor从响应的json格式数据中提取所需的结果:

从{"status":0,"code":"20110","data":null,"msg":"手机号码已被注册"}中提取msg:

通过百度发出去:

Jmeter之添加cookie

充值前先要登录,因http是无状态的,先发login请求后发recharge请求还是会提示未登录,这时就要cookie了。

第一种方法:添加http cookie管理器。

充值成功

第二种方法:通过正则表达式获取login响应头中的cookie,再通过HTTP信息头管理器将其添加到recharge请求头里。

Jmeter之token编码处理

对于前程贷官网的投资接口来说,是需要cookie和token的:

很显然,登录成功,没带token只带cookie则因用户认证失败导致投资失败。考虑加上token,但是去哪找token呢?

打开fiddler,过滤前程贷官网,在浏览器上成功登录并投资一次,可以发现服务器在这个请求:http://120.78.128.25:8765/loan/loan_detail/Id/17951.html 的响应体中添加了token:

在随后的投资请求中,token值与标id,投资金额一起加在了表单中:

因此,我们也在jmeter中增加一个标详情页的请求,成功找到了token,并用正则表达式提取token给投资请求。

但还是投资失败。查看invest请求中携带的token:

会发现post中的token值已经将‘/’转换为 %2F,但未将‘+’转换为%2B,这是因为jmeter发送请求时没有对url进行编码, 勾选编码后就可以了。

也可以利用函数助手里的__urlencode函数对token值进行编码。

一粒云项目之批量上传文件

根据文档,上传参数需要文件名,大小,先准备需要批量上传的文件:

新建一个csv文件,写上要上传的文件大小,文件名,路径:

在jmeter里添加登录请求,输入账号密码,下载请求,登录只需要一次,为的是取token,故加一个仅一次登录器,注意有请求头,线程组循环5次,csv数据文件设置,注意,因为csv文件的首行为标题行,要忽略首行。

在upload请求的参数里进行参数化引用:

上面参数名称file一定,txt文件的mime类型为text/plain。

上传成功!

一粒云项目之下载文件

查看接口文档:

传参,fi即file的id,取我刚才上传的文件,40139

返回的是一个uri,可见要再加一个请求。

先通过正则表达式获取uri:

出错了:403

没权限,那就在请求里加一个token: 成功下载了。

把响应保存到本地:

成功新增一个文件。

批量下载的话只需要新建一个csv,里面放入fileid即可。不做赘述。

jmeter获取文件列表

还是一粒云项目,请求方法get,地址:http://120.79.174.8/apps/files?fc=personal&pt=1&offset=0&limit=200

请求头还是ct=token

添加JSON JMESPath Extractor,取前十个fileId:

成功拿到fileId

取所有的fileId,则改json表达式为data.files[:].fileId

ForEach控制器实现文件列表获取与下载接口串联测试

在前面已经实现了文件列表的获取以及单个文件的下载并保存,现在用ForEach控制器把他们串联起来。

添加ForEach控制器:

ForEach控制器就相当于python里面的for循环,遍历取值,前面文件列表获取到21个文件,这里填0,21,0不包含在内的:

对于每次ForEach循环取到一个fileId,再通过获取uri请求获取到下载的uri,经过正则提取uri,在下面的请求里将uri作为请求路径去下载对应的文件,然后将响应保存到本地:

最终结果为:

本地新增:

Jmeter脚本录制

首先在TestPlan里添加一个HTTP代理服务武器:

设置端口,在目标控制器里选择线程组。

在Chrome浏览器里设置代理:

点击启动按钮后,在浏览器登录前程贷官网,可以看见有录制的结果:

本来有很多请求的,可以在代理服务器的排除模式里通过正则表达式把它过滤掉,bmp,css,js,gif,png等统统过滤,只要接口的。

jmeter之连接数据库

先添加一个JDBC request:

再添加一个JDBC Connection Configuration,填上变量名:

至于下面的数据库连接配置里面要填的东西,我们要在服务器的配置文件里去寻找。

xshell连接我的云服务器,按名称查找数据库配置文件:find -name jdbc.properties

进入第二个:

填入URL,账号密码,这里的JDBC Driver class选择com.mysql.jdbc.Driver后运行提示无法加载驱动,所以我下载了个驱动放在apache安装目录下的lib/ext。

成功连接数据库。

jmeter相关知识学习记录的更多相关文章

  1. 客户端相关知识学习(十二)之iOS H5交互Webview实现localStorage数据存储

    前言 最近有一个需求是和在app中前端本地存储相关的,所以恶补了一下相关知识 webView开启支持H5 LocalStorage存储 有些时候我们发现写的本地存储没有起作用,那是因为默认WebVie ...

  2. 客户端相关知识学习(十一)之Android H5交互Webview实现localStorage数据存储

    前言 最近有一个需求是和在app中前端本地存储相关的,所以恶补了一下相关知识 webView开启支持H5 LocalStorage存储 有些时候我们发现写的本地存储没有起作用,那是因为默认WebVie ...

  3. Android权限管理知识学习记录

    一.Android权限背景知识 在Android 6.0之前,所申请的权限只需要在AndroidManifest.xml列举就可以了,从而容易导致一些安全隐患,因此,在Android 6.0时,Goo ...

  4. 韩天峰博客 php基础知识学习记录

    http://rango.swoole.com 写好PHP代码真的不容易,给大家几个建议: 慎用全局变量,全局变量不好管理的,会导致你的代码依赖于全局变量,而耦合度太高. 一定不要复制粘贴代码,可重用 ...

  5. 客户端相关知识学习(六)之deeplink技术

    Deeplink应用描述 Deeplink,简单讲,就是你在手机上点击一个链接之后,可以直接链接到app内部的某个页面,而不是app正常打开时显示的首页.不似web,一个链接就可以直接打开web的内页 ...

  6. Python 多线程相关知识学习

    多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进 ...

  7. python3基础知识学习记录

    学习地址:http://www.runoob.com/python3/python3-tutorial.html ------------------------------ 为什么要学python: ...

  8. 《全栈性能测试修炼宝典JMeter实战》学习记录

    说明:原书中jmeter版本为2.x,我的笔记中截图为5.x

  9. 服务端相关知识学习(三)Zookeeper的配置

    前面两篇文章介绍了Zookeeper是什么和可以干什么,那么接下来我们就实际的接触一下Zookeeper这个东西,看看具体如何使用,有个大体的感受,后面再描述某些地方的时候也能在大脑中有具体的印象.本 ...

随机推荐

  1. Git下载安装及github基本操作

    Windows下Git下载 官网提供的Git下载地址: 官网下载地址,一般直接从官网下载会出现无反应等情况,这里提供windows32和64位版本的百度网盘资源:windows下的Git下载地址.有需 ...

  2. 【JS】403- JavaScript 工具函数大全(新)

    前言 一线大厂笔试题灵感来源 目录: 第一部分:数组 第二部分:函数 第三部分:字符串 第四部分:对象 第五部分:数字 第六部分:浏览器操作及其它 筛选自以下两篇文章: <127 Helpful ...

  3. 【MobX】390- MobX 入门教程(上)

    点击上方"前端自习课"关注,学习起来~ 本文考虑到篇幅问题,将<MobX 入门教程>分成上.下两篇文章,方便阅读.分配安排: 一.MobX 介绍 首先看下官网介绍: ★ ...

  4. 201871010119-帖佼佼《面向对象程序设计(java)》第十四周学习总结

    博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.co ...

  5. 面试百度、阿里、腾讯,这134道Java面试题你会多少?

    这里一共是134道Java面试题,看看你能对几道吧! 1. Java 语言有哪些特点 2. 面向对象和面向过程的区别 3. 关于 JVM JDK 和 JRE 最详细通俗的解答 4. Oracle JD ...

  6. 有一部分程序员还不知道Java 中的注解到底是如何工作的?

    作者:人晓 自Java5.0版本引入注解之后,它就成为了Java平台中非常重要的一部分.开发过程中,我们也时常在应用代码中会看到诸如@Override,@Deprecated这样的注解. 这篇文章中, ...

  7. 一个简单的示例在spring boot中实现国际化

    最近在网上找了一个有关账单管理的spring boot项目,其中有一部分是涉及显示国际化信息的,即将页面上的中英文进行转换.因为在这之前这部分内容没有接触过,所以在这记录下过程. 中文效果图如下所示: ...

  8. Node Js模块讲解

    Node JS模块 所谓的Node JS模块其实就是指Node JS package,即nodejs包. 一 什么是NodeJS模块? 在说这个问题之前,我们有必要提出一个概念,即模块规范. 现阶段J ...

  9. NodeJS7-1本地构建_gulp入门学习

    NodeJS在前端最常用的两种方式: 1.做成webserver 2.做成前端开发的相关工具 本地构建:前端发布代码都会经过压缩(谁来处理) ,前端技术的日新月异,利用新特性代码变得易读,清晰,可是老 ...

  10. Vue项目无法使用局域网IP直接访问的配置方法

    一般使用 vue-cli 下来的项目是可以直接访问局域网 IP 打开的,比如 192.168.1.11:8080 .但是最近公司的一个项目只可以通过 localhost 访问. 需要配置一下,才可直接 ...