• 0
  • 0
分享

  随着各企业的业务发展、用户量以及数据量的不断增加,系统承载的压力也会随之增加,服务系统的性能好坏又严重影响企业的利益。因此,性能测试重要性与需求越来越强烈。

  常见的性能测试目的

  性能测试是确定系统在特定工作负载下的稳定性和响应能力。在进行性能测试之前,首先是要明确性能测试的目的,目的不同,对应的解决方案会有很大差异,最常见的性能测试目的(或契机)有三种:

1-1.jpg

  · 评测当前系统性能

  通过性能测试了解系统当前的性能是否达到预期。例如:新系统上线前、技术升级后,都会进行性能测试,确保系统在线上稳定可靠地运行。

  · 寻找瓶颈,优化性能

  系统已知有性能问题,进行测试寻找瓶颈,以便优化其性能。例如:用户提出业务操作响应时间长,需要定位问题,调整性能;系统运行一段时间后,速度变慢,寻找瓶颈,进而优化。

  · 预测系统未来的性能、可扩展性

  通过性能测试预测系统在未来达到一定负载量的情况下,系统的性能表现。为的是提前预防并降低风险。扩展能力非常好的系统,性能是随资源扩展呈线性或接近线性提升。

  性能测试的不同类型

1-2.jpg

  · 基准测试

  基准测试:系统较低压力时,查看系统的运行状况并记录相关数作为基础参考。

  · 负载测试

  负载测试是通过逐渐增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统能承受的最大负载量的测试。目标:确定系统的性能容量(如系统在保证一定响应时间情况下能够允许多少并发用户的访问),系统各项指标,如吞吐量、响应时间、CPU负载、内存使用等如何决定系统的性能。

  · 压力测试

  压力测试通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。目标:压力测试是为了发现在什么条件下您的应用程序的性能会变得不可接受。

  · 并发性能测试

  负载测试和压力测试通常被合称为并发性能测试。即大并发场景下的系统性能,多用户同时访问时,检测系统是否能够稳定运行。

  平均并发用户数C=nL/T n:平均每天访问用户数(login session的数量); L:一天内用户从登录到退出的平均时间(login session的平均长度); T:考察的时间段长度(一天内多长时间有用户使用系统); 并发用户数峰值:C'≈C+3*根号C

  · 大数据量测试

  大数据量测试包括独立的数据量测试和综合数据量测试。独立的数据量测试指针对某些系统存储、传输、统计、查询等业务进行的大数据量测试。综合数据量测试指系统在具备一定数据量时,在负载压力测试下,考察业务是否能够正常运行的测试。目标:测试数据量较大时系统的性能状况。

  · 容量测试

  容量测试的目的是通过测试预先分析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数),系统在其极限状态下没有出现任何软件故障且能正常运行。

  · 配置测试

  通过对被测系统软硬环境的调整,了解各种不同环境对系统性能的影响程度,从而找到系统各项资源的最优分配原则。

  · 稳定性测试

  稳定性是通过给系统加载一定的压力,让系统持续运行一段时间(通常为7x24小时),检测系统是否能够稳定运行。稳定性测试也称为疲劳强度测试,属于可靠性测试的范畴。目标:测试系统长时间无故障稳定运行的能力。

  · 失效恢复测试

  失效恢复测试是针对有冗余备份或负载均衡的系统来说,检验如果系统局部发生故障,系统灾备措施是否可以正常启动,用户是否可以继续使用。(如:集群、热备等) 目标:通过实施失效恢复测试,评估系统的健壮性和可恢复性。

  在实际项目当中,可根据不同的性能测试目的,选相对应的性能测试方式。

  性能测试的监控指标

