1、软件性能测试软件性能测试性能指标性能指标软件产品部软件产品部目录目录1.什么是软件的性能2.用户对软件性能的需求3.软件系统的性能指标软件产品部软件产品部4.常见的性能测试方法什么是软件的性能什么是软件的性能v世界上第一台计算机“埃尼阿克”由1.8万个电子管组成,占地有两三间教室般大。运算速度仅为每秒5000次加法运算。当时的用户对软件要求不高,只要能工作就行。v现在软件已经成为普通的商品,开始从经济学角度考虑软件。投入产出的关系:要尽可能的少占用硬件资源;运行速度也要尽可能的快。软件产品部软件产品部功能与性能的关系功能与性能的关系v软件功能和性能的源头都是来自用户的需求。v一个邮件系统来讲:
2、功能:功能:能支持收发30种语言为标题和正文的邮件,并支持粘接10MB的附件。性能:性能:能够在2GB RAM/1GHz CPU的服务器上,支持10000注册用户,日均处理10000邮件,响应时间不超过5s/封。总结:总结:功能的焦点在于“做什么”;性能关注于“做的如何”,表现为软件对“空间”和“时间”的敏感度。目录目录1.什么是软件的性能2.用户对软件性能的需求3.软件系统的性能指标软件产品部软件产品部4.常见的性能测试方法用户对软件的性能需求用户对软件的性能需求v计算性能计算性能用户最关心的一个指标,即软件系统有多快。如,一个典型的业务需要花多少时间。v资源的利用和回收资源的利用和回收就是
3、硬件和软件资源,硬件包括客户端硬件、服务器硬件和网络硬件;软件包括操作系统、中间件和数据库。特别关注系统对内存的使用。v启动时间启动时间用户希望系统进入正常工作状态的时间越短越好。用户对软件的性能需求用户对软件的性能需求v稳定性稳定性运行一段时间后会不会出现问题。v伸缩性伸缩性比如一个系统,在50个并发用户的时候表现正常,但是到1000的时候表现如何?是逐渐下降还是在某个拐点附近急剧下降?目录目录1.什么是软件的性能2.用户对软件性能的需求3.软件系统的性能指标软件产品部软件产品部4.常见的性能测试方法性能指标性能指标v响应时间(Response time)v吞吐量(Throughput)v资
4、源使用率(Resource utilization)v点击数(Hits per second)v并发用户数(Concurrent users)响应时间(响应时间(Response time)v定义:定义:响应时间指的是客户端发出请求到得到响应的整个过程所经历的时间。v响应时间可以细分为:响应时间可以细分为:(1)服务器端响应时间:)服务器端响应时间:服务器完成交易请求执行的时间,这个时间可以度量服务器处理能力。(2)网络响应时间:)网络响应时间:网络硬件传输交易请求和交易结果所耗费的时间。(3)客户端响应时间:)客户端响应时间:客户端在构建请求和展现交易结果时所耗费的时间。客户感受的响应时间客
5、户感受的响应时间=以上三者之和以上三者之和响应时间(响应时间(Response time) 典型的三层架构的系统一次软件操作的响应过程,其中N为网络传输时间,A为服务器处理时间。吞吐量(吞吐量(Throughput)v定义:定义:对于软件系统来说,“吞”进去的是请求,“吐”出来的是结果。吞吐量反应的是系统的处理能力,就是指软件系统在每单位时间内能处理多少个事务/请求/单位数据等。v吞吐量的衡量单位:(1)常用:请求数请求数/秒秒、页面数页面数/秒秒(2)业务角度:访问人数访问人数/天天、处理的业务数处理的业务数/小时小时(3)网络角度:字节数字节数/天天资源使用率(资源使用率(Resource
6、 utilization)v定义:定义:资源使用率指的是对不同资源的使用程度。v常见的资源:常见的资源:CPU占用率、内存使用率、磁盘I/O、网络I/O。点击数(点击数(Hits per second)v定义:定义:按照客户端向Web Server发起了多少次http请求来计算的。并发用户数(并发用户数(Concurrent users)v定义:定义:并发用户数指在某个时间特定点上与服务器端进行会话操作的用户数。用来度量服务器并发容量和同步协调能力。v狭义:狭义:多个用户并发执行同一操作。v广义:广义:多个用户同时执行不同的操作。v错误的理解:错误的理解:(1)使用系统的全部用户的数量。(2)
7、用户在线数量。并发用户数的例子并发用户数的例子vOA系统经验公式:系统经验公式:并发用户数=使用系统的用户数量*(5%20%)如果一个OA系统的期望用户为1000个,则只要测试出系统能支持200个并发用户就可以了。其他指标其他指标v交易成功率交易成功率成功的交易数占总交易请求数的比率。v系统恢复时间系统恢复时间当系统出错时,修正错误并重新启动系统所需的时间。v其实,凡是用户有关资源和时间的要求都可以被视作性能指标。性能测试就是为了验证这些性能指标是否被满足。目录目录1.什么是软件的性能2.用户对软件性能的需求3.软件系统的性能指标软件产品部软件产品部4.常见的性能测试方法常见的性能测试方法常见
8、的性能测试方法v负载测试(Load Testing)v压力测试(Stress Testing)v并发测试(Concurrency Testing)v基准测试(Bench Testing)v稳定性测试(Stability Testing)v可恢复测试(Recovery Testing)负载测试(负载测试(Load Testing)v对负载测试的理解:(1)主要是考察软件系统在既定负载下的性能表现。(2)站在用户角度去观察在一定条件下软件系统的性能表现。(3)负载测试的预期结果是用户的性能需求得到满足。负载测试的例子负载测试的例子v某网站测试需求:某网站测试需求:可以支持100个并发用户执行各种查
9、询操作,要求各查询操作的响应时间在5秒以内,服务器CPU利用率在80%以下。压力测试(压力测试(Stress Testing)v对压力测试的理解:(1)为了考察系统在极端条件下的表现,极端条件可以是超负荷的交易量和并发用户数。(2)这个极端条件并不一定是用户的性能需求,可能要远远高于用户需求。(3)压力测试是能让我们识别系统的弱点和在极限负载下程序将如何运行。(4)压力测试和负载测试的不同是,压力测试的预期结果是系统出现问题,而我们考察的是系统处理问题的方式。压力测试(压力测试(Stress Testing)v用户量压力测试v数据量压力测试v例如:系统最大支持的同时在线用户数是1000个,压力
10、测试需要测试在1000个用户甚至2000个用户同时在线时系统的表现。v例如:在系统内存耗尽情况下,测试系统的运行情况,这种情况下被测试系统也不应该崩溃。压力测试的反常规操作压力测试的反常规操作v当平均每秒出现1个或2个中断的情形下,应当对每秒出现10个中断的情形来进行特殊的测试;v把输入数据的量提高一个数量级来测试输入功能会如何响应;v应当执行需要最大的内存或其他资源(如CPU,内存,磁盘,网络)的测试用例;v运行一个虚拟的操作系统中可能会引起大量的驻留磁盘数据的测试用例;v两倍的已经基线的并发用户数或者HTTP连接数;v随机的关闭及重开连接到服务器上的网络上集线器/路由器的端口(例如,可通过
11、SNMP命令来实现);v把数据库断线然后再重启。并发测试(并发测试(Concurrency Testing)v对并发测试的理解:(1)一般是和服务器端建立大量的并发连接,通过客户端的响应时间和服务器端的性能监测情况来判断系统是否达到了既定的并发能力指标。(2)负载测试往往就会使用并发来创造负载。(3)并发测试往往涉及服务器的并发容量,以及多进程/多线程协调同步可能带来的问题。并发测试的例子并发测试的例子v400并发用户,事务失败率(fail percent)1.35%,软件系统失效。v500并发用户,事务失败率(fail percent)10%,系统中断。v600并发用户,事务失败率(fail
12、 percent)80%,系统崩溃。基准测试(基准测试(Bench Testing)v对基准测试的理解:(1)当软件系统中增加一个新的模块的时候,需要做基准测试,以判断新模块对整个软件系统的性能影响。(2)需要打开/关闭新模块至少各做一次测试。关闭模块状态下的系统各个性能指标记下来作为基准,然后与打开模块状态下的系统性能指标作比较。稳定性测试(稳定性测试(Stability Testing)v对稳定性测试的理解:(1)考察测试系统在一定负载下运行长时间后是否会发生问题。(2)有些问题只有在运行一天或者一个星期甚至更长的时间才会暴露。这种问题一般是程序占用资源却不能及时释放而引起的。稳定性测试的例子稳定性测试的例子v稳定性测试可能帮助找到一些大型问题,如死机、崩溃、内存泄露等,因为有些存在内存泄露问题的程序,在运行一两次时可能不会出现问题,但是如果运行了成千上万次,内存泄露的越来越多,就会导致系统崩溃。可恢复测试(可恢复测试(Recovery Testing)v对可恢复测试的理解:(1)测试系统能否快速地从错误状态中恢复到正常状态。(2)可恢复测试通常结合压力测试一起来做。软件产品部软件产品部谢谢