IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 性能测试day1 -> 正文阅读

[开发测试]性能测试day1

本质:基于协议模拟用户发出请求(业务的模拟),对服务器形成一定的负载,来测试服务器的性能指标是否满足要求
与界面无关

时间性能
空间性能

性能测试的分类
性能测试

模拟生产运行的业务压力量和使用场景
1.验证系统是否有系统宣称具有的能力
2.要事先了解被测试系统经典场景,并具有确定的性能指标
3.要求在已经确定的环境下运行
也就是说,这种方法是对系统性能已经有了解的前提,并对需求有明确的目标,并在已经确定的环境下进行的

负载测试

在被测系统不断加压,直到性能指标达到极限,如响应时间超过预定指标或某种资源已经达到饱和状态
1.找到系统处理能力的极限
2.需要在给定的测试环境下进行,通常也需要考虑被测系统的业务压力和经典场景、使得测试结果具有业务上的意义
3.用来了解系统的性能容量,或是配合性能调优来使用
也就是说,这种方法是对一个系统持续不段的加压,看你在什么时候已经超出“我的要求”或系统崩溃

压力测试(强度测试)

测试系统在一定的饱和状态下,如cpu、内存在饱和使用情况下,系统能够处理会话能力,以及系统是否会出现错误
1.检查系统处于压力性能下时,应用的表现
2.通过模拟负载等方法,使得系统的资源使用达到较高的水平
3.用于测试系统的稳定性
也就是说,这种测试是让系统处在很大强度的压力之下,看系统是否稳定,哪里会出问题。

并发测试

通过模拟用户并发访问,测试多用户并发访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题
1.发现系统中可能隐藏的并发访问时的问题
2.关注系统可能存在的并发问题,如系统中的内存泄露、线程锁和资源争用方面的问题
3.在开发的各个阶段使用需要相关的测试工具的配合和支持
也就是说,这种测试关注点是多个用户同时(并发)对一个模块或操作进行加压。

配置测试

通过对被测系统的软硬件环境的调整,了解各种不同对系统的性能影响的程度,从而找到系统各项资源的最优分配原则
1.了解各种不同因素对系统性能影响的程度,从而判断出最值得进行的调优操作
2.一般在对系统性能状况有了初步了解后进行
3.用于性能调优和规划能力
也就是说,这种测试关注点是“微调”,通过对软硬件的不段调整,找出这他们的最佳状态,使系统达到一个最强的状态。

可靠性测试

给系统加载一定的业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定
1.验证是否支持长期稳定的运行
2.需要在压力下持续一段时间的运行(2-3天)
3.需要关注系统的运行情况
也就是说,这种测试的关注点是“稳定”,不需要给系统太大的压力,只要系统能够长期处于一个稳定的状态。

性能指标
响应时间

响应时间=网络延迟时间+webservertime+appservertime+databasetime
网络传输时间+服务器处理时间
不包含前端页面渲染时间,到浏览器收到请求后响应数据截止
2s优秀---5s良好---8s较差

tps—每秒处理的事务数—transaction per second
hps:hits per second
吞吐量:描述的使服务器的处理能力
资源利用率

在一定的负载情况下,服务器资源占用情况
cpu利用率
不允许超过70-80%
队列长度
内存(Mem)利用率
80%以下
虚拟内存---页交换频率
带宽利用率
100Mbps=12.5MB/s
1Byte=8bit
如果资源利用率太小,造成资源浪费

用户数—并发用户
户数
在同一时间向服务器发送请求的用户数量
与每秒的并发请求数不同,一定要确认需求的目的使并发用户数量还是并发请求数

性能测试流程

需求分析
测试对象
常用的、核心的、重要的、数据量、并发量
例如:登录、注册、搜索、添加购物车、下单、支付
确定性能指标
吞吐量、TPS—服务器每秒处理的请求数
响应时间—从浏览器发出请求,服务器处理,到收到响应所需要的处理时间
用户数—并发用户数
资源利用率—cpu、Mem、磁盘io、network
例如:要求每天完成交易额2亿
客单价—200-500,以300计算–28原则算,以24小时计算
求每秒最大交易数
200000000/3000.8/(240.2)/3600=30.8个/s
每秒交易数200000000/300/24/3600=7.7
2/8原则—80%的用户请求,集中在20%的热点数据上,或时间段
每天8小时系统支持500w用户访问
50000000.8/(80.2)/3600=694个/s
每秒访问数5000000/8/3600=173

