www.hj8828.com 1

www.hj8828.com品质测量检验推广手册

并发用户数需求是整个用户性能需求的重要方面,通常是针对具体的服务器和应用系统,如域控制器、Web服务器、FTP服务器、E-mail服务器、数据库系统、MIS管理系统、ERP
系统等,并发用户数支持的多少决定了相应系统的可用性和可扩展性。所支持的并发用户数多少是通过一些专门的工具软件进行测试的,测试过程就是模拟大量用户同时向某系统发出访问请求,并进行一些具体操作,以此来为相应系统加压。但是不同的应用系统所用的测试工具不一样。

点击链接加入QQ群
522720170(免费公开课、视频应有尽有):https://jq.qq.com/?\_wv=1027&k=5C08ATe

目前,典型的企业信息服务系统的架构一般是由客户端、网络、防火墙、负载均衡服务器(硬件如F5,
软件Apache等)、Web服务器、应用服务器(中间件WebLogic,
Tomcat等)、数据库服务器等各个环节组成。

并发性能测试的过程是一个负载测试和压力测试的过程,即逐渐增加负载,直到系统的瓶颈或者不能接收的性能点,通过综合分析交易执行指标和资源监控指标来确定系统并发性能的过程。负载测试Load
Testing是确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统组成部分的相应输出项,例如通过量、响应时间、CPU负载、内存使用等来决定系统的性能。负载测试是一个分析软件应用程序和支撑架构、模拟真实环境的使用,从而来确定能够接收的性能过程。压力测试Stress
Testing)是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。

性能测试概述

性能测试主要内容

性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。

性能测试在软件的质量保证中起着重要的作用,它包括的测试内容丰富多样。中国软件评测中心将性能测试概括为三个方面:应用在客户端性能的测试、应用在网络上性能的测试和应用在服务器端性能的测试。通常情况下,三方面有效、合理的结合,可以达到对系统性能全面的分析和瓶颈的预测。

性能测试的目的

性能测试目的是验证软件系统是否能够达到用户提出的性能指标,同时发现软件系统中存在的性能瓶颈,优化软件,最后起到优化系统的目的。

  包括以下几个方面

  1.评估系统的能力,测试中得到的负荷和响应时间数据可以被用于验证所计划的模型的能力,并帮助做出决策。

  2.识别体系中的弱点:受控的负荷可以被增加到一个极端的水平,并突破它,从而修复体系的瓶颈或薄弱的地方。

  3.系统调优:重复运行测试,验证调整系统的活动得到了预期的结果,从而改进性能。

  检测软件中的问题:长时间的测试执行可导致程序发生由于内存泄露引起的失败,揭示程序中的隐含的问题或冲突。

  4.验证稳定性(resilience)可靠性(reliability):在一个生产负荷下执行测试一定的时间是评估系统稳定性和可靠性是否满足要求的唯一方法。

性能

测试的方法

1、性能测试(performance
testing):它是一种我们常见的一种方法,它是通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生产性能的要求。简单地说就是要在特定的运行条件下验证体系统的能力状况。

这种方法的主要特点有:

1) 这种方法的主要目的是验证系统是否有系统说明具有的能力

2) 这种方法需要事先了解被测试系统典型场景,并具有确定的性能目标

3) 这种方法要求在已确定的环境下运行

2、负载测试(load
testing):有时被叫做可量性测试,它主要是通过在被测系统上不断增加压力,直到性能达到预定目标或者资源达到饱和状态。它可以找到体系统的处理能力的极限,为系统调优提供数据。

它的主要特点有

1)它的主要目的是找到系统处理能力的极限

2)
需要在给定的测试环境下进行,也需要考虑被测试体系统的业务压力量和典型场景,使得测试结果具有业务上的意义

3) 一般用来了解系统的性能容量,或是配合性能调优来使用。

3、、 压力测试 (stress testing)
:这种方法测试系统在一定饱和状态下,系统能够处理的会话能力,以及体系学统是否会出现错误。

这种性能测试方法具有以下特点

1) 它的主要目的是检查系统处于压力情况下时,应用的表现

