中国龙,中国风,中国会变得更加强大! 力量越大,责任越大! 人的一生,会面临很多选择,但决定一个人一生的,往往就是最关键那么的一两步

web应用程序性能测试(摘录)

上一篇 / 下一篇  2008-12-29 15:34:26 / 个人分类:软件公司

给一个web应用做性能测试,你要知道至少两样东西:

在不同并发用户数或者HTTP连接数情况下的负载预期值*

可接受的响应时间

当你知道你的目标后,你就可以开始使用对系统持续增加负载的方法来观察系统的瓶颈所在。重新拿web应用系统来做例子,这些瓶颈可存在于多个层次,你可以使用多种工具来查明它们的所在:


在应用层,开发人员可以通过profilers来发现低效率的代码,比如说较差的查找算法
数据库层,开发人员和数据库管理员(DBA)可以通过特定的数据库profilers及事件探查器(query optimizers)
操作系统层,系统工程师可以使用一些工具如在Unix类的操作系统中的top,vmstat,iostat,在Windows系统中的PerfMon来监控CPU,内在,swap,磁盘I/O等硬件资源;专门的内核监控软件也可以在这一层面上被使用。
在网络层上,网络工程师可以使用报文探测器(如tcpdump),网络协议分析器(如ethereal),还有其它的工具(如netstat,MRTG,ntop,mii-tool)

下面就是一些在应用程序代码*之外仍可以提高WEB应用系统性能的例子:

使用WEB缓存装制,如Squid提供的装置
将高访问量的网页静态化,以避免这些高访问量对数据库进行大量的调用
通过负载平衡的方法来水平缩放WEB服务器的结构
在水平缩放数据库群及将它们分为读写服务器和只读服务器后,还要对只读服务器群负载平衡。
通过增加更多的硬件资源(CPU,内存,磁盘等)纵向的缩放WEB及数据库服务器群
增加网络的带宽

负载测试

我们都已经在性能测试调试的过程中,见识过负载测试了。在那种环境中,它意味着通过自动化工具来持续对系统增加负载。但对于WEB应用来讲,负载则是并发用户或者HTTP连接的数量。

术语“负载测试”在测试文献资料中通常都被定义为给被测系统加上它所能操作的最大任务数的过程。负载测试有时也会被称为“容量测试”,或者“耐久性测试/持久性测试”

容量测试的例子:

通过编辑一个巨大的文件来测试文字处理软件
通过发送一个巨大的作业来测试打印机
通过成千上万的用户邮箱来测试邮件服务器
有一种比较特别的容量测试是叫作“零容量测试”,它是给系统加上空任务来测试的。
耐久性测试/持久性测试的的例子:

在一个循环中不停的运行客户端超过一个扩展时间段。
负载测试的目的:

找到一些在测试流程中前面的阶段所进行的粗略测试中没有被找出的bugs,例如,内存管理bugs,内存泄露,缓冲器溢出等等。
保证应用程序达到性能测试中确定的性能基线。这个可以在运行回归试验时,通过加载特定的最大限度的负载来实现。
尽管性能测试和负载测试似乎很像,但他们的目的还是有差异的。一方面,性能测试使用负载测试的技术,工具,以及用不同的负载程度来测度和基准化系统。在另一方面来讲,负载测试是在一些已经定义好的负载程度上进行测试的,通常对系统加上最大负载之后,系统应该仍然可以提供全部功能。这里需要明确一点,负载测试并不是要对系统加载上过度的负载而使系统不能工作,而是要使系统像一个上满了油的机器嗡嗡叫。

在负载测试的相关内容中,我想应该非常重要的是要有十分充足的数据来进行测试。从我的经验中得知,假若不用非常大的数据*去测的话,有很多严重的bug是不会的到的。比如说,LDAP/NIS/Active Directory数据库中成千上万的用户,邮件服务器中成千上万的邮箱,数据库中成G成G的表,文件系统中很深的文件或者目录的层次,等等。显然,测试人员就需要使用自动化工具来产生这些庞大的数据集,比较幸运的是任何优秀的脚本语言都可以胜任这些工作。

压力测试

压力测试是指通过对系统加载过度的资源或者例系统没有应该具有的令系统可以正常运作的资源,来使系统崩溃(在某些情况的时候,它又可以叫做负面测试)。进行这个疯狂行为的主要目的是为了保证系统出故障及可以适当的恢复,而这个恢复得怎么样的特性则是叫做可恢复性。

当性能测试需要的是一个可控制的环境和不断的测度的时候,压力测试则是令为欢喜的引起混乱及不可预测性(译者按:从这一点可以看出作者是一个很优秀的测试人员)。还是举WEB应用系统为例,下面是一些对系统可行的压力测试方法:

两倍的已经基线的并发用户数或者HTTP连接数
随机的关闭及重开连接到服务器上的网络上集线器/路由器的端口(例如,可以通过SNMP命令来实现)
把数据库断线然后再重启
当系统还在运行的时候,重建一个RAID阵列
WEB和数据库服务器上运行消耗资源(如CPU,内存,磁盘,网络)的进程

 


TAG: web应用程序 性能测试 负载测试 压力测试 软件公司

弦云流水 引用 删除 saily   /   2009-01-06 10:35:45
好...
 

评分:0

我来说两句

Open Toolbar