概念:性能测试主要是通过自动化测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

分类:性能测试;负载测试;压力测试(强度测试);并发测试;配置测试;可靠性测试。

常用性能测试指标:

性能流程:

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进行性能测试的步骤:

  1. 用户模拟行为:录制脚本、回放脚本、关联设置、添加事务、参数化、添加逻辑判断。
  2. 场景设计与监控:场景设计、场景监控
  3. 结果分析。

 

Virtual User Generator介绍

脚本创建的过程:录制脚本(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录制的脚本特别简洁。

录制模式选择原则:

  1. 基于浏览器的应用程序:使用HTML-based Script
  2. 不是基于浏览器的应用程序:使用URL-based Script
  3. 如果基于浏览器的应用程序中包含了JavaScript,使用URL-based Script
  4. 基于浏览器的应用程序使用了HTTPS安全协议:使用URL-based Script

事务(transaction):衡量某个action的性能,需要在action的开始和结束位置插入这样一个范围,这就定义了一个transaction。

为什么在loadrunner中使用事务:

  1. 事务loadrunner度量系统性能指标的唯一手段,
  2. 事务能够用于度量高风险业务流程的性能指标,
  3. 事务能够度量在一组操作中每一步的性能指标,
  4. 通过事务计时实现了不同压力负载下的性能指标对比,
  5. 通过事务计时可以帮助定位性能瓶颈。

关联(correlation):把脚本中某些写死的数据、转变成是选取自服务器所送的、动态的、每次都不一样的数据。

Controller测试场景:手动和目标测试场景。

Analysis提高以下报告工具:摘要报告;事务报告;HTML报告。

locust性能测试以及性能监控 性能测试loadrunner_sed

 

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安装在一个盘符。

(实战)测试需求:登陆webtours订票网站,预定一张机票后退出。

录制脚本操作步骤:

  1. 启动web服务器
  2. 打开virtual user generator界面
  3. 选择脚本协议
  4. 进行界面操作
  5. 回放脚本(replay):回放是验证脚本是否能够正常运行。

关联设置:有些服务器会为每个新绘画分配一个唯一的sessionid,回放录制的会话时,应用程序创建的新sessionid与录制的sessionid不同,如果不进行关联,将会导致回放失败。通过关联,将服务器新分配的sessionid保存到参数中,这样在运行场景时,就会使用新的sessionid,脚本回放成功。

参数化:使用指定数据源中的值来替换脚本录制生成的语句中的参数。(步骤:1、用参数替换Vuser脚本中的常量值;2、为参数设置属性和数据源。)步骤:选中需要修改的参数——右击选中replace with parameter——进行参数化。(当数据过多时使用数据向导,通过数据库进行连接)

日志:

回放日志:脚本执行完成后,可以检查“回放日志”中的消息,以查看脚本在运行时是否发生错误。回放日志使用了不同的颜色文本。黑色:标准输出信息,红色:标准错误信息,绿色:用引号括起来的文字字符(例如URL),蓝色:事务信息(开始,结束,状态和持续时间),橙色:迭代次数信息。

录制日志:捕获浏览器端和服务器端之间的对话,并记录下来生成脚本,包含通信内容,日期,时间,浏览器的请求,服务器的响应内容等。

产生日志:记录了脚本录制的设置,网络事件到脚本函数的转化过程。

Loadrunner Controller(压测场景)

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保存的是分析会话文件Analysis session files)。

设置模糊匹配事务名称,事务响应时间

编写性能测试报告:

  1. 概述:编写目的,项目背景,测试目标,名词解释,参考文档
  2. 测试环境说明:硬件配置,软件配置,测试环境组网图
  3. 测试策略:人力资源,测试方案,测试场景,测试用例(多个用户并发访问页面)
  4. 测试结果:测试结果摘要,用户运行情况,错误数,事务响应时间,每秒点击数,Windows资源情况。
  5. 测试结论
  6. 遗留问题分析
  7. 附件