360SDN.COM

服务端性能测试实践

来源:金阳光测试  2017-09-12 10:32:56    评论:0点击:

本文主要涉及服务端的性能测试,前端客户端性能请关注金阳光另一小编的文章。以下是性能测试基本流程

1.    测试计划a

 性能测试计划包括需要测试的业务范围的确定,指明所有需要被测试的软件测试点,比如用户查询、下订单。通常选用最常使用的功能或关键复杂业务功能,或新版本增加的新需求。

 性能测试计划包括测试环境的确定,是否与生产环境一致,如果不一致直接影响测试模型和指标。比如线上生产是集群环境而测试单节点,或服务器硬件配置有差别都需要在性能测试计划中体现。此外测试计划画出服务器网络拓扑图标记压力机和挡板的位置(如果用到挡板的话)。

 性能测试计划包括测试的方法,测试的场景、测试选用合适的工具。

 性能测试通过指标,下面给出通用的指标:

并发用户数(系统级/应用级/事务级)

事务吞吐率需求

响应时间需求(从用户习惯推算或估算)

系统资源占用需求

高可用性需求(如故障转移/OS集群/数据库集群/中间件集群)

可扩展性需求(如能否支撑未来几年的吞吐)

 最后性能测试计划也包括类似功能测试计划的人员安排职责以及存在的风险等。

2.    测试场景

测试场景类型有性能测试、负载测试、压力测试、稳定性测试。



图1压力测试模型

(a点期望值、b点系统资源处于临界点、c点拐点、d点系统崩溃;Ax到Bx性能、b点负载、Bx到Dx压力)

      性能测试,是指以性能预期目标为前提,对系统不断施加压力,验证系统在资源可接受范围内,是否能达到性能预期。运用场景:此类型的测试目前最常见。每个项目的性能点,都需要做性能测试。

      负载测试,狭义的负载测试,是指对系统不断地增加压力或增加一定压力下的持续时间,直到系统的某项或多项性能指标达到安全临界值,例如某种资源已经达到饱和状态等。运用场景:此类型的测试目前运用得比较少。一般情况下,是以服务器资源安全临界值为界限的测试。如果要模拟某个应用在指定服务器上最大且安全的负载量,则属于负载测试。

      压力测试,是指超过安全负载的情况下,对系统不断施加压力,是通过确定一个系统的瓶颈或不能接收用户请求的性能点,来获得系统能提供的最大服务级别的测试。运用场景:此类型的测试目前运用得比较少。但对于大型的共享中心或者核心的应用也会用到。

      稳定性测试,是指被测试系统在特定硬件、软件、网络环境条件下,给系统加载一定业务压力,使系统运行一段较长时间,以此检测系统是否稳定,一般稳定性测试时间为n*12小时。运用场景:此类型的测试目前也最常见,针对需要长时间稳定运行的性能点,需要执行稳定性测试。往往在一个项目的性能测试过程中,会划分出优先级较高的性能点,做稳定性测试。

3.    脚本开发与调试

      目前常用的性能测试工具有Loadrunner和jmeter,功能都非常强大。脚本开发调试流程类似

a)   选取协议,根据client-Server交互的协议选择,优先采用上层协议。如H5页面上层用http协议的下层协议是socket那么选用http协议;游戏客户端上层就是socket那么选用socket。

b)   增强脚本,根据实际业务要求增强,如参数化用户数据、关联数据、增加检查点(检查断言)、添加合理的事物。保持脚本简洁、可重用。

c)   调试运行脚本,打开lr扩展日志\jmeter的察看检查树,运行时验证脚本的正确性。

小编用lr比较多,推荐于涌老师的《软件性能测试与loadrunner实战》,7D group会在2017年上半年出一本jmeter性能测试与分析的书敬请期待。

4.    测试执行监控

1、执行前准确环境环境,如关闭loadrunner的正常日志打印(jmeter的监听器),数据库的初始化,脚本参数化数据,服务器debug日志是否关闭,jvm的启动设置等

2、执行并监控,通常需要监控的指标包括:

   服务器吞吐量(比如在线用户数、每秒请求数、每秒事务数)

   事务响应时间(比如小于3秒)

    事务成功率(比如大于99.9%)

   服务器资源使用率(包括CPU、Memory、Load、I/O、网络)

    数据库:Mysql \Oracle(索引、单条SQL性能)

5.    测试监控工具

下面统计了几种常用分析工具

1、LoadRunner analysis

analysis用于将运行过程中所采集到的数据生成报表,主要用于采集TPS、响应时间、服务器资源使用情况等变化趋势。常用的有概要报告、平均事务响应时间图,每秒事务数图



 

图2 每秒事务数图

2、nmon_analyser

liunx下nmon工具可以采集服务器的资源信息。列出CPU、MEM、网络、I/O等资源指标的使用情况。

3、性能监视器

windows下自带采集系统资源工具。可以监控各种资源的计数器,同样非常强大

 



图3 windows性能监视器

4、jvisualvm

jdk自带监控工具,监控java内存、java CPU使用率、线程执行情况等。

 



图4 jvisualvm

5、JProfiler

全面监控每个节点的CPU使用率、内存使用率、响应时间累计值、线程执行情况等

6.测试结果分析

  采用自顶向下、外到内,逐步排除的方式,首先排除其它程序过度占用系统资源的问题,然后排除本身占用系统资源过度的问题,最后观察目标服务内部的情况,识别出哪些现象是正常的,哪些现象是异常的,排除掉各种常见故障类型。

作者:小丹

阅读原文

为您推荐

友情链接 |九搜汽车网 |手机ok生活信息网|ok生活信息网|ok微生活
 Powered by www.360SDN.COM   京ICP备11022651号-4 © 2012-2016 版权