2) 一般通过模拟负载等方法,使得系统的资源使用达到较高的水平

3) 一般用于测试系统的稳定性

4、并发测试(concurrency
testing):通过模拟用户的并发访问,测试多用户并发访问同一个应用、同一模块或者数据记录时是否存在死锁或者其它性能的问题

1)主要目的是发现系统中可能隐藏的并发访问时的问题

2)主要关注系统可能存在的并发问题,例如系统中的内存泄漏、死锁等方面的问题

3)这种方法可以在开发的各个阶段使用,需要相关的测试工具的配合和支持

在交付给客户上线使用之前,业务系统的每个环节都要进行性能测试和优化,才能保证上线后的质量。

并发性能测试的目的主要体现在3个方面:以真实的业务为依据,选择有代表性的、关键的业务操作设计测试案例,以评价系统的当前性能;当扩展应用程序的功能或者新的应用程序将要被部署时,负载测试会帮助确定系统是否还能够处理期望的用户负载,以预测系统的未来性能;通过模拟成百上千个用户,重复执行和运行测试,可以确认性能瓶颈并优化和调整应用,目的在于寻找到瓶颈问题。

WEB性能测试目标

目标说明

度量最终用户响应时间完成一个业务流程需要多长时间

度量系统容量在没有显著性能下降的前提下,系统能够处理多大的负载

确定瓶颈哪些因素会延长响应时间

注:据中国IT实验室调查,平均响应时间在2秒以内的网页吸引力是最大的;平均响应时间在5秒以内的为可接受;平均响应时间在10秒以上的为烦躁型(即用户不可接收型)。

性能测试流程

性能测试流程

第一,分析产品结构,明确性能测试的需求,包括并发、极限的性能要求。

第二,分析应用场景和用户数据,细分用户行为和相关的数据流,确定测试点或测试接口,列示系统接口的可能瓶颈,一般是先主干接口再支线接口,并完成初步的测试用例设计。

第三,依据性能测试需求和确定的测试点进行测试用例设计,并明确不同测试方案的重要程度或优先级作为取舍评估的依据,必要时在前期产品设计中提出支持性能测试的可测试性设计方案和对测试工具的需求。

第四,完成性能测试用例设计、分类选择和依据用户行为分析设计测试规程,并准备好测试用例将用到的测试数据。

第五,确定采用的测试工具。

第六,进行初验测试,根据测试结果分析性能瓶颈,通过迭代保证基本的指标等测试的环境。

第七,迭代进行全面的性能测试,完成计划中的性能测试用例的执行。

第八,完成性能测试评估报告。

性能测试结果的分析流程

具体问题具体分析(这是由于不同的应用系统,不同的测试目的,不同的性能关注点)

• 查找瓶颈时按以下顺序,由易到难。

服务器硬件瓶颈-〉网络瓶颈(对局域网,可以不考虑)-〉服务器操作系统瓶颈(参数配置)-〉中间件瓶颈(参数配置,数据库,web服务器等)-〉应用瓶颈(SQL语句、数据库设计、业务逻辑、算法等)

注:以上过程并不是每个分析中都需要的,要根据测试目的和要求来确定分析的深度。对一些要求低的,我们分析到应用系统在将来大的负载压力(并发用户数、数据量)下,系统的瓶颈在哪儿就够了。

分析的信息来源:

•1 根据场景运行过程中的错误提示信息

•2 根据测试结果收集到的监控指标数据

设计性能测试用例的原则

设计性能测试用例注意的原则:

可以满足预期性能指标测试用例要求的,就没有必要设计更多的内容,因为用例越多,执行的本也越高。

一定要服从整体性能测试策略,千万不能仅从技术角度来考虑设计“全面”的测试用例,“全面”应该以是否满足自己的测试要求作为标准。

只有根据实际项目的特点制定合理的性能测试策略、编写适当的性能测试用例,并在测试实施中灵活地变通才可以做好性能测试工作。

性能测试输出文档:

测试计划:主要包含测试范围、测试环境、测试方案简介、风险分析等,测试计划要进行评审后方可生效。

测试报告:主要包含测试过程记录、测试分析结果、系统调整建议等。

