逐点分析,这样做Web端性能测试
前言:
71%用户希望在手机上打开网页能跟电脑一样快;
5秒钟被认为是用户能忍受的最长响应时间,如果响应时间超过5秒,50%的移动用户会放弃;
33%失望的用户会使用竞品替代;
用户尝试三次出现同样性能问题,50%的人不会再使用该应用。
基于此,我们今天就一起来探讨一下Web性能测试测试点。(写的略粗糙,欢迎大家留言吐槽。)
1、什么是Web性能测试?注意事项有哪些?
性能测试,简而言之就是模仿用户对一个系统进行大批量的操作,得出系统各项性能指标和性能瓶颈,并从中发现存在的问题,通过多方协助调优的过程。而Web端的性能测试应该注意的指标有:用户操作的响应时间、系统的吞吐量(TPS)、系统的硬件资源情况(CPU、硬盘、磁盘)、网络资源占用情况等。
2、HTTP请求
1)关于性能测试中,HTTP请求类的性能指标都需要我们去关注些什么?
响应时间,这里的响应时间一定得是前端+后端的响应时间,我们惯性的思维都是只关注后端服务的响应时间,其实前端的响应时间也是须考虑在内的。
并发测试的相应数据,这部分也得考虑前端数据,这只是一个大概的补充,因为具体的系统需要的数据不一样,其中也不乏包括响应时间。
2)前端的响应时间都涉及到哪些环节呢?
DNS解析
各种请求的连接
TLS的建立
字节流的发送
3)后端响应时间
等待(前端请求)
接收信息流
返回响应数据
这其实就是一个比较完整的Web端请求所需要的环节,而响应时间就是指的这个请求的过程所花费的时间。这部分时间就是一个用户在操作的时候所等待的时间,所以用户所能接受的时间范围恰好是性能测试所关注的时间范围。通常用户所能接受的系统响应时间是3-5s,若大于这个时间节点,将会使用户失去耐心,取消对系统的操作。
3、Web性能测试工具
(1)Jmeter
Jmeter属于一个非常实用的测试工具,在性能测试当中也占有一个非常重要的位置。通常jmeter在性能测试过程中,涉及到的基本是直接对接的后端服务,针对前端的响应基本不会涉及,所以用jmeter来对一个Web系统进行性能测试时,很难去捕获到前端的响应数据。但是后端响应数据获取起来非常的便捷,其中就包括:并发数、平均响应时间、错误率、吞吐量等等,如下图:
那么,关于前端的响应数据,我们该用什么方法去获取呢?接下来讲的一种方法,就是利用LR来进行。
(2)Loadrunner
Loadrunner则是属于企业软件,这就奠定了它功能繁多,用途广泛的基础。LR算是一个大型的性能测试工具了,但是平常使用也还是其基本的一些功能。
LR在用户界面交互上进行了注重,也就是我们之前提到的前端的响应数据,利用LR能够弥补jmeter无法涉及到的前端响应时间这部分,通过更接近用户对界面的交互,得出前端发起请求到请求发送到后台服务这个过程的响应时间。所以,这前后端两部分的响应时间之和,就是我们基本能够判定一个系统真正响应时间的依据。
4、Web性能测试之响应时间
结合以上提及到的响应时间,它所涉及到的有两个部分,一是前端,二是后端:
5、关于整体系统压测策略
那提及到系统压测的策略,其实是想提一下怎样去利用单节点和集群这两种方案。通常的压测,都是采用的单节点来进行的,这样“以小见大”的方法不为一个不可采取的方法,但是这其中还是会造成很多的误差。还有就是,单节点的压测容易压低整个系统的性能指标,因为无法充分的利用系统资源。
而集群压测,在环境部署上是一个复杂点,但是能够充分利用系统已有资源,这样得出的数据能够更加真实有效。在有过量的时间时,可以讲单节点和集群的压测数据进行对比,这样就能发现其中存在的差异。
6、关于性能测试日志
性能测试中,日志是非常能够反应出测试工作中问题所在的一个环节,通过查看日志来定位问题是一个繁杂但是极为可靠的方式。
此类测试中,都会涉及到哪些日志呢?
Jmeter端日志
HTTP端打到Nginx端的日志,这层会涉及到来源IP、请求地址、响应时间等。
Tomcat层日志
Server层日志
7、关于OS层数据监控
CPU监控,通常的指标是CPU使用率不能超过80%,这样给系统预留一个缓冲的范围。这里提及一点,就是其中涉及到多核CPU的情况,严谨的人会去关注每核CPU的使用情况,因为很多时候多核CPU的利用并不是均衡的,整体的CPU使用情况不能反映出单核的使用情况,容易造成误导。
JVM层监控,这主要是去监控线程,其中包含单线程、多线程,同步线程、异步线程。关于同步线程和异步线程,是一个系统中比较关注的点,假如:一个系统处理事务时,采用的是同步线程,很多事务会等待处理造成阻塞,那么这样的系统处理速度就会受到很大的限制,会被视为一个不合格的系统。
最新文章
- Fiddler学习笔记
- 今天遇到的点击添加按钮button_click代码段无法执行的问题
- ubuntu 配置vim(vimrc)
- 拓展:使用终端创建、编译、链接OC…
- 取客户的银行帐号SQL
- 超实用的JavaScript代码段 --倒计时效果
- IIS7.0出错的解决方案 IIS 状态代码:IIS详细错误代码以及解释
- hadoop 2.0 详细配置教程(转载)
- mysql文件导入到数据库load data infile into table 的使用例子
- Android平台中实现对XML的三种解析方式
- 安装Ubuntu时的硬盘分区
- ------ 解析因内核栈溢出导致的 “double fault” 蓝屏 ------
- 001 UI介绍
- 【JavaScript】$.extend使用心得及源码研究
- 编程菜鸟的日记-Linux无处不在
- [Postman]生成代码段(17)
- NPOI 设置样式为粗体
- call()的个人理解
- PDF to image
- 一步一步学android之控件篇——ListView基本使用
热门文章
- AFNetworking 3.0 使用详解 和 源码解析实现原理
- TreeSet的两种实现方法:Comparable和Comparator(Java比较器)
- 黑马程序员_毕向东_Java基础视频教程——位运算练习(随笔)
- Dubbo对Spring Cloud说:来老弟,我要拥抱你
- webpack指南(二)code spliting+懒加载
- jupyter notebook 修改前端样式
- pyhton中的深浅copy
- 大清朝早亡了,还没有入门 Spring Boot?
- 模板:DOM常用场景【表单提交】——javascript结合HTML DOM(或者JQuery)运用
- jQuery基础总计