Version01Slide118December2019第五章性能测试5.1性能测试的概念性能测试是通过自动化测试工具模拟多种正常值、峰值、异常负载的条件下对系统各项指标进行的测试。1.系统性能的主要指标(1)吞吐量/处理能力:请求数量/每秒、页面数量/每秒(2)负载:客户端负载、服务器端负载;(3)响应时间:最大响应时间、平均响应时间、网络传输时间、Web服务器处理时间、应用服务器处理时间、数据库服务器处理时间;Version01Slide218December2019第五章性能测试5.1性能测试的概念1.系统性能的主要指标(4)TPS(TransactionsPerSecond):应用系统每秒钟处理完成的交易数量。TPS值表现的是服务器端的程序行为,是衡量服务器处理能力高低的一个主要指标。(5)HPS(HitsPerSecond):每秒点击次数。指在1秒钟的时间内用户对Web页面的链接、提交按钮等点击的总和。HPS值表现的是用户整体行为,是衡量在线负载的指标。Version01Slide318December20195.1性能测试的概念2.性能瓶颈概念(1)硬件性能瓶颈;(2)网络设备性能瓶颈;(3)操作系统性能瓶颈;(4)服务器软件性能瓶颈;(5)应用程序性能瓶颈。Version01Slide418December20195.2负载压力测试负载压力测试是指在一定约束条件下测试系统所能承受的并发用户量、运行时间、数据量,以确定系统所能承受的最大负载。负载压力测试是性能测试的重要组成部分。主要方法是并发性能测试、疲劳强度测试、大数据量测试、速度测试。Version01Slide518December20195.2负载压力测试负载压力测试的位置:(1)客户端交易处理;(2)服务器资源;(3)数据库资源;(4)Web服务器;(5)中间件。5.2.1负载压力测试指标Version01Slide618December20195.2负载压力测试交易处理的负载压力指标:(1)并发用户数量(2)交易处理指标■平均事务响应时间;■1秒钟内处理事务总数。5.2.1负载压力测试指标Version01Slide718December20195.2负载压力测试交易处理的负载压力指标:(3)Web请求指标■每秒点击次数;■吞吐量;■每秒HTTP响应数量;■每秒下载页面数量;■每秒重试次数;■每秒SSL连接数量。5.2.1负载压力测试指标Version01Slide818December20195.2负载压力测试并发性能测试的两个阶段:负载测试、压力测试。逐渐增加负载,直到系统性能瓶颈出现,通过综合分析系统的执行指标和资源状况确定系统的并发性能。负载测试:性能拐点之前的测试。压力测试:性能拐点以上的测试。1.并发测试的意义主动的负载和压力测试可避免出现意外情况,从而确保网站在高负载的情况下仍能正常运转。5.2.2并发性能测试Version01Slide918December20195.2负载压力测试2.并发测试的好处(1)可预测成本和预算成本;(2)避免花费高昂的费用来补救以前存在的问题;(3)更精确地预测可扩展性;(4)提高网站性能。3.并发测试的目标(1)评价系统的当前性能;(2)预测系统的未来性能;(3)找到瓶颈问题。5.2.2并发性能测试Version01Slide1018December20195.2负载压力测试4.负载测试负载测试是在特定运行环境下对被测对象施以大用户量,检查CUP负载、内存使用、响应时间等影响系统性能的指标通过软件工具创建虚拟用户,模仿典型的操作行为。在虚拟用户开展活动的期间,控制台将记录服务器的反应时间,提供给测试人员进行分析。5.2.2并发性能测试Version01Slide1118December20195.2负载压力测试5.压力测试压力测试是在特定运行环境下长期连续运行被测软件,并施加一定的负载(并发、多用户、多重循环),检查内存使用、系统响应时间等影响系统性能的指标。(1)稳定性压力测试;(2)破坏性压力测试。压力测试的目的是发现在什么条件下系统的性能变得不可接受,并通过对应用程序施加越来越大的负载,直到发现应用程序性能下降的拐点。5.2.2并发性能测试Version01Slide1218December20195.2负载压力测试6.并发测试的准备工作(1)准备测试环境;(2)选择测试工具;(3)产生测试数据。5.2.2并发性能测试Version01Slide1318December20195.2负载压力测试疲劳强度对系统而言也是一种负载,其关注的重点是系统经过长时间运行后的状态。主要暴露的问题有内存泄露、资源争用等。疲劳强度测试是在系统稳定的情况下施加一定量的并发用户数量,并持续运行,检查系统性能指标和资源占用情况。(1)日常业务疲劳强度模拟;(2)高峰业务疲劳强度模拟。5.2.3疲劳强度测试Version01Slide1418December20195.2负载压力测试1.大数据量测试类型(1)独立数据量测试;(2)综合数据量测试。2.自动生成大数据量大数据量测试的基本条件就是能够生成大量的数据和并发操作。对于特定的系统,可以自行开发数据发生器和自动并发操作模拟系统。3.大数据量管理数据生成、数据编辑、类型转换、数据比较、数据迁移。5.2.4大数据量测试Version01Slide1518December20195.2负载压力测试1.制定测试计划(1)定义测试目标■以可度量的指标作为测试目标;■确定测试时间;(2)定义测试范围■定义性能度量的范围;■定义虚拟用户(VUser)。5.2.5负载压力测试实施Version01Slide1618December20195.2负载压力测试2.分析测试需求(1)分析应用程序■连接到系统的用户数量;■客户机的硬件配置情况;■Web服务器和数据库服务器的性能;■客户机与服务器之间的通信方式;■分析任务分布情况。5.2.5负载压力测试实施Version01Slide1718December20195.2负载压力测试2.分析测试需求(2)测试需求的内容■测试对象;■系统配置;■应用系统软件结构。(3)测试强度估算测试强度估算:按照80~20原理,每个工作日中80%的业务量在20%的时间内产生的,计算出应当施加的测试强度。5.2.5负载压力测试实施Version01Slide1818December20195.2负载压力测试(3)测试强度估算例:每年的业务量主要集中在8个月,每个月有20个工作日,每天有8小时工作时间。每天有80%的业务量是在1.6小时内处理的。假定全年业务处理量为100万笔,系统要求按2倍日常业务量进行测试。年请求数:(100×15%×7+100×70%×5+100×15%×3)×2=1000万/年日请求数:1000×160=6.25万/日秒请求数:(62500×80%)/1.6×3600=8.68次/秒5.2.5负载压力测试实施Version01Slide1918December20195.2负载压力测试3.设计测试案例(1)测试策略(2)案例设计5.2.5负载压力测试实施案例名称并发数量网络环境数据量备注制度文档信息上传50、100100M局域网50用户并发,上传50条记录;100用户并发,上传100条记录。只上传文件,不带附件。文件上传下载50、10050用户并发,新增50条记录;100用户并发,新增100条记录。信息和附件都上传(附件200K)项目管理50、10050用户并发,上传50条记录;100用户并发,上传100条记录。工作记事50、10050用户并发,上传50条记录;100用户并发,上传100条记录。记录操作前后数据库记录数,每个虚拟用户循环执行3次。Version01Slide2018December20195.2负载压力测试3.设计测试案例(3)测试内容一般包括并发性能、疲劳强度、大数据量等。4.准备测试环境(1)测试环境的基本原则■满足软件运行最低要求;■选择与被测系统一致的操作系统和运行环境;■采用相对独立的测试环境;■系统内无病毒。5.2.5负载压力测试实施Version01Slide2118December20195.2负载压力测试4.准备测试环境(2)负载压力测试环境的注意事项■如果是完全真实环境,要考虑测试对现有业务的影响■如果是模拟真实环境,必须先考虑服务器、数据库、中间件的真实,施加大数据量,后考虑客户机的真实性;■配置与业务相关的测试环境;■测试环境中应包括对交互操作的支持;■测试环境中应包括安装、备份和恢复过程。5.2.5负载压力测试实施Version01Slide2218December20195.2负载压力测试5.准备测试工具(1)模拟多个客户机;(2)能够编辑、执行脚本程序;(3)支持会话或cookies;(4)可以配置用户数量;(5)延时时间;(6)随机选择交互数据;(7)运行状态报告;(8)导出测试结果;(9)提供测试分析工具。5.2.5负载压力测试实施Version01Slide2318December20195.2负载压力测试6.准备测试数据(1)初始测试数据;(2)大量测试数据;(3)典型取值数据。7.手工编写测试脚本“Web服务器通用性能测试系统”这个系统不仅能够测试静态HTML页面的响应时间,而且能够模拟真实运行情况,测试动态网页(ASP、PHP、JSP)的响应时间,为服务器性能优化和调整提供依据。5.2.5负载压力测试实施Version01Slide2418December20195.2负载压力测试7.手工编写测试脚本“Web服务器通用性能测试系统”,主要由三部分组成:(1)性能测试数据;(2)性能测试程序;(3)性能测试结果。在实际运行的Web应用系统中,用户访问页面时传递的query字符串里的参数是不同的。为了逼真地模拟实际情况,测试系统应当在特定时间段内向待测页面同时发送多个请求,每个请求的query参数互不相同。5.2.5负载压力测试实施Version01Slide2518December20195.2负载压力测试7.手工编写测试脚本5.2.5负载压力测试实施读URL信息读数据文件并发进程1发送请求计时开始接收响应计时结束下一会话测试系统并发进程2。。。并发进程nVersion01Slide2618December20195.2负载压力测试7.手工编写测试脚本用户访问Web需要发送URL,信息格式是纯文本。GET=@1@&@2@测试程序可以开设n个进程,每个进程可以串行地开设m个会话,每个会话模拟一个用户,按照访问Web的URL格式,从数据文件中读取参数,发出Web访问请求。同时,程序开始计时,直到系统响应,停止计时,统计接收的字节数,保存测试结果,本次会话结束。进入下一个新的会话,如此循环m次。5.2.5负载压力测试实施Version01Slide2718December20195.2负载压力测试5.2.5负载压力测试实施主程序读入数据文件形成二维数组读URL信息子进程等待统计结果…子进程打开Socket从二维数组中读取随机数执行Session…记录输出关闭Socket单个Session生成请求字符串,开始计时连接Web服务器超时吗停止计时,计算总连接时间和接收字节数结果保存,超时为-1Version01Slide2818December20195.2负载压力测试8.测试脚本录制、编写与调试测试脚本是指Vuser脚本,即虚拟用户回放所使用的脚本(1)录制基本脚本;(2)编辑增强脚本;(3)配置运行时设置;(4)以独立模式运行Vuser脚本。5.2.5负载压力测试实施Version01Slide2918December20195.2负载压力测试9.场景制定(1)创建Vuser组;(2)配置Vuser;(3)配置Vuser运行时设置;(4)配置负载生成器。10.执行测试(1)运行场景;(2)查看Vuser;(3