zoukankan      html  css  js  c++  java
  • 多测师讲解性能测试_面试题_001高级讲师肖sir

    什么叫做性能测试?
    1、 软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完
    成特定的功能,所以一般来说性能测试介入的时机是在功能测试完成之
    后。另外,由定义中的及时性可知性能也是一种指标,可以用时间或其
    它指标来衡量,通常我们会使用某些工具或手段来检测软件的某些指标
    是否达到了要求,这就是性能测试。
    2、指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系
    统的各项性能指标进行测试

    为什么要做性能测试?
    1、评估系统的能力
    2、验证系统的稳定性和可靠性
    3、识别系统中的弱点
    4、系统调优
    ? 针对上面这几种目的,针对不同的结果,给出不同的应对方案和措施,这才是性
    能测试的最终目标
    ? a、测试中得到的负荷和响应时间数据可以被用于验证所计划的模型的
    能力,并帮助作出决策。
    ? b、受控的负荷可以被增加到一个极端的水平,并突破它,从而修复
    体系的瓶颈或薄弱的地方。
    ? c、重复运行测试,验证调整系统的活动得到了预期的结果,从而改
    进性能。
    ? d、检测软件中的问题:长时间的测试执行可导致程序发生由于内存
    泄露引起的失败,揭示程序中的隐含的问题或冲突。
    ? e、在一个生产负荷下执行测试一定的时间是评估系统稳定性和可靠
    性是否满足要求的唯一方法。

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

    性能测试的类型
    1. 基准测试:在给系统施加较低压力时,查看系统的运行状况并记录相关数做为
    基础参考
    2. 负载测试:是指对系统不断地增加压力或增加一定压力下的持续时间,直到系
    统的某项或多项性能指标达到安全临界值,例如某种资源已经达到饱和状态等 。
    3. 压力测试:压力测试是评估系统处于或超过预期负载时系统的运行情况,关注
    点在于系统在峰值负载或超出最大载荷情况下的处理能力。
    4. 稳定性测试:在给系统加载一定业务压力的情况下,使系统运行一段时间,以
    此检测系统是否稳定。
    5. 并发测试:测试多个用户同时访问同一个应用、同一个模块或者数据记录时是
    否存在死锁或者其他性能问题
    1、性能测试包含了那些测试
    负载测试,强度测试,数据库容量测试,基准测试以及竞争测试

    2、性能测试的步骤
    1、需求分析、写测试计划、设计测试用例
    2、测试设计和开发(测试脚本录制及调试,测试场景设计)
    3、测试执行(大家测试环境、场景部署、场景执行、监视场景)
    4、测试结果分析、性能问题定位、测试报告的评估

    3、什么时候可以开始执行性能测试
    功能通过后,一般需要进行性能测试的系统,都是用户量比较大,业务使用比较
    频繁,比较重要的功能模块(被测系统的正常业务流程通过,即集成
    测试通过后)

    4、什么是集合点?设置集合点有什么意义?
    在性能测试过程中,需要模拟大量用户在同一时刻,访问系统并同时操作某一
    任务,可以通过配置集合点来实现,多个用户同时进行某操作。

    5、你如何识别系统瓶颈
    从TPS指标分析(系统每秒处理可以处理事务数)当前随着用户数的增长
    其系统每秒可处理的事务数是否也会增长
    TPS每秒事务数,指服务器在单位时间内(秒)可以处理的事务数量,一般以
    request/second为单位

    6、参数化的目的是?
    减少脚本的大小,提供不同的值以提高执行脚本的能力,从而更加真实的
    模拟生成环境的数据

    7.如何发现数据库的相关问题?
    通过运行某些相应的已获取的SQL语句,判断是否由于数据库索引所导致的事务响
    应过长的问题发生。
    通过实时监控工具(nmon等)监控分析:系统在运行过程中其CPU是否稳定运行或CPU
    耗用是否过高;
    在系统运行过程中其内存是否存在内存泄漏现象

    8、如何确定系统最大负载?
    通过负载测试,不断增加用户数,随着用户数的增加,各项性能指标也会相应产生
    变化,当出现了性能拐点,
    比如,当用户数达到某个数量级时,响应时间突然增长,那么这个拐点处对应的用
    户数就是系统能承载的最大用户数

    9、你们系统哪些地方(哪些功能)做了性能测试?
    选用了用户使用最频繁的功能来做测试,比如:登陆,搜索,提交订单

    10、你们的并发用户数是怎么确定的?
    1会先上线一段时间,根据收集到的用户访问数据进行预估
    2根据需求来确定(使用高峰时间段,注册用户数,单次响应时间等

    11、你们性能测试在什么环境执行?
    我们会搭建一套独立的性能测试环境进行测试

    12、你们性能测试什么时间执行?
    基准测试:功能测试之后,系统比较稳定的时候再做。
    负载测试:夜深人静,系统没人用的时候

    13、怎么分析性能测试结果?
    首先查看事物通过率,然后分析其他性能指标,比如,确认响应时间,事务通过率
    ,CPU等指标是否满足需求;
    如果测试结果不可信,要分析异常的原因,修改后重新测试

    14、think_time的作用是什么?
    模拟真实生产用户操作,考察对服务器所造成的影响。

    15、你们的性能测试需求哪里来?
    1客户提供需求
    2运维提供需求
    3开发提供需求

    16、有验证码的功能,怎么做性能测试?
    1、将验证码暂时屏蔽,完成性能测试后,再恢复
    2、使用万能的验证码

    17、性能测试指标有哪些
    响应时间
    吞吐量
    cpu
    内存
    io(I/O输入/输出(Input/Output),分为IO设备和IO接口两个部分)
    disk (磁盘的意思)

    18、什么是负载测试?什么是性能测试?
    负载测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能
    指标的情况下,
    系统所能承受的最大负载量的测试,例如,访问一个页面的响应时间规定不超过1
    秒,
    负载测试就是测试在响应时间为1秒时,系统所能承受的最大并发访问用户的数量

    性能测试:指在一定的约束条件下(指定的软件、硬件、网络环境等),确定系统
    所能承受的最大负载压力

    19.性能测试的类型:基准测试、负载测试、压力测试、稳定性测试、并发测试

    20、常见的性能指标(重点)
    (1)什么是吞吐量?
    吞吐量,指的是单位时间内处理的客户端请求数量。通常情况下,吞吐量用请求
    数/秒Or页面数/秒来衡量。从业务角度看,吞吐量也可以用访问人数/天Or页面访
    问量/天来衡量。

    (2)什么是吞吐率?
    吞吐率通常指单位时间内从服务器返回的字节数,也可以单位时间内客户提交的
    请求数。吞吐率是大型web系统衡量自身负载能力的一个重要指标,一般来说,吞
    吐率越大,单位时间内处理的数据就越多,系统的负载能力也强。吞吐率与很多因
    素有关,服务器的硬件配置,网络的宽带及拓扑结构,软件的技术架构。

    (3)什么是事务?
    定义一:某个用户操作步骤(功能)的集合。
    定义二:性能测试中,事务是指从端到端,一个完整的操作过程,比如一次登录
    、一次筛选条件查询,一次支付,一次发朋友圈;无论流程步骤是多是少,一定要
    保证事务存在的意义性。

    事务是脚本的一个特性,每个事务都包含开始事务和结束事务。事务用来衡量脚
    本中一行代码或多行代码的执行所耗费的时间。
    将开始事务放置在脚本中某行代码的前面,将结束事务放置在该行代码的后面,在
    该脚本的虚拟用户运行时,这个事务将衡量该行代码的执行花费了多长时间。

    (4)什么是响应时间?
    对请求作出响应所需要的时间。

    (5)什么是每秒点击事务数?
    TPS表示服务器每秒处理的事务数,他是衡量系统处理能力的一个非常重要的指
    标,在性能测试中,通过检测不同用户的TPS,可以估算出系统处理能力的拐点。

    (6)什么是每秒点击次数?
    每秒点击数是指每秒钟向web服务器提交的HTTP请求数,它是衡量服务器处理能
    力的一个常用指标。需要注意的是,这里的相应时间并非鼠标的一次单击操作,因
    为在一次单击操作中,客户端可能向服务器发出多个HTTP请求,切勿混淆。

    (7)并发:
    同一时间内向服务器发送同一请求
    并发的3种情况:
    ? a、所有用户同一时间内做同一件事情或者同一个操作,这里同一个操作是指
    同一个业务类型,如同时提交订单(流程性)
    ? b、所有用户同一时间内做同一件事情或者同一个操作,同时修改一个数据,
    同时一个操作(一个流程中的具体环节)
    ? c、所有用户同一时间内对系统做不同的操作
    所有用户包含如下:
    a、注册用户:当前平台有多少人注册了
    b、在线用户:当前平台有多少人在线
    c、并发用户:测试过程中需要进行测试同一时刻操作的用户(测试数据)

    (8)什么是断言/检查点?
    响应会有2种情况:
    第一:正确的响应
    第二:错误的响应

    jmeter中有个元器件叫做断言(Assertion),它的作用和loadrunner中的检查点
    类似,用于检查测试中得到的响应数据等等是否符合预期结果,用以保证性能测试
    中的数据交互与预期一致。
    使用断言的目的:在request的返回层增加一层判断机制;因为request成功了,
    并不代表结果一定正确;所谓的检查点,就是系统根据用户输入,按照业务要求的
    逻辑处理后产生的数据,不同的业务场景、不同的结果会有不一样的要求;部分输
    出是在客户的需求中明确要求展示;比如展示的字段可以直接观察到或者获取到,
    部分输出是服务于系统维护人员、客服人员;当然还有部分输出也不包括不能输出
    或者加密输出;比如客户的银行账号要求部分数字用*号来代替,客户的密码不能
    在日志中输出等等;检查点的检查包括客户或者系统质量要求的必须输出的或者不
    应该输出的两种情况。

    (9)什么是参数化?
    参数化是自动化测试脚本中的一种常用技巧。简单来说,参数化的一般用法就是
    将脚本中的某些输入使用参数来代替,在脚本运行时指定参数的取值范围和规则;
    这样脚本在运行时就可以根据需要选取不同参数值作为输入。
    这种方式通常被称为数据驱动测试(Data Driven Test),参数的取值范围被称为
    数据池(Data Pool)

    21、性能调优
    1、硬件上的调优
    一般指的是CPU、内存、磁盘I/O 方面的问题,分为服务器硬件瓶颈、网络瓶颈
    (对局域网可以不考虑)、服务器操作系统瓶颈(参数配置)、中间件瓶颈(参数
    配置、数据库、web服务器等)、应用瓶颈(SQL 语句、数据库设计、业务逻辑、
    算法等)。
    2、应用软件上的性能瓶颈
    一般指的是应用服务器、web服务器等应用软件,还包括数据库系统。
    例如:中间件weblogic平台上配置的JDBC连接池的参数设置不合理,造成的瓶颈

    注意:JDBC连接池: 连接池的作用:连接池是将已经创建好的连接保存在池中
    ,当有请求来时,直接使用已经创建好的连接对数据库进行访问。这样省略了创建
    连接和销毁连接的过程。这样性能上得到了提高。
    3、应用程序上的性能瓶颈
    一般指的是开发人员新开发出来的应用程序。
    例如,程序架构规划不合理,程序本身设计有问题(串行处理、请求的处理线程
    不够),造成系统在大量用户方位时性能低下而造成的瓶颈。
    4、操作系统上的性能瓶颈
    一般指的是windows、UNIX、Linux等操作系统。
    例如,在进行性能测试,出现物理内存不足时,虚拟内存设置也不合理,虚拟内
    存的交换效率就会大大降低,从而导致行为的响应时间大大增加,这时认为操作系
    统上出现性能瓶颈。
    5、网络设备上的性能瓶颈
    一般指的是防火墙、动态负载均衡器、交换机等设备。
    例如,在动态负载均衡器上设置了动态分发负载的机制,当发现某个应用服务器
    上的硬件资源已经到达极限时,动态负载均衡器将后续的交易请求发送到其他负载
    较轻的应用服务器上。在测试时发现,动态负载均衡器没有起到相应的作用,这时
    可以认为网络瓶颈。

    22、Jmeter线程组中元器件的作用
    1. 逻辑控制器:业务上有需要循环去处理一些数据。
    2. 配置元器件:处理一些默认请求所需要携带的数据如http的头部信息和cookie
    信息的处理。
    3. 前置处理器:http请求之前需要完成的一些工作,如数据库测试中的连接数据
    库的功能。
    4. 后置处理器:关联需要用后置处理器,需要对响应数据做处理需要用到后置处
    理器
    5. 断言:对结果进行校验
    6. 监听器:作用范围的每一个sample元件的信息并呈现。
    7. CSV Data Set Config
    8. 定时器:(重点)
    loadrunner中集合点可以设置多个虚拟用户等待到一个点,同时触发一个事务,
    以达到模拟真实环境下多个用户同时操作,实现性能测试的最终目的。jmeter中使
    用Synchronizing Timer实现Lr中集合点的功能,模拟多用户并发测试,即多个线
    程在同一时刻并发请求。
    1)添加同步定时器
    线程组右击-> 定时器->Synchronizing Timer
    2)参数设置
    a. Number of Simulated Users to Group by: 此处填写并发数量
    b. Timeout in milliseconds: 超时时间设置
    Jmeter默认没有超时时间,如果没有设置,一旦没有达到集结数量的请求系统就
    一直等待。计算超时时间方法参考(毫秒): 并发数量* 1000 / (线程数/在多少
    时间启动这么多线程)
    3)定时器的作用域
    作用于该定时器之后的所有请求,也就是说定时器是在请求执行前起作用的并发
    数和线程数一致时,并发启动时间,一定要大于线程组启动的时间,如果小于这个
    时间,并发数量不准确(注意:线程组里的启动时间单位是秒,定时器里的等待时
    间是毫秒,要注意单位换算,1秒=1000毫秒)
    4)常用的性能指标插件
    jp@gc - BytesThroughput Over Time:不同时间吞吐量展示(图表)聚合报告里
    ,Throughput是按请求个数来展示的,比如说1.9c,就是每s发送1.9个请求;而这
    里的展示是按字节Bytes来展示的图表
    jp@gc - Composite Graph:混合图表在它的Graphs里面可以设置多少个图表一
    起展示,它可以同时展示多个图表
    jp@gc - Hits perSecond:每秒点击量
    jp@gc - PerfMonMetrics Collector:服务器性能监测控件,包括CPU,Memory
    ,Network,I/O等等
    jp@gc - ReponseLatencies Over Time:记录客户端发送请求完成后,服务器端
    返回请求之前这段时间
    jp@gc - Reponse TimesDistribution: 显示测试的响应时间分布,X轴显示由
    时间间隔分组的响应时间,Y轴包含每个区间的样本数
    jp@gc - Transactionsper Second: 每秒事务数,服务器每秒处理的事务数

  • 相关阅读:
    MY_0003:设置界面显示单位
    H5_0024:对于事先无法确定css大小的情况,可以通过JS动态修改
    H5_0023:html页面禁止放大缩小页面
    MY_0002:导出单位设置
    MY_0001:添加命令到自定义工具栏
    H5_0020:判断安卓苹果平台
    Web_0003:关于PHP上传文件大小的限制
    H5_0019:JS中定义json结构
    H5_0018:z-index失效的原因
    H5_0017:通过元素自定义属性值获取元素对象,并获取属性值
  • 原文地址:https://www.cnblogs.com/xiaolehua/p/13718921.html
Copyright © 2011-2022 走看看