测试经验总结:不断总结工作经验是建立学习型团队的基础,实践-总结-再实践

功能测试和性能测试

当一家企业自己组织力量或委托软件公司代为开发一套应用系统的时候,尤其是以后在生产环境中实际使用起来,用户往往会产生疑问,这套系统能不能承受大量的并发用户同时访问?这类问题最常见于采用连机事务处理}LTP)方式数据库应用、Web浏览和视频点播等系统。这种问题的解决要借助于科学的软件测试手段和先进的测试工具。

参考文档

性能测试术语及缩写词

测试时间:一轮测试从开始到结束所使用的时间

并发线程数:测试时同时访问被测系统的线程数。注意,由于测试过程中,每个线程都是以尽可能快的速度发请求,与实际用户的使用有极大差别,所以,此数据不等同于实际使用时的并发用户数。

每次时间间隔:测试线程发出一个请求,并得到被测系统的响应后,间隔多少时间发出下一次请求。

平均响应时间:测试线程向被测系统发请求,所有请求的响应时间的平均值。

处理能力:在某一特定环境下,系统处理请求的速度。

cache影响系数:测试数据未必如实际使用时分散,cache在测试过程中会比实际使用时发挥更大作用,从而使测试出的最高处理能力偏高,考虑到这个因素而引入的系数。

用户习惯操作频率:根据用户使用习惯估算出来的,单个用户在一段时间内,使用此类功能的次数。通常以一天内某段固定的高峰使用时间来统计,如果一天内没有哪段时间是固定的高峰使用时间,则以一天的工作时间来统计。

预期平均响应时间:由用户提出的,希望系统在多长时间内响应。注意,这个值并不是某一次访问的时间,而是一段时间多次访问后的平均值。

最大并发用户数:在给定的预期平均响应时间下,系统最多能支持多少个并发用户。这个数据就是实际可以同时使用系统的用户数。

并发:狭义的并发一般分两种情况。一种是严格意义上的并发,即所有用户在同一时刻做同一件事情或操作,这种操作一般针对同一类型的业务。另一种并发是广义的并发。这种并发与狭义的并发的区别是尽管多个用户对系统发出了请求或进行了操作,但是这些请求或操作可以是相同的,也可以是不同的。对整体系统而言,任然有很多用户同时对系统进行操作,因此,仍然属于并发的范畴。

可以看出,广义的并发是包含狭义的并发的,而且广义的并发更接近用户的实际使用情况,因为对大多数系统而言,只有数量很少的用户进行“严格意义上的并发”。对于性能测试而言,这两种并发一般都需要进行测试,通常的做法是先进行严格意义上的并发测试。严格意义上的并发一般发生在使用比较频繁的模块中,尽管发生的概率不是特别高,但是一旦发生性能问题,后果很可能是致命的。严格意义上的并发测试往往和功能测试关联起来,因为只要并发功能遇到异常通常都是程序的问题,这种测试也是健壮性和稳定性测试的一部分。

并发用户数量:关于并发用户数量,有两种常见的错误观点。一种错误观点是把并发用户数量理解为使用系统的全部用户的数量,理由是这些用户可能同时使用系统;还有一种比较接近正确的观点是把用户在线数量理解为并发用户数量。实际上,在线用户不一定会和其他用户发生并发,例如正在浏览网页信息的用户,对服务器是没有任何影响的。但是,用户在线数量是统计并发用户数量的主要依据之一。

并发主要针对服务器而言,是否并发的关键是看用户的操作是否对服务器产生了影响。因此,并发用户数量的正确理解是,在同一时刻与服务器进行交互的在线用户数量。这些用户的最大特征是和服务器发生了交互,这种交互既可以是单向传送数据的,也可以是双向传送数据的。

并发用户数量的统计方法目前还没有准确的公式,因为不同的系统会有不同的并发特点。例如OA系统统计并发用户的经验公式为:使用系统的用户数量*(5%~20%)。对于这个公式,没有必要拘泥于计算出的结果,因为为了保证系统的扩展空间,测试时的并发用户数量就会稍稍大一些,除非要测试系统能承受的最大并发用户数量。举例说明:如果一个OA系统的期望用户为1000个,只要测试出系统能支持200个并发用户就可以了。

