发布新日志

  • 关于性能测试

    2009-06-26 09:06:00

     

    LoadRunner

    性能测试概念

    性能测试

    性能测试是指在既定目标下,如果达到则是通过,作为以后回归测试的基线;如果没有达到,则找到瓶颈,给出报告。

    性能测试不可以在公网上做,原因是:

    1.  影响现有网速

    2.  网络因素是无法模拟的,如同是可能有用户在下载东西。

    1.1 压力测试

    压力测试是指在压力一定情况下,持续时间不同,看多久系统能出错。

    1.2 负载测试

    负载测试是指在时间一定情况下,不断加压,看承压能力。

    1.3 并发数

    某个时间点,在同一个系统,以前做一件事情,既同时对服务器造成压力。

    1.4 响应时间

    从用户角度上看是指从用户发出请求到请对正常响应的这段时间。

    从服务器角度看是在服务器从接受到请求开始到给出正常相应结果。也就是服务器的处理时间。

    1.5 在线用户

    在线用户对系统不一定产生压力

    1.6 PV:pageview

    Pv是页面浏览率,也就是页面的打开次数。

    1.7 吞吐量

    服务器返回个客户端的字节数。

    1.8 业务成功率

    1.9 系统资源耗用

    系统资源耗用包括cpu,内存,网络带宽和磁盘等。

    1.9.1 CPU

    1.9.2 内存

     

    1.9.3 网络带宽

    1.9.4 磁盘

    2 测试流程

    2.1 性能测试需求分析

    2.1.1 没有明确需求时如何开展性能测试

    用户频繁使用,并且存在大量用户使用的

    系统关键功能点,并且存在大量数据操作

    与外部系统存在接口的,有互相调用的关系,大量数据流转

    2.1.2 确定测试点以后,需整理测试点提交给上级做评审

    2.1.3 要求对系统相当熟悉

    系统架构

    组网图

    业务流程

    功能重点

    2.2 测试指标提取

    2.2.1 并发数(预期值)

    业务量

    1、查询系统日志、数据库、网络流量分析

    2、客户给出指标

    3、项目经理

    4、开发经理、测试经理

    5、自己经验

    时间段

    计算方法

    2.2.2 响应时间

    用户操作时间(think time

    服务器处理时间(25810

    2.2.3 业务成功率

    关键业务(金融、生命财产安全)100%

    用户群体

    面向大众>=95%

    面向特定用户>=98%

    2.2.4 系统资源耗用

    CPU持续使用率

    Cpu使用率<20%为资源空闲或者浪费

    Cpu使用率>=20%<=70%为正常

    Cpu使用率>70%为超负荷

    内存(与CPU持续使用率相同)

    网络带宽

    使用带宽不超过总带宽的50%,如果超过则可能存在瓶颈

    磁盘

    CPU队列长度不超过CPU数量+1

    2.2.5 吞吐量

    2.2.6 TPS(每秒钟处理的事务数)

    2.3 业务模型建立

    2.3.1 约束条件

    数据约束:

    1.参数化

    2.造测试数据

    环境约束:

    1.关联:服务器端可控的,服务器端返回给客户端

    2.参数化:客户端可以控制的

    2.3.2 业务流程分析

    后面action划分做准备

    2.3.3 业务流程图

    2.4 测试用例设计

    根据模版填写数据

    2.5 脚本录制

    2.5.1 搭建测试环境

    环境要求

    硬件要求

    软件要求

    数据要求

    技术要求

    工具培训

    项目培训

    环境调试

    2.5.2 协议选取

    自己识别

    B/S结构常用HTTP协议

    C/S结构多用Winsocket协议

    未加密

    加密

    如果是乱码,则需自己写测试代码,前提是必须知道加密算法

     问开发

    2.5.3 解决常见问题

    无脚本内容:选择正确的协议

    无法打开浏览器:检查浏览器版本,去掉插件,更改浏览器

    脚本内容乱码:utf-8

    2.5.4 注意Action划分

    最好事先划分好action

    切换action应该在提交操作之前完成

    2.6 脚本优化

    2.6.1 注释

    1.增强脚本可读性

    2.提高脚本维护性

    2.6.2 集合点

    1.initend部分是不能设置集合点的

    2.集合点应该在提交请求的动作之前设置

    2.6.3 事务点

    2.6.4 参数化

    什么时候需做参数化

    1.系统对数据有唯一性要求(注册名、流程id等)

    2.系统对同样业务不允许多次操作(对登录,业务流程处理方法)

    3.更真实模拟用户业务行为

    怎么做参数化

    参数化类型

    文件类型

    每次迭代

    顺序

    随机

    唯一

    每次发生

    顺序

    随机

    唯一

    Table类型

    唯一数

    随机数

    时间/日期类型

    测试数据制造

    Excel表:适用于小范围,不超过1000

    编程实现:适用于多数据

    定义生成数据的变量

    循环

    输出打印

    存储过程

    生成数据

    导出数据

    手动操作

    数据正确性高,真实性好

    效率低下

    自动化工具

    QTP

    LoadRunner

    参数化步骤

    1、分析测试数据

    什么地方需要作参数化

    2、选择参数类型,设计分配方式

    3、查找替换对象

    有可能在脚本中多个地方使用了该变量,所以需要全部替换

    4、设定参数化并调试

    2.6.5 关联

    关联概念

    将服务器提供动态变化,无规律的值存放在变量中,当需要使用该变量时,由LoadRunner自动从服务器响应的信息中获取该值,并在后面使用的过程中进行替换

    关联与参数化区别

    关联:服务器提供给客户端的

    参数化:客户端给服务器端,客户端可控的

    什么时候使用关联

    1、操作正确或业务流程正确,但实际没有成功。比如LoadRunner结果报告提示Pass,但实际业务没有成功。首先要考虑的是参数化,再考虑关联(可在业务模型建立环节分析到位)

    2、系统存在动态变化的值,并且无法模拟,无规律的,或者隐藏在代码中。hidden

    3、后面的操作所需的数据是前面操作的输出,比如订票的航班号

    关联方法

    自动关联

    1、录制脚本

    2、保存脚本

    3、调试与回放脚本

    4、使用快捷键Ctrl+F8,搜索关联点

    5、根据实际得出的结果分析是否需要做关联,然后选择需做关联的点,点击【Correlate】按钮进行关联

    6、调试脚本

    手动关联

    1、录制两份相同的脚本

    2、保存:a、保存的路径不要太深;b、名称不能有空格;c、名称不能有中文;d、名称不能太长;

    3、打开tools-compare with scrips,进行脚本比较

    4、选择options-view-show inline differences,将真正不同差异点以红色标注出来

    5、将真正不同点拷贝出来,进行分析确定哪些是可以控制(可用参数化处理的),如果不能控制,可考虑使用关联

    6、在服务器的响应信息中找到需做关联的点,确定其左右边界。在loadrunnergeneration log中查找,不能在loadrunner脚本中查找,原因脚本只反映了客户端发送给服务器端的信息,而generation log体现了服务器与客户端交互的完整信息。

    7、在脚本中确定插入关联函数的位置,使用alt+insert快捷键,调出web_reg_save_param函数,输入左右边界即可。

    8、关联完成后,点击编译按钮进行语法检查,然后再运行调试。

    关联函数

    1函数结构

    2参数列表有哪些

    3左边界 LB

    4右边界 RB

    5 savelen

    保存字符长度

    web_reg_save_param("test","LB=outboundFlight value=","RB=>","SaveLen=18",LAST);

    6 offset

    保存字符的起始位置(偏移量)

    7 ORD

    表示获取变量值的起始位置

    默认从第一次出现符合条件的变量值开始读取即ord=1

    如果选择ALL,则会将所有符合条件的变量值保存在数组中

    8 Saveoffset

    从第几位开始保存

    2.6.6 文本检查点(web_reg_find

    作用:测试过程检查业务的正确性

    用法

    web_find: 界面查找

    启用文本检查点(r