LR基本概念

性能测试:HP LoadRunner11
一、初步概念:
1、功能测试:测试产品的功能是否满足功能需求。
如:ATM取款(在线取款)是否成功
或转账操作是否成功
-- 一个用户
2、性能测试:测试产品的性能是否满足性能需求。
包括指标:时间、多用户共同使用
如:ATM取款(在线取款)耗时30分钟
十万人同时转账,系统崩溃了,都属于性能问题。

结论:性能测试基于功能,其要求高于功能
测试基本流程:
功能测试、安全测试、性能测试

招聘的需求:
A. 功能测试(手工、自动化) 代码要求高
B. 性能测试(只能自动化) 协议和业务的理解 脚本的增强
硬件、操作系统、网络、服务器、数据库、软件结构、算法
C. 手机测试(手工、自动化)
D. 接口测试(使用工具访问后台接口 功能、性能、安全)

二、性能测试的课程安排
1、性能测试的基本概念-1~2天
如何掌握一门技术?3W1H法
What? 是什么? 核心概念
数组:用来保存一组相同类型数据的载体、容器、数据结构
Why? 为什么? 优势
Where? 在哪儿用? 应用场合 面试的问题有针对性
How? 如何使用? 使用步骤、注意事项 -- 结合项目描述

哪些行业、软件需要进行性能测试?
1)对性能要求较高的:通讯、银行、金融、证券、保险、互联网应用(电商、社交软件、搜索引擎...)
2)对性能要求较低的:单机软件、少量用户的系统
比如:计算器、单机版App

2、性能测试工具:HP LoadRunner11 份额:60%
其它工具:JMeter 20%
1)LoadRunner的初级部分:三大组件的基本运行
a. 脚本生成器:录制、调试、增强性能测试脚本
b. 控制台:好比总指挥部
c. 结果分析器:分析性能测试结果数据,获取性能测试报告
2)LoadRunner高级部分:三大组件深入掌握

3、性能测试的高级部分:制定性能测试计划(难点),遇到性能问题(瓶颈),如何定位、定性、进行性能调优。

功能测试发现的问题:缺陷 bug
性能测试发现的问题:瓶颈 引起性能问题的位置

并行:多任务占据各自资源一起运行
并发:多任务抢占少量资源“一起运行” -- 交替运行

奥运门票系统分析: 需求预估不足,导致测试通过,但不能满足实际的压力。
压力激增--瞬时压力:并发压力(并发测试)
系统瘫痪-- 宕机(down机) dang4

客户端 服务器
北京------> 上海 网络平均延迟:0.2秒
上海------>

三、性能测试的概念 客户端 -网络- 服务器
1、性能测试: 比喻成“攻坚战” 测试机 攻打 被测系统
严阵以待、想方设法、放马过去、方知厉害

模拟真实的生产环境,制定性能测试计划,模拟不同用户使用不同压力去访问(压测)被测系统,根据计划中的性能指标分析系统是否满足性能需求。
常见性能指标:(重要面试题)
平均事务响应时间、TPS 每秒事务数、最大并发用户数
...

关键词:需求、计划、环境、工具、执行、结果、分析、报告

2、注意:性能测试之前要做好系统备份!
3、性能测试首先看性能需求,如果没有需求,要和客户交流,根据被测系统相关资料,结合测试经验,编写性能测试计划(设计),测试计划是后续展开性能测试的重要依据。

4、负载测试和压力测试的区别?(面试题)
1)共同点:都是在测试过程中逐步加压(递增测试)
2)负载测试 Load Testing
是在正常范围内测试,满足性能需求、正常运行;
-- 见好就收
3)压力测试 Stress Testing
可以在极端范围内测试,测试系统的性能极值;
-- 使劲折腾
4)举例:性能需求中要求系统支持100用户并发
负载测试:20 40 60 80 100
压力测试:100 200 300 ...

5、影响性能的因素:
硬件(CPU、Memory、Disk)
中央处理器 内存 磁盘
操作系统 Linux/Unix/Windows...
应用程序
网络:4G网络 带宽 形容网速的概念 5G 10Gbps
100Mbps 100M bit per second
1024 * 1024 bit / sec
1Byte = 8bit 相当于12.5MB/sec

1)数据库:60%以上的性能问题和数据库有关
index 索引 避免逐行扫描,能通过索引快速定位
2)硬件配置:好的系统可伸缩 增加、去除设备改变性能
3)操作系统:Linux/Unix 一般和系统配置有关
4)其它:网络、网络协议、客户端等

