Web应用系统负载测试加压策略研究

时间:2022-10-14 03:42:42

Web应用系统负载测试加压策略研究

摘要:Web应用系统的性能关系到它所能提供服务的质量,快速有效的性能测试是保证Web应用系统服务质量的重要手段。良好的加压策略有助于快速高效的完成测试工作。针对现有Web应用系统负载测试加压策略的不足,提出了指数与线性结合式加压和记值探测法加压两种加压策略,并通过实验对各种加压策略的效果进行分析和比较。实验结果表明,所提的加压策略能够有效地提高Web应用系统负载测试效率。

关键词:Web应用;性能测试;负载测试;测试用例;加压策略

中图分类号: TP391文献标志码:A

引言

近年来,随着计算机网络技术和通信技术的飞速发展,因特网作为一种服务对各行各业都造成了重大的影响,尤其是Web服务,已经深入人们的日常事务中。但随之而来的是人们对Web服务质量的要求也越来越高。一个高效、稳定、安全的Web应用系统对于服务提供商和用户来说变得尤为重要。Web技术发展至今,由最初Web1.0简单的静态网页到已广泛应用的动态网页,如动态服务网页(Active Server Page,ASP),java服务网页(Java Server Page,JSP),超级文本预处理语言(PHP:Hypertext Preprocessor, PHP)等,再到如今已流行的Web2.0技术,很多网站都出现了一些基于Web2.0技术的服务,如BLOG、Wiki等。由于用户量的快速增长以及服务器端数据交互的更加频繁,Web服务器的服务压力与日俱增。因此,在Web网站实际应用中,当遇到访问高峰时,容易发生服务器的响应速度变慢甚至服务中断等情况。特别是对于电子商务网站,这可能会造成很大的经济损失。为了避免这种情况,在应用系统投入使用之前,需要模拟大量的真实用户访问Web应用系统的情形对系统进行负载测试和压力测试,为服务器的性能优化和调整提供数据依据。

现阶段,已经有很多人对Web应用系统的性能测试做了相关的研究。并取得了重要的成果,解决了很多棘手的问题。文献[1-4]详细描述并深入分析了Web应用系统的测试执行过程,测试执行的步骤、流程以及采用的技术、工具等相关内容;文献[5-9]就如何准确地模拟真实用户的访问行为提出多种有效的测试用例设计方案,提高了测试用例的真实性;文献[10-12]对市场上的自动化测试工具进行了研究与说明,强化了测试人员的测试技术。但是对于Web应用系统测试中负载测试的加压策略研究仍然较少,自动化的测试工具中使用的加压策略基本是简单的线性加压策略,而线性加压方式的效率是比较低的;文献[13]提出了线性与二分法结合式加压策略,该方案有效地提高了测试的效率,然而,可能的多次超负载测试增加了测试的危险性;文献[14-15]提出了一种性能预测方案,但静态的特性局限了其应对复杂环境和实现自动化测试的能力。针对以上的问题,本文提出了指数与线性结合式和记值探测两种加压策略。

1Web应用系统性能测试 

Web应用系统,主要由浏览器、Web服务器、应用服务器、数据库服务器等构成。而Web服务器则是整个Web应用系统的关键,Web服务器的性能指标反映了Web应用系统的整体性能状况。根据木桶原理,只要服务器中的某一个方面达到了性能最大限度,则整个服务器也便达到了最大服务级别。对Web服务器的性能测试主要包括负载测试和压力测试,其思想是根据用户实际的访问行为,使用成百上千的进程或线程以模拟出大量的用户对Web服务器进行访问,测试在多用户同时操作下,系统对事务的响应时间及性能。通过这样的方式最终找到Web服务器的性能瓶颈,并进行性能优化和调整,提高系统的服务质量。

1.1负载测试

