不管是系统设计人员、开发人员还是测试人员,要构建高性能的系统,对于系统性能的一些常用术语都不了解,那是无从做起的,这里主要介绍几个软件性能指标的术语及计算方法,便以在性能优化及性能评判时有的放矢:
1.响应时间
响应时间是系统对用户请求作出响应的时间,响应时间是用户对系统性能最直观的感受,因此直接表现了系统的性能。影响系统响应时间的因素主要有以下几个:
1) 网络传输时间:包含请求信息传送致服务器、服务器信息返回用户等时间计为NT
2)应用服务器处理时间:服务器响应用户请求,封装数据并发出,计为AT
3)数据库服务器处理时间:数据库数据操作执行及返回服务器时间。计为DT
响应时间=NT+AT+DT,由此我们可以看出,响应时间受到多个方面的影响,这些因素的时间都与初始数据量有较大的影响,因此在系统开发及测试过程中,合适的初始化数据非常重要。同时,单用户情况下与并发用户的响应时间通常会有较大差异,合适的并发用户也是必要的。
2.并发用户
1)系统用户数:系统额定的用户数量,如一个系统中,可能使用该系统的用户总数是2万个,那么这个数量,就是系统用户数。
2)同时在线用户数:在一定的时间范围内,最大的同时在线用户数量,也就是高峰在线用户数。
3)平均并发用户数的计算:C=nL / T,其中C是平均的并发用户数,n是平均每天访问用户数,L是一天内用户从登录到退出的平均时间(操作平均时间),T是考察时间长度(一天内多长时间有用户使用系统)。
4)并发用户数峰值计算:C^约等于C + 3*根号C,其中C^是并发用户峰值,C是平均并发用户数,该公式遵循泊松分布理论。
通过以上公式,可以计算出系统应该能够承受的平均并发用户数及并发峰值,在系统架构设计及研发、测试过程中,务必保证系统能够在高峰并发情况下性能表现达到用户需求。
3.吞吐量
系统吞吐量是指指单位时间内系统处理用户的请求数
1)从业务角度看,吞吐量可以用:请求数/秒、页面数/秒、人数/天或处理业务数/小时等单位来衡量
2)从网络角度看,吞吐量可以用:字节/秒来衡量
对于交互式应用来说,吞吐量指标反映的是服务器承受的压力,他能够说明系统的负载能力以不同方式表达的吞吐量可以说明不同层次的问题,例如,以字节数/秒方式可以表示数要受网络基础设施、服务器架构、应用服务器制约等方面的瓶颈;已请求数/秒的方式表示主要是受应用服务器和应用代码的制约体现出的瓶颈。当没有遇到性能瓶颈的时候,吞吐量与虚拟用户数之间存在一定的联系,可以采用以下公式计算:F=VU * R / T,其中F为吞吐量,VU表示虚拟用户个数,R表示每个虚拟用户发出的请求数,T表示性能测试所用的时间。
在以往的应用中,对于系统吞吐量,我们更多关注于字节/秒指标,但这块只体现了一个方面的系统吞吐量。对于业务操作而言,F=VU * R / T更有意义,这块吞吐量指标设计应当在每个特定的应用功能级别进行设计与测试。
4.思考时间
Think Time,从业务角度来看,这个时间指用户进行操作时每个请求之间的时间间隔,而在做性能测试时,为了模拟这样的时间间隔,引入了思考时间这个概念,来更加真实的模拟用户的操作。在吞吐量这个公式中F=VU * R / T说明吞吐量F是VU数量、每个用户发出的请求数R和时间T的函数,而其中的R又可以用时间T和用户思考时间TS来计算:R = T / TS,一般情况下,按如下步骤计算思考时间:
A、首先计算出系统的并发用户数:C=nL / T F=R×C
B、统计出系统平均的吞吐量:F=VU * R / T R×C = VU * R / T
C、统计出平均每个用户发出的请求数量:R=u*C*T/VU
D、根据公式计算出思考时间:TS=T/R
通常情况下,以上这些指标只是测试人员熟悉,但如果要构建一个高性能的系统,在设计之初就应当将这些指标做为系统的一个核心非功能特性写入设计文档并贯彻在开发执行过程中,这样才能予以系统性能稳固保障,因此,不管是系统设计人员、开发人员还是测试人员,都应当对这些指标非常熟悉。