第一章
性能测试:实质上是利用工具去模拟大量用户操作来验证系统能够承受的负载情况,找出潜在的性能问题分析并解决。
性能测试智能树:
性能测试基础:
1.服务器性能诊断知识
Linux:自由传播的类UNIX操作系统,是一个基于POSIX和UNIX的多用户,多任务,支持多线程和多CPU的操作系统
Windows Server:是WSS的核心,是服务器操作系统
2.性能调优技能
最难点:定位性能瓶颈。
3.性能测试的价值:
保障系统的性能,提供良好的用户体验,尽可能的找出系统性能薄弱环节,帮助进行性能优化。
性能测试流程:
(1)业务学习:通过查看文档,手工操作系统了解系统功能
(2)需求分析:分析系统非功能需求,圈定性能测试的范围,了解系统性能指标
(3)工作评估:工作量分解,评估工作量,计划资源投入(人,工作日)
(4)设计模型:把业务模型映射成测试模型 ,当需要交互的另一方系统不存在时,自己开发挡板程序(mock程序)进行替代所需功能测试,保证性能测试工作正常进展,这个过程叫设计测试模型
(5)计划编写:在文档中明确列出测试范围,人力投入,持续时间,工作内容,风险评估,风险应对策略等
(6)脚本开发:录制或者编写性能测试脚本
(7)测试环境准备:服务器和负载机两部分,服务器是被测系统的运行平台,负载机是我们用来产生负载的机器,用来安装负载工具,运行测试脚本。
(8)测试数据准备:根据数据模型来准备被测系统的主数据(保证业务能够运行通常的基础)和业务数据,准备存量/历史数据(数据量变引起性能变化)
(9)测试执行:性能测试成败关键,同样脚本不同测试人员测出结果差异大(体现在场景设计与测试执行上)
(10)性能调优:测试人员和开发人员一起解决性能问题
(11)测试报告:性能指标说明(TPS,RT,CPU ,Using),发现的问题
性能测试主要交付件:测试计划,测试脚本,测试程序,测试报告或阶段性报告(项目周期长)
性能测试成功与失败要素:
1.评估系统,需求分析
需要自己引导相关的运维人员和需求人员给出具体的需求数据,并对数据进行二次分析,得出真实的性能需求。
对于初上线的系统,需要用到同行的系统数据进行用户行为分析和商业数据结构的估算,利用性能估算法进行估算,得到的负荷和响应时间数据可以被用于验证所计划的模型的能力并帮助做出决策。
对于已上线的系统,可以通过运维人员获取TPS和时间的比例分布图,用户数和时间的分布图,数据库ER关系图,容量数据等,直接精确地出目前的系统的用户行为和业务数据关系,进而得出我们需要的性能需求。
2、场景设计,用例设计
需求调研结束后我们需要再测试场景中尽可能真实的复原系统负载。如何有效的组织测试用例就是场景要做的事,按业务分布,业务量,业务时段,业务角色来综合分配用户数,执行时间,执行比例等
3,测试执行,是否通过
模拟不同负载执行测试场景来识别系统弱点:做好各种监控,甄别各种问题,验证系统稳定性
4.性能诊断优化
性能测试相关术语
1.负载
2.性能测试
3.负载测试
4.配置测试
5.压力/强度测试
6.稳定性测试
7.TPS
8.RT/ART
9.PV:page view ,每秒访问页面的次数
10.Vuser虚拟用户
11.Concurrency并发
12.场景(Scenario)
13.思考时间
14.标准差
本章小结:
性能测试首先要做好性能需求分析,不充足的性能分析直接导致性能测试工作失败,接着要做好用例及场景设计,尽可能复现实际负载,执行过成功要做好性能监控工作,为问题分析提供数据支撑。