当前位置:首页 > 工作总结 > Web应用负载测试自动化:在测试自动化应用控制
 

Web应用负载测试自动化:在测试自动化应用控制

发布时间:2019-03-12 03:48:39 影响了:

  为最终客户提供良好的操作体验,对电子商务来说是非常重要的,也是非常具有挑战的,当然也是高回报的。而负载测试正是保证Web应用性能的重要方法。   在过去几年中,电子商务的发展速度令人震惊。电子商务成为流行商业媒体的原因有两个:其一,它使业务能够分享全世界的信息和资源;其二,它为广告、市场推广和销售提供了一个有效渠道。网络有助于提高销售量,扩大市场推广范围,提高客户服务质量,并能在企业内外高效完成业务。
  但随着网络客户数量的增长,销售商之间的竞争变得日益激烈,人们正在意识到这一点:为客户提供良好的操作体验,这是非常重要的,也是非常具有挑战性的,但同时它也将是高回报的。毕竟,对在线体验满意的客户会不断在此做交易,而这是公司稳定收入的来源。所以,对于那些在线商务来说,最终用户体验是最为重要的。
  
  保证最优的用户体验是一个复杂问题
  
  电子商务的运行是非常复杂的。商业网站根据不同的商务交易类型,可以被划分为四大类:出版/订户网站、在线购物网站、客户自助网站和贸易/拍卖网站。
  无论是哪种交易类型,网站必须能够让客户及时完成业务。因此,拥有一个可扩展的架构是必需的。
  然而,一个良好的Web环境包含着一个非常复杂的多层次系统。如果要端到端地扩展这个基础架构,就必须管理每一层中的每个组件的性能和容量。图1说明了这些组件的复杂性。
  
  
  这一复杂性引起了关于网站完整性和性能容量方面的许多问题。例如,用户所经历的响应时间是否小于2秒?该网站是否能支撑一定数量的用户?当系统中的所有组件被连接到一起时,是否能协同共存?应用服务器和数据库服务器间的信息传送速度是否足够快?每一层上是否有足够的硬件来处理高访问量?客户是否在广域网(WAN)上获得了最优的质量体验?
  为了解决这些性能问题,必须实施一种方法,这种方法能在部署前预测到Web应用在生产环境中的行为。
  
  上线前的应用负载测试
  
  为了适应网站的发展,Web开发人员们往往会优化软件或者在每个系统组件上增加硬件。然而,这种随意改进性能的方法并不理想,往往会导致无节制的硬件购买,成功也没有一点保障。为了真正确保最优的性能,必须在上线前对所有系统组成部分进行负载测试。应用负载测试就是对整个Web应用能力进行衡量,使其能支持众多并发用户或交易,并保证适当的响应时间。由于此类测试涉及面广,因此负载测试是惟一一种能够在上线前精确测试网站端到端性能的方法。应用负载测试能帮助开发人员隔离任何基础架构组件的瓶颈问题。
  通常,实施这一流程有两种方法:手动测试和自动化测试。手动测试面临几个内在挑战。例如,如何模拟应用中相互作用的成千上万个用户的行为和负载,如何协调用户操作,如何衡量响应时间,如何保持重复测试方法的一致性,如何比较测试结果等。
  由于负载测试具有不断反复的特性,必须识别性能问题、调整系统,然后重复测试,这样才能确保该调整所产生的影响是有利的。由于需要不断重复测试,手动测试显然不是一个实用的选择。
  有了自动化测试工具后,重复进行测试就变得轻而易举,测量结果也能自动得到。与手动测试相比,这种方法所采用的自动测试工具能提供一个更具有成本效率的有效解决方案。并且,它还最小化了测试过程中产生人为错误的风险。
  现在,自动负载测试是Web应用负载测试的首选。主流自动化负载测试工具通常采用三大组件来执行一个测试。它们包括:控制面板,负责组织、驱动并管理负载;虚拟用户,就是流程中用来模拟真实用户在客户端应用上执行某个业务流程的行为;负载服务器,用于运行虚拟用户。
  有了这些组件后,自动负载测试工具就能用自动化虚拟客户来替代手动测试人员,在单个负载生成器上同时运行多个虚拟用户,自动衡量交易响应时间,便捷地重复负载场景,验证性能设计的变更内容,这一先进的功能将帮您节省时间和昂贵的资源。
  最近,Newport Group的一份报告证明了自动化测试工具的价值。该报告显示,一半以上的网络业务无法达到它们预想的网络业务扩展目标。这其中大多数未使用任何类型的自动负载测试工具。相反,那些能够达到扩展预期效果的业务几乎都使用了自动负载测试工具。
  
  
  自动化负载测试工具的挑战
  
  随着技术的不断发展,自动化负载测试工具也面临着诸多挑战,这些挑战主要包括:精确性和可扩展性以及隔离性能问题的能力。为了隔离性能问题,负载测试工具要监控主要系统水平组件,并在运行负载测试时识别出瓶颈问题。精确性被定义为:一个自动化工具模拟真实用户行为的程度有多高。可扩展性则与产品使用最少资源产生最大负载相关(具体内涵见表1所示)。但目前,这些问题也已经得到了一定程度的解决。
  
  自动化负载测试的流程
  
  采用严格的方法进行负载测试,就能实现资源的优化;更好地预测到硬件、软件和网络的需求;建立性能预期目标来满足最终用户服务水平协议(SLAs)。为了验证变化是否已经生效,就必须重复进行测试。
  下面,笔者以目前使用比较广泛的美科利LoadRunner工具为例,详细介绍使用测试工具进行自动化负载测试的主要步骤和流程。LoadRunner能预测系统行为和性能。通过模拟任意数量的用户(从一个到上万个),它能测试整个企业基础架构,识别并隔离问题。由于能够支持多种环境,它能测试整个企业基础架构和应用,其中包括电子商务、ERP、CRM和定制客户/服务器应用,帮助IT和网络群组优化应用性能。而且,应用部署完毕后,测试中创建的测试能被重新用来监控应用。
  通过自动化工具实现负载测试自动化一般有以下七个步骤:
  
  第一步:系统分析
  这一步对于诠释测试需求来说,是至关重要的,并可以此来判断系统是否将按照预期目标在扩展和运行。测试人员把用户的有效需求转化成负载测试目标。负载测试前,要对系统需求展开全面评估,使测试处于更为实际的条件中。
  首先,在执行任何测试战略前,必须确定所有主要性能目的和目标,例如,确定测试哪些流程/交易、测试中使用何种系统架构、并发连接的数量、预期每秒网络点击率等。参照前述四种网站模式,开发人员能很容易判断出网站的流程类型或交易类型。例如,一个B2C模式能执行在线购物流程,模拟客户浏览网上书店目录,选择一种商品并做出购买行为。测试中,这一流程可被标为“买书”。
  另外,还需要定义测试所需输入数据。可以动态创建,也可利用随机浏览来获取数据。接着,还需要从以下三种测试战略模式中选择其一:负载测试、压力测试和容量测试。负载测试用于测试一定数量用户下的应用程序,压力测试则是通过长时间的负载测试来实现应用的稳定性和可靠性。最后,测试人员还必须判断运行虚拟用户可使用的资源有哪些。判断是否有足够数量的负载生成器或测试机器来运行适当数量的虚拟用户,还要判断测试工具是否具有多线程功能等。
  
  第二步:创建虚拟用户脚本
  首先,要记录业务流程,创建测试脚本。脚本记录可由LoadRunner的虚拟用户产生器(Virtual User Generator,VUGen)来完成。VUGen是运行在客户桌面上的一个组件,它能捕获真实客户的应用和服务器之间的信息传送。通过发送各种电子商务协议请求,VUGen能模拟真实浏览者的确切行为。VUGen也能记录使用Netscape或 Internet Explorer浏览器的用户――或者任何能够指定代理服务器地址的规定用户。完成记录流程后,测试脚本也就产生了。
  然后,就能在脚本中增加逻辑关系,使之变得更加符合现实。脚本中可加入智能,这样,它们在执行交易时就能模拟虚拟用户进行推理论证。在这个阶段,LoadRunner使用了交易、检验和参数化这些特性。
  交易是指一系列需要在一定负载条件下测试的操作。VUGen允许插入内容检查(Content Check)复核点进行检验。通过对返回HTML网页的分析,检验应用功能。如果检验失败,LoadRunner会记录错误并提示失败的原因(例如,连接断线、图片丢失、错误文本等)。参数化是为了精确模拟真实用户行为, LoadRunner的虚拟用户在负载测试中使用不同的数据,把脚本中的常量替代为变量或参数。虚拟用户可以从文本文件、随机数字、日期/时间等数据源取得的值来替代参数。
  
  
  第三步:定义用户行为
  LoadRunner提供综合运行时间设定值来配置那些模拟真实用户的脚本。运行时间设定值包括:
  ● 思考时间:控制虚拟用户操作系统的速度,其中包括测试期间的思考暂停时间。通过不同的用户思考时间能够模仿不同用户行为――从新手到熟练用户。
  ● 拨号速度:模拟用户使用调制解调器或LAN/WAN连接到系统。调制解调器的速度从14.4 Kbps到56.6 Kbps不等。这有助于控制用户行为,精确模拟每个请求的响应时间。
  ● 模拟高速缓存:模拟具有一定高速缓存用户的浏览。也可根据服务器要求关闭高速缓存。
  ● 浏览器模拟:帮助确定虚拟用户所模拟的浏览器。LoadRunner 同时支持Netscape、Internet Explorer以及任何定制浏览器。
  ● 连接数量:像真实浏览器一样,可以让虚拟用户在下载网页内容时控制连接到服务器的连接数量。
  ● IP地址分配:在同一个物理机器上分配虚拟用户的IP地址,测试IP相关组件的性能影响。
  ● 迭代测试:命令重复运行虚拟用户脚本,协调虚拟用户,通知间隔间的等待时间。根据使用不同数据执行流程的次数,迭代测试定义了用户的工作量。
  ● 错误处理:规定虚拟用户在执行脚本时的错误处理方法。当虚拟用户在重新执行过程中碰到错误时,LoadRunner 能激活Continue on Error。
  ● 日志文件:储存虚拟用户服务器传送信息。标准日志能显示所有交易、集结和输出信息。扩展日志记录也会跟踪警报和其他信息。
  
  第四步:创建负载测试场景
  负载测试场景包含运行脚本的虚拟用户群组信息和群组运行所在的负载生成器信息。为了成功运行场景,首先要根据一般用户交易来定义每个群组,然后定义并分配所有虚拟用户,最后决定虚拟用户运行在哪个负载发生机器上。可使用LoadRunner的控制器来创建场景。作为一个控制中心,它提供了完整的测试和虚拟用户信息。控制器可实现以下操作:向各个群组分配脚本;定义运行测试所需的虚拟用户数量;定义运行虚拟用户的主机。
  
  第五步:创建网络影响测试
  网络测试就是要确定虚拟用户群组将被定位在服务器的哪个地方。网络场景定义了一定网络特性的变化,例如带宽可用性、争夺点、等待时间、错误和抖动现象。这个测试所使用的虚拟用户数量将保持不变,只有网络特性会变化。
  LoadRunner能够进行WAN模拟,因此,前几步中使用到的虚拟用户脚本还可用于网络影响测试。为运行在同一个测试中的并存虚拟用户群组改进诸如连接速度、等待时间和错误率等网络特性。然后,就能精确确定对不同群组的响应时间所产生的网络影响以及应用对网络的敏感性。可以记录预期响应时间数据和网络要求,应用部署完毕后,会用到这些信息。
  
  第六步:运行负载测试方案,监控性能
  脚本一旦创建完成,就可以运行测试了。实时监控可以让测试人员在测试运行的任何时刻了解应用性能。实时监控能在测试过程中更早地探测到性能瓶颈问题。LoadRunner的控制器也有一套性能监控器,它们能在负载测试期间监控多层次系统中的每个组件。通过捕捉整个系统的性能数据,能把这一信息和最终用户负载和响应时间相关联起来,从而找到瓶颈问题所在。性能监控是在非插入的方式下进行的,这样,对性能的影响就能降到最低。另外,所有这些监控器都独立于硬件和操作系统,所以,无需在远程监控服务器上安装代理。LoadRunner能提供的在线监控方式包括:运行时间图表、交易图表、Web服务器资源图表、系统资源图表、Web应用服务器图表、数据库服务器资源图表。
  
  第七步:分析测试结果
  评估测试结果是负载测试流程中最重要的一步。到现在为止,在网络上进行多个流程时,已经能够精确记录和执行真实用户的行为。并且,性能监控还能在运行脚本时准确找到瓶颈问题。

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3