性能测试基础知识点

    科技2024-12-06  15

    第一章、性能测试介绍 什么是性能测试 性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。 负载测试和压力测试都属于性能测试,两者可以结合进行。 通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。 压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。 为什么要做性能测试 性能测试原理 通过模拟大量用户各种行为,监测服务器的各项性能指标情况,从而得到服务器的性能结果 第二章、性能测试分类 1、性能测试(狭义) (我告诉大家我能举重100公斤,性能测试就是让我举100公斤试试,验证一下我的能力)   性能测试方法是通过模拟生产运行的业务压力量(虚拟用户虚拟并发用户线程组)和使用场景(比如:登录+查询购物车)组合,测试系统的性能是否满足生产性能要求。通俗地说,这种方法就是要在特定的运行条件下验证系统的能力(1、响应时间 2、吞吐量3、系统内存、系统CPU 4、并发用户)状态。 特点: 1、这种方法的主要目的是验证系统是否有系统宣称的能力。(比如我宣称维度电商可以承受100个用户的并发,狭义的性能测试就是: 直接拿100个用户去并发请求,验证是否系统真的能够承受100个用户的并发) 2、这种方法要事先了解被测试系统经典场景,并具有确定的性能目标。 3、这种方法要求在已经确定的环境下运行。 也就是说,这种方法是对系统性能已经有了解的前提,并对需求有明确的目标,并在已经确定的环境下进行的。 2、负载测试 (不知道能举多重,那就一直加,直到发现我最多能举重100公斤) 我不清楚我的系统能承受多少并发用户?负载测试就是不断增加并发用户 100个系统正常,那就200个,直到找到系统的极限 通过在被测系统上不断加压,直到性能指标达到极限,例如“响应时间”超过预定指标或都某种资源已经达到饱和状态。 特点: 1、这种性能测试方法的主要目的是找到系统处理能力的极限。 2、这种性能测试方法需要在给定的测试环境下进行,通常也需要考虑被测试系统的业务压力量和典型场景、使得测试结果具有业务上的意义。 3、这种性能测试方法一般用来了解系统的性能容量,或是配合性能调优来使用。 也就是说,这种方法是对一个系统持续不段的加压,看你在什么时候已经超出“我的要求”或系统崩溃。

    3、压力测试(强度测试) (例子:我最多能举起来100公斤,那么就让我一直举80公斤着不能放下,看看能坚持多久,是否稳定) 压力测试方法测试系统在一定饱和状态下,例如cpu、内存在饱和使用情况下,系统能够处理的会话能力,以及系统是否会出现错误 特点: 1、这种性能测试方法的主要目的是检查系统处于压力性能下时,应用的表现。 2、这种性能测试一般通过模拟负载等方法,使得系统的资源使用达到较高的水平。 3、这种性能测试方法一般用于测试系统的稳定性。 也就是说,这种测试是让系统处在很大强度的压力之下,看系统是否稳定,哪里会出问题。

    4、并发测试 (注重并发请求同一个模块,这也是狭义上的并发) 并发测试方法通过模拟用户并发访问,测试多用户并发访问同一个应用、同一个模块或者数据记录时是否存在死锁或其者他性能问题。 特点: 1、这种性能测试方法的主要目的是发现系统中可能隐藏的并发访问时的问题。 2、这种性能测试方法主要关注系统可能存在的并发问题,例如系统中的内存泄漏、线程锁和资源争用方面的问题。 3、这种性能测试方法可以在开发的各个阶段使用需要相关的测试工具的配合和支持。 也就是说,这种测试关注点是多个用户同时(并发)对一个模块或操作进行加压。

    5、可靠性测试 (注重长时间稳定运行,而压力测试注重在高压下的稳定时间) 在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。 特点: 1、这种性能测试方法的主要目的是验证是否支持长期稳定的运行。 2、这种性能测试方法需要在压力下持续一段时间的运行。(2~3天) 3、测试过程中需要关注系统的运行状况。

    也就是说,这种测试的关注点是“稳定”,不需要给系统太大的压力,只要系统能够长期处于一个稳定的状态。

    6、配置测试 配置测试方法通过对被测系统的软\硬件环境的调整,了解各种不同对系统的性能影响的程度,从而找到系统各项资源的最优分配原则。 特点: 1、这种性能测试方法的主要目的是了解各种不同因素对系统性能影响的程度,从而判断出最值得进行的调优操作。 2、这种性能测试方法一般在对系统性能状况有初步了解后进行。 3、这种性能测试方法一般用于性能调优和规划能力。 也就是说,这种测试关注点是“微调”,通过对软硬件的不断调整,找出这他们的最佳状态,使系统达到一个最强的状态。 第三章、性能测试常用指标 响应时间 响应时间是什么 站在用户角度来说,你可以将软件性能看作是软件对用户操作的响应时间。 说得更明直白点,对用户来说,当单击一个按钮或链接,从用户单击开始到应用系统把本次操作的结果以用户识别的方式展示出来,这个过程所消耗的时间就是用户对软件性能的直观印象。 响应时间过程分析 我们需要对这个过程进行分解,才能得到你真正想要的响应时间。我把整个过程分三个部分:呈现时间,数据传输时间和系统处理时间。

    1、呈现时间 浏览器对接收到数据的一个处理展示的过程。 浏览器接收到服务器传递的数据,需要先对数据做解析,然后根据数据再将视图展现出来(这个过程也就做渲染过程)渲染过程受浏览器及页面复杂程度影响。比如同一台电脑同一个网站,Chrome去访问,页面的呈现速度会比IE略快

    2、数据传输时间 数据再互联网中传输过程中所消耗的时间 千万不要忽视数据传输时间。如果你要寄信给你一个远方的朋友,你想是什么影响你朋友收到信的时间的?不是你写信的过程(如果你写的信不像书一样厚的话),也不是你朋友读信的过程,而是送信的过程。 拿我们系统的数据传输过程来说,我们发送一个请求需要时间,系统处理完后返回给我们也需要时间。带宽的多少会对数据传输有很大的影响, 互联网是个网,就是算是相同的起点与终点,它有可能走的不同的路线。需要考虑网络延迟,就算你的发出请求都能成功的发出,但到目的地的时候,已经不能叫并发了。 这也是为什么我们在一般做性能测试时,一般要强调要在局域网中进行。当然,有些性能测试需要在互联网中时行。但它们重点不是验证服务器端的最大处理能力。 3、系统处理时间 当系统得到请求后会对请求进行处理并将结果返回。 那我进行性能测试主要就是验证系统的处理时间,因为前面的呈现时间和数据传输时间都是我们不可控制的,用户使用的电脑及浏览器千差万别,用户的网络状况千差万别。我们唯一能控制的就是将系统的处理请求的时间缩到最短。 一般性能测试场景

    2-5-8原则 当用户能够在2秒以内得到响应时,会感觉系统的响应很快; 当用户在2-5秒之间得到响应时,会感觉系统的响应速度还可以; 当用户在5-8秒以内得到响应时,会感觉系统的响应速度很慢,但是还可以接受; 而当用户在超过8秒后仍然无法得到响应时,会感觉系统糟透了,或者认为系统已经失去响应,而选择离开这个Web站点,或者发起第二次请求。 吞吐量/吞吐率 吞吐量:指在一次性能测试过程中网络上传输的数据量的总和。 吞吐量指标反映的是服务器承受的压力,在容量规划的测试中,吞吐量是一个重点关注的指标,因为它能够说明系统级别的负载能力,另外,在性能调优过程中,吞吐量指标也有重要的价值。

    吞吐率:单位时间内网络上传输的数据量,也可以指单位时间内处理客户请求数量。单位时间内网络上传输的数据量,也可以指单位时间内处理客户请求数量。它是衡量网络性能的重要指标,通常情况下,吞吐率用“字节数/秒”来衡量,当然,你可以用“请求数/秒”和“页面数/秒”来衡量。其实,不管是一个请求还是一个页面,它的本质都是在网络上传输的数据,那么来表示数据的单位就是字节数。

    TPS 事务:事务是指服务器响应用户请求所用的时间。 一个完整的事务是由事务开始,一个或多个业务操作以及事务结束组成的。 可以把一个事务看成一件事情,比如登录到打开首页。

    TPS:每秒钟系统能够处理事务或交易的数量,它是衡量系统处理能力的重要指标。 并发用户数 同一时间向服务器发送的请求用户数量 资源利用率 CPU利用率 服务器CPU的使用率, 不允许超过70-80% 内存利用率 服务器内存的使用率, 80%以下 带宽利用率 用户请求服务器时,占用的网络带宽比例

    第四章、性能测试中的28原则 所谓2-8原则,即80%的bug多发生在软件的20%的模块。所以,在回归测试的时候,这20%的高发地带是关注的重点! 二八原则还指:80%的业务量在20%的时间里完成。

    Processed: 0.009, SQL: 8