2019/12/30上海市计算机软件评测重点实验室1性能测试培训蔡立志上海市计算机软件评测重点实验室上海计算机软件技术开发中心22019/12/30上海市计算机软件评测重点实验室内容安排性能测试的目的性能测试的概念性能测试的策略性能测试的计划性能测试的结果分析性能测试的案例WEB测试经验交流32019/12/30上海市计算机软件评测重点实验室1.性能测试目的性能疑虑:我的系统响应时间太慢了,到底问题出哪里?要花多少时间做完一笔交易?什么样的配置提供最好的性能?那些因素降低了交易响应时间?系统在无错的情况下承受多大的及多长的时间的负载。42019/12/30上海市计算机软件评测重点实验室1.性能测试目的评估系统的能力:测试中得到的负荷和响应时间数据可以被用于验证所计划的模型的能力,并帮助作出决策。识别体系中的弱点(瓶颈):受控的负荷可以被增加到一个极端的水平,并突破它,从而修复体系的瓶颈或薄弱的地方。系统调优:重复运行测试,验证调整系统的活动得到了预期的结果,从而改进性能。52019/12/30上海市计算机软件评测重点实验室1.性能测试目的检测软件中的问题:长时间的测试执行可导致程序发生由于内存泄露引起的失败,揭示程序中的隐含的问题或冲突。验证稳定性(resilience)可靠性(reliability):在一个生产负荷下执行测试一定的时间是评估系统稳定性和可靠性是否满足要求的唯一方法。62019/12/30上海市计算机软件评测重点实验室1.性能测试目的-检查可靠性举例确定系统在连续的高工作负载下的稳定性级别。强制系统在短时间内处理大量任务,以模拟系统在数周或数月的时间内通常会遇到的活动类型。72019/12/30上海市计算机软件评测重点实验室1.性能测试目的-确定瓶颈举例您可以运行测试以确定系统的瓶颈,并确定哪些因素导致性能下降,例如,文件锁定、资源争用和网络过载。82019/12/30上海市计算机软件评测重点实验室1.性能测试目的-度量系统容量举例查看现有系统中性能与负载间的关系,并确定出现响应时间显著延长的位置“拐点”。可以确定是否需要增加资源以支持额外的用户。92019/12/30上海市计算机软件评测重点实验室2.性能测试的概念性能:系统的性能是一个很大的概念,覆盖面非常广泛,对一个软件系统而言包括执行效率、资源占用、稳定性、安全性、兼容性、可扩展性、可靠性等等。负载压力是系统性能的一个重要方面。102019/12/30上海市计算机软件评测重点实验室2.1性能测试的概念利用测试工具,模拟大量用户操作,对系统增加负载,考察系统的输出项,例如吞吐量、响应时间、CPU负载、内存使用等如何决定系统的性能,例如稳定性和响应等。模拟情况:正常负载峰值负载异常负载112019/12/30上海市计算机软件评测重点实验室2.2性能测试的时机时机1:完成系统集成完成功能测试系统试运行阶段最好的时机:不用担心产生测试的垃圾数据问题不用担心影响系统运行问题122019/12/30上海市计算机软件评测重点实验室2.2性能测试的时机时机2:系统运行期间出现性能问题。目的:查找问题的原因。注意事项:必须备份运行的数据设定专用的策略查找原因必须采用采用出现问题的数据132019/12/30上海市计算机软件评测重点实验室2.2性能测试的时机时机3硬件升级:目的:提高用户的投资效益在旧系统上查找性能的瓶颈在系统升级以后进行系统前后的比较。升级前后的系统均应该做性能测试142019/12/30上海市计算机软件评测重点实验室2.3性能测试的分类性能测试类型包括:负载测试:确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。强度测试:强度测试是一种性能测试,他在系统资源特别低的情况下软件系统运行情况。容量测试:确定系统可处理同时在线的最大用户数(在用户可接收的范围内)。压力测试:通过确定一个系统的瓶颈或者最大使用极限的测试。152019/12/30上海市计算机软件评测重点实验室2.3性能测试的分类疲劳强度测试:系统稳定运行情况下能够支持的最大并发用户数或者日常运行用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。162019/12/30上海市计算机软件评测重点实验室2.3性能测试的分类大数据量测试独立的数据量测试针对某些系统存储、传输、统计、查询等业务进行大数据量测试综合数据量测试和压力性能测试、负载性能测试、疲劳性能测试相结合的综合测试方案172019/12/30上海市计算机软件评测重点实验室2.4性能测试的工具手工测试:多台电脑和同样数目的操作人员,在同意时刻擦作,几下响应时间。缺点:需要的人力和机器设备无法解决测试人员的同步问题无法捕捉程序内部的变化情况182019/12/30上海市计算机软件评测重点实验室2.4性能测试的工具自动化性能测试工具商业性能测试工具:开源性能测试工具自主开发工具测试192019/12/30上海市计算机软件评测重点实验室2.4性能测试的工具自动化测试工具的弱点:缺乏功能点的校验对有些控件支持得不好不能达到真实模拟负载脚本的支持不够灵活报错定位不够详细202019/12/30上海市计算机软件评测重点实验室2.4性能测试的工具自动负载测试工具盲点:在负载测试中,不进行功能校验,就是当功能错误发生时,测试工具不能够记录产生的功能性错误,这就忽略了负载压力情况下的功能不稳定问题。在负载压力测试过程中记录所有虚拟用户的操作及服务器的响应是当前负载压力测试技术发展的最大挑战。但测试过程中的附加记录会导致资源消耗、操作行为增加以及产生大量日志等问题。212019/12/30上海市计算机软件评测重点实验室2.4.1商业测试工具商业测试工具:MercuryInteractive的LoadRunnerCompuware(康博)的QaloadSegue(赛格瑞)公司的SilkperformerSpirentavalanche222019/12/30上海市计算机软件评测重点实验室2.4.1商业测试工具工具选择依据:模拟您的客户机运行多个模拟的客户机脚本化执行并能编辑脚本支持会话协议可配置的用户数量报告成功、错误和失败232019/12/30上海市计算机软件评测重点实验室2.4.1商业测试工具LoadRunner特点:支持的协议多且个别协议支持的版本高;负载测试方案设置灵活;丰富的资源监控,资源监控计数器报告可导出Word,Excel以及HTML格式242019/12/30上海市计算机软件评测重点实验室2.4.1商业测试工具LoadRunner缺点:可扩展性差,对不支持的协议无能为力;资源监控指标需进一步细化;功能校验应该加入252019/12/30上海市计算机软件评测重点实验室2.4.1商业测试工具Qaload特点:脚本直接采用c语言从控制中心管理全局负载测试快速创建仿真的负载测试性价比较高262019/12/30上海市计算机软件评测重点实验室2.4.1商业测试工具Qaload缺点:稳定性较差;需要测试工程师有较强的编程经验;协议升级不及时脚本调试部方便272019/12/30上海市计算机软件评测重点实验室2.4.1商业测试工具Silkperformer优点:在工具中融合了功能测试的方法脚本采用类Pascal语言,资源消耗较小支持动态的dll外部函数错误可精确定位提供了数据池模板,并可定制用户可以通过拖拉的方式最为直观地定制测试报告282019/12/30上海市计算机软件评测重点实验室2.4.1商业测试工具Silkperformer缺点报告对中文的支持较差报告导出以后html链接会丢失292019/12/30上海市计算机软件评测重点实验室2.4.2开源测试工具OpenSTAURL:特点:基于windows平台,Corba分布式软件测试体系。具有脚本控制语言(SCL),用户创建脚本,并将输入数据参数化测试基于Web的应用软件302019/12/30上海市计算机软件评测重点实验室2.4.2开源测试工具TestMakerURL:特点:基于java架构,支持Windows、linux、unix平台。脚本语言采用Jython.(Python的java实现)提供Python的面向对象环境支持HTTP/HTTPS、TCP/IP、SOAP以及XML312019/12/30上海市计算机软件评测重点实验室2.4.2开源测试工具ApacheJMeterURL:特点:纯JAVA,不受平台的约束同时支持功能和性能负载压力测试测试JAVA对象、JDBC、数据库、Perl脚本、Web服务器和应用服务器等可记录浏览器和Web服务器之间的通信。322019/12/30上海市计算机软件评测重点实验室2.5性能测试的原理测试拓扑示意图COL-ACT-STA-123456789101112HS1HS2OK1OK2PSCONSOLEplayerPlayerPlayerplayerplayerConductor被测服务器交换机332019/12/30上海市计算机软件评测重点实验室2.5性能测试的原理其中:Conductor为测试控制机;Player为测试代理机(测试代理机数目根据实际而定)。被测服务器指WEB服务器或者数据库服务器、应用服务器等等。342019/12/30上海市计算机软件评测重点实验室2.5性能测试的原理基本原理录制/回放方式来模拟用户的实际操作的录制:测试工具启动一个代理监视并获取在不同通信协议下客户端和服务器端的通信信息,生成测试脚本框架。回放:测试工具通过控制台将测试脚本分发到各个负载测试生成器(测试代理)上,控制负载测试生成器模拟多个用户对服务器并发访问。352019/12/30上海市计算机软件评测重点实验室2.5性能测试的原理测试脚本的录制和分配原则:脚本越小越好(一个功能一个脚本)。选择负载压力最高的业务功能进行测试。选择所需要的操作进行录制,如果部队服务器产生压力的操作可以不录制。362019/12/30上海市计算机软件评测重点实验室2.5性能测试的原理回放模式:进程回放模式:线程回放模式:372019/12/30上海市计算机软件评测重点实验室2.5性能测试的原理测试的一般步骤:选择协议创建脚本:录制或者手工编写参数华测试数据创建虚拟用户,设定负载方案执行测试结果分析382019/12/30上海市计算机软件评测重点实验室3.性能测试的策略内容包括:负荷策略网络策略业务策略监测策略392019/12/30上海市计算机软件评测重点实验室3.1性能测试的一般步骤1.分析需求2.制定测试策略3.制定测试计划4.设计测试用例5.运行测试用例6.分析测试结果402019/12/30上海市计算机软件评测重点实验室3.2分析测试需求确定客户需求和期望稳定性?大数据量?性能?压力?调优?实际业务需求必须达到什么的响应时间?稳定性怎么样?(实时系统、报警系统)系统分析使用的是什么系统?(决定了我们可以采用什么样的策略)412019/12/30上海市计算机软件评测重点实验室3.2分析测试需求-在软件生命周期中性能测试计划和需求在需求分析中充分关注负载压力性能:负载压力需求占10%的需求分析时间系统性能目标的设计和分析方法具备并确定性能测试需求相关的系统结果资料性能需求分析应该和体系结构分析结合进行422019/12/30上海市计算机软件评测重点实验室3.2分析测试需求-在软件生命周期中性能测试计划和需求从设计中得到负载压力性能指标清楚不同的设计对负载压力的影响,给出负载压力性能的预期的性能指标。设计使用了第三方的产品,要求提供商能够对其产品进行性能验证和设计,识别和其产品有关