• Loadrunner对https协议(单双向SSL)的web端性能测试


    1.项目背景

    1.1 单双向SSL的含义及部署

    单向SSL即我们说到的https协议。

    特点是,浏览器需要请求验证服务器证书;

    基本含义是:一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版。

    双向SSL顾名思义就是双方都需要验证证书的协议,浏览器首先向服务端请求证书,然后服务器端需要向浏览器请求目前登陆用户的个人证书验证。

    1.2 系统的基本部署

    单向SSL交互过程:

    使用单向SSL时,仅通过虚拟主机2,请求即可传递到tomcat完成整个通信过程。

    双向SSL交互过程:

    使用双向SSL时,请求先到虚拟主机2,由虚拟主机2rewrite至虚拟主机3,再由虚拟主机3与tomcat进行通信。同时在虚拟主机3,会将用户证书放在参数中随请求一起传递给tomcat。

    1.3 测试背景

    为了配合使用证书系统,本系统上所有请求将更改为使用https进行访问。同时为了增加安全性以及对本系统核心操作的控制,需要对请求进行分级控制,即普通操作为单向SSL,核心操作为双向SSL。

    需要交互的系统:OSCP服务器,用于在线验证证书状态。

    2.测试目的

    主要验证系统:

    (1). 评估在预期用户规模的情况下,系统是否响应正常。

    (2). 评估系统在应用了单双向SSL之后响应的区别,关联服务器是否会影响该系统的性能情况。

    (3). 在逐渐增加负载的情况下,分析系统瓶颈。

    (4). 在压力情况下系统的表现。

    (5). 在长时间运行该模块是否会出现系统性能异常。

    3.测试分析

    3.1场景分析

    假设根据系统分析,主要测试两个场景,第一是单向SSL,登陆场景,第二是双向SSL,对下载文件功能。假设预估的并发用户量都是10人。

    用户行为

    操作

    预估并发用户量

    下载文件

    选择指定文件->下载

    10

    登陆

    填写用户名和密码->登陆->加载登陆后界面

    10

    3.2测试模块分析

    负载测试:主要测试各个场景在正常情况下是否运转,是否系统响应正常。并且对比应用了单双向SSL之后的响应差别,关注到关联服务器是否会影响该系统的性能情况。

          并且在不断增加负载的情况下,分析系统的瓶颈。

    压力测试:主要考察在压力情况下系统的表现,是否会出现性能异常,以及出现异常之后是否能及时回复并给与友好性提示。

    长时间稳定性测试:主要测试系统在预期的用户量下,在一段时间内,是否能够稳定的响应。重点关注下内存是否泄漏。

    4.测试执行

    基本步骤:录制LoadRunner脚本->执行LoadRunner场景->进行分析

    在测试执行里主要说一下录制脚本时遇到的问题,关于loadrunner对于单双向SSL脚本录制的问题。

    主要从以下几个方面来说,如何将浏览器导出的证书.crt转换为.pem,如何录制单向SSL脚本,如何录制双向SSL脚本。

     

    4.1 如何将浏览器导出的证书.crt转换为.pem

     

    所有的blog上都说用openssl转换。那么哪里有openssl

    答:这个再linux下面一般都带的,没有的话yuminstall openssl 就可以了

    步骤是什么?

    答: pfx提取公钥私钥方法如下:    

               openssl pkcs12 -in server.pfx -nodes -out temp.pem  //生成临时文件:temp.pem

               openssl rsa -in temp.pem -out server.key         //生成服务器私钥 server.key

               openssl x509 -in temp.pem -out server.pem    //生成服务器公钥 server.pem

    4.2 如何录制单向SSL脚本?

    只需要设置LoadRunner即可,LR中可以直接录制https脚本,只需在create new scripts->web(HTTP/HTML)->start record->options->netword下的port mapping,设置为winnetlevel data (2、runtime setting -> Internet protocol->perference 选中 WinInet replay instead of sockets.)

    4.3 如何录制双向SSL脚本?

    由于LR的机制是利用LR模拟浏览器与服务器进行交互,所以证书需要安装在

     

    ---------------------------------------------------------------------------------------------

    1. 证书的准备

    常见的证书为:*.pfx格式,该种格式的证书可以通过双击运行安装到IE浏览器上。用户在访问的时候就可以使用到。

    但这种证书并不是LoadRunner所使用的类型,因此需要对其进行转换。将其转换为*.pem格式。

    转换方法如下:

    Ø安装openssl后

    Ø运行C:<OpenSSL>/bin文件夹的openssl二进制文件,它将启动OpenSSL命令提示符

    Ø执行以下命令:pkcs12 -in D: est1.pfx -out D: est01.pem –nodes

    Ø执行后,将会在指定目录生成test01.pem文件,这个文件将会在下一个步骤,对LoadRunner进行配置的时候使用到。

    2. LR配置

    启动LoadRunner,打开Recording Option选项。

    留意红色框中的选项。

    选择后,单击New Enty

    红框中的配置为服务器的ip和端口号,按照测试所需要的实际地址进行配置就可以

    配置后,将Use specified client-sidecertificate[Base64/PEM]钩选,为使用客户端证书访问。

    单击。。。选择刚刚转换生成的客户端证书。

    如果你为证书有设置密码,在这里也需要输入。

    到此为止所有与http区别的配置就完成了。

    录制后,可以在脚本的开始,看到LoadRunner新生成的语句

       web_set_certificate_ex("CertFilePath=test01。pem",

                       "CertFormat=PEM",

                       "KeyFilePath=test01。pem",

                       "KeyFormat=PEM",

                       "Password=123456",

                       "CertIndex=1",

                       LAST);

    下面的操作和普通的页面性能测试一样。

     

     

    Loadrunner 录制htpps 协议通过IE打开页面,报错“Internet Explorer cannot display the webpage”.

    但是直接打开IE不通过 loadrunner打开https页面却可以正常打开。
     
     
    问题解决如下(Windows 7):
    执行:cmd
    然后执行命令:certutil -setreg chainminRSAPubKeyBitLength 512
    重启电脑,问题解决。
     
    参考文章:
     
     
    测webservice遇到https的请求,是在事务开始前加web_set_sockets_option("SSL_VERSION","TLS");
  • 相关阅读:
    你最喜欢的程序员漫画
    编程名言名句
    查看一个数是不是2的n次方
    程序员需要有多懒 ?- cocos2d-x 数学函数、常用宏粗整理
    C++中string、int、char之间转换
    cocos2d-x 中使用 srand((unsigned)time(NULL))重新设置一个随机种子
    ASP.NET MVC SignalR 配合VUE
    VS Visual Studio光标无法自动到行尾,点哪里就在哪里解决办法
    .NET Core Entity Framework 代码优先配置
    Image Bitmap转MemoryStream后,上传遇到问题,报Index异常
  • 原文地址:https://www.cnblogs.com/shengs/p/6213254.html
Copyright © 2020-2023  润新知