随着社会及信息技术的飞速发展,人们对计算机及网络的依赖性越来越大,与此同时,数据也更集中于后台系统服务器,众多系统同时为成千上万的网络用户提供服务,用户访问量不断增加,其服务系统承载的负荷也会随之增加,系统性能的好坏将在较大程度上影响我行的利益,因此,服务系统的性能测试与优化越来越受重视。

 

性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试。目前,我行进行性能测试使用的工具主要有Jmeter、Xmeter、LoadRunner等,测试人员通常通过监控系统的吞吐量、响应时间、事务成功率、应用服务器和数据服务器的CPU和内存等指标来衡量系统的性能是否达标。

 

为了满足日常工作中对性能测试的需求,广研测试部组织了专门的测试人员负责行内各大项目的性能测试工作。经过半年时间的努力,测试部在性能测试领域不仅积累了丰富的性能测试和调优经验,也完善了整个性能测试开展的流程。从性能测试评估阶段的CheckList的填写、性能测试用例评审会的开展、测试环境的申请,到性能测试执行阶段的测试数据监控工具的使用、压测脚本的编写和执行,再到性能测试总结阶段的测试结果的分析、测试报告的编写、压测资产的积累,完整的性能测试流程如下图所示:

 

 

图1 性能测试流程图

 

看到这里,大家是否对性能测试的开展十分好奇呢?为了更加直观地展示性能测试的工作,下面分别介绍几种常用的性能测试工

 

1
Jmeter
 
JMeter是Apache基金会开源的基于Java实现的压力测试工具,提供如下功能:
 
1.对不同类型的应用/服务等进行性能测试;
2.支持图形化界面和命令行模式;
3.对性能测试结果提供图形分析功能;
4.对于高负载施压的场景,支持部署分布式环境
 
JMeter作为一款开源软件,扩展性强,具有强大的开源社区支持,社区内开发者活跃程度高。
JMeter涉及到的主要组件如下:测试计划、取样器、前置处理器、配置元件、后置处理器、断言、监听器、逻辑控制器。
JMeter运行时,主要有以下步骤:
1.通过配置组件,进行数据、环境准备;
2.利用取样器模拟用户请求;
3.控制运行,使用线程组来设置运行场景,利用逻辑控制器来控制业务(实际上即是控制取样器)
4.收集结果,利用断言来验证测试结果,利用监听器来收集显示测试结果。
 

 

2
Sysbench
 
Sysbench是一个基于LuaJIT的可自定义脚本的多线程性能测试工具,主要包括CPU、磁盘IO、内存、数据库的性能基准测试。基准测试可以理解为针对系统的一种性能测试,基准测试不关心业务逻辑,使用Sysbench的基准测试脚本即可完成测试,数据可以由工具生成,更加简单易于测试;除了基准测试外,Sysbench还支持自定义脚本进行性能测试。
 
 
3
HammerDB
 
Hammerdb作为一个开源的数据库压力和基准测试工具,有图形用户界面和命令行两种形式。支持标准的TPC-C和TPC-H两种测试模型。TPC-C测试模拟了一个批发商的仓储管理环境,由TPC(Transaction Processing Performance Council)事务处理性能委员会提出,TPC是一个非营利性组织,成员包括大多数数据库产品厂商及服务器硬件供应商。该组织定义了一系列数据库基准,规范了数据库在事务处理性能方面的评测标准和测评结果,是目前业界公认的评测数据库性能的主流国际标准之一。
 
 
4
SwingBench
 
SwingBench是基于JAVA开发的Oracle数据库性能基准测试工具,是免费软件。SwingBench生成负载来进行数据库测试,最后生成相关的响应时间、事务数等测试结果图表,有三种前端:SwingBench、CharBench、MiniBench,其中CharBench是命令行模式。
 
SwingBench包含6个基准测试程序:OrderEntry、SalesHistory、CallingCircle、StressTest等,可以模拟OLTP的应用场景:
1.OrderEntry:进行订单查询、处理、下单等操作,主要用于少量表的测试;

2.SalesHistory:主要用于测试基于大表(从1GB到1TB)的复杂查询的性能;

3.CallingCircle(不推荐使用)模拟在线电信应用的SQL,所有的基准测试程序都是CPU密集型;4.StressTest:用于对已知表进行insert、update和select操作测试。

此外,SwingBench还可以根据测试需求修改或新增相关的SQL来进行测试。

 

5
LoadRunner
 

LoadRunner可划分为如下四个部分:

1.虚拟用户生成器(VuGen)捕捉用户业务流程,用于录制和生成性能测试脚本;

2.控制器:用于提供场景设计与场景监控,能够实时监控脚本的运行情况;

3.负载生成器:模拟用户对服务器发起请求;

4.分析器:汇集来自各种负载生成器的日志并格式化报告,以便可视化运行结数据和监控数据。