1“最后一公里”系列培训之性能测试实践2主题测试准备脚本开发与调试测试执行测试结果评估测试后跟踪最佳实践3第一章测试准备建立性能目标了解应用软件状况了解应用部署平台建立系统负载模型制定项目计划制定测试方案4建立测试目标选取关键用例(重要程度/频率)Mission-CriticalHeavythroughputDynamiccontent并发用户数(系统级/应用级/事务级)事务吞吐率需求响应时间需求(从用户习惯推算或估算)系统资源占用需求高可用性需求(如故障转移/OS集群/数据库集群/中间件集群)可扩展性需求(如能否支撑未来几年的吞吐)任务性质(关键路径/历时)5了解应用软件系统体系架构(b/s,c/s,三层)以及核心framework系统的并发性/安全性采用的开发语言通信协议(rmi,web,socket,oracle…)通信端口分工以及是否动态端口加密/解密/签名算法SOCKET协议消息数据结构错误特征码网络包的keepaliveorhttpsessiontimeout当前所处的应用阶段(未测试/已功能测试…)6了解软件部署平台物理部署(异地?数据中心?)硬件架构(机型/CPU/MEM/IO/网络)操作系统(版本/补丁/关键内核参数)Sysctl/proc/*数据库(类型/版本/专用or共享/启动参数/存储布局)中间件(产品模式/线程数/内存参数)软件部署模式7建立系统负载模型业务层面关键用例吞吐率以及行为习惯用户体验系统负载高峰/平常场景吞吐率CPU/IO/MEM/NETWORK,瓶颈资源?建立容量模型:TeamQuest(可选)数据来源:服务器端监控/数据库日志/专家估算自顶向下估算8制定项目计划组织架构及各自职责测试资源(人力/工具)搭建测试环境(SCM或者开发组建,QA验证)进度计划沟通管理(例会,工作规范)风险规避(技术攻关先行)9制定测试方案测试需求测试方法与策略测试环境测试场景与用例异常处理流程10第二章开发调试脚本选取协议增强脚本调试脚本试运行脚本11选取协议依赖Client/Server消息通信机制优先采用上层协议(如rmisocket)交互过程采用底层协议优先采用API变长网络包,加密解密优先采用API为了测试,变更程序适应测试回放(如DOS攻击/随机验证码/控件回送应答码,或者工作流去处人工参与环节)为了测试,部分变更流程(增加/删除事务成对出现)12增强脚本参数化用户输入关联数据增加验证点(如特征字)增加函数提高可重用性为提高性能封装函数成DLL13增强脚本-搭建LR编译环境#include“LR_INSTALL_PATH\include\*.h”LIB:lrun50.libDLL:lrun50.dll工程optionspath:LR_INSTALL_PATH工具:dependencywalker函数格式#defineLRDLLEXPORT_declspec(dllexport)__stdcallintLRDLLEXPORTfoo(intcount){}Func.def文件:EXPORTSfoo14调试脚本VuGen单次回放VuGen多次回放Controller单脚本多用户(并发性)Controller多脚本多用户(验证是否脚本依赖)打开extendlog。关注http/1.1响应码,socketmismatch,oracleora-*等关键字15调试脚本_验证工具Winpcap/EtherealTcpdump/Windump利用SQL查询插入/更新/修改效果或者sql_trace,p6spy截获sql16试运行脚本验证脚本无错验证loadgenerator分布合理初步估算压力强度与结果合理性删除无用的性能计数器17第三章测试执行监控操作系统/网络/数据库多个层面监控应用运行状况/日志确认施压机资源充分,确保尽力施压抽查关键功能确认可用建议运行12小时以上,确认无内存泄露/任务累积18测试执行_监控工具Loadrunner/Sitescope/TeamQuestUNIX:top,sar,vmstat,iostat,netstat,以及HP-UXglance,AIXtopasOracle:OEM/statspack/questtoad/questcentralforOracleMysql:mysqladministrtorWebLogic:JBoss:JVM:JRockitMemoryLeakDetector19第四章测试结果评估收集LR测试数据收集应用日志收集系统日志(如/var/log/*,oracle:*.trc)分析LR性能结果与OS/DB/中间件/APP参数之间的匹配度(little定律)评估测试用例覆盖度对测试结论的影响面编写测试报告(技术与格式审核)20第五章测试后跟踪项目总结(技术以及过程改进)如何提高脚本重用率调优与硬件扩容的平衡实际运营与系统负载建模的差异度21第六章最佳实践测试方编制需求框架,需求方或运营方明确需求细节关键点结对审核技术攻关先行重视数据异常,数据分析结合SA/DBA专家意见结合知识栈,提取系统调优的合理建议22小结Loadrunner对高层协议支持良好,但对底层协议与加密/随机算法/异步通信支持较差性能测试难点不在Loadrunner工具本身,难在技术攻关以及对系统的全局把握建立软件各个层面的知识库/工具箱23Loadrunner学习资源MIKB:Loadrunner.info:51testing:?25谢谢大家!主讲人:梁剑钊Email:jianzhao.liangjz@alibaba-inc.comExt:3245Msn:liangjianzhao@163.com