1.3.3CS/CSS系统中性能测量与性能探测
性能测量
1. 在性能测试开始前必须认真规划性能测量:
软件性能测量技术范围很广。可以包括日志、事件计数、事件持续时间、采样等性能测量技术。
*确定性能测量的策略:我们要测试什么?
*规划性能测试中使用什么样的测量工具。
2. 测量的代表性
*测量结果要能够反映出影响性能的重要因素:工作量负载、软件和计算机系统环境。
3. 测量的可重复性
*能够控制工作量负载、软件和计算机系统环境,从而能够重复测试过程。
性能探测技术
在进行性能测量时,可以使用标准的商用工具进行,但是往往标准工具提供的数据不能满足要求。性能探测就是在程序的关键点插入代码探针来测量软件的执行特性。从而达到以下的目标:
– 性能数据获取更方便
– 数据的详细程度提高
– 数据收集方式更加可控
依据SPE(软件性能工程)的建议,软件探测需求应该作为软件体系结构的组成部分。在设计软件时设计软件探针。
所以在规划项目中的性能测试过程中,要建议进行软件设计时考虑岛性能探测需求,为性能测试中更好的进行性能测量做好准备。
1.3.4CS/CSS系统下性能测试的类型
广义的性能测试包括许多类型。如:
*Scalability/load testing (规模化/压力测试) :通过在被测系统上不断增加压力,直到性能指标例如响应时间超过预定指标或者某种资源已经达到饱和状态。这种测试可以找到系统的处理极限,为系统调优提供数据。
*Performance testing (性能测试):通过模拟生产运行的业务压力量和使用场景组合测试系统的性能是否满足生产性能要求。如以实际投产结构测试,求出最大的吞吐量与最佳回应时间以保证上线的平稳,安全等。
*Configuration testing(配置测试):通过测试找到系统各项资源的最优分配原则。
*Concurrency testing(并发测试):测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题。
*Stress testing (极限测试):测试系统在一定饱和状态下,例如CPU、内存在饱和使用饱和情况下,系统能够处理的会话能力,以及系统是否会出现错误。
*Volume testing (容量测试):测试系统能够处理的最大会话能力。
*Reliability testing (可靠性测试):通过给系统加载一定的业务压力(例如资源在70-90%的使用率)的情况下,运行一段时间。
*Failover testing (失败测试):对于有冗余备份和负载均衡的系统,通过这样的测试来检验如果系统局部发生故障用户是否能够继续使用系统,用户将受到多大的影响。
在CS/CSS系统下实际的性能测试中,需要根据具体情况进行性能测试类型的选取和组合。
1.3.5CS/CSS系统下性能测试的组成部分
通常在一个CS/CSS系统中,分为用户界面层、服务逻辑层和数据服务层等几个层次,分别对应着客户、应用服务器、数据库服务器。如在金融行业应用中,客户端承载着柜面业务,部署在网点(包括字符柜员或图形柜员),还包括部署在自助设备上面的自助业务等;应用服务器上面主要是起到路由功能、业务处理功能、和渠道整合的作用;而核心业务处理系统包括交易平台、业务逻辑、核心处理、数据处理等。
由于业务逻辑分布在不同的环节,导致系统的内部接口多,性能瓶颈多,而系统的整体性能往往取决于最差的部分。所以对于整个系统的整体性能的测试可能需要针对各个环节分别做好各自的内部性能测试。
如下面的一个CS/CSS系统金融行业应用的例子: