您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件测试技术 > 性能测试 > 正文

测试核心技能之性能测试

发表于:2018-09-19 作者:wlp2evan 来源:简书
  测试中的非功能测试其实范围比较广,性能、稳定性、鲁棒性、安全性等都可以放进这个范畴。如果真的细究起来,那真的就多了。非功能测试,一般比功能测试门槛高些,多数还是需要掌握一两种留意的测试工具,配合代码能力和超强的问题能力,才能得到开发人员的尊重。功能测试其实也一样,但以性能为基础的非功能测试更能考验测试人员的综合能力,这里有个人倾向哈。本文以讨论性能测试相关内容为主,比如安全测试等暂不作为主流讨论。
  性能测试主要分类?负载测试、压力测试、并发测试、基准测试、稳定性测试、可恢复性测试。按LOADRUNNER书籍中定义:
  负载测试(Load Testing),不断加压被测系统,直到超过预订指标或者部分资源已经达到饱和不能再加压。其目的是找到系统最大的负载能力,在特定的环境下测试,不断加压,知道系统中部分资源达到极限。
  压力测试(Stress Testing),系统已经达到一定的饱和程度(如CPU磁盘等),此时系统处理业务的能力,系统是否会出现错误。疲劳测试是压力测试的一种表现形式。一般用于系统稳定性测试。
  配置测试(Confguration Testing),调整系统的软硬件环境,了解各种不同环境对系统的影响,从而找到系统的最佳配置。用于系统调优和规划,了解不同因素对系统性能的影响情况。
  并发测试(Concurrency Testing):模拟用户并发访问,测试多用户同时访问某一应用、模块或数据,观察系统是否存在死锁、系统处理速度是否明显下降等其他一些性能问题。
  可靠性测试(Reliability Testing):系统在一定的业务压力下,让系统持续运行一段时间,观察系统是否达到要求的稳定性,必须给出明确的要求,例如系统能够持续无故障运行的时间。持续关注运行状态。
  基准测试:在一定软硬件以及网络环境下,模拟一定数量的虚拟用户运行一种或多种业务,将测试结果作为基线数据。在系统调优或系统评测的过程中,通过运行相同业务场景并比较测试结果确定调优是否达到效果或者为系统的选择提供决策数据。
  性能测试包含的主要内容?工具+计划+监控+调优,性能测试工具更多的是模拟客户端产生压力的工具,其在性能分析和调优方面较弱,需要一些监控和调优工具,才能做好性能测试,性能测试计划也很重要。经典工具LOADRUNNER的过程:计划测试,测试设计,创建虚拟用户脚本,创建测试场景,运行测试场景,分析结果。
  性能测试本身有没有质量?当然有,测试工具的稳定性,测试环境的稳定性都可以用做考核工具本身。需求定义时的性能指标需要同步提出,比如CPU利用率低于60%,响应时间不超过1秒,每秒请求数目达到单机1万QPS,跑7*24小时稳定性系统服务成功率达到99.999%等。
  常见性能测试指标包括哪些?响应时间(服务器响应时间,网络响应时间,客户端响应时间),吞吐量(请求和结果,数据库吞吐量,网络吞吐量,单位时间处理的请求事务数),资源使用(CPU占有率,内存使用率,磁盘读写,网络读写),点击数,并发用户数。
  性能测试何时开始,何时结束?一般在需求分析阶段就开始介入,到最后一个版本测试完成,得出性能报告,才算是一个需求的终结。研发阶段如何安排呢?一般情况下在编码进行并发测试、压力测试和配置测试,因为此阶段可以快速发现性能的问题;编码结束后的测试阶段,对系统的稳定性和调优,达到系统最优性能,进行负载测试、基准测试和配置测试。
  关注性能的三类人:用户(软件系统对用户请求的响应时间)、运维和测试工程师(响应时间+资源消耗+硬件资源可扩展性)、开发工程师(关注所有问题,包括内存泄露、死锁、中间件以及应用服务器等)。性能测试消耗的资源包括时间、物力、财力;性能测试中发现的bug数目及各自的差别;系统交付用户,在生产环境运行后发现的性能bug数目和级别。
  经典的GAMEA)测试模型:目标、分析、度量、执行、调整。
  目标:确定本次测试的目标,选择测试设计策略。从需求获取阶段开始,在性能需求意向确定的情况下,输出明确的性能测试目标和性能测试策略。常用目标包括:度量最终用户响应时间(查看用户执行业务以及从服务器得到响应所花费的时间)、定义最优的硬件配置(内存、CPU、缓存、适配器等)、检查可靠性、查看硬件或软件升级、确定瓶颈(文件锁定、资源征用、网络过载)、度量系统容量(用户数)
  分析:从需求分析阶段和性能测试启动阶段开始,以性能需求为基础,达成一致的性能指标列表,性能测试案例文档。性能测试需求标准,细化需求,找出测试关键点。测试对象是什么,系统配置如何,应用系统的使用模式是什么,得出的性能测试指标至少包括测试环境,业务规则,期望响应时间等。分析系统架构,对软硬件组件、系统配置以及典型的使用模型,结合测试指标,生成性能测试用例。
  度量:从性能测试设计阶段,以细化的性能指标和性能测试案例为输入,输出和工具相关的场景变更、交易度量、监控器度量和虚拟用户度量等。场景的定义(测试环境、运行规则、监控数据),可表现为历史数据记录数,虚拟用户数,虚拟用户加载方式,监控指标等;事务的定义,处理器的处理能力;虚拟用户负责执行性能测试脚本,pass/fail的标准。
  执行:软件测试执行阶段,以场景、交易、虚拟用户等设置信息为输入,测试报告为输出。准备测试环境、数据和脚本(测试环境包括硬件平台和软件平台,初始测试数据和用例测试数据《SQL脚本和excel文件,真实环境数据量》,性能测试工具生成脚本),运行场景和监控性能,场景是否通过,生成最终测试报告。
  调整:第一轮性能测试结束没有通过,输入是测试报告和测试结果数据,输出性能测试解决方案。应用程序修改和中间件调优(数据库调优、内存升级、CPU数量、代码调优、Cache调优),各项资源使用趋向合理和保持一定的平衡。
  本篇也只算是性能测试初探,在做性能测试时,确认需求,确认测试场景,确认验收条件显得尤其重要。加上测试工具,测试数据准备、测试场景执行、测试结果展示、测试问题分析、持续集成验证新包,这些都是可以细化考虑的。要成为一个性能测试高手,需要全方位锻炼自己,从各个角度持续学习和提升,才能在这个行业立于不败之地。