性能测试初体验
1、测试分类
从图中可以看出,性能测试在整个软件测试环节中占了50%的内容,比如负载测试、压力测试、性能测试、大数据量测试、恢复测试、内容泄露测试、竞品测试(比较测试)和可靠性测试。
2、性能测试流程
(1)业务学习:通过查看文档,手动操作系统来来了解系统性能;
(2)需求分析:分析系统非功能需求,圈定性能测试的范围,了解系统的性能指标;
(3)工作评估:工作量分解,评估工作量,计划资源投入;
(4)设计模型:圈定性能测试范围后,把业务模型映射成测试模型;
(5)计划编写:计划测试工作,在文档中明确列出测试范围、人力投入、持续时间、工作内容、风险评估、风险应对策略等;
(6)脚本开发:录制或者编写性能测试脚本;
(7)测试环境准备:性能测试环境准备包括服务器与负载机两部分,服务器是被测系统的运行平台,负载机是我们用来生产负载的机器,用来安装负载工具,运行测试脚本;
(8)测试数据准备:根据测试模型来准备被测系统的主数据与业务数据;
(9)测试执行
(10)缺陷管理:对性能测试过程中发现的缺陷进行管理;
(11)性能分析:对性能测试过程中暴露出来的问题进行分析,找出原因;
(12)性能调优:性能测试人员与开发人员一起来解决性能问题;
(13)测试报告:测试工作的重要交付文件,对测试结果进行报告,主要包括性能指标说明(tps、rt、cpu等);
性能测试主要交付件:
1 测试计划 2 测试脚本 3 测试程序 4 测试报告或者阶段性测试报告
(14)评审:对性能报告中的内容进行评审,确认问题,评估上线风险。
3、性能测试成功与失败要素
重点关注点:
1 评估系统,需求分析 2 场景设计、用例设计 3 测试执行、是否通过 4 性能诊断优化
(1)评估系统,需求分析
对性能测试进行需求分析,通常情况下测试人员会直接依赖需求人员或者项目经理的口述或者有缺陷的文档。实际上,大多数情况下我们测试人员需要自己来引导相关的运维人员和需求人员给出具体的需求数据,并对这些数据进行二次分析,得出我们真实的性能需求。
对于初次上线的系统,我们需要使用同行的系统数据,进行用户行为分析和商业数据结构的估算为前提,利用性能估算法推算。得到的负荷和响应时间数据可以被应用于验证所计划的模型的能力,并帮助做出对策。
对于已经上线的系统,我们可以通过运维人员获取TPS和时间的比例分布图、用户数和时间的分布图、数据库ER关系图、容量数据等,直接精确得出目前系统的用户行为和业务数据关系,进而得出我们需要的性能需求。
(2)场景设计、用例设计
(3)测试执行、是否通过--需要关注的指标
(4)性能诊断优化
4、不同角色看性能
技术部门一般有下面几种角色:开发、测试、架构师、运维人员、(系统管理员、DBA)
(1)黑盒测试的角度
黑盒测试只关心应用程序的单步响应时间,性能好坏就看应用时间多少,也就是数据流经过服务器、服务器集群经过网络传输后往返的时间总和。
(2)开发角度
1 架构合理性 2 数据库设计合理性 3 代码 4 系统内存的使用方式 5 系统线程使用方式 6 系统资源是否有恶性,不合理竞争
(3)系统管理员角度
1 硬件资源利用率 2 JVM 3 DB 4 系统是否支持7*24的服务 5 扩展性,兼容性,最大容量,可能的瓶颈
(4)性能测试的角度
1 服务器硬件的性能 2 根据需求和历史数据制定性能目标 3 建立性能通过模型 4 对开发代码框架和硬件框架进行性能分析 5 针对开发发布版本的基准测试 6 执行软件性能验收及稳定性测试 7 生产环境的配置及优化 8 制定性能测试的测试用例 9 制定性能测试的场景设计 10 协调各部门配合 11 特定的性能分析
5、性能测试相关术语
(1)负载:模拟一万五操作对服务器造成压力的过程,比如模拟100个用户进行发帖。
(2)性能测试(Performance Testing):模拟用户负载来测试系统在负载情况下,系统的响应时间,吞吐量等指标是否满足性能需求。
(3)负载测试(load Testing):在一定软硬件环境下,通过不断加大负载(不同虚拟用户数)来确定在满足性能指标情况下能够承受的最大用户数。这些性能指标包括:TPS(每秒事务数)、RT(事务平均响应时间)、CPU using(CPU利用率)、MEM using(内存使用率)等软硬件指标。
(4)配置测试(Configuration Testing):为了合理地调配资源,提高系统运行效率,通过测试手段来获取、验证、调整配置信息的过程。
(5)压力测试强度测试(Stress Testing):在一定软硬件环境下,通过高负载的手段来使服务器资源处于极限状态,测试系统在极限状态下长时间运行是否稳定,确定是否稳定的指示包括TPS、RT、CPU using、MEM using等。
(6)稳定性测试(Endurance Testing):在一定软硬件环境下,长时间运行一定负载,确定系统在满足性能指标的前提下是否运行稳定。一般我们会在满足性能要求的负载情况下加大1.5倍-2倍的负载量进行测试。
(7)TPS:每秒完成的事务数,通常指每秒成功的事务数,性能测试中重要的综合性性能指标。一个事务是一个业务度量单位,有时一个事务会包括多个子操作,为了统计方便,会把着多个子操作记为一个事务。
(8)RT/ART(Response Timeaverage response time):响应时间/平均响应时间,指一个事务花费多长时间完成,一般取平均响应时间。
(9)PV(page view):每秒用户访问页面的次数,此参数用来分析平均每秒有多少用户访问页面。
(10)Vuser虚拟用户(Virtual user):模拟真实业务逻辑步骤的虚拟用户,虚拟用户模拟的操作步骤都被记录在虚拟用户脚本里。Vuser脚本用语描述Vuser在场景中执行的操作。
(11)Concurrency并发,并发分为狭义和广义两类。狭义的并发,即所有用户在同一时刻作品同一件事情或者操作;广义的并发,即多个用户进行完全一样的操作。
(12)场景(Scenario):性能测试过程中为了模拟真实用户的业务处理过程,在loadrunner中构建的基于事务、脚本、虚拟用户、运行设置、运行计划、监控、分析等一系列动作的集合,称之为性能测试场景。场景中包含了待执行脚本、脚本组、并发用户数、负载生成器、测试目标、测试执行时的配置条件等。
(13)思考时间(Think Time):模拟真实用户在实际操作时的停顿间隔时间。也就是说,用户在进行操作时,每个请求之间的间隔时间。
(14)标准差(Std. Deviation):标准差越小,说明波动越小,系统越稳定。