• 多测师讲解——面试题之性能——高级讲师肖sir


    链接:
    http://www.duoceshi.com:8080/bbs/forum.php?mod=viewthread&tid=18697&highlight=%E6%80%A7%E8%83%BD

    性能测试工具:
    jemter--轻量级,java编写的 (接口,接口性能)
    loadrunner--重量级的,商业化 (有些功能需要收费)
    什么叫做性能测试?
    1. 软件的性能是软件的一种非功能特性,它关注的不是软件是否能在特定的功能。
    所以一般我们性能测试介入的时间点是在功能测试之后。
    另外,性能是一种指标,它可以用时间或者其他指标来衡量,通常我们性能测试会使用
    某些工具或者手段来检验软件的性能指标(需求规定或单独的性能需求文档)是否达到系统要求
    (目前更多关注的是接口的性能)
    2. 指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件下各种对
    系统进行测试来验证是否达到各项性能指标


    一、性能测试的流程有哪些?
    1、需求分析
    2、性能测试场景的设计
    3、性能测试计划的编写
    4、脚本开发
    5、性能环境和数据的准备
    6、性能的执行
    7、性能结果分析
    8、性能总结报告

    二、性能测试结束后需要提交哪些文件?
    1、性能的测试计划
    2、性能测试脚本
    3、性能结果分析---  根据分析结果给出调优方法
    4、性能的总结报告

    三、性能测试的类型
    1、基准测试:在给系统施加较低压力时,查看系统的运行状态情况并记录相关数据作为基础参考
    2、负载测试:是指对系统不断地增加压力或者在一定的增加压力下的持续时间,直到系统某项或者多项性能指标到达我们系统的安全临界值
    3、压力测试:压力测试是评估系统处于或者是超过预期负载时系统运行情况,关注点在于系统在峰值负载或者是超过峰值负载的情况下处理事务的能力
    4、稳定性测试(强度测试):在系统加载一定业务压力的情况下,使系统运行一段时间(一般时间在8小时以上),以此检测系统是否稳定
    5、并发测试:测试多个用户同时访问同一个应用(功能)、同一个模块或者数据记录时是否存在死锁或者其他问题。
    四、jmeter的基本结构
    1.test plan  (测试计划):测试计划是用来描述本次性能测试的需求,所有相关的内容都是基于该测试计划展开的。
    2.线程组:线程组可以理解为虚拟用户组
      a.线程数:表示虚拟用户数--50个虚拟用户数
      b. ramp-up period:用来设置虚拟用户多久时间加载完成--10s(表示50个虚拟用户在10s内完成加载,每秒加载5个虚拟用户)
      c.循环次数:如果没有勾选“永远”,每个线程发送请求的次数---2  (线程循环2次,线程内的线程数是50,总的请求数应该是100,也就是发送了100个请求)
       一般我们做一个长时间的一个并发测试或者是强度测试,需要勾选“永远”,这个可以保持每时每刻都会

    有相同的请求数一直发送到服务器
    调度器:主要用来控制我们运行的一个持续时间
    持续时间:要进行并发的具体的运行时间
    启动延长:定义一个时间,在这个时间内到达我们并发的一个具体值(如果设为10s,并发为200,那么在10s内,200个并且全部启动)
    启动开始:设置在什么时间点去执行
    启动结束:在什么时间点结束
    3、添加一个http请求
    名称:根据实际场景来取(自定义)
    协议:根据实际场景来取
    服务器名称或者ip地址:http请求发送的目标服务器名称或者ip地址
    端口号:目标服务器的端口号,默认是80端口,可以不用写
    方法:发送http请求的方法,常用方法:get、post
    路劲:目标url路劲(不包括服务器地址和端口号)

    自动重定向:如果选择了该选项,当发送http请求后得到的响应是301和302时,jmeter会自动重定向到新的页面
    user keepalive (持久长链接):勾选后,jmeter和目标服务器采用keep-alive方式通信
    use multipart/from-data for http post :当发送http post请求,需要勾选,同请求一起发送文件

    4、察看结果树:监控http请求结果的详细结果
    5、聚合报告:生成此次性能的测试数据报告
    所有时间单位都是ms。
    label :对应接口的名称
    samples :测试一共发出的请求总数
    average:平均响应时间
    median:中位数,这个值是指所有数据按照由小到大将其排序;取出中间的响应时间
    90%line:90%的用户的响应时间小于这个值
    min :所有请求中最小的响应时间
    max :所有请求中最大的响应时间
    error:错误的请求数/请求总数
    throughput:吞吐率---每秒完成请求数
    received:接受服务器的数据量
    sent:发送的数据量
    五、常见性能指标(重点)
    1.什么是吞吐量?
    在一次性能测试中网络传输数据量的总和
    2.什么是吞吐率?
    单位时间内服务器处理的请求数(req/s),描述其并发处理能力
    3.什么是事务?
    是脚本的一个特性,用来衡量脚本中一行代码或多行代码的执行所耗费的时间
    4.什么是响应时间?
    对请求作出响应所需要的时间
    5.什么是每秒点击事务数?
    TPS,衡量系统处理能力的一个非常重要的指标 (估算系统处理能力的拐点)
    6.什么是每秒点击数?
    每秒钟向web服务器提交的HTTP请求数,衡量服务器处理能力 (点击数为请求数,非鼠标点击数)
    7.并发 (同一时间内向服务器发送同一请求)
    并发3中情况:
    a: 所有用户同一时间内做同一件事或者同一个操作,这里的同一操作时指同一个业务类型,如我们同时提交订单(流程性)
    b: 所有用户同一时间内做同一件事或者同一个操作,同时修改一个数据,同时的一个操作,如我们一个流程中的具体环节
    c: 所有用户同一时间内对系统做不同的操作


    六、性能调优
    1. 硬件上的调优: CPU、内存、磁盘I/O
    (分为服务器硬件瓶颈、网络瓶颈(对局域网可以不考虑)、服务器操作系统瓶颈(参数配置)、
    中间件瓶颈(参数配置、数据库、web服务器等)、应用瓶颈(SQL语句、数据库设计、业务逻辑、算法))
    2. 应用软件上的性能瓶颈: 应用服务器、Web服务器、数据库系统 (JDBC连接池参数不合理导致瓶颈)
    JDBC连接池: 将已创建好的连接保存在池中。当有请求来时,直接访问数据库,省去了创建连接和销毁连接的过程,提高了性能
    基本原理是这样的:
    1) 建立数据库连接池对象(服务器启动)。
    2) 按照事先指定的参数创建初始数量的数据库连接(空闲连接数)。
    3) 直接从连接池中得到一个连接进行访问。若无空闲连接,且连接数未达最大(最大活跃连接数),创建一个新的数据库连接。
    4) 存取数据库。
    5) 关闭数据库,释放所有数据库连接(将其放入空闲队列中,如实际空闲连接数大于初始空闲连接数,则释放连接)。
    6) 释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。
    3. 应用程序上的性能瓶颈: 开发人员新开发出来的应用程序
    (程序架构规划不合理,程序本身设计有问题(串行处理、请求的处理线程不够),造成系统在大量用户访问时性能降低而造成的瓶颈)
    4. 操作系统上的性能瓶颈: Windows、UNIX、Linux等操作系统
    (性能测试时,出现物理内存不足时,虚拟内存设置也不合理,虚拟内存的交换效率就会大大降低,导致响应时间大大增加)
    5. 网络设备上的性能瓶颈: 防火墙、动态负载均衡器、交换机等设备
    (在动态负载均衡器上设置了动态分发负载的机制,当发现某个应用服务器上的硬件资源已经到达极限时,
    动态负载均衡器将后续的交易请求发送到其他负载较轻的应用服务器上)

    七、什么叫做性能测试?(目前企业更多的关注的是接口性能)
    1、软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,所有一般我们性能测试介入的时间点是在功能测试之后。另外,由我们的定义可知性能是一种指标,可以用时间或者其他指标来衡量,通常我们性能测试会使用某些工具或者某些手段来检验软件的性能指标(性能指标在需求中会有明确的规定,也有可能是单独存在的一个性能需求文档)是否达到了系统要求,这就是性能测试。

    2、指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件下各种对系统进行测试,来验证是否达到各项性能指标。

    3、为什么要进行性能测试?
    a.评估系统的能力
    b.验证系统的稳定性和可靠性
    c.职别系统中的弱点
    d.系统调优(性能测试的重点就是性能调优)
    针对我们以上的这几点,针对不同的结果,给出不同的应对措施和方案,这个才是我们性能测试的最终目的

    1)测试中得到的负荷和响应时间数据可以被用来验证我们模块的能力
    2)受控的负荷可以被增加到一个极端的水平,并突破它,从而修复系统的瓶颈或者薄弱的地方
    3)重复运行测试,验证调整系统的活动得到的预期的结果,从而改进性能
    4)检测软件中的问题:长时间的测试执行可导致程序发生内存泄露引起的失败,找到我们软件中隐藏的问题
    5)在一个生产负荷下执行一段时间是评估我们系统稳定性和可靠性是否满足要求的唯一方法

    八、性能指标归纳有哪些?
    性能测试的指标
    响应时间:用户从客户端发出请求,并得到响应,以及展示出来的整个过程的时间。
    加载速度:通俗的理解为页面内容显示的快慢。
    内存占用:APP的内存开销。
    电量:APP的耗电量。
    流量:APP所消耗的流量
    并发用户数:同一时间点请求服务器的用户数。
    吞吐量(TPS):Transaction Per Second, 每秒事务数。在没有遇到性能瓶颈时:TPS=并发用户数*事务数/响应时间。
    错误率:失败的事务数/事务总数。
    资源使用率:CPU占用率、内存使用率、磁盘I/O、网络I/O。
    最佳并发用户数:用户无等待时间,资源无浪费时的并发数。
    最大并发用户数:被所有用户接受的最大响应时间时的并发数。
    QPS,
    点击率,
    磁盘IO;
    吞吐率:

    tps:
    事务:

  • 相关阅读:
    jquery:class选择器(父子关系)
    jquery:跳转网页
    jquery:获得当前点击对象 : $(this)
    jquery:向后台提交数组
    03 适配器 代理 外观 装饰者
    02 工厂模式
    01 单例模式 Singleton
    设计模式概论与原则 & UML类图
    06 JDBC & ORM
    05 注解与反射 & JVM
  • 原文地址:https://www.cnblogs.com/xiaolehua/p/13869556.html
Copyright © 2020-2023  润新知