测试场景
单一场景:登录、注册、搜索、添加购物车、下单、支付
混合场景:用户使用场景
系统使用场景
测试计划
测试目标
测试人员组织
压测进度安排
压力机—配置-要求-数量
风险
测试方案
测试工具—loadrunner(HP:ALM\QTP(UFT))–jmeter
测试环境—数据库–服务器–架构设计–有条件情况下尽量和生产环境一致
测试策略—单一场景–混合场景
监控工具
linux—nmon–rpc–jvisuaIVm–Spotlight
widow—Spotlight–perfmon.exe
用例设计
测试脚本—基于脚本的用例
场景设计—基于场景的用例
测试执行
脚本编写
场景监控设计
运行场景
监控场景
测试报告
定位分析问题
后端—代码、软件–数据库,应用服务器、硬件
前端
网络
在这里插入图片描述
安装loadrunner
OS是xp、win7、win2003、win2008
windows–家庭版–无管理员权限
专业版
旗舰版
支持浏览器IE8/9
安装
直接解压
虚拟光驱
可以单独安装压力机
破解:每一步都得管理员权限运行
问题:杀毒软件、防火墙是否关闭、IE的Internet选项第三方扩展是否关闭开启
VuGen
脚本录制流程

新建脚本选择网络协议
1.自带协议探测工具
2.借助网络扫描工具
3.询问开发
单协议脚本
多协议脚本
最近采用的
录制前准备
选择被测系统类型—浏览器—非浏览器
录制时采用的浏览器—IE—如果是64位的选择program files(x86)下面的IE浏览器
被测服务器地址
其他选项默认
录制设置
options
General—Recording
HTML-based script
1.Based-HTML(默认):将打开一个网页HTML
web_link\web_submit_form—依赖上下文关系,
编写规则:web_link(“访问首页”,“Text=LoadRunner”,LAST)
web_url\web_submit_data—不依赖上下文关系
编写规则:web_url(“访问首页”,“url=http://www.baidu.com”,LAST)
URL-based script 将每一个不同的url的请求封装为步骤
HTTP Properties—Advances
Support Charset—UTF-8
UTF-8解决乱码问题
开始录制
工具栏
停止、暂停、插入新的action、开始事务、结束事务、插入集合点、插入注释
问题:检查ie是否为默认浏览器
检查ie版本是否9以下
更换火狐浏览器
检查杀毒软件是否关闭
解决不了,放弃录制,选择手写脚本
停止录制
脚本查看方式
script view 可以查看全部录制的脚本代码
Tree View 可以查看每个url获取的页面
脚本的组成
init
action
end
总结:
VuGen的脚本分为三部分:Vuser_init,Action,Vuser_end.其中Vuser_init和Vuser_end都只能存在一个,而Action可分为无数多个部分,可以通过点击旁边的new按钮来创建Action。在迭代执行测试脚本时,Vuser_init和Vuser_end中的内容只运行一次,迭代的是Action部分
回放结果查看----Test Result

脚本回放设置—run-time settings
Run logic
用户建模—init、action、end
Pacing
1.上一次迭代一结束就开始新的迭代
2.在上一次迭代结束之后
延迟固定的时间xxx开始新的迭代
延迟随机的时间段开始新的迭代
3.延迟
固定的时间xx开始新的迭代
随机段的时间开始迭代
注意延迟的时间包括上一迭代运行的时间
Log
1.启动日志
只有当错误出现的时候才记录日志
扩展日志—参数置换信息
标准日志
2.关闭日志
Think Time
1.忽略思考时间
2.回放思考时间
按照录制思考时间
让思考时间乘以几倍
使用录制思考时间的随机百分比
统一规则:限制思考时间不超过xx秒
作用:更加真实的去模拟用户操作之间的延迟
Internet protocol–checks
启动/关闭图片和文本检查
Multithreading
1.以进程方式运行虚拟用户
进程独享一块内存,比较稳定,大约占4M以上
内存资源浪费,可模拟的虚拟用户少
2.以线程方式运行虚拟用户
线程之间共享一块内存,可以模拟的虚拟用户多,大约占用1-2M
进程和线程的区别
1.定义
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位
线程是进程的一个实体,是cpu调度和分派的基本单位,它是比进程更小的能独立运行的基本单位
线程自己基本上不拥有系统资源,但它可同属一个进程的其他线程共享进程所拥有的全部资源
2.关系和区别
a.同一个进程中的多个线程之间可以并发执行,线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制
b.线程同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列,但线程之间没有单独的地址空间,一个线程死掉等同于整个进程死掉,进程有独立的地址空间,一个进程奔溃后,在保护模式下不会对其他进程产生影响
c.一个程序至少有一个进程,一个进程至少有一个线程
d.进程在执行中拥有独立的内存单元,而多个线程独享内存,从而极大提高了程序的运行效率
e.多线程的意义在于一个应用程序中,有多个执行部分可以同时进行,但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配
f.线程执行开销小,但不利于资源的管理和保护,而进程则相反
作用
Virtual User Generator—录制回放、开发维护脚本
LoadRunner Controller—用于创建、运行和监控场景
LoadRunner Analysis—用于生成测试报告,分析性能测试结果

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-10-16 19:56:14  更:2021-10-16 19:56:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 2:34:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码