负载测试是使用测试工具模拟出Web服务器所承受负载条件下的访问负荷,通过不断加压(增加模拟用户的数量)的方式来测试不同负载条件下服务器的对客户请求的响应时间和数据吞吐量、系统占用的资源(如CPU、内存)等,以检验系统的行为和特性,发现系统可能存在的性能瓶颈、内存泄漏等问题。并根据测得的数据确定应用系统的瓶颈或者不能接受用户请求的性能点,以获得在保证服务质量的前提下,系统所能提供的最大服务级别,比如可支持的最大并发用户数和最大同时在线用户数、在给定时间内服务器可以处理的最大数量的事务数等。

1.2压力测试

压力测试是在强负载(大数据量、大量并发用户等)下的测试,查看应用系统在负载处于峰值时的性能情况,从而有效地发现系统的某项功能隐患、系统是否具有良好的容错能力和可恢复能力。压力测试分为高负载下长时间(如8小时以上)的稳定性压力测试和极限负载情况下可能导致系统崩溃的破坏性压力测试。

压力测试可以被看作是负载测试的一种,即高负载下的负载测试,或者说压力测试采用负载测试技术。通过压力测试,可以更快地发现内存泄漏问题,还可以更快地发现影响系统稳定性的问题。例如,在正常负载情况下,某些功能不能正常使用或系统出错的概率比较低,可能一个月只出现一次,但在高负载(压力测试)下,可能一天就出现,从而发现有缺陷的功能或其他系统问题。

2负载测试的加压策略

负载测试的加压策略是负载测试时制定的在不同时间段需要使用的用户访问负荷量的计划或方案。加压策略关系到负载测试的测试效率,设计良好的加压策略有助于快速、高效地完成测试工作。以下是对现有的主要加压策略和本文提出的改进加压策略的介绍和分析。

2.1现有的加压策略

2.1.1线性加压策略

线性加压策略是现如今比较常用的加压策略,在首次加载的负载量之后,每次都采用相同的步长进行加压,直到Web服务器到达瓶颈(CPU使用>95%或内存消耗>95%)时,停止测试。策略描述如下:

以Vusers=V0+dx为加压模型,模拟出相应的用户访问负荷对Web服务器进行测试,通过不断地增加测试负载量,直到达到服务器的服务瓶颈,根据测试的数据,得到服务器能服务的最大并发用户数。其中Vusers为测试的虚拟用户数,V0为初次测试的用户数,d为步长,x为次数。

线性加压策略,加压步长的选择很重要,过小会影响测试效率,过大会影响测试的结果。所以在测试前,要根据实际情况,选择一个合适的步长。

线性与二分法结合式加压策略能有效地缩短测试总时长,提高负载测试的测试效率。但对于不稳定、耐压能力弱或对超负载压力后的恢复能力较弱的Web应用系统,该策略则可能会因为系统遭到破坏而受到很大的影响,导致测试数据不准确。

2.2改进的加压策略

针对现有的主要加压策略存在的问题,本文提出下面两种改进的负载测试加压策略。

2.2.1指数与线性结合式加压策略

指数与线性结合式加压策略也是对线性加压的改进策略。在测试的初始阶段使用指数模型加压,当Web服务器资源消耗超过40%时,转为线性加压,并且加压步长适当缩小。其算法描述如下:

指数与线性结合式加压策略相对线性加压策略,能有效地提高测试的效率,同时也减少了线性与二分法结合式加压策略中因可能的被测系统崩溃而影响测试效果的问题。

2.2.2记值探测法加压策略

前面的加压策略都只是根据先前既定的方式进行测试,并未考虑到实际测试时可能遇到的情况,记忆探测法加压策略可对实际测试过程中的数据进行快速的动态响应,对实时的测试数据进行评估,以评估结果为基础对服务器的服务性能进行预判并验证,并对验证结果再进行评估。策略的算法步骤如下:

上一篇:浅谈小学美术课堂中的多媒体运用 下一篇:用科学发展观指导“小班化”教学