性能测试

Web前端性能测试
一:HTTP性能相关的技术要点
1.Http协议:超文本传输协议,请求/响应式的应用层协议,基于TCP协议来进行数据传输,一个客户机与服务器建立连接后,发送一个请求给服务器,服务器接到请求后,给予相应的响应内容。
2.HTTP请求组成:请求行,消息报头,请求正文
3.请求方法(常用的)
get:请求获取request-URI所标识的资源
post:在request-URI所标识的资源所标识的资源后附加新的数据
head:请求获取request-URI所标识的资源的响应消息报头
put:请求服务器存储一个资源,并用request-URI做标识
4.状态代码
1xx:指示信息—表示请求已接收,继续处理
2xx:成功—表示请求已被成功接收,理解,接受
3xx:重定向—要完成请求必须进行更进一步的操作
4xx:客户端错误—请求有语法错误或请求无法实现
5xx:服务器端错误—服务器未能实现合法的请求
5.前端性能测试工具
Fiddler,chrome浏览器自带的pagespeed,在线工具WebPageTest
(待实战后补充)

APP前端性能测试
APP端性能测试点很多,例如CPU,内存使用情况,以及如何快速完成页面渲染,有很多也是和具体app面向的领域相关。

一:Android内存问题分析
就APP实际项目来看,android平台应用的内存问题比较容易出现,主要症状是内存使用过高,以及因为内存不够而导致崩溃。

1.Java内存管理介绍
(1)堆内存垃圾回收机制
在每个进程中,会有一个垃圾回收线程负责检查是否有没有引用到的对象可以被释放掉,称为标记过程,这个过程会从各个垃圾回收根出发,递归遍历它们引用的对象,生成由不可以被回收的对象组成的图的数据结构,垃圾回收根包括:静态变量,栈上指向的堆内存对象,寄存器,其它

2.Android内存占用分析实践
(1)MAT是一个强大的heap dump内存分析工具
(此处略过,下次实战后再补充)
(2)内存分析关注点:大对象常驻内存和内存泄漏
(3)内存泄漏问题及测试:可以进行一些重复性的操作,例如反复进入activity再回退,查看是否有不必要的对象依然驻留内存。
1)一个高效的测试内存泄漏的方法是使用MAT中OQL,此功能可通过点击MAT主界面工具栏上OQL按钮打开,可以通过OQL语句(类似sql语句)查询堆内存中所有类名包含Bitmap的对象。可通过包名来查询测试的类,再根据类名查询。

二:app内嵌web组件的性能分析
Android webview性能分析:可通过chrome进行调试,程序这添加下面代码即可开启调试开关:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES>KITKAT)
{
  webView.setWebContentsDebuggingEnabled(true);
}

此外,还可以用webview提供的api进行白盒测试
setWebChromeClient–主要可以提供通信相关的通知
setWebViewClient–主要可以提供UI,JS相关通知

后台服务性能测试
1.性能测试的目标和类型
性能测试目的是为了量化地评估被测系统的响应时间和容量等维度的指标
负载测试:测试一个系统在预先定义的负载情况下的性能表现,看数据结果是否在可接受的范围内
压力测试:在既定目标的负载测试基础上,了解系统性能情况
(1)了解系统性能的极限,即性能的拐点,在当前情况下最大可支持到怎样的访问和交易量
(2)当超过极限的时候,系统行为是什么?拒绝服务,崩溃以及是否会造成数据丢失等问题
(3)帮助我们找到系统的瓶颈,当性能到达上限时,进一步提升阻碍在哪里,是架构,组件,编码还是配置问题
耐久性测试:从时间维度上考虑性能,看是否具有可持续性。例如系统用久了会变慢可能包括:数据量累积造成DB和日志等增大影响性能,内存泄漏等,系统的线程管理,队列处理等设计不合理,长时间运行特别遇到波峰情况会出现异常。可提前构造大量数据或贴近负载数据进行长时间大量测试
可扩展性测试:测试中通过调整后端配置,比如增加新的服务器或者改变负载均衡的设置等方式观察测试数据是否有预期的增长。
基准测试:基准测试特点在于有一套标准化的测试套件,甚至整个测试环境。进一步可分为二类:一类是某个组织内部自己定义的一套针对某个产品的标准化的性能测试,测试环境,方法和参数配置等在内部达成一致,另一套是通用的对外公开的基准测试。

2.压力场景的建模
(考虑:需要在性能测试中模拟哪些类型请求;需要多大压力对应到并发量;需要构造怎样的测试数据;对测试工具有什么要求)
(1)获取和模拟单个用户的行为
性能测试本质也是一种模拟,通过工具和脚本模拟出真实用户请求,通过并发的方式来放大流量测试后台服务性能,并记录测试结果数据。
1)获取用户操作对应的接口请求
2)模拟用户请求:一是在工具中配置请求(Jmeter),二是通过代码的方式(脚本)
3)think time:加入固定计时器模拟真实用户操作时考虑时间
(2)构建虚拟用户组:
用jmeter创建多个线程组
(3)测试流量的设定
1)选择测试数据样本
2)并发量
3)实际系统的流量曲线

3.测试工具
(1)测试工具主要组成部分
虚拟用户生成器:模拟用户真实行为,其产出的数据/配置/脚本提供给流量发生器来执行
流量发生器:完成和被测服务的协议交互;通过多线程/多进程/多主机等并发方式将虚拟用户数量放大;记录执行过程中的部分结果,比如协议完成情况,包含结果和响应时间等以及并行度等数据
控制台和界面主要功能是提供测试人员操作平台,并实时展示相关数据。
资源监控器:在性能测试执行过程中,同步收集被测系统的资源使用数据,包括cpu内存等方面

(2)测试数据的收集
1)产品的主要性能指标
支持的最大并发用户数
每秒处理的请求或事务数(有逻辑意义的多个请求组合)
请求响应时间
支持的最大带宽
需注意:
作为性能指标,业务逻辑的正确性是前提
工具给出的指标和我们的理解是否一致
对于异常数据的容忍度
关于响应时间的理解:事务响应时间/页面响应时间/URL响应时间/服务器响应时间/连接建立时间/第一个数据字节的时间

2)服务器资源使用情况
了解当前压力下,系统各项资源使用情况
通过资源使用情况分析看是否测出系统最大性能
是否有某项资源使用已达上限,成为瓶颈
是否有其它非被测系统模块占去资源

cpu使用率:top命令
内存使用率:top命令

3)产品其它指标数据
主程序的进程/线程数及动态增长情况
数据队列的使用和增长情况
cache/buffer的使用情况
打开的文件句柄数
目录下的文件数,日志大小等

4.分析和报告
一是数据分析,二是性能测试报告编写注意事项
性能数据计算方式:平均值/标准差/最大最小值/中位数/
注意事项:简要说明被测系统,测试目的
前序 汇总测试结果以及对应结论
后序对测试场景,测试方法和工具简要介绍
测试环境被测平台版本等信息
附件bug或者链接bug平台

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值