请求响应时间:请求响应时间是指从客户端发出请求到得到响应的整个过程的时间。这个过程从客户端发出一个请求开始计时,到客户端接收到从服务器端返回的响应结果计时结束。在某些工具中,请求响应时间通常会被称为”TTLB”,即”Time
to last
byte”,意思是从发送一个请求开始,到客户端接收到最后一个字节的响应为止所耗费的时间。请求响应时间的单位一般为“秒”或“毫秒”。

事物响应时间:事物可能由一系列请求组成,事物的响应时间主要针对用户而言,属于宏观上的概念,是为了向用户说明业务响应时间而提出来的。例如:跨行取款食物的响应时间就是由一系列的请求组成的。事物响应时间和业务吞吐率都是直接衡量系统性能的参数。

吞吐量:指在一次性能测试过程中网络上传输的数据量的总和。吞吐量/传输时间,就是吞吐率。

吞吐率(Throughput):通常用来指单位时间内网络上传输的数据量,也可以指单位时间内处理的客户端请求数量。是衡量网络性能的重要指标。

但是从用户或业务角度来看,吞吐率也可以用“请求数/秒”或“页面数/秒”、“业务数/小时或天”、“访问人数/天”、“页面访问量/天”来衡量。例如在银行卡审批系统中,可以用“千件/每小时”来衡量系统的业务处理能力。

TPS(Transaction Per
Second):每秒钟系统能够处理的交易或事物的数量。它是衡量系统处理能力的重要指标。TPS是LoadRunner中重要的性能参数指标。

点击率(Hit Per
Second)
:秒钟用户向Web服务器提交的HTTP请求书。这个指标是Web应用特有的一个指标:Web应用是“请求-响应”模式,用户发出一次申请,服务器就要处理一次,所以“点击”是Web应用能够处理交易的最小单位。如果把每次点击定义为一次交易,点击率和TPS就是一个概念。不难看出,点击率越大,对服务器的压力也越大。点击率只是一个性能参考指标,重要的是分析点击时产生的影响。

需要注意的是,这里的点击不是指鼠标的一次“单击”操作,而是在一次“单击”操作中,客户端可能向服务器发出多个HTTP请求。

资源利用率:资源利用率指的是对不同系统资源的使用程度,例如服务器的CPU利用率、磁盘利用率等。资源利用率是分析系统性能指标而改善性能的主要依据,因此,它是Web性能测试工作的重点。

资源利用率主要针对Web服务器、操作系统、数据库服务器、网络等,是测试和分析瓶颈的主要参数。在性能测试中,要根据需求采集具体的资源利用率参数来进行分析。

成功率=成功次数÷(成功次数+失败次数)

处理能力=成功次数÷测试时间

最短平均响应时间=MIN(平均响应时间)

最高处理能力=MAX(处理能力)×(1-cache影响系数)

最大并发用户数=(最高处理能力-1÷(预期平均响应时间-最短平均响应时间+(1÷最高处理能力)))÷用户习惯操作频率

注:公式要注意各时间单位的不同和转换

www.hj8828.com 1

功能测试主要根据产品业务需求、产品行业特征、模拟用户操作方式来测试一个产品的特性以确定它们是否满足用户需求。

在测试方案运行中,如果出现了大于3个用户的业务操作失败,或出现了服务器shutdown
死机)的情况,则说明在当前环境下,系统承受不了当前并发用户的负载压力,那么最大并发用户数就是前一个没有出现这种现象的并发用户数。如果测得的最大并发用户数到达了性能要求,且各服务器资源情况良好,业务操作响应时间也达到了用户要求,那么就可以了。否则,再根据各服务器的资源情况和业务操作响应时间进一步分析原因所在。

性能测试通过某种特定的方式对被测试系统按照一定的测试策略进行施压,获取该系统的响应时间、运行效率、资源利用情况等各项性能指标,来评价系统是否满足用户性能需求的过程。

