系统性能测试概述

在非功能测试中,性能测试是最重要的测试。无论是对大系统还是对小系统,都需要进行性能测试,只不过测试投入和测试周期不同而已。

一个系统好不好用,对用户来说,除了系统功能方面的因素外,最重要的就是响应速度,一个网页打开要几分钟,谁也受不了。其次,就是并发数,客户电话总打不进去,原因是打进去的电话太多了;早期的12306火车票订票系统在繁忙时登录不进去,干着急没办法。所以能否响应(并发数)和响应速度是用户比较关心的两个性能指标。

当然,对于系统的管理者或者运维人员来说,还关心其它的性能指标,比如这个软件系统最多能支持多少用户同时访问?在不同数量的用户同时访问时性能都是什么情况,最好的性能出现在多少数量的用户同时访问时?当性能达到什么样的值时需要扩充相应的硬件资源,如带宽,服务器等?哪些因素成为制约性能提高的瓶颈?

以上问题都需要性能测试来发现并给出调优建议。

一般地,性能测试可以分为客户端的性能测试、网络的性能测试和服务器端的性能测试

客户端的性能测试就是从客户端发起,来探测系统的响应速度和并发支持;

网络的性能测试就是对网络带宽、网络延迟等方面进行性能分析,确定网络的负载能力和网络延迟的环节;

服务器端的性能测试主要观察服务器的处理能力,比如CPU的利用率,内存使用率,I/O的效率等等。

性能测试的方法主要又可以分为负载测试、压力测试(强度测试)、疲劳测试、容量测试等。当然这是性能测试的广义说法,也有人使用其窄义,即把性能测试当做一种具体的测试方法,与负载测试和压力测试并列。

负载测试(Load Testing)的目的是为了测试软件系统在不同的负载(比如不同的用户并发数)下软件系统的性能情况,从而判断软件系统的性能是否达到了设计要求。负载测试的对象主要是软件系统的性能。

压力(强度)测试(Stress Testing)是为了测试硬件系统的临界点,即系统在异常或极端情况下的处理情况。比如在珠穆朗玛峰上测试下手机还能不能正常使用。

疲劳测试就是在系统正常运行的情况下持续运行一段时间,看看系统能否一如既往地正常处理。有点类似“拷机”对不对?。疲劳测试也非常重要,因为很多软件在短时间内可能运行正常,但时间一长,由于内存泄露等因素会导致系统崩溃,这在银行系统中并不鲜见。

容量测试就是找出在可接受的性能指标范围内系统最大能处理的并发数。

一般性能测试会混合执行负载测试、压力测试、容量测试、疲劳测试等。

要做好性能测试,同样需要做好需求分析:

看系统的技术架构,是C/S(客户端/服务器)结构的还是B/S(浏览器/服务器)结构的,使用的是TCP协议还是HTTP协议等,使用的是什么操作系统,什么数据库等;

要看系统的物理架构,即使用了什么样的服务器,什么样的存储设备,什么样的网络,客户端使用的是什么机器,等等;

要分析在所有的功能中哪些功能是关键的,容易形成性能瓶颈。比如在银行,柜员在早上8:30会统一登录到核心系统,因此核心系统的登录功能每天都会发生至少一次成千上万柜员同时操作的情况,那么,核心系统的登录是必须测试的一个点。而对于很少使用或占用资源很少的功能点一般就没有必要去作性能测试。

要清楚软件需求中对该系统的性能要求,这个就相当于测试预期,最终性能测试和调优的结果必须不坏于预期。

需求分析之后,自然要做性能测试计划和方案,选择性能测试工具,录制性能测试脚本并执行性能测试,提出性能缺陷并修复(即调优,可能是修改程序代码,也可能是扩充带宽,调整硬件参数,甚至更换硬件设备或增加硬件设备等,这是性能缺陷的修复与功能缺陷修复最大差异之处),形成性能测试报告。

性能测试流程上与功能测试大同小异,只不过性能测试基本上用的是自动化测试工具,如LoadRunner,Jmeter等。通过这些工具录制性能测试脚本(相当于测试用例了),使用脚本进行测试。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180512G0TEQP00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券