Locust性能自动化—初识性能测试

  近期在学习使用Locust进行性能自动化,在学习之前,我们应该了解什么是性能测试,性能测试需要关注哪些内容,性能测试可以使用哪些工具等。

一、测试流程

在这里插入图片描述

有了上面的流程图,接下来,我们就来详细介绍一下各个环节:

  1. 业务学习:通过查看文档,或通过实际操作来了解系统的功能。
  2. 需求分析:分析系统非功能需求,划定性能测试的范围,了解系统性能指标。
  3. 工作评估:工作量分解,评估工作量,计划资源投入(人、日)。
  4. 设计测试模型:划定性能测试范围后,把业务模型映射成测试模型。
    听到这句话,是不是一头雾水?什么是测试模型?
    通俗的说,就是 :性能测试用例设计+性能测试方案
    用例只关注业务,模型还需关注如何实现,是否具有可操作性,可验证性等,最后还得根据不同的测试目的,组合成测试场景。
  5. 计划编写:计划测试工作,在文档中明确列出测试范围、人力投入、持续时间、工作内容、风险评估、风险应对策略等。
  6. 脚本开发:录制或编写性能脚本,开发测试挡板程序,开发测试程序。甚至如果没有第三方工具,还需要开发测试第三方工具后程序。
    挡板程序:自己开发程序来替代第三方的支持
    如:需要与航空系统进行交互,奈何航空公司不提供技术支持,我们就要自己开发程序替代。
  7. 测试环境准备:性能测试环境包括服务器和负载机两部分。
    服务器:被测系统的运行平台(软件、硬件)
    负载机:我们用来产生负载的机器,用来安装负载工具,运行脚本的。
  8. 测试数据准备:根据数据模型来准备被测系统的主数据和业务数据。
  9. 测试执行:这一步是成败的关键,因为不同的人,设计场景以及测试执行上,所以结果可能还会有较大差异。
  10. 缺陷管理:性能测试过程中发现的缺陷
  11. 性能分析:性能测试结果可能暴露的问题进行分析,找出原因。
  12. 性能调优:这就需要协作,性能测试大佬与开发大佬一起来解决性能问题
  13. 测试报告:对测试结果的总结。
    常见性能指标包含:TPS、RT、CPU Using 等等
  14. 报告评审:针对性能报告中的内容进行评审,确认问题,评估上线/交付风险。

二、成败要素

  如果把项目的各个环节比作各个学科,那么性能测试就是理综,集成了需求、开发、测试、运维、协调沟通。
  我们从以下几点来说一下性能测试的几大难点:
  ①需求分析
  ②场景设计
  ③性能诊断调优
  ④环境搭建和模拟

  很多性能测试大佬由于在需求分析阶段没分析到位,不准确的预估用户行为,不能在场景上很好的模拟用户操作,无法真实的模拟系统的负载情况,最后的结果就是:在测试或者UAT环境运行的非常好,在上线后,就问题频频发生,结果可想而知。
  就好比 :
  2008年的奥运会,
  2012年11.11 某宝,
  2012年11.11 某东,
  2014年1月9日的12306,
  2014年11月6日亚马逊网站。

  针对外行人,或者有些性能测试大佬,都以为性能测试就是使用一个工具或者写一个脚本,弄几台服务器,随便"跑跑",然后出一个报告,就ok了。通常关注并发多少、响应时间多少、能不能跑通等等。性能测试如果真的那么简单,还对得起从入门到放弃这几个字吗~~~
  接下来我们来看一下,性能测试重要关注点有哪些:

  1. 评估系统,需求分析
    在客户没有明确要求哪些值,我们需要引导运维大佬和需求大佬给出具体的需求数据,并对数据进行二次分析,得出我们需要的信息。
    (1)针对初次上线的系统:我们需要用同行的数据,进行用户行为分析和商业数据结构的估算为前提,来进行推算,来得到我们想要的性能需求。
    (2)针对已上线的系统:我们可以通过运维人员获取TPS和时间的比例分布图、用户数和时间的分布图、数据库ER关系图、容量数据等,直接精确的得出目前系统的用户行为和业务数据关系,进而得到我们想要的性能需求。
  2. 场景设计,用例设计
    我们要尽可能的真实模拟线上系统的负载。
    我们要决定哪些功能需要参与性能执行,参与方式怎样?这就是用例设计。
    如何有效的组织测试用例就是场景需做的事情,如,按业务分布,业务量,业务时段,业务角色来综合分配用户数、执行时间、执行比例等。
    这个场景设计、用例设计,花费的时间可不短。
  3. 测试执行,是否pass
    模拟不同负载执行测试场景来识别系统弱点,做好各种监控,筛查各种问题,验证系统稳定性等。
  4. 性能诊断优化
    性能测试的大佬,需要具备良好的、敏锐的性能意识,能够把问题细化(即分步分类),协助各开发团队完成问题定位,分析调优。

三、大佬看性能

由于性能是一门综合学科,所以,我们就从不同的角度,来看看这些大佬对系统的要求有哪些:

  1. 黑盒测试大佬角度:
    关心应用程序的单步响应时间,性能的好坏,就看应用的时间多少,即数据流经过服务器/服务器集群经过网络传输后往返时间总和。
  2. 开发大佬角度
    ①架构合理性
    ②数据库设计合理性
    ③代码
    ④系统里内存使用方式
    ⑤系统里线程使用方式
    ⑥系统资源是否有恶性,不合理竞争
  3. 运维大佬角度
    ①硬件资源利用率
    ②JVM
    ③DB
    ④系统是否支持7x24的服务
    ⑤扩展性,兼容性,最大容量,可能的瓶颈
  4. 性能测试大佬角度
    ①服务器硬件性能
    ②根据需求或历史数据制定性能目标
    ③建立性能通过模型
    ④对开发代码框架和硬件框架进行性能分析
    ⑤针对开发发布版本进行基准测试
    ⑥执行软件性能验收及稳定性测试
    ⑦生产环境的配比和优化
    ⑧执行性能测试用例、场景设计
    ⑨协调部分之间的配合
    ⑩特定的性能分析

