性能测试术语监控指标性能测试术语性能测试(PerformanceTesting)负载测试(LoadTesting)压力测试(StressTesting)配置测试(ConfigurationTesting)并发测试(ConcurrencyTesting)可靠性测试(ReliabilityTesting)失效恢复测试(FailoverTesting)性能测试性能测试主要包括:•性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。性能测试性能测试主要包括:–概念系统的性能是一个很大的概念,覆盖面非常广泛,对一个软件系统而言,包括:执行效率、资源占用、系统稳定性、安全性、兼容性、可靠性、可扩展性–负载测试通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足系统的性能指标情况下,系统所能够承受的最大负载量的测试。–压力测试通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下系统性能处于失效状态,并来获得系统能提供的最大服务级别的测试。性能测试的概念及其主要指标•主要指标–响应时间–点击数–吞吐量(任一秒上从服务器获得的数据量)–并发用户–资源利用率(内存、CPU的利用率等)–每秒连接数(每秒打开的新的TCP/IP连接数)并发用户数•并发用户数是指在某一给定时间内,某个特定点上进行会话操作的用户数,即同时进行请求的客户的数量7响应时间•响应时间指的是客户端发出请求到得到响应的整个过程所经历的时间。8响应时间•请求响应时间:指的是客户端发出请求到得到响应的整个过程的时间。在某些工具中,请求响应时间通常会被成为“TLLB”,即“Timetolastbyte”,意思是从发起一个请求开始,到客户端接收到最后一个字节的响应时间所耗费的时间。请求响应时间过程的单位一般为“秒”或者“毫秒”.•事务响应时间:事务可能由一系列请求组成,事务的响应时间主要是针对用户而言,属于宏观上的概念,是为了向用户说明业务响应时间而提出的.例如:跨行取款事务的响应时间就是由一系列的请求组成的.事务响应时间和后面的业务吞吐率都是直接衡量系统性能的参数.响应时间过长•个人感觉响应时间变长的一个主要原因是:1.有些站点在访问时需要走到好多的路由器,在这些路由器中转转发的过程中所耗费的时间,有时候不可估计•2.站点在北京,路由器从上海兜了一个圈最后又回到起点•3.协议的选择很重要tcp和udp不能错,发送报文的协议•4.http协议,因为http超文本传输协议是建立在tcp/ip基础上,而udp只是tcp/ip组里的协议,他们位于同一个组里,udp主要应对的是面向查询---应答的服务例如NFS,而tcp是面向连接的服务(例如Telnet、*、rlogin、XWindows和SMTP)需要高度的可靠性,所以它们使用了TCP。•5.网络的结构•6.代码是否需要优化•7.数据库是否需要优化•8.项目中使用的架构吞吐量•吞吐量是指单位时间内系统处理的客户请求的数量,直接体现软件系统的性能承载能力。一般来说,吞吐量用请求数/秒或页面数/秒来衡量,从业务的角度,吞吐量也可以用访问人数/天或处理的业务数/小时等单位来衡量。从网络的角度来说,也可以用字节数/天等单位来考察网络流量。提问:网站吞吐量越大那么是不是说明系统响应时间越快?资源利用率•资源利用率是指系统资源的使用程度,比如服务器的CPU利用率、内存利用率、磁盘利用率、网络带宽利用率等。•资源利用率是分析系统性能指标进而改善性能的主要依据,因此是WEB性能测试工作的重点.资源利用率主要针对WEB服务器,操作系统,数据库服务器,网络等,是测试和分析瓶颈的主要参考.在WEB性能测试中,更根据需要采集相应的参数进行分析.点击率•点击率:HPS,每秒钟用户向WEB服务器提交的HTTP请求数.这个指标是WEB应用特有的一个指标。•点击率越大,对服务器的压力越大.点击率只是一个性能参考指标,重要的是分析点击时产生的影响•这里的点击并非指鼠标的一次单击操作,因为在一次单击操作中,客户端可能向服务器发出多个HTTP请求.性能测试重要知识•Loadrunner中的术语:•集合点策略•参数化•关联•事物点性能测试的概念及其主要指标不同视角的性能–用户角度响应时间系统稳定性–系统角度网络延迟、数据延迟系统资源的使用情况–开发角度代码实现(算法等)数据库实现(数据模型设计、语句的实现方式等)主要指标-用户角度•响应时间(最关心的指标)–2/5/10原则修改(-3-5-7原则)–过长时间的等待会让客户烦躁不安•系统稳定性(把对软件的信心留住)–HTTP500–数据库崩溃–应用服务器崩溃主要指标-系统角度•网络运行情况•硬件配备情况•软件的配置情况(应用服务器/数据库/系统)开发角度例子•数据库模型设计不合理–将经常访问的数据放入一个表中(上百字段)–表与表间关系复杂–将很多二进制类型数据存放于数据库中•SQL语句性能–笛卡尔积/通配符会降低效率–...wherecolumnin(select*from...where...);...whereexists(select'X'from...where...);用那个语句效率更高?–select*fromemployeewheresalary3000;select*fromemployeewheresalary3000orsalary3000主要的性能测试工具•商业(可根据情况破解,正式版要收费)MercuryLoadrunnerRationalPerformanceTesterSeagueSilkTestRadviewWebLoad•免费(可直接破解)MicrosoftWebApplicationStressToolMicrosoftApplicationCenterTest•开源(开放源代码,可根据业务情况做修改)OpenSTAJmeterGrinder性能测试工具比较•商业软件的优点–功能较多(集合点、检查点、事务等)–界面美观–操作方便–软件后期升级、技术支持等有保障•商业软件的缺点–价格较贵性能测试工具比较•免费软件的优点–免费使用–功能较少–界面较美观–操作较方便•免费软件的缺点–功能较少–分析数据较少–在稍复杂的测试对脚本开发人员要求较高(ACT)–软件后期升级、技术支持不一定有保障主要类别-性能测试•性能测试是一种“正常”的测试,主要是测试正常使用时,系统是否满足要求,同时可能为了保留系统的扩展空间进行一些稍稍超出“正常”范围的测试。主要类别-负载测试•通过在被测系统上不断增加压力,直到性能指标。例如:响应时间超过预定指标或者某种资源已经达到饱和状态。•这种测试考验找到系统的处理极限,为系统调优提供数据。负载测试一般压力要大些。主要类别-压力测试•对系统不断施加压力的测试,是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能够提供的最大服务级别的测试。•例如测试一个web站点的大量的负荷下,合适系统的响应会退化或者失败。主要类别-配置测试•配置测试主要是通过测试找到系统各项资源的最优分配原则。配置测试是系统调优的重要依据,例如我们可以不停的调整oracle的内存来决定cpu和内存的匹配情况。主要类别-并发测试•测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题,几乎所有的性能测试都会涉及一些并发测试。主要类别-容量测试•测试系统能够处理的最大会话能力。确定系统可处理同时在线的最大用户数,通常和数据库有关主要类别-可靠性测试•通过给系统加载一定的业务压力(如:Cpu资源在70-90%的使用率)的情况下,运行一段时间,检查系统是否稳定。主要类别-失败测试•对于有冗余备份和负载均衡的系统,通过这样的测试来检验如果系统局部发生故障用户是否能够继续使用系统,用户受到多大的影响。性能测试常见指标1.事务处理时间2.最大事务处理时间3.事务操作时间:需要用户操作的事务处理需要花费的时间4.IO性能:磁盘读写速度,网络IO和其它硬件IO5.数据库性能:查询,插入,删除,更新需要的时间6.空间利用率(实际使用的空间/占用的空间)7.最大消耗的内存量,内存监视工具实时监控8.高峰内存时间,在高峰内存消耗时期的运行时间9.初始化/退出时间10.cpu利用率(cpu空闲时间/程序运行总时间)性能测试的实施过程实施过程了解被测试项目的性能测试需求分析被测试项目的性能测试需求编写性能测试计划/测试用例相关资源准备o脚本维护(编写程序)o执行脚本(执行程序)o分析结果o性能调优实施过程-分析性能测试需求•分析性能测试需求–响应时间的确定(依据具体的业务)–那些是系统经常用到的业务–并发用户量的确定(可以估计或者通过日志得到)–增加、删除、查询、修改至少都要做一个脚本–可扩展的空间(1年后,用户量增加。。。)实施过程-性能测试需求•性能测试需求–响应时间–持续运行时间–并发用户量实施过程-分析性能测试需求•分析性能测试需求–响应时间的确定(依据具体的业务)–那些是系统经常用到的业务–并发用户量的确定(可以估计或者通过日志得到)–增加、删除、查询、修改至少都要做一个脚本–可扩展的空间(1年后,用户量增加。。。)-性能测试计划实施过程-性能测试计划/用例•性能测试计划/用例–覆盖测试的需求–测试的周期和风险的评估–人力资源、硬件资源、软件资源的配备–测试的手段和工具应在测试计划中有所体现–增加、删除、查询、修改至少都要做一个脚本–可扩展的空间(应依据具体的需求决定取舍测试)实施过程-资源准备•资源准备–人力资源(测试、开发、数据库、系统管理人员)–硬件资源(硬盘、内存、CPU)–软件资源(操作系统、数据库、应用服务器等)注:所有资源的准备应赶早不赶晚,在做大容量测试时应考虑数据的提前准备,尽量让最擅长的人做最擅长的事。网络性能1.并发连接数量2.请求响应时间3.吞吐率(单位时间内网络上传输的数据量)4.处理能力(单位时间内处理的客户端请求的数量,tps)5.网络带宽利用率6.静荷率(传输的有效数据和传输的数据总量的比值)7.误码率(出错的报文字节数/整个传输的报文字节数)8.往返次数(完成一次任务需要的交互次数)9.事务数据流(处理一次事务需要的网络数据流量)多任务性能•1.多cpu效率(同一级别单核上执行时间/(多(核)cpu执行花费的时间*cpu数目))2.同时运行的任务数量3.任务优先级4.任务死亡率(异常退出的数目)可靠性和可用性1.双击备份技术(StandBy机制,心跳技术)2.单击可靠性技术(进程切换技术,线程异常恢复技术)3.可靠度(规定时间内无失效情况发生的概率)4.失效时间5.最小失效时间间隔6.平均恢复时间和最大恢复时间7.宕机次数易用性1.鼠标点击次数2.鼠标移动距离3.击键次数4.操作失误率5.操作等待时间6.界面美观度7.连接率性能测试最重要的一点•利用2-8原则来分析系统•什么是2-8原则?•2-8原则在我们生活中是随处可见的,很多地方都会有他的存在,我举一个例子•11月1日消息,京东商城1日启动24小时分段限时抢购活动,却因服务器不能支持,致使卖家订单多次提交无效。对此,京东商城CEO刘强东表示“很生气”,要求增加三陪服务器,并组织活动重“搞”一次。以下是本人对那次崩溃的分析性能测试需求的误区•并发用户为1000/10000,峰值为10,15,设计一个场景•我们来分析一下这个需求:•1.并发用户为1000/10000,这样庞大的用户体系,除非是网购系统或者银行系统,对服务器的要求有这么高,一般的项目根本不可能有这么多用户数去并发•