回顾day1:
1、什么是性能测试?
模拟真实的生产环境,以各种不同的压力(模拟大量用户)去测试被测系统,去”攻击“测试系统。同时
记录下被测系统中各台服务器的各种重要资源情况,包括cpu、内存、磁盘和网络等资源。
2、简述LoadRunner的工作原理。
1、录制时,loadRunner记录下客户端和服务器二者之间的对话。
2、回放时,LoadRunner模拟真实的客户端向服务器发起请求,并按照脚本去验证服务器的应答。
3、简介LoadRunner的三大组件,写出其中英文名称。
1)虚拟用户脚本生成器(Virtual User Generator) VUG
功能:录制、编辑测试脚本
2)压力调度控制台(Controller)
功能:创建场景、运行场景、监控场景、收集测试数据
(场景:就是一个大型的配置文件)
3)压力结果分析器(Analysis)
功能:把收集到的测试数据以图表的形式展示出来,生成测试报告。
4、并发和在线的区别。
5、简述点击率和吞吐量的概念,并简述其区别。
点击率:每秒钟用户向Web服务器提交的HTTP请求数。
- 点击率越大,对服务器的压力也越大。
- 注意:点击不是鼠标的一次“单击”操作,因为在一次“单击”操作中,客户端可能向服务器发出多个HTTP请求。
吞吐量:用户在任意给定一秒从服务器端获得的全部数据量,单位是字节。吞吐量/传输时间就是吞吐率。
=========================================================================================
一、作业讲解
1、性能测试中,脚本不建议调试过于复杂,脚本中action过多。
------ 脚本过于复杂,则系统测试结果出现问题后不易查找性能瓶颈,定位较难,降低工作效率。
一般的情况,一个测试点(操作)对应一个脚本。
2、录制脚本不要过急,要待也没资源下载完毕后,再进行下一步,否则脚本无法录制完成,不能调试成功。
3、脚本中检查点不需要加过多,一两个即可,因为检查点也是函数,执行时也要耗费资源。----如果脚本添加函数过多,过于复杂,则需要耗费额外的资源,但是所有服务器的资源监控数据都会记录在被测系统的结果报告中,造成报告中数据不准确。
4、性能测试中的在线测试是以循环为主,如查询稿件,则脚本的运行方式:登录--查询稿件 - 查询稿件-查询稿件 - 退出系统;即脚本中init --- action ---action---action ---end
5、LR脚本中的注释:
1)注释单行:// 2)注释多行:/* .....*/
6、LR和QTP的相同点和区别:
1)LR和QTP的相同点:工作方式都是录制-- 回放
2)区别:
a、LR关心的是客户端和服务器直接的对话(数据包),关心的是请求(客户端发出)和应答(服务器端发出),关心的是网络协议(网络上的语言:http)
b、qtp关心的是aut的界面,以及界面上的对象及对象的属性。
7、正常来说,一台PC机可以支持上百个进程或者上千个线程,如果使用线程来运行虚拟用户,则一台PC机一般可以支持1000-2000用户,如果遇到5000用户在线,则需要联机测试(多台笔记本)。
二、性能测试策略:(基准测试、并发测试、综合场景测试、疲劳强度测试、内存泄漏测试、数据容量测试、极限测试、递增测试)
1、在进行性能测试之前,功能测试要先通过。
2、基准测试(Benchmark Testing):单用户测试,目的是为其他测试提供参考依据。
3、递增测试:每隔一段时间(如5秒、10秒)加载不同数目的虚拟用户执行测试操作,对测试点进行递增用户压力加载测试。
递增测试存在的意义:如果所有的虚拟用户同时加载,可能造成AUT的资源突然增大,进而影响后续测试中关心的测试点的数据,所有前面可以稍稍放缓,递增加载虚拟用户。
4、在线综合场景测试:号称能干最真实的模拟实际的生产场景,一般情况下综合场景中要求脚本为3个以上,将虚拟用户分成不同的组,每组执行不同的脚本。
注意:一般不要将Login脚本加到综合场景中,因为综合场景一般持续时间很长(1个小时左右),这段时间内,所有的用户在循环执行操作,登录不适合做循环。
如:10%的用户执行浏览首页,50%的用户执行查询订单,40%的用户执行订购机票,最大限度的模拟系统的真实场景,使用户宇宙系统投入使用后的性能水平。
5、注意:在设置综合场景中用户执行操作比例时,大部分的用户应该做浏览或者查询,少部分做提交操作。
6、解决端口冲突的问题:
1)查明哪个服务占用了1080端口:netstat -ano 查看1080端口对应的PID(cmd)。
2)再进入任务管理器中进程列表下所对应的PID(进程标识符),将其禁用就可以了(或者在服务中禁掉)。
7、并发测试:多用户在同一时刻同时执行某个操作。并发测试就是考察被测系统的瞬间压力的承受能力。
8、疲劳强度测试:一般指长时间的在线综合场景测试,即在一定的压力强度下,进行长时间的测试,测试的时间经常为7*24小时,或者24小时等等。
9、内存泄漏:指系统运行时,占用的内存没有得到及时的释放,随着运行时间的增加,被占用的内存越来越多,导致可以物理内存被用光,系统运行缓慢甚至宕机,这种现象称为内存泄漏。
10、内存泄漏检测:使用相应的测试软件进行内存指定计数器的监控,观察释放符合内存泄漏的曲线走势,还可以使用专门的内存泄漏检测工具进行测试。
11、数据容量测试:考察AUT(被测系统)中数据库服务器中存储不同容量数据时,AUT的性能反应。
12、数据容量的单位:
1)1024Byte=1K
2)1024K =1M
3)1024M =1G
4)1024G =1T
5)1024T=1P
13、极限测试:也称“摸高测试”,即使用性能测试,逐渐增加被测系统的压力,测试出AUT的极限值,如最大用户数、最大的吞吐量等。
14、LoadRunner的工作方式:
1)脚本生产器将用户的操作录制成脚本(相当于武器)。
2)每个虚拟用户都执行这个脚本(相当于每个士兵都手持武器)。
3)控制台同一管理所有的虚拟用户(相当于总司令部)。
4)被攻击的城堡相当于AUT(被测系统,部署在服务器上)。
15、事务(Transaction):为度量服务器的性能,需要定义事务。事务表示要度量的最终用户业务流程或操作。
16、场景(Scenario):场景是一种文件,用于根据性能要求定义在每一个测试回话运行期间发生的时间。模拟真实环境中,用户运行状况。
17、如何去设置场景的参数:把握一个原则 ---模拟时间的生产环境。
18、Agent的作用:当控制台统一对各个压力生成器(load generator)进行控制,每台压力生成器需要启动agent, agent负责实时侦听来自控制台的指令,以达到协调各压力生成器中虚拟用户的作用。
19、在做联机测试时,联机的机器需要满足两个条件:
1)安装压力生成器
2)启动agent
20、监控器:在性能测试过程中,要监控所有的服务器的重要资源。
21、LoadRunner的工作流程:
1)LR的脚本生成器对AUT进行捕捉和录制(选择正确的协议,模拟Java客户端或者IE客户端),形成脚本。对于脚本可以在run_time settings中进行设置,进而形成场景。
2)在控制台中,对VUS(虚拟用户)进行部署,连同场景,形成各种测试场景(包括基准测试,并发测试,综合场景测试等)。场景可以启动或者停止,包括对于压力生成器的控制,还可以在测试过程中对AUT的服务器进行监控。
3)测试过程中形成的海量数据,在测试结束后统一提交到结果分析器,形成各式图表。
22、控制台和脚本生成器中都有Run_time settings,控制台的优先级更高。
23、LoadRunner录制原理:
-- 自动监控指定的URL或应用程序所发出的请求及服务器返回的响应。
-- 它作为一个第三方监视客户端与服务器的所有对话,然后把这些对话记录下来,生成脚本。
-- 再次运行时模拟客户端发出的请求,捕获服务器的响应。
24、如果遇到查询的脚本,一般情况下,检查点为查询总条数的信息,但是如果系统中信息条数会变化,则需要避开总条数去验证。
25:、录制脚本的过程(以bug为例)
1)new一个新脚本
2)点击“init”
3)填入登录信息(jojo/bean)
4)插入login事务起始点
5)点击login按钮
6)点击“login”事务结束点
7)切换到“action”
8)购票(到最后一个continue按钮截止)
9)插入bug事务起始点
10)点击“continue”按钮
11)插入检查点
12)插入bug事务结束点
13)切换到“end”
14)退出系统(如果直接关闭页面,则用户没有真正退出系统,与服务器的连接还在)
15)关闭页面
16)结束录制
26、上述步骤3和4可以调换位置,因为在输入界面信息时,对服务器没有提交请求,只有当点击“login”按钮时,才将输入的信息提交给服务器。
27、LR脚本中,LR函数都是以web_和lr_开头。
28、Lr脚本中,使用类C语言作为脚本,支持lr函数和C语言函数。
29、思考时间:两个步骤之间的停顿时间。
30、一般在测试过程中(控制台),需要设置思考时间(根据测试的需求);而在脚本生成器中,一般忽略思考时间,越快越好。
三、LoadRunner工具组成(组件):
1、虚拟用户脚本生成器(Virtual User Gennerator) -- 捕获最终用户业务流程和创建自动性能测试脚本,即产生测试脚本。
2、控制台(Controller) -- 根据用户对场景的设置,设置不同脚本的虚拟用户数量。
3、结果分析器(Analysis) -- 分析测试结果
4、负载生成器(Load Gennerator) -- 通过运行虚拟用户产生实际的负载。
代理程序(Agent) -- 部署在各个客户端,协调得到步调一致的虚拟用户。
监控系统(Monitor) -- 监控主要的性能计数器。