在最近学习性能测试的过程中,小叶遇到了一个看似简单但颇具挑战的小问题:如何使用 LoadRunner 进行更高效的接口测试?
经过摸索,小叶总结出了一些经验,来跟大家分享一下。
01
跳过验证码登录

在许多应用中,验证码是用来防止机器恶意登录的。然而在性能测试中,我们并不需要实际输入验证码,原因是验证码是随机生成的,并且会随着页面刷新而更新或者时间超期失效,这就导致在回放或者压测的过程中出现错误,为了避免这种情况,我们就需要方法绕过它,以便 LoadRunner 可以正常执行。(注意:这里说的“绕过”是便于软件在测试时高效开展的合规措施,软件应用时安全是必须做牢的!)
这里小叶整理了两种绕过验证码的方法:

开发环境白名单
联系开发同事,在开发环境中为 LoadRunner 用户添加一个白名单,避免验证码。

固定验证码参数
在部分系统中,可以通过设定一个固定的验证码值(假如为“1234”),然后在 LoadRunner 脚本中直接使用固定值登录。
当然,上面两种方式实现起来比较简单,但有一定的局限性,只适合在测试环境下的系统,那遇到在生产环境下的系统如何操作呢?
小叶也找了相关的资料,大致的思路是在浏览器中捕捉验证码的请求路径,通过关联将返回的图片保存为硬盘的文件,然后在代码里去识别文件内容,保存到 txt 文本,最后用 LR 读取这个文本。

02
处理密码加密

很多应用在传递用户密码时通常会进行加密,这样即使在网络传输中被截获,也不会直接泄露用户的密码。
因此,在模拟登录时,需要找到一种方法来处理密码加密,这里小叶有两个办法:

在 LoadRunner 中实现加密
通过分析应用请求,或者和开发沟通,确定应用所用的加密算法,比如是常见的MD5、SHA256、AES等。了解算法后,下载对应的加密算法文件 MD5.h。

然后通过图片的方式将 MD5.h 导入到 LoadRunner

在globals.h中写入#include "md5.h",脚本就可以使用加密方法了。

直接使用加密后的密码
首先要将我们的测试用户密码设置成一样的(假设为“123456”),在录制完成之后,LoadRunner 会将我们的加密后密码录制到脚本中。

之后在我们的参数化文件中将用户的密码全部设置成上面图片中显示的密文就可以啦。

在性能测试中,跳过验证码和处理密码加密是绕不开的问题。通过白名单方式或固定验证码值可以实现验证码绕过,而加密则需要我们根据系统算法在 LoadRunner 中实现。
小叶希望今天的分享对大家在性能测试时有帮助,也欢迎大家留言交流心得!

