HyperPacer全面性能服务解决方案

发布时间: 2017-03-03


一、 应用性能管理最佳实践

(一) 识别业务需求,定义性能标准

性能测试是业务系统性能保障的最后防线,利用性能测试工具,录制或开发一个测试脚本,调试和运行脚本,然后编写一份有模有样的性能测试报告是件很容易的事情,但是报告的可信度,毫无疑问几乎为零。一个可靠的可信的性能测试,关键不在于掌握多么强大的测试工具,也不在于有多好的测试开发能力,而在于对业务需求的准确理解和业务场景的精确模拟。所以,在开始一个项目的时候,我们需要收集足够的业务对系统性能需求的数据,清晰的定义性能在业务系统开发中的优先级、性能与业务商业目标的关系,以及关联的服务能力承诺(如响应时间、SLA等)。这些业务驱动的需求既关乎系统开发过程中的架构设计和代码开发,也是最终衡量性能测试有效性的关键。

确定了性能在终端用户体验和业务增长中的重要性,性能管理工作就必须贯穿业务活动、技术管理、系统开发、团队协作的全过程。掌握了清晰的业务需求,并标准化成可度量的指标,就能以性能目标驱动应用开发和测试,从而保障系统始终满足业务需求。

(二) 性能目标驱动应用系统开发和测试

识别业务需求后,就可以把它们转换成可度量的具体指标,如响应时间、业务吞吐量、资源利用率等,从而作为系统开发和测试的目标,指导开发者开发符合预期性能的系统,测试者也有了验证性能是否达标的依据。

应用系统交付的过程,目前主流的有以下两种模式:

越来越多的项目被要求缩短交付周期,但质量要求不能降低。如何在有限的时间内交付高质量的系统?尽可能的避免返工,在代码和组件级别尽早发现问题,修复问题,在开发阶段同步开展测试成为普遍答案。实际上对大多数团队来说,如果没有强大的外部力量支持,是很难做到的。因为在开发阶段开展代码级别的测试,测试人员需要具有开发能力,开发人员也需要掌握测试技术,对两者来说都是挑战,实际上不仅降低了开发效率,还增加了项目难度。

我们都希望项目团队能在统一的目标驱动下简单高效的完成工作,首先必须从建立一套强大实用且高度复用的测试框架开始。这套框架可以直接体现业务过程,验证业务需求,测试和开发人员只需要简单的编程就能实现测试,开发和测试同步进行才会变得切实可行。尽管开发阶段代码变更频繁,但是业务需求和测试框架一旦确定,就会基本保持不变,所以测试框架还必须与测试实现松耦合。

(三) 应用持续集成的自动化性能测试

需求和代码的变更、环境因素的变化,都可能引入性能问题。为了减少在生产阶段修复问题的代价,在系统开发的整个生命周期内需要不断的进行性能测试,要在系统上线前发现所有性能问题,尽可能的减少问题对业务的损害。这就要求每次性能测试的代价不能很高,团队需要更简单而且能频繁的执行性能测试的能力。

现在的应用系统并发量动辄成千上万,手动性能测试显然是不可取的,只会使用测试工具通过录制脚本开展测试,且不说测试效果如何,每次开展测试的代价其实也很高,而且无法与开发过程持续集成。所以,建设一套能够与开发过程持续集成的自动化性能测试平台是很有必要的。测试平台既能支持应用性能测试过程的管理,又能与性能测试工具紧密集成,能够精确模拟生产环境,承载成千上万并发用户的负载,能够自动运行脚本,自动报告和分析,让每次测试变的更简单更快捷。

1. 传统的测试过程

1) 测试计划

合格的性能测试始于一个周密的测试方案。开始一个测试任务前,先必须编写测试方案,定义清晰的测试目标、符合业务需求的测试场景,识别具体的测试环境,如平台、服务器、网络、数据库、Web服务等,明确要关注的测试指标,如响应时间、资源利用率等。

2) 测试准备

在自动化性能测试过程中,由测试工具创建的测试机器人模拟人与系统进行交互。测试机器人的行为由测试脚本定义,测试脚本中定义了测试场景执行过程中用户触发的每个动作和数据处理,所以测试脚本的开发是首要任务,测试结果的有效性取决于测试机器人模拟人的真实程度。脚本开发完成后,需要先用少量的用户执行脚本,不断调试以满足大规模性能测试的需要。在正式执行脚本前,必须决定如何去执行测试,在多长时间内以什么样的节奏由多少用户同时发起多少事务。

3) 测试执行

设置多个测试机器人同时发起任务来增加系统负载,通过同时增加或减少机器人数量来调控系统负载水平,通过监视系统响应、资源利用率等来了解负载是如何影响产品组件的。

4) 测试分析和报告

好的测试解决方案必须有强大的分析能力帮助我们决定事务的成败情况,是否满足承诺的服务能力目标,能否快速找到失败的原因。强大的分析引擎需要支持对数据的分类聚合,以快速找到问题的根本原因。

2. 持续集成的测试过程

1) 构建符合业务模型的测试框架

在系统开发过程中,代码开发有开发框架保证开发效率和开发质量,应用持续集成的测试,测试开发也必须有测试框架的保障,否则一个小的代码变更,需要数倍成本的测试开发来验证,是得不偿失的。测试框架是用来保证测试开发效率和代码质量的,系统开发过程中代码的变更一般是很频繁的,这就要求测试框架必须具有很好的自适应和可复用性。任何一个项目一旦确定,业务模式的变化是很少的,开发和测试的目标都是保证业务模式的实现,所以构建符合业务模型的测试框架是应用持续集成测试的基础。

