测试分析

简介

完成前面章节的学习,对脚本、场景都应该有了一定的认识,但是到现在为止,只能算是入门了,因为我们用 JMeter 做性能测试的初衷是为了发现系统的性能瓶颈,那么体现性能的指标有哪些呢?我们分别站在用户、运维管理员、开发这三个角度去观察下。

用户视角的软件性能

站在用户角度来看,他们只关心系统的响应时间,也就是我们平常说的系统快慢,这个响应时间的真实含义其实包括两个方面:呈现时间和系统响应时间。

呈现时间

呈现时间是指例如打开一个网站的某一个网页,很快就能看到页面的这个时间,我们管其叫做呈现时间。

系统响应时间

系统响应时间是指例如打开一个网站的某一个网页,将网页上的所有内容都加载完成,并且与后台服务交互全部完成之后的时间。

综合呈现时间、响应时间、系统响应时间三者的定义,我们不难得出下面的结论:呈现时间一般都会远远小于响应时间,所以在做性能测试的时候不要被一种假象所迷惑,即我们看到页面响应很快,但是实际压测时的响应时间很大,就认为压测结果有问题,一点要仔细分析出其本质。

管理员视角的软件性能

我们用下图中显示的图表来说明:

开发视角的软件性能

  • 用户和管理员关心的软件性能;
  • 如何通过调整设计和代码实现,或是如何通过调整系统设置等方法提高软件的性能表现;
  • 如何发现并解决软件设计和开发过程中产生的由于多用户访问引发的软件故障,也就是通常所说的“性能瓶颈”和系统中存在的在大量用户访问时表现出来的缺陷。

分层思路

基于上面的性能测试指标,我们通过测试分析来获取性能瓶颈。

分析原则

分析的时候,是有一定的原则的,并不是靠主观臆想得到的结论,用到的原则如下:

  • 木桶原则;
  • 2/8原则;
  • 数据为先的原则;

分析思路

明白了用户视角、管理员视角、开发视角的性能指标,我们就知道了测试目标;了解了性能测试的分析原则,我们即有了找到性能瓶颈的依据,那么还需要学会逐层分析,确定最终的瓶颈。分层思路如下:硬件优先级→软件优先级→数据库优先级→代码优先级→中间件,每一层需要关注的指标如下:

  • 业务指标:TPS、响应时间、错误率。
  • 资源:CPU、内存、Disk、Network;
  • 进程:Top、VMstat;
  • 系统调用或者应用监控,具体包括图片大小、链接池数量、SQL 的慢查询等。

优化方案

作为测试通过上面缜密的分析,我们已经找到了系统的性能瓶颈,那么还应该知道改进的措施,方便系统优化。

对 Web 前端而言,常见的优化方案如下:

  • 减少 HTTP 请求;
  • 使用浏览器缓存;
  • 启动压缩;
  • 尽量在本地解压缩;
  • 图片优化,最耗费性能的点就在于图片的上传、下载操作,试想下,一个 Web 界面缓冲一个 1M 的图片和一个 200KB 大小的图片,响应时间肯定天差地别;
  • CSS 放在页面最前端、JS 在页面下面。
posted @ 2018-11-22 11:27  长安。  阅读(155)  评论(0)    收藏  举报