网络协议: Protocol 网络通信的语言、规范、规则、标准
比如:HTTP TCP UDP FTP
结论:分析协议是性能测试的关键。
面试题:请简述TCP/IP 4层协议模型。TCP/IP协议簇 cu4
从上到下:分工不同、角度不同
层的名称 不同协议举例
应用层:HTTP 超文本传输协议 FTP 文件传输协议
SSH 安全的shell ... 满足用户功能
传输层:TCP(可靠)和UDP(不可靠) 是否可靠
网络层:IP地址 子网掩码... 为了找到机器
物理层:底层比特流传输 bit 二进制流

面试题:TCP和UDP的区别?
TCP: 传输控制协议 可靠的协议,效率偏低
原理:传输数据时需要进行确认
建立连接时需要三次“握手”,断开连接时需要四次“握手”
--- 相见时难别亦难
适用于:文件传输、网页传输等可靠获取信息
大量的应用层协议基于TCP,比如HTTP FTP ..
UDP: 用户数据报协议 不可靠的协议,效率偏高
只管发,不管确认
适合于:视频点播、流媒体
A 我特别能吃苦! --> B

HTTP协议:超文本传输协议
是互联网中最基本、最重要的协议
http://www.tmooc.cn
特点:简单的(格式)、无状态(不保存用户状态)的协议
Http Request: 客户端向服务器发送Http请求
Http Response: 服务器向客户端返回Http响应(应答)
一次请求,一次响应就是一次交互 基于HTTP协议的

6、被测系统 SUT
SUT (System Under Test) 系统
AUT (Application Under Test) 应用
EUT (Environment Under Test)环境
就是:Web服务器、数据库服务器、网络的统称
B/S架构
Web应用典型三层架构:
被测系统 SUT
___________________________________
Client --网络-- Web Server --网络-- DB Server
客户端浏览器 Web服务器 数据库服务器
部署Web应用 管理表和数据
1.请求Request tom 123 ->2.接收并处理 -> 3.查询select
6.响应Response <- 5.继续处理 <- 4.结果
登录成功页面

登录: Username: tom
Password: 123
Login


四、LoadRunner的工作原理:录制-回放的工作方式
1、录制时:LoadRunner根据相关网络协议,记录下客户端和服务器二者之间的对话(请求包、应答包);
生成了性能测试脚本(代码)
-- 使用真实的客户端浏览器
2、回放时:LoadRunner模拟真实的客户端向服务器发起请求,并按照增强后的脚本去验证服务器的应答(检查点)。
补充说明:有时脚本录不下来,需要自己写脚本,发现测试时通过了,但是实际运行时服务器瘫痪了。
原因:没有模拟真实的客户端效果,接收也出现问题,导致失败;
结论:即便是自己写脚本也要模拟真实的客户端效果。

3、LoadRunner的三大组件:各司其职、各尽所能
1)虚拟用户脚本生成器: VuGen 或 VUG 好比:兵工厂
(Virtual User Generator)
功能:录制、编辑、调试性能测试脚本 脚本好比武器
模拟1个用户回放脚本
模拟功能自动化实现,为性能测试提供增强点
2)压力调度控制台(Controller) 好比:总指挥部
功能:创建场景、运行场景、监控场景,收集测试结果数据
场景:Scenario 就是一个大型的配置文件
保存场景界面设置的细节,表示整个测试计划
简单地说:安排多少人,执行什么脚本,执行多久
3)压力结果分析器(Analysis)
功能:把收集到的测试数据以各种图表形式展示;
便于分析性能情况,得出测试结果报告。

五、关注SUT,并进行脚本的录制和回放。
1、熟悉SUT:LR自带的B/S架构的系统 WebTours
航空订票系统
先启动Web服务器:Xitami 小型服务器软件
打开浏览器,访问:URL 地址 统一资源定位
http://localhost:1080/WebTours/
协议名 主机名 端口号 应用名
常见默认端口号:
Tomcat默认8080 Oracle: 1521 Mysql: 3306

用户名:jojo
密码:bean
系统功能介绍:
1)Login: 用户登录 只有用户登录成功了,才称为在线
此时用户具有访问系统的某种权限
2)Sign Off: 退出登录 用户离线,放弃权限
3)Flights: 订票
4)Itinerary: 查看订票记录
5)Home: 主页
6)其它:注册等

2、LR使用前的注意事项:
1)使用LR之前,修改浏览器配置(默认IE)
<1> 工具 -> Internet选项 -> 常规 -> 设置
-> 每次访问此页时检查
原因:当脚本更新时,能够及时适应
<2> 工具 -> Internet选项 -> 程序 -> 重置Web设置
原因:恢复录制时自动打开的浏览器为IE
<3> 工具 -> Internet选项 -> 高级
-> 去除 启用第三方浏览器扩展
原因:避免录制时的干扰
2)由于当前教学环境,导致LR三大组件运行缓慢
解决方法:禁用本地连接
右击 网上邻居 -> 属性 -> 右击 本地连接 -> 停用
注意:实际环境中不能停用!
测试机需要通过网络访问、压测被测系统服务器
服务器和测试机是不同机器
目前是直接访问本机 localhost 可以停用

