首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >LoadRunner中处理验证码的问题

LoadRunner中处理验证码的问题

原创
作者头像
源代码安全
发布2025-11-04 14:33:39
发布2025-11-04 14:33:39
750
举报
文章被收录于专栏:软件测试软件测试

在 LoadRunner 中处理验证码(包括图片和手机验证码)确实是性能测试中的一个常见挑战。其核心思路是让脚本能够自动获取或绕过验证码的校验机制。

方法分类

核心思路

最佳适用场景

系统改造法

临时修改被测应用,屏蔽验证码校验或设置一个万能验证码(如“000000”)。

测试环境、未上线系统或安全性要求不高的内部测试。

后端获取法

通过脚本或接口从服务器端(如Session、数据库或专用API)直接获取当前有效的验证码值。

开发能提供支持,且需要真实验证码流程但又不能依赖前端识别的场景。

OCR识别法

利用OCR(光学字符识别)技术,让LoadRunner脚本自动识别下载到本地的验证码图片。

无法修改应用代码,且验证码样式简单、干扰较少的场景。

💡 图片验证码的具体处理方案

1. 系统改造法(推荐用于性能压测)

这是进行性能压测时最常用且最有效的方法。目标是让压力测试集中在核心业务逻辑上,而非消耗在验证码识别上。

  • 设置万能验证码:与开发团队协作,在测试环境中,应用程序允许一个特定的密码(例如000000)通过任何验证码的校验。测试脚本中固定使用这个验证码即可。
  • 临时屏蔽验证码:更直接的方式是让开发同学临时注释掉验证码检查的逻辑,使系统不再进行验证码校验。

重要提示:若对已上线系统进行测试,使用此类方法存在安全风险。测试完成后,务必确保相关代码被彻底还原,万能验证码功能被完全移除。

2. 后端获取法(兼顾真实性与效率)

如果测试需要真实的验证码流程,可以尝试从服务器端直接获取验证码值。

  • 从Session中获取:如果验证码生成后存储在服务器的Session中,可以请开发同学编写一个简单的页面(如JSP),该页面能输出当前Session里的验证码。LoadRunner脚本先访问这个页面,通过关联函数获取验证码值,再用于登录。
  • 调用专用接口:请开发同学提供一个返回当前有效验证码的API接口。在LoadRunner脚本中,通过web_custom_request请求该接口,将返回的验证码值用于提交。

3. OCR识别法(模拟前端识别)

当无法修改应用时,可尝试使用OCR技术。以下是一个基于Tesseract-OCR的实现示例:

  1. 关联并保存图片:使用 web_reg_save_param关联验证码图片的二进制数据,并将其写入到本地文件(如 C:\test1.jpg)。
  2. 调用OCR工具:通过 system()函数调用批处理命令,使用Tesseract-OCR工具将图片转换为文本。
代码语言:txt
复制
# test.bat 批处理文件示例
cd C:\Program Files\Tesseract-OCR
tesseract.exe c:\test1.jpg c:\test -l eng

3.读取识别结果:在LoadRunner脚本中读取OCR输出的文本文件(如test.txt),将字符串作为参数用于登录请求。

注意:此方法的识别成功率受验证码复杂度影响很大(如扭曲、干扰线等),且识别过程会消耗测试机资源,可能影响测试效率,通常不适用于高并发场景。

📱 手机验证码的处理方案

手机验证码的处理思路与图片验证码类似,但由于其动态发送的特性,更依赖于后端配合。

  1. 万能验证码:同样是首推方案。为测试环境设置一个固定的、永远有效的验证码(如123456),直接在脚本中使用。
  2. 专用测试接口或号码
    • 让开发提供一个获取当前手机验证码的接口,脚本直接调用该接口获取。
    • 使用一个专用于测试的手机号,验证码会发送到该号码,但可以通过查询数据库或特定的测试平台界面来获取。
  3. 直接查询数据库:在测试环境中,短信验证码通常会被存储在数据库的特定表中。可以在发送短信后,让LoadRunner脚本通过数据库查询函数(如lr_db_query)直接查询最新的验证码值。这种方法需要确保测试数据库允许直接访问

如何选择最适合的方案?

你可以根据下面的流程来判断:

总的来说,选择哪种方法取决于你的测试环境测试目标。对于绝大多数性能压测而言,“系统改造法”是最直接、高效的选择。如果对流程真实性有要求或无法修改应用,则可以考虑“后端获取法”。而“OCR识别法”由于稳定性和效率问题,通常作为备选方案。 希望这些具体的方案能帮助你解决LoadRunner测试中的验证码难题。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档