2) 准备虚拟化的测试环境和服务

应用持续集成的测试过程,测试环境必须具有秒级还原和恢复的能力,虚拟化技术正好提供了这一实现。另外,新的系统越来越多的构建在分布式服务架构上,包括移动和基于云的服务,它们是无法包含在测试实验室内的。另外,质量保证规范通常会限制测试过程中对生产系统的访问。服务虚拟化能够允许你绕开这些路障。服务虚拟化允许你的团队在任何时间无限制的在虚拟服务(真实的应用系统、依赖系统、接口服务等)上创建、开发、测试软件。

3) 开发和交付测试任务

在统一的测试框架下,每个测试项都必须是一个可执行可跟踪的测试任务,而且可以是多版本的,以兼容不同版本的代码实现。所有测试开发工作也必须遵从研发管理过程,开发、调试、提交测试代码,由持续集成框架运行代码。

4) 自动化测试和报告

持续集成框架或测试管理平台检测到代码变更后自动运行测试,发送测试报告给相关干系人,由相关干系人处理测试中出现的问题,从而保证系统开发过程高效高质量的进行。

(四) 应用无缝交付的自动化系统部署

研发环境中做完最后一轮系统性能测试后,我们就知道程序要部署在什么样的网络环境中,需要什么样的变量配置,能否支撑预期的用户负载。有了确信的答案,就可以放心的在生产环境中部署系统了。但这并不代表生产环境的性能就能真的如我们所愿。

在研发环境的测试过程中,我们可能做了大量的参数、配置、部署等系统级优化,我们需要把它们完整的移植到生产环境。如果生产环境是构建于虚拟化之上,将研发环境的镜像直接复制到生产环境即可,否则尽量采用自动化配置脚本自动部署程序的方式。因为维护生产环境的团队往往是另外一拨人,它们可能并不擅长于系统级优化,所以为了保证无缝迁移,通过自动部署的方案,就能减少人为失误的概率,降低生产环境出现问题的可能性。

系统部署到生产环境后,我们可以用之前在研发环境中的脚本测试和监视生产环境的性能,确保万无一失。

(五) 主动监控系统性能和终端用户体验

当应用部署到生产环境后,高性能保障取决于对应用程序和终端用户体验的积极监控,这是在生产环境中预防出现性能问题的关键工作。

通过性能监视,我们能够收集全面的系统运行信息,掌握终端用户的体验,从而快速诊断性能问题。为了达到这个目标,除了服务端的系统级监控外,还必须有监控终端用户的能力,以便我们能知道在终端用户哪里发生了什么。另外,一旦出现性能缺陷,我们也能及时捕获关键信息。这些关键信息和性能数据,也是开展新的开发、变更和测试的依据。

(六) 智能性能问题诊断和主动反馈

在系统性能和终端用户体验监视过程中,会产生大量的数据,这些数据靠人工分析是很困难的。所以我们的性能管理工具必须能够利用这些数据,支持对根本原因的分析,以便我们能够及时确定问题原因,给予积极主动的反馈。

(七) 迭代式问题解决和性能验证

当发现问题并找到根本原因的时候,我们可能发现有多种解决途径解决问题。有些情况下运维团队自己就能解决,有些时候下需要把收集到的信息反馈给研发团队去解决,某些极端情况下,性能问题可能导致需要重新设计应用程序。

在问题真正消除前,我们并不能确定哪种方式是最有效的,也可能是多种方式的综合运行才有效。无论是采用什么途径解决问题,都应该逐个的去应用和验证,以最终找到确切的原因,正真的解决问题。

(八) 性能数据驱动应用程序持续优化

把应用程序部署到生产环境,不是软件性能管理生命周期的终点,而是一个新的循环的开始。尽管研发环境做了各种可能情况下的测试,但始终覆盖不了生产环境下的所有情况。无论是业务增长(数据量、用户量、使用深度、功能拓展等)还是运行环境变化(资源损耗、垃圾堆积、配置变化等),都会导致系统性能逐渐下降,所以需要持续关注生产系统的性能情况,以保证终端用户的体验。

导致性能下降的因素很多,有些可能通过优化配置就能解决,有些就不得不通过优化代码解决。不管是哪种情况,都必须反馈给研发团队。由于这些数据的收集整理是个复杂的事情,靠运维人员人工作业的方式效率低,很容易信息失真或以偏概全,所以最好在生产环境中建立性能数据采集平台,自动将生成的数据不断的反馈给研发和测试团队,方便他们确认导致性能下降的正真原因,基于数据重现问题,变更测试和优化软件,并且找到最好的解决方式。

二、 应用性能管理体系建设

采用应用性能管理最佳实践的方法,对于提升性能保障能力,降低性能保障成本的作用是显而易见的。但是如果没有一套强大的工具集和系统化框架支持,几乎是不可能实现的。HyperPacer是基于应用性能管理最佳实践设计,能够帮助企业降低应用性能管理的门槛,提高管理能力和效益。

企业客户可以根据自身能力成熟度和实际需求,选择HyperPacer的标准化产品或定制化服务,构建起自己的应用性能管理体系,保障终端用户体验和业务竞争力。

 

 

合作联系

竭诚欢迎对本方案有需求或感兴趣的单位和个人,咨询洽谈,沟通交流