3)如果WebTours中Flights功能无法显示:
原因:和Oracle中Perl服务资源冲突
解决方法:删除以下两个目录 前提:先关闭perl.exe进程
D:\oracle\product\10.1.0\db_1\perl\5.6.1\bin
删除 MSWin32-x86目录
D:\oracle\product\10.1.0\db_1\perl\5.6.1\lib
删除 MSWin32-x86目录

4)要求打开LoadRunner任何一个组件,都从开始 -> 所有程序中打开,不能使用快捷方式。
5)当录制时,如果被测系统网页无法自动打开(浏览器),因为系统某些服务产生的影响,比如:java.exe,建议关闭所有无关的、有影响的服务:
java.exe、杀毒进程、ApacheXxx、oracle、mysql、sqlserver、TNSLSNR、TomcatXxx、perl、电脑管家...
技巧:先对进程列表按照进程名称排序,便于合并查找

3、案例:录制并回放用户登录脚本
使用:VuGen
开始 -> 所有程序 -> HP LoadRunner -> Applications
-> Virtual User Generator
点击New 新建脚本 -> 选择录制的协议:
使用默认的 Web[HTTP/HTML]
-> Create 创建
填写的信息:
1)软件架构类型: Internet Applications (B/S) 默认
Win32 Applications (C/S)
2)选择浏览器类型:默认IE
3)URL Address: 被测系统首页的网址
http://localhost:1080/WebTours/

http://127.0.0.1:1080/WebTours/
4)Working Directory: LR工作路径 默认
5)Record into Action: 录制脚本的位置 默认Action
(vuser_init 初始化 Action 核心动作 vuser_end 结束)
-> OK 自动打开浏览器 SUT首页,开始录制
关注小操作条(录制控制,关注数字的变化 Event 记录事件的步骤,等待数字稳定后才继续操作,避免录制不完整)
-> 输入jojo和bean
-> 开始事务(插入事务)名称:login -> OK
-> 点击Login按钮
-> 结束事务login -> OK
-> 切换到vuser_end模式,点击Sign Off 退出
-> 关闭浏览器 -> 点击Stop 结束录制

建议新建工作目录:C:\work (目录名使用英文、数字)
新建三个子目录:
1)script 存放脚本文件
2)scenario 存放控制台的场景文件
3)result 存放结果分析文件
ctrl+s 将脚本保存在:C:\work\script\day01\login

修改字体:Tools -> General Options -> Environment
-> Editor Comic Sans MS 14 Bold 加粗

录制脚本后:
1)编译:Compile 修改完脚本后一定要编译!
帮助检查语法错误,并能够保存脚本并生成最新的版本。
脚本 23行附近 语法 错误 少个;
Action.c (23): syntax error; found `lr_think_time' expecting `;'
非法的 字符 中文 的;
Action.c (23): illegal character `\0243'

技巧:如何快速提高调试技巧?
-- 可以将正确的代码故意改错,分析错误的位置和提示,见多识广,以便后续遇到时加以解决。

2)回放:Run
VuGen模拟1个虚拟用户,执行脚本中的步骤,向被测系统发请求。(没有打开浏览器,工具在模拟协议的发送)

设置运行后自动出现测试结果: Test Results
Tools -> General Options -> Replay 回放
-> After Replay 选择 Virtual test result 虚拟测试结果

分析代码结构:类C语法
vuser_init.c 初始化脚本 仅执行1次
Action.c 核心动作脚本 默认执行1次,可改为n次
vuser_end.c 结束脚本 仅执行1次
globals.h 头文件 具有常用函数的声明 “打招呼”

数学函数: 可以将特定的功能重复使用
f(x) = 2*x + 1; 根据不同的参数获取递增的奇数
函数名(参数) 表达式
f(0) 1
f(1) 3
f(2) 5
f(3) 7
... ...

计算机函数:三个要素
返回值类型 函数名(参数表, ...)
定义一个函数:
int add(int a, int b) { //求a与b的和
return a + b;
}
使用时:add(1, 2); 求1加2 结果返回3
add(3, 5); 求3加5 结果返回8
函数调用 直呼其名,传入参数 达到功能的重用

初始化函数:可以省略返回类型int 整数类型
函数名 无参数
int vuser_init()
{
return 0; //返回0代表成功结束 -1 错误退出
}


归纳:
1、性能测试常见的概念
2、性能测试工具LoadRunner基本原理:录制-回放
3、LoadRunner三大组件:VuGen、Controller、Analysis
4、录制和回放脚本基本步骤、技巧
5、调试好测试环境:测试机LR 被测系统 WebTours

posted @ 2019-06-10 22:03  不沉之月  阅读(1881)  评论(0编辑  收藏  举报