前言:

  • 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层监控,这主要是去监控线程,其中包含单线程、多线程,同步线程、异步线程。关于同步线程和异步线程,是一个系统中比较关注的点,假如:一个系统处理事务时,采用的是同步线程,很多事务会等待处理造成阻塞,那么这样的系统处理速度就会受到很大的限制,会被视为一个不合格的系统。

最新文章

  1. Fiddler学习笔记
  2. 今天遇到的点击添加按钮button_click代码段无法执行的问题
  3. ubuntu 配置vim(vimrc)
  4. 拓展:使用终端创建、编译、链接OC…
  5. 取客户的银行帐号SQL
  6. 超实用的JavaScript代码段 --倒计时效果
  7. IIS7.0出错的解决方案 IIS 状态代码:IIS详细错误代码以及解释
  8. hadoop 2.0 详细配置教程(转载)
  9. mysql文件导入到数据库load data infile into table 的使用例子
  10. Android平台中实现对XML的三种解析方式
  11. 安装Ubuntu时的硬盘分区
  12. ------ 解析因内核栈溢出导致的 “double fault” 蓝屏 ------
  13. 001 UI介绍
  14. 【JavaScript】$.extend使用心得及源码研究
  15. 编程菜鸟的日记-Linux无处不在
  16. [Postman]生成代码段(17)
  17. NPOI 设置样式为粗体
  18. call()的个人理解
  19. PDF to image
  20. 一步一步学android之控件篇——ListView基本使用

热门文章

  1. AFNetworking 3.0 使用详解 和 源码解析实现原理
  2. TreeSet的两种实现方法:Comparable和Comparator(Java比较器)
  3. 黑马程序员_毕向东_Java基础视频教程——位运算练习(随笔)
  4. Dubbo对Spring Cloud说:来老弟,我要拥抱你
  5. webpack指南(二)code spliting+懒加载
  6. jupyter notebook 修改前端样式
  7. pyhton中的深浅copy
  8. 大清朝早亡了,还没有入门 Spring Boot?
  9. 模板:DOM常用场景【表单提交】——javascript结合HTML DOM(或者JQuery)运用
  10. jQuery基础总计