除了专业软件测试方法外,还有一个比较粗略的计算方法,那就是根据服务器的处理器性能进行估算。一个系统的CPU容量是用处理器数量乘以CPU的频率定额得到的。因此,对一台安装了两个2GHz处理器的计算机来说,它的CPU容量=2
X 2000MHz=4000 P4EM o

通俗的说,功能测试用于确保软件系统做了正确的事情,性能测试则用于确保系统快速的完成了任务。

工作载荷下的系统目标CPU容量通常是由IT部门决定的。如果没有这方面的标准可循,那么你应比照着平均的长期载荷对峰值载荷进行分析,据此决定这一目标值,确保CPU在100%容量以下运行。假设一台安装了两个2GHz处理器的计算机在85%的容量下运行,那么应该按照如下方式计算其目标CPU容量:

软件性能的生命周期

目标CPU容量=4000 P4EM的CPU容量X 0.85=3400P4EM

需求阶段的性能分析:软件开发前期的需求分析阶段,需求分析师与客户业务人员沟通时,要明确提出各项性能指标,包括系统业务交易的使用频度、系统并发用户量、业务数据量评估等各项指标,然后对系统的响应时间、用户数和资源使用进行分析。

为了根据目标CPU容量和总用户成本计算Web服务器的目标用户容量,在前表中找到每位并发用户Web
CPU的总成本(0.55000)。然后将这一成本分成目标CPU容量,计算公式如下:

  响应时间的需求调研分析是一个非常重要的度量值,因为它是直接体现用户体验的一个指数,同时也是最不容易测量的度量值,因为它比其他的度量值更容易发生变化。
  用户数分析主要分析评估系统上线后的总用户数、平均每天在线用户数等情况。
  资源使用分析用于衡量系统资源使用率的情况,反映系统的最底层性能情况,对于容量规划比较有指导作用,同时它也是比较容易理解的性能度量值。

目标用户容量=目标CPU容量/每个用户Web CPU总成本基础Web POEM )=
340010.5500=6182,这就是该系统在85%CPU容量工作情况下可支持的最大并发用户数。

设计开发阶段的性能分析与验证:大部分项目的性能问题是设计出来的,而不是开发和测试出来的。要获得性能良好的软件系统,需要根据需求分析及设计规划,进行系统的规模分析和完整的性能分析,预估性能瓶颈点,提出解决方案,最终通过架构师、程序设计人员等角色进行评审验证并确认,保障性能目标的达成。

www.hj8828.com 2

系统测试阶段的性能验证与优化:单元性能测试、集成性能测试、系统性能测试、多套系统互联接口性能测试等。其中,对一套系统进行的系统性能测试,也就是在特定的环境下、一定量的数据情况下,进行的系统级的性能测试,是最常用的,也是最为测试人员所熟悉的一种性能测试。

 

  系统性能测试阶段的一般测试过程:在系统功能被确认后,模拟真实生产环境进行软件系统的部署,再根据前期的性能测试需求分析结果及测试策略定义的方法,模拟一定量的虚拟并发用户数,进行压力测试,同时监控分析系统是否满足预期的性能指标,识别性能可能出现的瓶颈点,并进行性能优化处理,调优后再进行复测,确保软件系统最终达到性能要求。

www.hj8828.com,…

什么是软件性能?

软件性能的好坏主要体现在:系统在一定的负载压力工作的情况下,能否及时为用户提供相应的服务能力,具体包括响应时间、吞吐量、资源利用率等。

影响软件性能的因素

硬件设施、网络、操作系统、并发用户数、系统积累的数据量、中间件等。如果系统中哪一个环节出现了性能瓶颈,都会严重影响系统的正常运行。

硬件是决定一套系统性能的关键因素之一,主要包括服务器的CPU,
内存,磁盘I/O使用情况,如果系统并发用户数增大而内存不足,会导致CPU和磁盘使用压力。

软件性能测试目标

软件开发的目标就是开发出的产品满足用户需求,而软件性能测试的目标是在一定时间范围内尽可能地寻找软件的缺陷,并提交给开发人员进行修复,最终及时地给客户提供高质量的软件产品,这需要通过制定性能测试策略、性能测试计划、执行性能测试、对性能问题进行定位分析和优化。