既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
c = instance.doOCR(change(file, i));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (c.length()>0){
}
if (c.length()>0){
result += c.substring(0, 1);
}
}
return result;
}
public static BufferedImage change(File file, int i) throws Exception {
// 读取图片字节数组
BufferedImage textImage = null;
try {
InputStream in = new FileInputStream(file);
BufferedImage image = ImageIO.read(in);
//包括左右的空白处,分为6个区域
int subWidth = image.getWidth() / 6;
//截取第i个字符的图片,并将图片灰度化
textImage = ImageHelper.convertImageToGrayscale(ImageHelper
.getSubImage(image, subWidth * i, 0, subWidth+3,
image.getHeight())); // 对图片进行处理
//图片锐化
textImage = ImageHelper.convertImageToBinary(textImage);
//放大图片,放大的倍数为5倍
textImage = ImageHelper.getScaledInstance(textImage,
textImage.getWidth() * 5, textImage.getHeight() * 5); // 将图片扩大5倍
} catch (IOException e) {
e.printStackTrace();
}
//返回识别后的单个字符的值
return textImage;
}
}
编写好以上代码后,简单测试一下接口是否可用。结果如下,说明接口可用,将main函数注释
![图片](https://img-blog.csdnimg.cn/8b964936a7a14a75baae403146a6a515.jpeg)
然后将项目导出为Jar
![图片](https://img-blog.csdnimg.cn/794d90ba572b4c2aac462df6d62a833f.jpeg)
导出时设置以下选项,并且直接将jar包导出到Jmeter的ext路径下
![图片](https://img-blog.csdnimg.cn/ce5dc01b59834b7db0b22278e83f1015.jpeg)
### 三、jmeter编写测试脚本
1、Jmeter中测试java验证码识别接口可用
新建测试计划,在测试计划中将jar包qingkeCode.jar添加进来。
![图片](https://img-blog.csdnimg.cn/d329bb310f8c436e825e65bbaee7ab29.jpeg)
添加BeanShell Sample,编写以下脚本,脚本的功能为导入jar包,并且识别路径“D:\code\vcode\_src\8.jpeg”中的图片验证码的值。并且把值保存到了变量vcode中。
import qingkeCode.*;
String code = “D:\code\vcode_src\8.jpeg”;
String d = PicToData.GetData(code);
vars.put(“vcode”,d);
添加Debug Sample和察看结果树,以便观察运行结果。
![图片](https://img-blog.csdnimg.cn/71105962fa4144aea3b14a8b40137543.jpeg)
运行脚本,察看运行结果。结果没有报错,并且输出了路径“D:\code\vcode\8.jpeg”中的图片验证码的值,说明Java接口可以调用。
![图片](https://img-blog.csdnimg.cn/a9706ee7e3f04ad98ab2fe8cd81a62f8.jpeg)
2、查看接口:使用F12开发者工具,查看http请求的流程,可以得到两个需要的相关接口
获取验证码图片的GET请求,请求参数“d”是一个以毫秒为单位的时间戳
http://www.qk365.com/security/captcha.do?d=1527660630370
还有一个接口是发送手机验证码的POST请求接口,包括请求头和请求体
// 请求头
http://www.qk365.com/security/sendMobileCode.do
// 请求体,captcha为图片验证码的值,func为请求接口,mobile为手机号
captcha=DYJE
func=register
mobile=18569845214
编写获取验证码的http请求
![图片](https://img-blog.csdnimg.cn/150727ea06f444188e900b39473e802a.jpeg)
返回如下消息表示请求接口编写成功
![图片](https://img-blog.csdnimg.cn/a3571fb33e674270a5126c74922a4986.jpeg)
3、保存验证码图片并识别验证码
验证码图片会保存在路径“D:\code\vcode\_src\”路径下,文件名会以1到n的顺序增长
![图片](https://img-blog.csdnimg.cn/fd6e9400d9b5491b864e160342083b12.jpeg)
这里先测试一下运行一次的情况,参数如下
![图片](https://img-blog.csdnimg.cn/904e8bdacafb45efbce74fb9733b5647.jpeg)
运行结果,说明返回的验证码图片进行了识别。后续只需要用这个识别的验证码进行获取手机验证码的请求就可以了。
![图片](https://img-blog.csdnimg.cn/34fe63f539564ab1a00db589a9977fab.jpeg)
![图片](https://img-blog.csdnimg.cn/08ab4bd173f54b61a70654140859a820.jpeg)
4、编写获取验证码请求脚本
获取手机验证码时要带上cookies和获取图片验证码返回的session值,这样才能成功。要问这一点我怎么知道的,是因为在编写脚本时发现没有带这个值,或者这个值是错的会返回错误信息,然后根据经验,看到的~
获取手机验证码脚本如下,其中${vceode}是验证码图片识别中得到的。
![图片](https://img-blog.csdnimg.cn/069619d59d774936b3ed789f28f1362a.jpeg)
添加cookie请求头把浏览器的值拷贝放入即可
![图片](https://img-blog.csdnimg.cn/28065aad9d0f4f29b06ef4366e7eb9ef.jpeg)
![图片](https://img-blog.csdnimg.cn/25359b247eac434fa5c702e2d0cb0e63.jpeg)
使用正则表达式,在获取验证码图片中添加后处理,取出session,将取出的session放入获取手机验证码的请求头中
获取session
![图片](https://img-blog.csdnimg.cn/02a72776ab1744df878339b4afb6364b.jpeg)
session放入获取手机验证码请求头中
![图片](https://img-blog.csdnimg.cn/3383446ad2da41d0acdf560bb2197f0d.jpeg)
5、执行脚本
最后执行脚本,结果如下。后期可以自己配置线程组中的参数进行接口压力测试。
![图片](https://img-blog.csdnimg.cn/7bb894ad82da4ce2a08a4c00db8c69ab.jpeg)
### 五、接口压力测试
添加计数器,计算器的值就是图片名称
![图片](https://img-blog.csdnimg.cn/9a5cf223d6e34230a934b5228adb0569.jpeg)
最后需要保证每次请求的手机号码不同,和上篇博文一样使用CSV的方式设置请求的电话号码
### 写在最后
目前的图片失败率还是有误差的,也许经过图片训练可以提高识别率。关于训练这方面的知识,自己也只是了解一点点。还需要继续学习吧。
这个网站的注册模块有二个问题:
一是:验证图片有点简单,一般的图片识别工具就能完成对验证码的识别
二是:界面控件的摆放顺序不够合理,个人认为应该把手机号输入框放在前面
以上,希望看到这里能对你有所收获
---
### 资源分享
**下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 `【保证100%免费】`**
![在这里插入图片描述](https://img-blog.csdnimg.cn/b9a9eea1ed5c42429c5e383b00ba6e0c.png#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/d96b58a511f84668b59f3f620964da07.png#pic_center)
![img](https://img-blog.csdnimg.cn/img_convert/c369c77f4e4226f75ba4f4c0ad251301.png)
![img](https://img-blog.csdnimg.cn/img_convert/57b84f8a10054743f390a5469e186250.png)
![img](https://img-blog.csdnimg.cn/img_convert/60d47f46f5569e944a4f20fe1f2f542d.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618631832)**
-1715803275107)]
[外链图片转存中...(img-ejh0hS1J-1715803275108)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618631832)**