性能测试自动化:预测系统行为并提高应用程序性能白皮书目录摘要........................................................................3什么是性能测试?...............................................................4为什么要将性能测试自动化?.......................................................4自动化性能测试流程.............................................................5设计阶段.......................................................................5构建阶段.......................................................................6执行阶段.......................................................................7分析、诊断和反复调节阶段...........................................................7谁应当参与有效的性能测试?.......................................................8为什么选择HPLoadRunner软件?....................................................8利用HPLoadRunner脚本录制技术简化脚本创建...........................................10使用HP诊断软件解决性能问题.......................................................10HPLoadRunner的新功能...........................................................11总结.......................................................................123摘要成功的企业仰仗专门的软件应用程序,来在整个企业中推动工作效率并提高生产力收益。这些应用程序能为协作和信息共享提供更加有效的媒介,并且已经成为业务关键信息共享以及交易处理的主要渠道。从电子邮件到客户关系管理(CRM)乃至交易处理—当今的企业都由软件应用程序来运作。在过去几年中,软件开发技术发展迅速,已经大大地成熟,但与此同时,现代应用程序的复杂性也快速的膨胀。应用程序可能使用上百个单独的组件来完成以前用纸或用手完成的工作。这种复杂性直接与业务流程中更多的潜在故障点相关,使分离性能问题的根本原因变得更加困难。此外,软件应用程序并不会像汽车那样工作。它们并不是只在永久部件磨损时才做替换。不管软件应用程序的设计目的是提供具有竞争性的优势还是回应不断变化的业务条件,它们每周、每月、每年都在不断地发展。这种变化的潮流则为企业带来了另一组不得不去管理的风险。软件应用程序的瞬息万变及其复杂性的激增为软件开发过程带来巨大风险。严格的测试是最常见的策略,可量化并减少这种企业风险。开发人员、质量保证(QA)团队以及管理层等所面临的问题是如何在投入使用前准确彻底地验证系统性能,而不超出IT预算。通过将性能测试自动化,可以在投入使用前验证应用程序是否能满足您企业的需求。这样,在部署时发生意外的情况会更少,也能够量化变更对最终用户体验的影响,还能够查明故障组件并迅速解决它们。然而,在将性能测试自动化时也会带来新的问题。在承担自动化测试程序之前,您应当了解以下内容:•什么是性能测试?性能测试应当完成什么?•为什么性能测试应当自动化?•性能测试的正确过程是什么?–设计–构建–执行–分析/诊断/调节•谁应当参与良好的性能测试并促进其成功?•谁需要查看结果,以及如何报告结果以便量化投资回报(ROI)?•比较自动化负载测试解决方案时,哪些功能不可或缺?本书简要概述了将性能测试自动化的益处,涵盖了如何以最佳的做法进行性能测试。同时也总结了HPLoadRunner软件的关键功能和优点;该软件是行业标准的自动化负载测试解决方案,它是HPPerformanceCenter软件的一部分。软件应用程序的瞬息万变及其复杂性的激增为软件开发过程带来巨大风险。4什么是性能测试?性能测试能够在系统投入使用前准确测试其端到端性能。性能测试解决方案应当能够:•模拟成百上千个用户与系统交互,而无需过大的硬件需求•测量最终用户响应时间•以一致的方式重复负载•监控负载系统组件•提供强大的分析和报告引擎高效的自动化测试解决方案通常使用四个主要组件来构建并运行测试。它们是:•虚拟用户生成程序,用于将最终用户业务流程捕获到自动化脚本中•监视器,用于组织、驱动、管理和监控负载•负载生成程序,用于在执行时运行虚拟用户•分析引擎,用于查看、剖析和比较结果为什么要将性能测试自动化?自动化性能测试是利用人员、流程和技术减少应用程序部署、升级或补丁部署过程中的风险的方法。自动化性能测试的核心是将生产工作量应用到部署前的系统,同时测量系统性能和最终用户体验。结构完善的性能测试应当能够回答如下问题:•应用程序对目标用户响应是否足够迅速?•应用程序是否能够处理预期的用户负载以及更多的负载?•应用程序是否能够处理业务所需的大量交易?•应用程序在预期和非预期的用户负载下是否稳定?•在投入使用时用户是否具有积极的体验(即快速响应时间)?通过回答这些问题,自动化性能测试解决方案可帮助您量化业务方面的变化所带来的影响。这种量化的结果会使部署风险变得清晰可见。高效的自动化性能测试流程能够帮助您的企业做出更明智的发布决策,且防止系统停机和产生可用性问题。5णᄲ൱ยऺ֪֧ۨᅭᄽခୁײۨᅭဣཥ߾ፕଉएጚ֪Ⴀీ֪કቛႠ֪Ԓߢิׯยዃ֪࣍ৣऻ֪গԨظॺ֪ݛӄኑৡۙኝದዃଉࣅ߀ౕजѣౙ/ன/ឳᓣ੧ᛘ自动化性能测试流程成功实施自动化性能测试的组织是通过将流程划分为不同的阶段来执行的。不同的组织所采取的具体实施方法可能有所不同,但性能测试可大致分为四个阶段:设计、构建、执行和分析/诊断/调节。每一个阶段都有具体的任务,在进入下一个阶段之前应当完成,同时涉及不同的参与者。大致来说,这四个阶段的任务如下:•设计阶段涉及定义要测试的业务流程、平均或峰值生产小时的业务流程组合、系统的整体用户和响应时间目标。•构建阶段涉及设置和配置测试系统及基础设施、使用自动化性能测试解决方案构建测试脚本和负载方案。•执行阶段包括运行负载方案和测量系统性能。•分析、诊断和反复调节阶段主要测量系统性能并使负载测试进入下一个级别。这一阶段的重点是查明问题以便帮助迅速解决它们,并实时调节系统参数以提高性能。以下部分将详细阐述检查任务的另一个级别,它们对于保证自动化性能测试流程的每个独立阶段的成功必不可少。设计阶段设计阶段是性能测试团队与业务领域(LOB)的经理们合作以收集性能要求的主要时间。可以将要求考虑为四个方面:业务要求、技术要求、系统要求和团队要求。业务要求一般通过与主题专家(SME)会面来收集。他们可能是业务分析师或最终用户。当以下项目就位时,将有一套全面的业务要求产生:•应用程序概况:创建系统使用演示,以允许您的性能团队从整体上了解应用程序如何被使用。•业务流程列表:创建关键业务流程的列表,以便反映最终用户在系统上执行的活动。•业务流程流:创建Word文档,以便详细记录每个业务流程的正确步骤/屏幕。•交易列表:汇编业务流程中需要负载测量(如“登录”或“转移资金”等)的关键活动的列表。•业务流程图:创建业务流程图,以便描绘业务流程流的分支情况。图1.高效的自动化性能测试流程的四个阶段6您可通过与系统管理员和数据库管理员(DBA)进行会面来收集技术要求。这些人员可能是企业开发组或运营部门的成员,或同时隶属这两个部门。当完成以下内容时,您将拥有一套全面的技术要求:•环境预排工作:与系统或基础设施团队开展测试架构的预排工作。•系统范围会议:举行会议来讨论系统的哪些部分应当排除在测试流程之外,并达成一致见解。•生产图:创建生产基础设施的图表,以标记出从QA迁移到生产过程中可能影响性能的因素。这对收集系统要求至关重要。这些是管控负载测试流程通过/未通过状态的系统的高级目标。这些通常是与来自LOB的项目经理合作而达成一致的。系统要求包括对以下问题的回答:•系统在正常和高峰期必须支持的用户数量为多少?•系统每秒必须处理的交易量是多少?•对于所有的关键业务交易,可接受的最低和最高响应时间是多少?•用户社区如何连接到系统?•生产中需要承载的系统工作量如何?什么是交易组合?最后,您应当在进入构建阶段之前完成团队要求。这包括确定哪些性能团队成员参与即将进行的负载测试。开始时可自动确定(例如当团队中只有一个人时)。但是,如果性能测试成为了卓越中心(CoE)的一部分,您应当在设计阶段处理资源分配和内部物流。提前收集完整的业务、技术、系统和团队要求,是有效和成功地进行负载测试的基础。构建阶段在构建阶段,您需要将设计阶段所确定的业务流程和工作量转变为可用来推动可重复、真实负载的自动化组件。您可将这划分为两个方面来关注:自动化设置和环境设置。自动化设置包括一系列由性能工程师执行的序列任务:1.制作脚本:将存档的业务流程记录到自动化脚本中。2.交易:插入计时器来产生业务所需的逻辑计时。3.参数化:用池来替换所有的输入数据(如登录ID和密码),以便每个虚拟用户使用唯一的数据访问应用程序。4.方案:通过为不同的用户组分配不同的脚本、连接性和用户行为来创建生产工作量。5.监视:确定要监视哪些负载服务器或机器。7环境设置包括组装硬件、软件和数据,这些都是执行成功及真实负载测试所必需的。这可能要与系统人员、DBA、操作人员和业务团队协作。构建阶段的最终结果是一套自动化资产,您可在配置好的可用环境中随意执行。执行阶段在那些刚刚接触性能测试的人中间,常常误认为执行只是一个单一事件。事实上,它是一个多步骤的流程,包括多种类型的性能测试。每种类型的测试所提供的信息对于了解发布应用程序的业务风险都是必不可少的。下面列举出几种不同类型的负载测试:1.基线测试,用于验证系统及其周围的环境是否在合理的技术参数下运行。性能测试仅运行五到十名用户来对最终用户交易性能进行基线测试。这些测试应当在性能测试流程的开始和结束时执行,以测量绝对响应时间的提高量。2.性能测试,可模拟环境中的负载,从而提供有关系统可处理多少用户的信息。这些测试应当模拟平均和高峰小时的生产用量。它们应当使用真实世界中的用户行为(如思考时间)、调制解调器模拟和多个浏览器类型,以获得最高的准确度。应当运行所有的监视程序和诊断程序,以便最大程度地了解系统的性能降低和瓶颈。3.基准测试,用于在理想的情况下测量和比较每种机器类型、环境或应用程序版本的性能。这些测试是在系统进行了可扩展测试后运行的,旨在了解不同架构的性能影响。4.渗入测试,其目的在于长时间在负载下运行系统,从而检验系统的性能状况。5.峰值测试,其目的在于模拟一段时间内系统上的峰值负载,以便帮助演示应用程序和底层硬件是否能够在合理的时间内处理高负荷。分析、诊断和反复调节阶段。在完成负载测试的设计、构建和执行阶段后,项目将进入到分析、诊断和调节阶段。这些功能是实时和反复进行的。负载测试解决方案应当提供有关最终用户、系统级别和码阶性能数据的全面信息,同时识别导致系统性能降低的可能原因。这样的信息能使您确定是否已经达到性能目标;如果没有达到,则可确定没有达到的原因以及问题所在。如何确定性能测试的