性能测试工具选择策略--仿真度对比测评分析报告
作者 | | 手机: 17710924305 微信: wangjiake000 |
1. 概述
本文宗旨是选择几款性能测试工具进行仿真度对比测试,以此来帮助测试人员在工作中正确的选择一款性能测试工具。
性能测试工具比较多,限于作者时间有限,不能对每一款性能测试工具一一测试,计划挑三款性能测试工具相互对比测试。选择策略是:挑选国内一款,国外二款(商用和开源免费各选择一款)
国内的性能测试工具中拥有完全自主知识产权的只有
深圳市奇林软件有限公司旗下的kylinPET(C/S)、KylinTOP(B/S)两个版本,这里我们只挑选B/S版本作为测试对象。
国外的性能测试工具我们挑选国内最常用两款:LoadRunner(商用)、Jemeter(开源免费)作为测试对象。
性能测试工具一般支持的协议都非常多,不可能对每一种协议都做仿真度测评。国内常用的协议主要是HTTP协议,因此文本主要针对HTTP协议的仿真度进行测评。
2. 浏览器并发能力分析概述
本文宗旨是选择几款性能测试工具进行仿真度对比测试,以此来帮助测试人员在工作中正确的选择一款性能测试工具。
性能测试工具比较多,限于作者时间有限,不能对每一款性能测试工具一一测试,计划挑三款性能测试工具相互对比测试。选择策略是:挑选国内一款,国外二款(商用和开源免费各选择一款)
国内的性能测试工具中拥有完全自主知识产权的只有
深圳市奇林软件有限公司旗下的kylinPET(C/S)、KylinTOP(B/S)两个版本,这里我们只挑选B/S版本作为测试对象。
国外的性能测试工具我们挑选国内最常用两款:LoadRunner(商用)、Jemeter(开源免费)作为测试对象。
性能测试工具一般支持的协议都非常多,不可能对每一种协议都做仿真度测评。国内常用的协议主要是HTTP协议,因此文本主要针对HTTP协议的仿真度进行测评。
3.
在向浏览器地址栏输入一个URL地址回车时,浏览器呈现在我们眼前的是一个完整的页面。页面中有很多的元素(如:文字链接、按钮、输入框、图片等),这些元素都是浏览器从服务端获得的数据。浏览器获得这些元素按并行方式获取的(通过并行的HTTP请求获得),每个浏览器并行获取的能力也是不同的,详见下表:
浏览器 | 并发数 |
HTTP / 1.1 | HTTP / 1.0 |
IE 11 | 6 | 6 |
IE 10 | 6 | 6 |
IE 9 | 10 | 10 |
IE 8 | 6 | 6 |
IE 6,7 | 2 | 4 |
火狐 | 6 | 6 |
Safari 3,4 | 4 | 4 |
Chrome 4+ | 6 | 6 |
注:浏览器的并发能力引用:HTTPs://www.cnblogs.com/sunsky303/p/8862128.html
文章中提到的注册表中的:MaxConnectionsPerServer(HTTP 1.1)和
MaxConnectionsPer1_0Server(HTTP 1.0)配置项,作者使用的是wind10,自带ie11浏览器,其中MaxConnectionsPerServer=10,但是浏览的并发量并没有增加到10,仍为6。
4. 仿真度的重要性
性能测试工具的工作流程:录制脚本-新建测试计划(新建测试场景)-执行测试计划-分析测试结果。工作原理就:启动一个线程循环执行录制脚本,相当于仿真一个真实用户在线不停的循环操作。那么这个用户的仿真度就与执行脚本的方式具有强相关性。执行方式与浏览行为越接近,那么它的仿真度越高。
性能测试工具的新建测试计划(场景)步骤可以选择的属性有:运行时间或迭代次数、并发用户数以及用户新增或下降方式等。其中运“行时间或迭代次数”和并发用户数是性能测试过程中的两个重要的属性特征。用于测试服务器在指定的时间段内可承受的最大并发用户数。直接反应服务器性能指标的参数是:HTTP请求数/秒、吞吐量(Mb/秒),但是这两个属性不能按业务层面反应服务器的性能,如:最大并发用户数是一个业务层面的性能指标。因为业务不同,浏览器的并发请求数和请求时序不同,且对应的HTTP类型也不同。有些HTTP的请求是比较消耗资源的,尤其是对业务复杂处理的HTTP请求。
性能测试工具的仿真度的高低,直接体现了性能测试工具对真实业务的仿真,包括HTTP请求并量、并发时序,业务类型等。仿真度越高测试结果获得的数据越可信。
如下图所示,每一个用户就代表一个线程,每一个线程就是对录制脚本的循环执行。下图中的每一个方格就代表对录制脚本的一次完整执行。红框标志出某一刻服务器承受的所有并发用户数,它所承的HTTP并发请求总数等于每一个方格此时此刻的HTTP并发数总和,用公式表达就是:
服务器承受的HTTP并发总数=(1-2用户HTTP请求并发数)+(2-2用户HTTP请求并发数)+……+(m-2用户HTTP请求并发数)。
从这个表达式可以看出,服务器承受的HTTP并发总数与每一个方式格的并发数相关,即录制脚本运行的并发数。如果性能测试工具按照脚本HTTP请求,顺序执行HTTP请求(最不理想的情况),那么它的并发总数就是:m,如果按浏览器的最大并发数运行,它的并发总数就是:6m(浏览器一般可以最大并发6个),相差5倍。在服务器承受的HTTP并发能力一定的情况下,脚本运行的并数,决定了并发用户数。那么如何才能体现真实的并发用户数呢,只有在性能测试工具执行脚本的HTTP请求时,HTTP并发数、时序完全与浏览器完全相同时,才能最能真实的反映出服务器承受的最大并发用户数。
5. 测试设计分析
性能测试工具的工作原理是仿真浏览器该问服务端。每一个浏览器相当于一个使用者(用户)。性能测试工具通过多线程实现模拟多用户的访问(相对比较容易实现),每个用户通过模拟浏览器的行为仿真实用户行为(实现难度较大)。浏览器的行为包括:HTTP请求、以及HTTP请求之间的关系,这些关系通过浏览器的瀑布图可以观查到也可以通过wireShark抓包工具来分析获得。本文的重点旨在通过测试对比找出最佳的用户仿真能力的性能测试工具。
用户行为即浏览器的HTTP请求行为,HTTP请求行为主要包括:
1. HTTP请求顺序,包括:并行和串行两种行为,如下所示:waterfall中的横向图代表一个HTTP请求的开始与结束时间。串行的HTTP请求,表示只有前面的HTTP请求返回响应值后,再请求下一个HTTP请求。并行HTTP请求,可以同时下发请求。
2. HTTP请求的数量,如下图所示每一个页面都由多个HTTP请求组成。
3. HTTP的请求类型,其中包括:静态请求(如;css,js,html,jsp,png)和动态请求(后台接口)
如果性测试工具如果能对上述三种HTTP行为模拟的越接近,则性能测试工具的仿真度越高,测试结果与真实能力越接近。因此本文就围绕这三种能力进行对比测试。