概念:性能测试主要是通过自动化测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
分类:性能测试;负载测试;压力测试(强度测试);并发测试;配置测试;可靠性测试。
常用性能测试指标:
性能流程:
1、测试计划阶段:明确测试对象,定义测试目标,定义测试通过的标准,规划测试进度,规划测试人员(需求、开发、测试、运维和配置),申请测试资源,风险控制。
2、测试设计阶段:测试数据,测试用例和测试场景的设计。
3、测试开发阶段:测试环境搭建,测试过程文档定义以及配置,测试脚本开发、调试,测试数据准备,基准测试。
4、测试执行阶段:执行测试用例(执行脚本和场景),测试过程监控(查看log、监控服务器资源、数据库和中间件等)。
5、测试结果分析阶段:出现的瓶颈和给出优化建议。
6、测试报告阶段:测试范围,测试执行以及参与人员,基准测试数据,测试执行的详细步骤(场景设计),测试数据记录、监控结果,测试结果对比以及总结性评价。
性能测试工具。
性能测试工具:loadrunner,jmeter,postman。
Loadrunner组件:
1、脚本生成器(Virtual User Generator):录制最终用户业务流程并创建性能测试脚本,
2、负载调度监控器(Controller)(压测场景):组织、驱动、管理并监控负载测试。(图标显示:运行时的并发用户数,事务的响应时间,通过的事务数,总的通过事务数。Controller保存的是结果文件loadrunner results )
3、数据分析器(Analysis):用于查看、剖析和比较性能结果(Analysis可以将图标合并在一起进行分析,Analysis保存的是分析会话文件Analysis session files)。
Loadrunner的功能:创建虚拟用户、创建真实的负载、定位性能问题、分析结果以精确定位问题所在、重复测试保证系统发布的高性能。
Loadrunner测试步骤:使用VUGen创建脚本,使用Controller创建测试场景,使用Analysis分析测试结果。
Loadrunner工作原理:首先通过VuGen来录制模拟用户行为的脚本;然后根据性能测试目标,在Controller中涉及场景,指定负载生成的方式(如压力机(LG)使用数,并发用户数,执行市场等);接着执行场景并监控被负载服务器的性能指标;待场景执行完毕,调用Analysis来对生成的数据进行分析,最后得出性能测试报告。
使用loadrunner进行性能测试的步骤:
脚本创建的过程:录制脚本(web脚本,App脚本,Java脚本)——回放验证(关联设置,日志分析)——脚本增强(添加事务,参数化,内容检查,错误处理)——设置负载
脚本视图的模块:初始化init(登陆部分脚本)——执行action(业务流程操作,可迭代执行多次)——退出end(退出部分脚本)
录制测试脚本:录制选项:Generator到Recording到HTTP/HTML Level。
录制模式:HTML-based Script和URL-based Script。一般用HTML-based Script。用URL格式的录制是在每一个HTML元素都用了一个web URL函数进行下载,用URL录制出来的脚本特别长不容易关联,脚本有些杂乱。用基于HTML录制的脚本特别简洁。
录制模式选择原则:
事务(transaction):衡量某个action的性能,需要在action的开始和结束位置插入这样一个范围,这就定义了一个transaction。
为什么在loadrunner中使用事务:
关联(correlation):把脚本中某些写死的数据、转变成是选取自服务器所送的、动态的、每次都不一样的数据。
Controller测试场景:手动和目标测试场景。
Analysis提高以下报告工具:摘要报告;事务报告;HTML报告。
Loadrunner的webtours订票测试网站,浏览网站时遇到的问题:
1.提示1080端口被占用。
答:cmd,输入命令netstat-ano查找个端口所在进程的PID,找到1080的程序PID,在资源管理器将其关闭,再重启。
2.internal error: your request was unsuccessful cannot create CGI process –program not found.
答:安装strawberry-Perl-5.12.3.0,和loadrunner安装在一个盘符。
录制脚本操作步骤:
关联设置:有些服务器会为每个新绘画分配一个唯一的sessionid,回放录制的会话时,应用程序创建的新sessionid与录制的sessionid不同,如果不进行关联,将会导致回放失败。通过关联,将服务器新分配的sessionid保存到参数中,这样在运行场景时,就会使用新的sessionid,脚本回放成功。
参数化:使用指定数据源中的值来替换脚本录制生成的语句中的参数。(步骤:1、用参数替换Vuser脚本中的常量值;2、为参数设置属性和数据源。)步骤:选中需要修改的参数——右击选中replace with parameter——进行参数化。(当数据过多时使用数据向导,通过数据库进行连接)
日志:
回放日志:脚本执行完成后,可以检查“回放日志”中的消息,以查看脚本在运行时是否发生错误。回放日志使用了不同的颜色文本。黑色:标准输出信息,红色:标准错误信息,绿色:用引号括起来的文字字符(例如URL),蓝色:事务信息(开始,结束,状态和持续时间),橙色:迭代次数信息。
录制日志:捕获浏览器端和服务器端之间的对话,并记录下来生成脚本,包含通信内容,日期,时间,浏览器的请求,服务器的响应内容等。
产生日志:记录了脚本录制的设置,网络事件到脚本函数的转化过程。
Controller:使用Controller将执行脚本的用户从单用户转化为多用户,从而模拟大量用户操作,进而形成负载(多用户单循环,多用户多循环)。
场景:一种用来模拟大量用户操作的技术手段,通过配置和执行场景想服务器产生负载,验证该系统的各项指标是否达到用户需求。而Controller可以对场景设计,执行及监控进行管理。
手工场景:自行设置虚拟用户的变化,模拟真实用户的请求模型,完成负载的生成手工场景是“定量型”性能测试。掌握负载变化过程中系统各个组件的变化情况,定位系统性能瓶颈和系统的处理能力。
负载生成器(Load Generator):生成虚拟用户进行负载。运行脚本的负载引擎(相当于加压机),主要功能是生成虚拟用户进行负载。
服务水平协议(SLA):为负载测试场景定义的具体目标。(具体的目标阈值,判断SLA是否通过)
Loadrunner常用函数
1.事务函数:
Lr_start_transaction():事务的开始
Lr_start_transaction():结束
Lr_get_trans_instance_status():得到事务的状态,可以通过检查状态和终止Vuser,可以避免不必要的活动。
Lr_get_transaction_think_time():得到事务的指定思考时间
Lr_stop_transaction():停止事务,该函数返回当前事务的持续时间,以毫秒为单位,当为错误时返回一个负数。
2.日志函数:
Lr_debug_message():发送调试信息到日志文件。
Lr_get_debug_message():返回当前调试信息
Lr_error_message():发送错误信息到输入窗口或日志文件里
Lr_log_message():发送信息到日志文件
Load_output_message():发送信息到输出窗口或日志文件。
Lr_vuser_status_message():发送虚拟用户的状态到LR的controller。
3.运行时函数:
Lr_abort():终止执行脚本
Lr_continue_on_error():当发生错误后运行的事件,参数1表示发生错误继续运行脚本,参数0 表示取消出错误继续运行脚本。
Lr_exit():该函数允许你运行中退出脚本
Lr_think_time():设置思考时间
Lr_redezous():集合点,可以设置虚拟用户相同操作之前进行集合。通过集合点可以增加被测试应用的压力。
Lr_load_dll():调用dll文件
数据分析器(Analysis):用于查看、剖析和比较性能结果(Analysis可以将图标合并在一起进行分析,Analysis保存的是分析会话文件Analysis session files)。
设置模糊匹配事务名称,事务响应时间
编写性能测试报告: