根据美国国家标准与技术研究所,在应用程序部署后的问题查找和修复耗费了80%的总体拥有成本。但其中有三成的成本是可以通过进行更全面和更有效的软件测试手段来避免掉的。 性能测试的价值及投资回报不单要用于避免成本消耗,也需要考虑其产生的商业利益。性能测试可以改善客户满意度、增加销售额、提高员工工作效率,并有助于避免后期出现部署发布成本等问题。
当应用性能工程成本效益最大化的情况下,一个有效的策略能够在应用生命周期的前期部署阶段,对应用进行快速修复和性能优化。 虽然企业或组织在应用性能工程中的做法各不相同的,但其核心都是对真实世界的情况进行模拟和重建,尤其当应用被实际使用或跨网络进行数据访问时,在这些情景下,若最终用户通过移动设备访问会出现带来更明显地差别和影响。 在移动接入后,移动互联网的底层基础设施造成的延迟损伤,不仅影响移动用户的体验,也会影响到所有互联网用户。因此网络仿真是应用性能工程的重要组成部分,因为它能够对网络环境进行可靠地仿真,建立一个准确并能预测性能状况的测试环境。
可以将应用性能工程方法论中的最佳实践和技术分为三个部分:探测、网络仿真测试、分析与优化。
应用性能工程探测层需要探测到实际生产环境下最终用户体验的技术、服务和方法,包括探测用户地理位置、用户终端设备和应用系统的依赖项,如第三方内容交付网络和服务、业务流程、服务水平目标与实际网络情况的探测识别。
了解这些实际的使用条件是预测用户体验并建立和验证性能水平基准的关键。随着移动互联网产业的兴起,产生了新的网络类型,如2.5G、3G、4G和LTE,基站距离产生的延时也需要探测并在应用性能中评估,这些都对应用性能工程中的探测方法的带来新的变化因素。探测层提供了不同地点的用户体验条件。从网络方面探测网络性能指标,如可用带宽、延迟、抖动和数据包丢失。而这些度量指标可以有效地在应用性能工程下阶段的网络仿真和测试中使用。
传统的应用系统测试的失败,主要归结于缺乏能够再现影响分布式用户的真实世界的环境条件。而探测层能够在测试环境中精确有效地模拟真实应用系统使用场景。通常设备、服务和负载都可以在测试环境中重建,而这些要素之间的网络连接也必须能够关联到真实世界网络中。
网络仿真就是用来模拟创建这些真实世界网络连接的技术和过程。因为在没有真实世界的条件下,无法得知网络上的最终用户体验以及与外部服务进行通信造成的影响,导致产生不可靠的测试结果。
随着移动设备全球化大规模制造和应用以及云计算的兴起,网络的作用比以往更受“最后一公里”条件的性能影响,主要由于移动本身就具有动态特性。因此在任何移动或云部署情况下尤其需要结合网络仿真。
应用性能工程方法论指出,当测试环境由仿真成真实世界的网络环境后,需要性能测试贯穿到整个应用生命周期和测试过程中,包括单用户、负载、可扩展性、容量和功能测试。通过性能测试为确保遵守业绩目标或服务级别目标提供了明确的质量保证测试。需要注意的是,测试并不是一次性活动,因为需求和生产网络的性能会随时间变化,尤其在移动网络中,测试条件可以根据需求和网络特征进行修改和重现。
通过探测和网络仿真建立出的测试条件,可以使测试分析出的数据更准确地反映和预测出应用系统在真实世界中的表现。在应用性能工程框架中,性能分析可以使组织预测和验证性能水平、确定是否符合服务级别目标SLO或服务级别协议SLA、找出性能瓶颈的根本原因并进行诊断、修复和优化。
功能和非功能性的绩效目标测试完成后,就可以对应用系统的处理能力进行测量和关键指标分析。这些信息需要按照地理位置分类,使测试人员和性能工程师可以根据每种用户群和网络环境条件,找出表现不佳的业务交易和性能问题根本原因。此外还需要进一步的细分测试结果,例如在分析移动应用测试场景中的每个设备类型的测试结果可能需要了解最终用户体验的设备或移动操作系统差异。
隔离和修复性能问题需要在应用性能工程增加验证步骤。修复的结果必须在精确相同的条件下重新测试和验证。而网络仿真技术能够使测试环境仿真出相同的网络特性,所以测试结果才能可靠地显示出性能差异或是否出现新的问题。
除了性能修复,也可以在性能问题并不明显时进行性能优化来提高应用性能。通过研究开发和部署最佳实践,包括使用第三方的产品和服务,可以实现性能进一步的提高。例如,网络加速器和应用交付控制器可提供潜在的性能优势。通过评估这些类型的解决方案,并准确地在相同条件下测试这些组件对应用性能的影响,确定可以对哪些产品提供最大的性能收益,产生的代价是什么。通过分析性能增益来保证投入达到最佳分配。