四、相关术语

  1. 负载:
    模拟业务操作对服务器造成压力的过程,比如2000个用户进行下单操作。
  2. 性能测试(Performance Testing):
    模拟用户负载来测试系统在负载情况下,系统的响应时间,吞吐量等指标是否满足性能要求。
  3. 负载测试(Load Testing)
    在一定软硬件环境下,通过不断加大负载(不同虚拟用户数)来确定在满足性能指标情况下能够承受的最大用户数。
    这里性能指标包含:TPS(每秒事务数),RT(事务平均响应时间),CPU Using(CPU使用率),Mem Using(内存使用情况)等软硬件指标。
  4. 配置测试(Configuration Testing)
    为了合理的调配资源,提高系统运行效率,通过测试手段来获取,验证,调整配置信息的过程。
  5. 压力/强度测试(Stress Testing)
    在一定软硬件环境下,通过高负载的手段来使服务器的资源(强调的是服务器资源,硬件资源)处于一个极限状态,测试系统在极限状态下长时间运行是否稳定。
    确定稳定的指标,包含:TPS(每秒事务数),RT(事务平均响应时间),CPU Using(CPU使用率),Mem Using(内存使用情况)等。
  6. 稳定测试(Endurance Testing)
    在一定软硬件环境下,长时间运行一定负载,确定系统在满足性能指标的前提下是否运行稳定。这里强调一下,稳定性测试并不是在极限状态下来运行的,这与上面第五条的压力/强度测试是不一样的。
    一般我们会在满足性能要求的负载情况下加大到1.5 ~ 2倍的负载量进行测试。
  7. TPS
    每秒完成的事务数,通常指每秒成功的事务数,性能测试中重要的综合性能指标。一个事务是一个业务度量单位。
    举个例子:
    比如支付操作,在后台系统可能会经历会员系统,财务系统,支付系统,会计系统,银行网关等,但是针对用户来说,我就想知道我从下单到付款成功共花费多长时间。
  8. RT/ART(Response Time/average Response Time)
    响应时间/平均响应时间,指一个事务花费多长时间完成。我们更多的时候,是统计很多次响应时间,然后去平均值,这样保证了时间的准确性,同时也更具代表性。
    通常,我们写RT,来代替ART。
  9. PV(Page View)
    每秒用户访问页面的次数。此参数是用来分析平均每秒有多少用户来访问页面
  10. Vuser(Virtual user)
    虚拟用户数。即模拟真实业务逻辑步骤的虚拟用户,虚拟用户模拟的操作步骤都被记录在虚拟用户脚本里。Vuser脚本用户描述Vuser在场景中执行的操作。
  11. 并发:
    并发最主要要有两点:点层面上和线层面上。
    ①点层面上的:
    例如:周一早上7:30半,小学生要统一到操场升国旗。
    即:同一时间做某件事
    ②线层面上的:
    例如:中午11:30-13:00,小学生有的跳皮筋,有的踢足球,但同时对服务器产生压力。
    即:一个时间段做不同的事
  12. 场景(Scenario)
    性能测试过程中为了模拟真实用户的业务处理过程,在LR中构建的基于事务、脚本、虚拟用户、运行设置、运行计划、监控、分析等一系类动作的集合,称之为性能测试场景。
    场景中包含:待执行的脚本、脚本组、并发数、负载生成器、测试目标、测试执行时的配置条件等。
  13. 思考时间(Think Time)
    模拟真实用户在实际操作过程中停顿的时间间隔。
    (1)从业务角度来讲:思考时间是用户在操作时,每个请求之间的时间间隔;
    (2)从测试脚本来讲:是两个请求语句之间的时间间隔。
  14. 标准差(Std. Deviation)
    根据数据统计的概念得来,标准差越小,说明波动越小,系统越稳定,反之,则说明系统不稳定。
    包含:响应时间标准差,TPS标准差,Running Vuser标准差,Load标准差,CPU Using标准差等等。

五、性能工具

  市面上的性能测试工具,还蛮多的,但是我们熟知,且使用最多的 JMeter 和Loadrunner这两款,那么,我们要怎么选性能测试工具、市面上又有哪些性能测试工具呢?
  别着急,我们慢慢介绍。

  1. 如何选择性能测试工具
    我们在选择工具的时候,无非从以下几个方面来考虑:
    ①专业,稳定,高效。
    ②简单易上手,在测试脚本上不需要花费太多时间。
    ③有技术支持,文档健全。
    ④投入与产出比。
  2. 常见性能工具有哪些
    ①HP公司的 Loadrunner
    ②Apache JMeter
    ③Grinder
    ④CompuWare 公司的QALoad
    ⑤Microsoft 公司的WAS
    ⑥RadView公司的WebLoad
    ⑦IBM公司的RPT
    ⑧OPENSTA等

  性能测试的核心不是选择什么工具,而是性能分析,重要的是思想,实现方式,这与选择什么工具,并无太大关系,
所以一定要分析主次。

六、通过标准

  判断性能测试是否通过,不仅是看TPS,RT,而是要从服务端性能,前端性能,和用户体验性能来分析。
  常见的测试通过标准如下:
在这里插入图片描述
以上为性能测试的一些知识整理
原文链接:https://blog.csdn.net/wuyoudeyuer/article/details/106940507

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值