1-3.jpg

  在进行各类性能测试时,需要同步检测系统各项性能指标,从而分析系统的实际的响应能力与稳定性等。常用的性能监测指标有四类:业务性能指标、资源性能指标、中间件监测指标、数据库监测指标。

  业务性能指标

  · 每秒交易数(TPS):每秒钟系统能够处理的交易或事务的数量。

  · 响应时间:从请求端发起请求开始,到请求端接收到服务器端的返回结束,这个过程所耗费的时间。

  · 并发用户数:指系统可以同时承载的正常使用系统功能的用户的数量,即在给定的时间段内正在使用系统的用户数。

  · 在线用户数:没有提交请求,会话状态在线的用户数。

  · 吞吐量:指系统在单位时间内处理请求的数量。即在给定时间段内系统完成的交易数量。

  响应时间行业标准

  ·互联网企业:500毫秒以下,例如淘宝业务10毫秒左右。

  · 金融企业:1秒以下为佳,部分复杂业务3秒以下。

  · 保险企业:3秒以下为佳。

  · 制造业:5秒以下为佳。

  · 时间窗口:不同数据量结果是不一样的,大数据量的情况下,2小时内完成。

  TPS行业标准

  · 互联网企业:500毫秒以下,如某宝业务10毫秒左右。

  · 金融行业:1000TPS~50000TPS,不包括互联网化的活动。

  · 保险行业:100TPS~100000TPS,不包括互联网化的活动。

  · 制造行业:10TPS~5000TPS。

  · 互联网电子商务:10000TPS~1000000TPS。

  · 互联网中型网站:1000TPS~50000TPS。

  · 互联网小型网站: 500TPS~10000TPS。

  资源性能

  · CPU指标:主要指的CPU使用率、利用率,包括用户态(user)、系统态(sys)、等待态(wait)、空闲态(idle)。一般情况下,CPU使用率、利用率要低于警戒值范围75%。

  · 内存/SWAP:内存利用率100%并不代表内存有瓶颈,衡量系统内有瓶颈主要靠SWAP(与虚拟内存交换)交换空间利用率,一般情况下,SWAP交换空间利用率要低于70%,太多的交换将会引起系统性能低下。

  · 磁盘吞吐量:磁盘吞吐量是指在无磁盘故障的情况下单位时间内通过磁盘的数据量。磁盘繁忙率,磁盘队列数,平均服务时间,平均等待时间,空间利用率。其中磁盘繁忙率是直接反映磁盘是否有瓶颈的重要依据,一般情况下,磁盘繁忙率要低于70%。

  · 网络吞吐量:网络吞吐量是指在无网络故障的情况下单位时间内通过的网络的数据数量。一般情况下不能超过设备或链路最大传输能力的70%。

1-4.jpg

  资源性能(CPU、内存、磁盘)行业标准:

  CPU 利用率要低于业界警戒值范围之内,即小于或者等于75%;

  CPU sys%小于或者等于30%;

  CPU wait%小于或者等于5%;

  SWAP交换空间利用率低于70%;

  磁盘繁忙率低于70%;

  网络吞吐不能超过最大传输能力70%。

  中间件指标

  中间件监测指标主要包括JVM、线程池、JDBC连接池,常用的中间件如:Tomcat、Weblogic等。

1-5.jpg

  中间件监控内容及行业标准:

  线程数最小设置50和最大设置200比较合适。

  JDBC最小设置50和最大设置200比较合适。

  JVM最小堆大小和最大堆大小分别设置1024M比较合适。

  数据库性能指标

  SQL:执行SQL耗时。

  吞吐量:每秒事务次数(TPS),每秒查询次数(QPS)。

  锁:锁等待次数和锁等待时间。

  命中率:索引缓冲区命中率、线程缓存命中率、表缓存命中率、查询缓存命中率等。

1-6.jpg

  数据库监控内容及行业标准:

  SQL耗时越小越好,一般情况下微秒级别。

  命中率越高越好,一般情况下不能低于95%。

  锁等待次数越低越好,等待时间越短越好。

  操作系统内核参数主要包括信号量、进程、文件句柄。

  性能测试流程

  首先要制定测试计划,明确目的、策略等。以测试计划为依据,逐步开展性能测试工作。

1-7.jpg

  明确性能测试目标

  确定本次性能测试的目标,包括性能测试对象、需求范围,以及性能指标达标要求,即测试退出条件。

  制定性能测试计划

  确定了测试对象和测试需求之后,需要制定一份性能测试计划,指导性能测试工作的进行。包括:简介、测试环境、测试场景、测试数据、测试策略、测试时间与人员安排。

  · 测试环境

  描述性能测试环境的物理架构。

  · 测试场景

  针对各业务功能模块,设计不同测试类型(稳定性测试、负载测试、压力测试)等的单场景、组合场景测试。

  · 测试数据

  描述各性能测试场景下的数据量要求,加压多大数据量需要提前与业务侧对齐目标,系统现存数据体量以及每年增长幅度也可以通过与业务人员(产品经理)确定,当然也可以一些经验方法或公式来估算。比如:有并发用户数与峰值公式,以及二八原理估算方法。

  【并发用户数公式】:C = nL/T。C:平均的并发用户数;n:平均每天访问用户数(login session的数量);L:一天内用户从登录到退出的平均时间(login session的平均长度);T:考察的时间段长度(一天内多长时间有用户使用系统);

  【并发用户数峰值公式】:C'≈C+3*根号C。其中:C:公式1中的平均并发用户数;

  【二八原理估算测试强度】:每个工作日中80%的业务在20%的时间内完成。例如:每年业务集中在8个月,每个月20个工作日,每个工作日8小时,即每天80%的业务的在1.6小时完成。去年全年处理业务约100万笔,其中15%的业务处理中每笔业务需对应用服务器提交7次请求;其中70%的业务处理中每笔业务需对服务器提交5次请求;其余15%的业务处理中每笔业务需对应用服务器提交3次请求。(根据以往统计结果,每年的业务增量为15%,考虑到今后3年业务发展的需要,测试需按现有业务量的两倍进行。)

1-8.jpg

  · 性能测试策略

  描述性能测试方法和流程与工具等。需要进行哪几种类型的测试。

