背景:使用LoadRunner11录制HTTPS网页,测试性能
环境:LoadRunner11 Patch4 + Win7 + Firefox45
问题:录制时,出现启动了浏览器但地址栏无URL,页面空白;或者能打开页面但无event的情况。
目录
目录
6.脚本添加函数web_set_certificate_ex()
1. 浏览器证书
1)安装证书
这里有两种方式。一,直接找开发获取证书;二,通过Firefox登录系统,系统会自动提示证书问题。选择添加信任或者安装证书。
然后,如下图所示,点击这个图标:
在页面信息-》安全-》查看证书-》详细信息-》导出。自动导出为.cert格式
ps:上述的Firefox是与lr11配合使用的45版本。最新版本的Firefox界面有所不同,且可以直接导出.pem格式文件。
2)在IE中导入证书
在IE工具-》Internet选项-》内容-》证书-》导入,选择上一步导出的证书,并且安装在“受信任的根证书颁发机构”中。
这里可以参考其他作者的配置方法:
https://blog.csdn.net/misschen906880249/article/details/53811691
https://www.cnblogs.com/baihuitestsoftware/articles/5580220.html
https://www.cnblogs.com/mxqh2016/p/7145109.html?utm_source=itdadao&utm_medium=referral
https://jingyan.baidu.com/article/0eb457e5d0f58b03f1a905b4.html
2. LR配置
在Tools-》Recording Options中,
1)选择Capture level:Socket level and WinlNet level data
2)选择New Entry,设置socket和导入证书:
3.浏览器配置参数的修改
按照前面的步骤配置好后,可能会出现。启动Firefox,只能显示首页地址的情况;也有一种是报错:建立安全连接失败。收到一个XXX弱临时秘钥。解决方案,参考:https://www.cnblogs.com/liuzhengliang/p/5786067.html。这里需要对浏览器的一些参数重新设置。
在地址栏里输入 about:config,回车
修改值为false:
security.ssl3.dhe_rsa_aes_128_sha (经过测试,这条记录修改成flase即可访问)
security.ssl3.dhe_rsa_aes_256_sha
新建值为 false:
security.ssl3.dhe_dss_aes_128_sha
security.ssl3.dhe_rsa_des_ede3_sha
4.更改nginx的加密算法
按照上面说的安装了证书以后,也无法录制。并且报错:SSL handshake with remote server failed.
分析:协议中是保存了一些加密算法。客户端提供一些允许的加密算法,服务器端也有自己允许的加密算法。二者取交集则双方可以通信。这里在nginx中查看加密算法的配置,发现少了一些加密算法。
1). 进入nginx所在容器: # kubectl exec -it nginx-rc-nr7nx sh
2). 编辑nginx的配置文件: # vi /etc/nginx/nginx.conf
3). 增加加密算法:ssl_ciphers RC4:HIGH:!aNULL:!MD5 (这里增加的是RC4)
4). 在容器中重启nginx:# nginx -s reload
5.回放出错
回放时,会出现错误(Error -27780: [GENERAL_MSG_CAT_SSL_ERROR] connect to host ...),需要做如下配置:在Vuser--> Run-time Settings,勾选下面红线所示选项。这里可以参考另一篇文中的解决方案LR中错误码集合
6.脚本添加函数web_set_certificate_ex()
web_set_certificate_ex("CertFilePath={证书名称}.pem",
"CertFormat=PEM",
"KeyFilePath={证书完整路径}\{证书名称}.pem",
"KeyFormat=PEM",
"Password=123456",
"CertIndex=1",
LAST);
补充
1.录制时只能打开部分页面
录制过程中,将需要录制页面的url手动copy到浏览器地址栏中,造成页面的跳转。
2.第一次能录制成功,后面又录制不成功
在Firefox-》选项-》高级-》网络,清除“网络内容缓存”和“离线Web内容和用户数据”。
3. nginz中的限流配置
limit_req_zone $binary_remote_addr zone-xxxapi:10m rate=10r/s; # 限流处理。每秒10个请求
4. 超出上述限制后,服务器端的响应配置
loation /api/ {
limit_req zone=xxxapi burst=20 nodelay;
limit_req_status 599;
proxy_pass http://zhuanxiangdewebsite;
error_page 404 /404;
}