• 性能测试核心流程和概念


    01性能测试流程

    在很多同学的概念中,性能测试就是使用Loadrunner、Jmeter等工具进行压测,然后得到测试结果即可,但仔细想想,对谁进行测试?测试目的是什么?监测指标有哪些?得到的结果如何分析(怎样的结果算通过)等等。

    所以使用工具压测只是性能测试最基础的一个步骤,下面先来看看性能测试的一般流程:

    • 业务学习:通过查看需求文档、PRD等相关文档+手工操作来了解系统功能; 
    • 分析需求:分析系统的非功能需求,圈定性能测试的范围,了解系统性能指标; 
    • 工作评估:工作量分解,评估工作量,计划资源投入(需要多少硬件资源,多少人力、时长来完成测试工作)。 
    • 设计模型:可以理解为测试场景,是单一测试场景还是混合测试场景; 
    • 编写计划:测试计划应明确列出测试范围、人力投入、持续时间、工作内容、风险评估、风险应对策略等; 
    • 准备测试环境:准备服务器(部署被测系统),负载机(安装压测工具,产生负载的机器)
    • 准备测试数据:根据测试场景(设计模型)准备数据,原因有两个:a、有些数据是支撑系统运行的基础(比如我们要对登录进行压测,首先需要准备一些注册好的账号);b、不同量级数据影响性能结果(比如从不同量级的数据库查询结果,时间肯定不一样),至于准备什么量级的数据则需要跟项目实际情况来设计;
    • 开发脚本:根据测试场景,测试用例开发测试脚本(录制或手动编写); 
    • 测试执行:运行测试; 
    • 缺陷管理:跟踪测试过程中发现的缺陷; 
    • 性能分析:对性能测试结果进行分析,是否满足预期目标,如果不满足则需找出原因; 
    • 性能调优:根据上一步的分析,尝试优化系统; 
    • 测试报告:对测试工作进行总结,报告测试结果,发现的问题等 
    • 评审:对性能报告中的内容进行评审,确认问题、评估上线风险。虽然有时候性能测试结果不理想,但基于时间和成本等方面的考虑也会上线,后续再快速迭代。

    性能测试交付件:

    • 测试计划

    • 测试脚本

    • 测试程序

    • 测试报告

    02性能测试成功要素

    性能测试上手较难,是一门融合测试、开发、运维、需求调研、架构、协调管理等综合技能的学科,掌握一个测试工具只是最基础的一步。

    性能测试有几大难点:

    • 需求分析

    • 场景设计

    • 性能诊断调优

    • 环境搭建和模拟

    03性能测试常用术语

    (1)负载:模拟用户操作对服务器造成压力的过程,比如模拟100个用户同时登录; 

    (2)性能测试(Performance Test):在指定的负载情况下,系统性能指标(响应时间、吞吐量等)是否满足要求; 

    (3)负载测试(Loading Test):

    在一定的硬件环境前提下,通过不断的增加负载(不同的虚拟用户数)来确定满足性能指标情况下所能够承受的最大并发用户数。简单来说,就是帮我们对系统进行定容定量,找出系统性能拐点,给予生成环境规划建议。

    这里说的性能指标包括:

    • TPS(每秒事务数)

    • RT(事务平均响应时间)

    • CPU Using(CPU利用率)

    • Memory Using(内存利用率)等

    (4)压力/强度测试:

    在一定的软硬件环境下,通过高负载的手段来使服务器资源(强调服务器资源,硬件资源)处于极限状态,测试系统在极限状态下长时间运行十分稳定,确定是否稳定的指标包括TPS、RT、CPU利用率、内存利用率等;

    (5)稳定性测试:

    在一定软硬件环境下,长时间运行一定的负载,确定系统在满足性能指标的前提下是否运行稳定。与上面的压力/强度测试区别在于负载并不强调在极限状态下,一般使用目标负载的1.5~2倍的负载数量进行测试; 

    (6)TPS:每秒完成事务数

    事务是指一个操作集合,不同场景中事务所包含的操作不同,这个概念我们后续结合实例介绍

    (7)RT:响应时间

    指一个事务花费多长时间完成,为了使这个值更具代表性,会统计平均值,也就是ART,不过一般说RT就是指平均响应时间。

    (8)PV(Page View):每秒用户访问页面的次数

    此参数可以帮助我们分析平均每秒有多少个用户访问页面

    (9)Vuser(Virtual User):虚拟用户

    用来模仿真实用户进行操作;

    (10)Concurrency(并发):

    • 狭义并发:虚拟用户在同一时刻做同一件事情或操作,这种操作一般针对同一类型的业务,或者所有用户进行完全一样的操作,目的是测试数据库和程序对并发操作的处理。

    • 广义并发:虚拟用户对系统进行操作,但操作可以不同;

      狭义并发多适用于单一测试场景,广义并发多适用于混合测试场景、稳定性测试场景;

    (11)场景(Scenario):模拟真实用户某个操作的过程,这个过程就可以称为一个场景,我们举个论坛系统的例子:

    • 单一场景:用户登录,单单这个login的动作就是一个场景;

    • 混合场景:用户发帖场景,可能包含以下几个动作,先登录,打开发帖页,输入文字,选择板块,发帖,这几个动作组成了一个发帖的混合场景;

    (12)思考时间(Think Time):因为用户在进行操作时,每个操作是有时间间隔的,对应到脚本中,就是两个请求脚本之间的时间间隔

    04性能测试通过标准

     

  • 相关阅读:
    P2149 [SDOI2009]Elaxia的路线
    P1346 电车
    P3174 [HAOI2009]毛毛虫
    P3047 [USACO12FEB]附近的牛Nearby Cows
    P4053 [JSOI2007]建筑抢修
    P2607 [ZJOI2008]骑士
    [HNOI2006]马步距离
    [POI2014]Hotel
    [BZOJ3856]Monster
    [BZOJ2819]Nim
  • 原文地址:https://www.cnblogs.com/x666-6/p/15380802.html
Copyright © 2020-2023  润新知