本文由小编根据慕课网视频亲自整理,转载请注明出处和作者。

1.定义

一般来说,所谓性能测试,其实就是验证软件系统的性能可以满足需求规格给定的指标要求。

性能测试其实是一个比较大的范畴,还可以进一步延伸出负载测试、压力测试、稳定性测试这样一些延伸的概念。

软件性能测试环境的物理架构 软件性能测试定义_性能测试

负载测试

指的是在测试过程中来逐步地增加负载,并且记下被测系统相应的一个性能表现,最终确定出我们系统在正常的指标范围下的一个最大的负载。

压力测试

测试系统在极限情况下的压力情况,也就是要确定系统在什么样的负载压力下会导致系统的失效,不能够正常运行,确定出系统所能承受的一个最大的极限。

稳定性测试

一般是以稍大于正常业务量的负载,对系统进行持续的,长时间的测试,比如24x5,连续5天对系统施加压力,以确定系统在较长运行时间内系统的稳定性的情况。

2.性能测试指标

在做性能测试时,都是通过判断一些性能指标来判断测试结果。

特别是对于web应用来说,主要的参考指标一般有:

软件性能测试环境的物理架构 软件性能测试定义_性能测试工具_02

并发用户数VU:同一时间有多少个用户同时对系统进行访问,或者并发的请求数

每秒事务数TPS:每秒钟系统能够处理多少业务,对业务处理能力的指标

系统的响应时间:一个请求过来,系统处理完所耗费的时间

设备性能:运行系统的服务器,它的相关的一些资源的性能,比如CPU,内存的使用,磁盘I/O的情况,网络I/O的情况。

这些都是非常重要的性能指标。测试过程中,对这些指标的判断和分析是非常重要的,这也正是做性能测试的一个难点。通过性能指标来判断出系统的性能问题,不同的性能指标数据所反映出的系统状况,都需要相当的知识积累和测试经验。

3.性能测试工具

人工测试是无法完成性能测试的。

常用的性能测试工具如下:

软件性能测试环境的物理架构 软件性能测试定义_CSS_03

LoadRunner:国内普及率很高的一个性能测试工具,也是Mercury公司的一个强大产品,和QTP是一个公司的产品。

Silkperformer:Boraland公司的性能测试工具。

Jmeter:基于Java,开源的,优秀的性能测试工具。

WebLoad:

Apache Bench:Apache提供的一个非常小巧的负载生成工具,一般我们的nulix系统都是自带的。

LoadUI:针对http类接口类的性能测试。比如webservice,soap消息,rest接口。

性能测试,除了一般意义上的基于负载的测试之外,针对web类应用,特别是面向大众用户的web应用,因为web页面的访问性能,直接影响到用户的体验,所以有一个测试的重点,就是页面的静态性能评估。

软件性能测试环境的物理架构 软件性能测试定义_性能测试工具_04

所以静态性能评估也是一种静态测试的方法。它是通过分析页面的代码来评估出页面的性能情况。

 

软件性能测试环境的物理架构 软件性能测试定义_软件性能测试环境的物理架构_05

业界主要有YSlow和PageSpeed这两种评估的标准。

YSlow:Yahoo公司提出的

PageSpeed:Google的

他们评估的标准和实现的内容是比较相似的。都是浏览器的插件,通过浏览器就可以比较方便地进行测试。

以Chrome浏览器为例,打开Chrome浏览器,在Chrome的扩展程序中,安装YSlow和PageSpeed。

软件性能测试环境的物理架构 软件性能测试定义_CSS_06

使用方法如下:

比如,访问百度首页,在页面右上角可以看到安装的插件,点击YSlow。

软件性能测试环境的物理架构 软件性能测试定义_CSS_07

点击“Run Test”按钮。就会对网站的页面进行静态的分析,并对网站给出一个评估的分数和级别。

软件性能测试环境的物理架构 软件性能测试定义_CSS_08

 级别一般会分为A、B、C、D、E、F共六级,那么可以看到YSlow对百度的评级是B级,得分是90分。

软件性能测试环境的物理架构 软件性能测试定义_性能测试工具_09

评估标准总共有23条。

 

软件性能测试环境的物理架构 软件性能测试定义_软件性能测试环境的物理架构_10

 

软件性能测试环境的物理架构 软件性能测试定义_CSS_11

软件性能测试环境的物理架构 软件性能测试定义_CSS_12

软件性能测试环境的物理架构 软件性能测试定义_软件性能测试环境的物理架构_13

  • 尽量减少http的请求。如果页面上http请求比较多,会导致性能差。
  • 使用CDN。页面有没有使用CDN内容分发网络,对页面的性能也是有很大的影响。
  • 避免空的src和href的编码。因为这个在浏览器渲染的时候,会影响页面访问的性能。
  • 为文件头指定过期标签。
  • 有没有使用gzip对文件进行压缩。
  • 将CCS这种代码尽量放在页面代码的顶部。
  • 将JS这种脚本尽量放在页面的底部。
  • 在使用CSS样式表时,尽量的避免使用CSS表达式的使用。
  • 在使用JS和CSS样式表时,尽量地使用外部文件。这样就可以进行缓存。
  • 减少DNS的查找次数。
  • 精简JS和CSS样式表。
  • 避免URL的跳转。特别是对于'\',url会进行一个转义,这样都会消耗性能。
  • 删除重复的JS和CSS的脚本。
  • 配置ETags。用ETag可以比较好地提升性能。
  • 使AJAX有缓存,可以加快响应。
  • 使用GET方式来完成AJAX请求。
  • 减少DOM元素的数量。
  • 避免404错误。不仅影响用户体验,还浪费服务器资源。
  • 减少cookie大小。
  • 使用没有cookie的域。
  • 避免滤键的使用。在低版本的IE浏览器中,会导致比较大的性能问题。
  • 在HTML中,不要使用缩放图片这样的方式来处理我们的图片。
  • 浏览器上的小图标,尽量地使它的文件大小变小,而且文件要是可以缓存的。

这是YSLOW针对页面静态优化的23条实践。

YSLOW 把它以插件的形式,作为一个工具给发出来,从而能够很方便地对页面进行性能评估。

 

Pagespeed:

Chrome中安装好之后,在更多工具>开发者工具中,在工具栏中有一个pagespeed的选项,点击“START ANALYSING”,会对页面进行相应的分析,并给出相应的指标和具体的说明。

4.应用性能管理(APM)

做性能测试,或者运行外部产品的时候,还有一个和性能相关的概念,APM。

软件性能测试环境的物理架构 软件性能测试定义_性能测试_14

来作为产品运营时的一个参考,这些性能监控的指标,对于做性能测试,是很重要的参考。国内来说,像听云,OneAPM推出的APM产品都是比较好的。