主要学习的内容包括发送HTTP请求、HTTP信息头管理器、HTTPcookies管理器、用户定义的变量、响应断言、CSV数据文件设置的使用。
使用Chrome浏览器,先将浏览器的cookies缓存清空。
默认环境已经有的条件下,双击jmeter.bat。出现如下界面设置工具的显示语言,Options→ChoseLanguage→Chinese
完成上述步骤后,创建HTTP请求,包括:HTTP请求头,HTTP请求体以及察看结果树1、在测试计划中添加线程组2、在线程组中添加配置元件,HTTP信息头管理器,将刚才注册页面的请求头选中并且复制,在HTTP信息头管理器中单击“AddfromClipboard”完成请求头的复制
3.在线程组中添加HTTP请求,请求的请求体为图下内容
4、线程组添加察看树,点击启动按钮,查看请求结果
5、为响应结果添加断言,只有响应结果中包含"msg":"短信发送成功"的响应数据,这个请求才算是成功
模拟5个用户执行以上的测试过程,我们发现只有第一次是成功的,其余的返回"msg":"短信验证码发送过于频繁"
发现原来是每个请求的请求手机号是一样的,导致失败
这时候可以使用配置元件,CSV数据文件设置每次请求的手机号是不同的,在这里我准了一份手机号码的excel文件,需要注意的是保存这个文件的时候要保存成.CSV格式的,这里我将这份文件放到jmeter的examples目录下
在CSV数据文件配置中填写如下信息,然后修改验证码接口中HTTP请求的请求体,最后再执行一次,发现每次请求使用的手机号是不同的,并且请求成功
修改线程组参数,添加聚合报告等,对接口进行压力测,这里可以把察看结果树禁用了,因为在请求很多的情况下,会影响工具性能。最后等结果
需要注意的是启动jmeter.bat提示的那段话,压力测试要用非界面模式,界面模式用来生成脚本,调试没有问题了,再进行非界面的压力测试
自行百度。
说明:这个平台可以频繁的刷验证码接口,这本身就是一个bug。前端的滑动验证功能就是形同虚设的。
现在网站的注册界面,将验证码图片放在了第一行。
包括获取验证码接口、响应的验证码图片保存、验证码图片识别、获取手机验证码请求接口等这几个重要步骤的编写
打开Eclipse,新建一个java项目,项目中添加tess4j的jar包,以及tessdata等文件。
代码完成的功能为,输入验证码图片的路径,输出验证码图片的识别结果,结果是一个字符串类型
具体代码如下,注释中已经对每一行代码进行了讲解,主要是为了提高图片字符识别的准确率。
大概的图片识别处理步骤是:设置字符的识别方式是英文和数字,将图片按区域识别每一个字符,把每一个字符截取下来,做灰度处理以及锐化,并且把这个字符对应区域的图片放大。最后识别这个经过处理的图片。
然后将项目导出为Jar
导出时设置以下选项,并且直接将jar包导出到Jmeter的ext路径下
新建测试计划,在测试计划中将jar包qingkeCode.jar添加进来。
添加BeanShellSample,编写以下脚本,脚本的功能为导入jar包,并且识别路径“D:\code\vcode_src\8.jpeg”中的图片验证码的值。并且把值保存到了变量vcode中。
importqingkeCode.*;Stringcode="D:\\code\\vcode_src\\8.jpeg";Stringd=PicToData.GetData(code);vars.put("vcode",d);添加DebugSample和察看结果树,以便观察运行结果。
运行脚本,察看运行结果。结果没有报错,并且输出了路径“D:\code\vcode\8.jpeg”中的图片验证码的值,说明Java接口可以调用。
返回如下消息表示请求接口编写成功
验证码图片会保存在路径“D:\code\vcode_src\”路径下,文件名会以1到n的顺序增长
这里先测试一下运行一次的情况,参数如下
运行结果,说明返回的验证码图片进行了识别。后续只需要用这个识别的验证码进行获取手机验证码的请求就可以了。
获取手机验证码时要带上cookies和获取图片验证码返回的session值,这样才能成功。要问这一点我怎么知道的,是因为在编写脚本时发现没有带这个值,或者这个值是错的会返回错误信息,然后根据经验,看到的~
获取手机验证码脚本如下,其中${vceode}是验证码图片识别中得到的。
添加cookie请求头把浏览器的值拷贝放入即可
使用正则表达式,在获取验证码图片中添加后处理,取出session,将取出的session放入获取手机验证码的请求头中
获取session
session放入获取手机验证码请求头中
最后执行脚本,结果如下。后期可以自己配置线程组中的参数进行接口压力测试。
添加计数器,计算器的值就是图片名称
目前的图片失败率还是有误差的,也许经过图片训练可以提高识别率。关于训练这方面的知识,自己也只是了解一点点。还需要继续学习吧。
这个网站的注册模块有三个问题:
一是:验证图片有点简单,一般的图片识别工具就能完成对验证码的识别
二是:界面控件的摆放顺序不够合理,个人认为应该把手机号输入框放在前面