`

WEB应用程序的测试与优化

阅读更多

 http://dev.21tx.com 2003年12月29日 javaResearch 

 

“让你的Web应用程序完成你想做的事情是一回事,而让他们快速、有效的去做常常是另外一回事。”

在这篇文章里我将初步讨论有关“WEB应用程序的性能”的问题,主要是一些基本概念以及工具,算是抛砖引玉吧!注意这些内容同样适用于J2EE等应用。此后,也许我会写更多关于此方面的文章。当然,是“也许”。好了,祝我们好运吧!

首先,这里有两个性能方面的重要指标。请注意,下面的“定义”并不规范,仅供参考。
* Response Time - 响应时间
从初始化请求到完成响应所用的时间。这是一个测试WEB应用程序速度的重要度量。
* Scalability - 伸缩性
一个可伸缩的应用程序的响应时间随负载的增加而线性增加。
没有WEB应用程序可以处理无限数目的请求,但是一般我们可以预测一个范围,并保证我们的WEB应用程序可以在此范围内“优雅”的伸缩,即始终把响应时间维持在可接受的级别。

如果我们打算优化我们的WEB应用程序,那么至少我们应该知道它到底该不该优化。压力测试可以解答这个问题。

* Load Test - 压力测试
为WEB应用程序模拟用户请求以测量其伸缩性的过程。
它非常有用,虽然开始的时候会觉得有点“变态”。一般我们会模拟大量的用户请求以获得在WEB应用程序的速度恶化到无法接受的级别前能够处理的并发请求数量。
所谓“无法接受的级别”并不是一定要到实例池崩溃、应用服务器瘫痪甚至服务器当机的时候,这要视需求而定。

一般压力测试包含如下步骤:
* 确定接受请求并完成响应的最大允许的延时。
* 估计WEB应用程序的最大并发用户数量。
* 模拟用户请求,以一个比较小的负载开始,逐渐增加模拟用户的数量,
直到WEB应用程序的 相应延时超过最大延时。
* 如果负载比估计的用户数量小,那么应该优化这个WEB程序,否则你选择性的执行优化。

你不会在考虑自己写一个测试程序吧?算了,何必再重新发明一次轮子?这里有一些压力测试工具,它们各有特色,先介绍免费的:
* Web Application Stress Tool, Microsoft, http://www.microsoft.com
* JMeter, Java Apache Project, http://www.apache.org/
* LoadItUp, BroadGun Software, http://www.broadgun.com

如果你或你的公司很有Money,或者需要更加丰富的功能,可以使用以下商业软件,不过它们都价值$10,000,甚至更多:
* WebLoad, RadView Software, http://www.radview.com/
* SilkPerformer, Segue Software, http://www.segue.com/
* Benchmark Factory, Quest Software, http://www.benchmarkfactory.com/
* LoadRunner, Mercury Interactive, http://www.mercuryinteractive.com/
无论你选择哪种工具,它都至少应该提供以下的功能,以便为以提供丰富且有意义的测试数据:
* 发送GET和POST请求
* “记录”从浏览器发送的GET和POST请求(以免开发者需要手写这些合适的请求)。
* 获取和发送COOKIE。
* 多线程
* 模拟用户延迟
* 记录性能数据
* 控制带宽

我打赌如果你以前没有接触过以上这些内容,那么你的WEB应用程序很难在压力测试中获得令人满意的结果。你会看到响应时间会随着请求数量的增多而暴涨,甚至出现一些我们不想看到的情况,比如“拒绝连接”。

一旦没能通过压力测试我们应该如何应对呢?优化!没错,不过我们怎么知道那里应该优化呢?Profiler可以对此提供很多的帮助。(我不知道怎么翻译它更贴切一些,所以干脆不翻译了!)

Profiler提供这样的功能,它可以检测你的应用程序并提供一些有用的运行时信息,比如某块代码的执行时间、内存/堆的使用情况、内存中的对象实例数量等等。比如,我们想知道到底是哪个Java对象的哪个方法耗费了更多的时间。

以下是一些Profiler:
* Quantify,Rational Software,http://www.rational.com/
* Optimizeit,Intuitive Systems,http://www.optimizeit.com/
* JProbe,Sitraka Software,http://www.jprobe.com/


请注意,我们不能过分依赖工具,虽然它们很多时候可以极大的是我们的工作变得简单、轻松。一般如果你知道了系统的瓶颈所在,修改往往是一件相对轻松的事情。个人认为寻找、发现系统的瓶颈所在才是最关键、也是最体现一个人功力的步骤。这是一个非常专业的问题,它需要你对所使用的应用平台、软件架构、数据库系统、网络环境等等诸多方面非常深的造诣。这并不夸张,任何一个会JSPJDBC的人都可以写出一个WEB应用程序来,但是那还相差太远……限于篇幅,话题先进行到这里。其实你可以在很多地方找到有关测试和优化技巧的文章,都非常有针对性,比如TheServerSide.com、JavaLobby.com等。好啦!休息一下!Java之路很长,一步一步走吧!!

0
0
分享到:
评论

相关推荐

    基于Web应用的性能测试与优化_苏波

    为保证 Web 应用软件的质量和可靠性,Web 应用程序性能测试技术的研究越来越受到人们的重视。讨论了 Web 应用的性能测试原理和测试工具,并对一个 Web 应用实例进行性能测试,然后对测试结果进行分析,根据测试结果...

    Web性能测试方法及其应用说明书.doc

    WebLoad是一个性能测试和分析工具,让Web应用程序开发者自动执行压力测试。WebLoad通过模拟真实用户的操作,生成压力负载来测试Web的性能。 5. WebLoad的应用框架 WebLoad提供巡航控制器cruise control的功能,...

    [17个软件测试文档]-10成功的 Web 应用系统性能测试

    [17个软件测试文档]-10成功的 Web 应用系统性能测试 已上传: [17个软件测试文档]-9web项目测试实战性能测试结果分析样章 http://download.csdn.net/detail/cleopard/8344023 [17个软件测试文档]-8性能测试经验总结 ...

    Web性能测试模型与性能提升策略研究(论文)

    2.4 Web应用程序性能测试方法 18 2.4.1虚拟用户方法 18 2.4.2 WUS方法 18 2.4.3 对象驱动法 19 第三章 Web性能测试程序设计 20 3.1 系统建设的目标 20 3.2系统功能结构分析 20 3.3 系统功能的设计 20 3.3.1 URL生成...

    ASP.NET基于CS应用程序平台多语种技术应用研究(源代码+thesis).zip

    项目是基于ASP.NET的Web应用程序开发,旨在构建一个高性能、可扩展和可靠的在线平台。我们将使用ASP.NET MVC框架和C#编程语言来实现这个项目。 ASP.NET MVC是一种成熟的开发框架,它采用模型-视图-控制器的设计模式...

    builder:用于定义SASjs Web应用程序的Web应用程序

    用于定义SASjs Web应用程序的Web应用程序 该项目是通过引导的。 可用脚本 在项目目录中,可以运行: npm start 在开发模式下运行应用程序。 打开在浏览器中查看它。 如果您进行编辑,则页面将重新加载。 您还将在...

    FoodBlog_AmplifyContentful:一个示例Web应用程序,用于测试[Contentful](https

    REACTJS Web应用程序一个示例Web应用程序,用于测试与集成。先决条件安装Node JS 请参阅来安装nodejs。轻松创建帐户注册一个免费的Contentful帐户。 有关说明,请参阅 。用法该项目是通过引导的。准备工作目录git ...

    Web应用漏洞检测的验证与优化-研究论文

    这样,用户就可以自由地针对列表中的任何特定攻击来测试其Web应用程序,而不必执行当时不需要的所有攻击。 这也节省了用户的时间。 将生成有关漏洞的详细报告,将识别与之相关的风险,并将提供针对已识别风险的描述...

    Veracode应用程序安全扫描工具

    Veracode提供自动化的静态和动态应用程序安全测试软件和补救服务。我们扫描二进制代码和产生缺陷优化报告。然后,我们与您的开发人员一起,按照您的风险管理政策,利用Veracode UI用户界面(或您现有的集成开发环境...

    Jmeter性能测试进阶课件

    JMeter是一款功能强大的开源负载测试工具,用于测试Web应用程序的性能和功能。它可以模拟多种负载条件和行为,帮助开发人员和测试人员评估系统的性能和稳定性。 JMeter的场景说明包括创建和配置测试计划、线程组、...

    react-context:用于使用上下文获取新闻的小型Web应用程序

    可用脚本在项目目录中,可以运行:yarn start 在开发模式下运行应用程序。 打开在浏览器中查看它。 如果进行编辑,页面将重新加载。 您还将在控制台中看到任何棉绒错误。yarn test 在交互式监视模式下启动测试运行...

    meetup:使用测试驱动的开发(TDD)与React一起构建的无服务器渐进式Web应用程序(PWA)。 该应用程序使用Meetup API来获取选定城市http的即将发生的事件

    可以下载此渐进式Web应用程序,使其外观与普通的移动应用程序相同,并使用Meetup API来获取在绘图或饼图中可视化的即将发生的事件等。 该应用程序是通过测试驱动的开发方法构建的,该方法使用Jest和Puppeteers进行...

    ForeWeather:天气预报Web应用程序。 提供5天城市预报

    ForeWeather是一个Web应用程序,可获取全球任何城市的5天天气预报。 :cloud_with_lightning_and_rain: 如何运行此应用程序 请按照下面提到的步骤在本地环境中运行此应用程序 将此存储库克隆到本地磁盘空间。 在存储...

    ASP+ACCESS基于WEB社区论坛设计与实现(源代码+thesis).zip

    项目是基于ASP.NET的Web应用程序开发,旨在构建一个高性能、可扩展和可靠的在线平台。我们将使用ASP.NET MVC框架和C#编程语言来实现这个项目。 ASP.NET MVC是一种成熟的开发框架,它采用模型-视图-控制器的设计模式...

    addressmaps:通讯录Web应用程序

    地址图通讯录Web应用程序该项目是通过引导的。可用脚本在项目目录中,可以运行:npm start-dev 与模拟的GraphQL服务一起以开发人员模式运行应用程序npm start 在开发模式下运行应用程序。 打开在浏览器中查看它。 ...

    portfolio-app:我的投资组合Web应用程序

    Humbe Jeffrey的投资组合Web应用程序 这是我使用React.JS构建的我的投资组合Web应用程序 注意:您必须在计算机系统上安装NodeJS才能运行此应用程序。 可用脚本 在项目目录中,可以运行: yarn add 安装应用程序依赖...

    构建高性能Web站点

     编写Web 应用程序、关心站点性能,并且希望自己做得更加出色的开发人员  关心性能和可用性的Web 架构师  希望构建高性能Web 站点的技术负责人 实施Web 站点性能优化或者规模扩展的运维人员  与Web 性能...

    ASP基于WEB聊天室的设计与实现(源代码+thesis+任务书).zip

    项目是基于ASP.NET的Web应用程序开发,旨在构建一个高性能、可扩展和可靠的在线平台。我们将使用ASP.NET MVC框架和C#编程语言来实现这个项目。 ASP.NET MVC是一种成熟的开发框架,它采用模型-视图-控制器的设计模式...

Global site tag (gtag.js) - Google Analytics