|
知识路径: > 自动化测试 > 负载压力自动化测试 >
|
考试要求:掌握
相关知识点:2个
|
|
|
|
当一个企业自己组织力量或委托其他的软件公司开发了一套应用系统的时候,尤其是以后在生产环境中实际使用起来时,用户往往会产生疑问,这套系统能不能承受大量的并发用户同时访问,随着生产数据的不断累积,系统的响应处理能力是不是会明显下降直至用户不能接受。这类问题最常见于采用联机事务处理(OLTP)方式的数据库应用、Web应用和视频点播应用等系统。
|
|
|
比如,电信计费软件,众所周知,每月20日左右是市话交费的高峰期,全市几千个收费网点同时启动,收费过程一般分为两步,首先要根据用户提出的电话号码来查询出其当月产生的费用,然后收取现金并将此用户修改为已交费状态。一个用户看起来简单的两个步骤,当成百上千的终端同时执行这样的操作时情况就大不一样了,如此众多的交易同时发生,对应用程序本身、操作系统、中心数据库服务器、中间件服务器、网络设备的承受力都是一个严峻的考验。决策者不可能在发生问题后才考虑系统承受力。预见软件系统的并发承受力,这是在软件测试阶段就应该解决的。
|
|
|
如何模拟实际情况呢?找若干台电脑和同样数目的操作人员在同一时刻进行操作,然后拿秒表记录下反应时间?这样的手工作坊式的测试方法不切实际且无法捕捉程序内部的变化情况。这就需要负载压力测试工具的辅助。
|
|
|
那么,什么是负载测试和压力测试呢?负载测试是为了证明在与产品(预期)规模等同的数据库中处理给定的事务请求的容量下,系统功能与性能是否与需求规格说明中规定的,可接受的响应时间一致的测试过程。而压力测试则是使客户机在大容量情况下运行的测试过程,目的是查看应用将在何时何处出现中断,即识别系统的薄弱环节。压力测试中可能暴露的系统缺陷有内存泄漏、系统资源过量消耗、磁盘空间用完等。
|
|
|
负载压力测试工具可以记录下客户端的操作,并以脚本的方式保存,然后建立多个虚拟用户,在一台或几台PC机上模拟上百或上千虚拟用户同时操作的情景,同时记录下每一事务处理的响应时间、中间件服务器资源使用、数据库负载等,测试工程师可以根据测试结果分析系统瓶颈。
|
|
|
在各种类型的并发测试中,基于Web的应用占了很大的比例,现在有相当数量的联机事务处理(OLTP)类型系统采用Web方式,还有一些网站,对并发连接的数量和自己网站对大量用户访问的支持能力,都表示出了相当程度的关心。对于负载压力测试工具,它提供了对Web页面压力测试的完整解决方案,包括用户模拟、Web服务器监控、页面每秒钟点击率统计、单独页面加载时间分析等各种专门针对Web的特性。
|
|
|
随着服务器端处理任务的日益复杂以及网站访问量的迅速增长,服务器性能的优化也成了非常迫切的问题。在优化之前,最好能够测试一下不同负载条件下服务器的性能表现。定位性能瓶颈所在,是设计性能改善方案之前的一个至关紧要的步骤。
|
|
|
负载测试是任何Web应用的开发周期中一个重要的步骤。如果你在构造一个为大量用户服务的应用,搞清楚你的产品配置能够承受多大的负载非常重要。如果你在构造一个小型的Intranet网站,测试能够暴露出最终会导致服务器崩溃的内存漏洞、资源竞争等情况。但是在实际的开发过程中,要按照实际投入运行的情况,组织成千上万的用户来进行压力测试,无论从哪个方面看,都是不现实的。而且一旦发现了问题,不仅需要重复地进行这种耗费巨大的测试,而且问题不容易重现,不能方便地找出性能的瓶颈所在。而使用测试工具进行压力测试就不会存在这种情况。
|
|
|
无论是哪种情形,花些时间对应用进行负载压力测试可以获得重要的基准性能数据,为未来的代码优化、硬件配置以及系统软硬件升级带来方便。即使经费有限的开发组织也可以对它们的网站进行负载压力测试,因为有些测试工具是可以免费下载的。
|
|
|
在测试阶段使用负载压力测试工具进行测试,还可以模拟数据库死锁情况,结合压力分析SQL效率,优化应用程序和数据库配置等工作,使软件系统更加健壮和高效。这样的实例也很多,比如有公司在测试某省的大型电信业务网上受理系统时,200个并发用户同时联机时速度正常,但当达到用户量达到500个的时候,受理速度明显变慢,通过监控发现Web服务器的流量有所降低,而表空间对应的数据文件中发生的磁盘物理读的次数却大于正常水平,最后通过诊断确定有部分复杂的SQL查询(如大表连接操作,嵌套查询等)没有利用合适的索引和采用最优的解释方案,而造成全表扫描。而且数据库配置参数DB_BLOCK_BUFFERS太小,不能适应500个用户或更大规模的并发情况。经过测试人员和开发人员对系统的共同调整,再次测试的时候一切恢复正常,500个用户的并发测试顺利通过。
|
|
|