1-9.jpg

  · 测试时间与人员安排

  描述参与性能测试的人员,以及性能测试时间计划。

  执行性能测试

  依据性能测试计划进行实施测试,准备测试环境、构造测试数据 、执行测试用例 、记录测试结果。在此过程中,如发现性能问题,提交Bug,修正Bug。

  性能测试报告

  完成性能测试之后,编写性能测试报告,整理总结本次性能测试的背景、目的、测试范围、测试指标需求、测试环境与工具、测试内容、测试结果与分析等。

  其中测试结果与分析主要是罗列测试指标结果数据及图表,并且对测试的结果及发现的性能问题进行总结、分析。性能测试报告样例参见下图:

1-10.jpg

  性能测试工具

  为了更高效的进行性能测试,选用适合的测试工具非常关键,下面列举了一些常用的性能测试工具供参考。

1-11.jpg


作者:Thoughtworks中国R    

来源:http://www.51testing.com/html/20/n-7795320.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 当前,软件产品整体的开发测试节奏正在不断的加快。如何快速响应市场需求,在保障产品质量的同时提高软件研发效率?是摆在开发、测试人员面前的一大难题。对软件测试人员来说,提高自动化测试的能力和效率,是应对这一难题的途径之一。通过调研学习,我们对主流自动化测试技术进行简要对比。按照人工介入程度区分,自动化测试技术主要分为两大类别:流量复制技术和场景测试技术。1、流量复制技术流量复制技术的原理是:复制在线Server的请求数据包(比如HTTP流量、TCP流量、链路层流量等),修改流量包头部信息,发送给测试服务器,达到欺骗测试服务器程序的目的,从而为欺骗测试服务器上面的上层应用打下基础。技术发展现状:目前...
            0 1 1754
            分享
          • 1.1. Web技术演化 1.1.1. 静态页面在互联网最初开始的时候,Web网站的主要内容是静态的,由文字和图片组成,制作和表现形式也是以表格为主。当时的用户行为也非常简单,仅仅是浏览网页。1.1.2. 多媒体阶段随着技术的不断发展,音频、视频、Flash等多媒体技术诞生了。多媒体的加入使得网页变得更加生动形象,网页上的交互也给用户带来了更好的体验。1.1.3. CGI阶段渐渐的,多媒体已经不能满足人们的请求,于是CGI(Common Gateway Interface)应运而生。CGI定义了Web服务器与外部应用程序之间的通信接口标准,因此Web服务器可以通过CGI执行外部程序,...
            13 13 1628
            分享
          •   服务器的接口测试通常从功能开始,如请求参数和响应参数的验证,业务逻辑或业务规则的验证,数据库操作的验证。功能正常后,将根据需要进行安全相关的检查、性能测试和一系列扩展测试,如与版本历史的兼容性测试、接口超时验证和设计合理性验证等。用例设计也是从这些方面进行分析和设计的,下面的思维导图是测试关注的一个大致方向:  详情如下:  用于输入  输入主要指界面的参数。在我们通常的测试中,我们会首先考虑正常参数和异常参数,包括异常参数和数据。在用例设计中,等价类划分和边界值分析被广泛使用。  A.正常参与  正常参数通俗易懂,即根据界面设计文件的参数标准,输入正常参数,响应按照界面设计文件约定的条件...
            0 0 875
            分享
          • 什么是bug,英文直译过来叫虫,是指程序运行过程中出现的一些问题。任何人都有自己的问题,程序也是,更何况程序是开发人员写的。日常生活中直接冲到别人面前去嚷嚷:“喂,你这里有问题!”你觉得别人会愿意搭理你吗?而如果你有礼貌一点:“你好,我发现你这块有点不妥,换个方式应该会更好”效果会大不相同。同理,测试人员的日常工作中,最主要的就是报bug,bug提交的好,能够减少沟通成本,也会尽快提高软件质量。笔者特地总结了关于报bug的一些注意事项,分享给大家,遵守这些礼仪,可以让我们汇报bug的效果锦上添花。一、注明前置条件先来看下禅道上面默认的bug模板是什么样子的:步骤:是怎么操作出这个bug的,要尽...
            0 1 2917
            分享
          •   收集了最新的面试题后,老师们整理出了7个高频出现的面试题,一起来看看。  问题1:请自我介绍下  核心要素:个人技能优势+工作背景+经验亮点  参考回答:  第一种:基本信息+离职理由  面试官您好,我叫张三,来自番茄市,在软件测试行业有 3 年的工作经验。做过 Web/APP及小程序项目的测试工作,有独立负责整个项目的测试经验。  由于个人原因从上家公司离职,目前为离职状态,以上是我的个人介绍。  第二种:基本信息+项目介绍  面试官您好,我叫张三,来自番茄市,在软件测试行业有 3 年的共作经验,做过 Web/APP及小程序项目的测试工作,有独立负责整个项目的测试经验。  最近做个的项目...
            0 0 606
            分享
      • 51testing软件测试圈微信