我们讨论的软件性能关注点不在于软件所完成的特定功能,而是完成额定功能时所表现出来的及时性、可靠性、稳定性上。由于软件操作的主体是人,不同的人对于同一软件功能有着不同的主观体验,所以不同的人对性能的考察角度和要求也不同。

泛泛讲指标一般有:响应时间、吞吐量、并发连接数、资源利用率等。对不同的应用系统和不同的应用场景,将会有明确的性能指标(不考虑系统和应用场景谈性能指标是没有意义的)。

关于性能指标的定义,可以从教科书或网上找到。

响应时间是指请示发出到接收到响应结果的整个时间。在测试中,经常会将响应时间确定到平均响应时间和最大响应时间。响应时间直接影响到用户的使用体验,所以响应时间的确定是通过根据用户可接受的时间值来确定。

在网络环境条件下,响应时间将包含网络传输时间和应用响应时间。而应用响应时间根据软件系统的组成,还可以继续分解到数据库响应时间,中间件响应时间等。这种对响应时间的分解可以帮助程序员分析找到软件系统的响应瓶颈,修改并提高响应速度,提升用户的体验值。

吞吐量是指系统在单位时间内处理请求的数量。不同系统的平均响应时间随用户数增加而花费不同的时间,同样,同一个系统在不同用户数量级下的平均响应时间也会不相同。所以系统吞吐量的确定首先要考虑系统可应用的用户数量级,在一定用户数量的条件下,系统的响应时间应确保在用户可接受的时间内。

并发连接数是指系统可以同时承载的正常使用系统功能的连接数量,我们常以并发用户数来讨论,这个指标直观但比较笼统,不是一个准确的指标,因为用户不同的使用习惯会导致不同用户在单位时间发出数量不同的请求。在实际中,我们更应该考虑的是同一时间同时发出请求的用户数,它更能反应出软件并发处理的能力。同样,如果在软件系统中,某功能模块更容易被用户广泛使用时,我们会着重考虑同一时间对该功能发出请求的用户数,而其它模块由于相对处于‘冷’状态,我们可以适当降低对这个模块的要求。

资源利用率反映的是在一段时间内资源平均被占用的情况。通常考虑计算机的CPU、mem的使用效率。有大量文件处理时,还应考虑系统的file handler数。

根据我目前工作环境,列举了一些经常所遇到的指标内容:

在线用户数/并发操作用户数、事件速率(峰值速率和持续速率)、各类数据表的容量、功能操作的数量限制、Server、client和DB等计算机的CPU,MEM,thread,file handler、client 操作响应时间等。

[注]:考虑数据表的容量是因为在软件系统中,一些大数据量的表往往由于查询性能的快速下降,会导致整个软件系统的性能降低。考虑到测试环境与生产环境的差异,在测试过程中,有时我们需要考虑到数据表中的数量,以增加测试的可靠性,进而帮忙我们找到软件代码中的‘热点’。