性能测试实战(一):性能测试入门

一、入门知识

1、先抛出个问题:需求文档中,有一个性能测试需求,你怎么入手?

(1)怀疑需求,通常提需求的人是产品经理,假设他不懂性能测试,那么这个需求很可能就是拍脑袋;

(2)确认需求,通常需要根据实际数据来分析,这些数据通常是运维的数据,得找他们拿,来判断产品需求的准确性;

(3)掌握概念,通常需要根据实际数据分析出具体要测试的对象,当然,前提是掌握性能测试概念,并通过概念去明确测试点;

(4)脚本设计,通常需要先分析用户的行为,并设计一个符合用户使用的场景,这些信息都是通过运维数据展现出来的;

(5)搭建环境,环境包括代码运行环境、指标监控环境,且必须是一个独立的环境;

(6)性能分析,首先是执行测试,过程中遇到的问题需要分析调优。

2、性能概念

(1)IT中的性能概念,最明显的感受是响应时间,稳定性,同时支持多少人使用

(2)那么性能是什么?

性能是用不同的角度,来衡量被测对象,给出一些数据,并通过这个数据判断性能好坏。

(3)如何连接服务器?

接口采用协议,传递数据到我们的服务器,收到响应

(4)性能测试是什么?

他是通过工具,找出或获得系统不同情况下的性能指标值

(5)为什么要通过工具?

服务器端性能测试,是要用多用户发起请求,通过工具才能更好地实现多用户请求(模拟)

(6)常用工具

jmeter(线程)、loadrunner(线程或进程)、ngrinder(进程+线程)、locust(协程)

(7)找出或获得什么?

第一次做性能测试,得到数据,找出性能数据(如用户数据)

不是第一次性能测试,获取新的性能测试数据(如模块的请求数据)

(8)数据

从不同的角度衡量服务器的性能数据

时间:平均响应时间数据

同一时间有多少并发用户数请求:并发用户数数据

服务器每秒能处理多少个事物:TPS数据

服务器在一段时间中,资源使用情况:资源利用率数据

网络:吞吐量、吞吐率

总之,性能测试完成,得到一批性能指标数据

二、常见问题

1、对用户的理解

(1)多少在线用户:在线,但是不请求;在线,同时有请求

行业中,一般用在线用户的5%-10%作为并发用户数;

而二八法则(80%的请求发生在20%的时间里,可粗略估算并发量)来自于前端性能测试,调用前端接口请求服务器,如loadrunner的录制脚本,但一般不采用这种方式;

(2)多少在线使用用户:在线,同时有请求

2、如果没有互踢机制,一个用户请求100次和100个用户请求一次有区别么?

有。影响因素可能有2个,一是身份信息,二是用户锁。

3、并发和并行的区别

并发指的是同一个时间点有多少个请求,而并行指的是同时在做(可以是不同线程处理,即不同通道)

三、性能测试相关概念

1、负载测试

通过逐步增加并发用户数,来找出我们最大并发用户数区间

常用于第一次性能测试的时候,找出的用户数据;因为这个时候并不知道系统的最大支持多少并发用户数;然后可通过工具来模拟这些数据,来进行性能测试,再继续找出新的性能测试数据,如性能指标值

怎么判断是最大并发用户数区间?

(1)、看请求的结果是否有连续性的报错出现,错误<=0.1%;

(2)、平均响应时间(在当前并发用户数时的平均响应时间)不超过1.5秒(行业对接口的默认标准,而且仅限于http的后端接口,可理解为用户满意、用户能接受的响应时间);并发用户数指的是在一段时间发多少请求,与频率有关系;总的请求数=并发用户数*频率*时间

(3)、tps(服务器每秒处理的事物数)趋势,有明显下降 (用区间下沿与区间上沿在设计一个负载场景,如可能之前用步长10找到的去区间20到30的时候有明显下降(表示为[10,100,10]),这个时候可以设计负载场景的步长为1,这样在某个值出现明显下降后,则可确认具体值为前一个,表示为[20,30,1])

上述三者任意一个出现,则找出了最大可接受的并发用户数.

一般而言,你们的产品如果日均访问量大概在百万级别,实际的接口并发可能只是几十到小几百的并发用户数。

负载测试中,每一段并发用户数,持续运行时间,一般只要几十秒到几分钟就可以了。

2、压力测试

使用一定量的并发用户数(产品最大可接受的并发用户数,为20%、80%的用户数都是可以的),持续运行一段时间(一般以小时为单位,以前以天为单位),看服务器稳定性

那么稳定性测试与压力测试有什么区别?稳定性测试其实是压力测试的一种,它的一个子集。压力测试可选多种百分比情况来测试,而稳定性测试选择一种即可(如直接指定80%)。

现在压力测试时间,一般用小时为单位。

3、性能测试

广义的性能测试,是包括我们性能的所有概念。

(1)性能测试前提

核心系统或核心功能增加

某接口的用户使用量变多

架构调整

重大缺陷修复

涉及生命财产

业务剧增

性能指标量化

        产品出现需求,不一定专业

        需求性能指标一定要量化为数字

                多少并发用户数、

                平均响应时间多少以内、

                错误率多少以内、

                资源利用率多少以内、

                tps要达到多少

(2)性能测试要求

需要独立性能测试环境、独立性能测试网络(交换机分开)、要掌握环境搭建

(3)性能测试时间

使用的并发用户数,来做性能测试,只需要执行几分钟到小几十分钟

4、容量测试

数据库的数量级别,在数据表数据量在万级 十万级 百万级区别很大,因为数据库有索引关系。性能测试的时候,性能测试环境用的数据库表的数量级别,最好与生产数据量级别保持一致或更高。

5、稳定性测试

详见“2、压力测试”

6、压测

企业中说,要你做一个压测,其实指的是负载测试、性能测试和压力测试。

首先,你知道用多少并发用户数么? --负载测试

然后,最大可接受的并发用户数做性能测试  -- 性能测试

但是,如果领导说环境有宕机情况,需要你去做一个压测,看是什么问题。(这种情况压测就是负载测试、性能测试和压力测试)

四、性能指标

1、相关概念小结与扩展

(1)并发:后端性能测试中,多用户并发,发起方是多个用户一起做某件事情

        它的源动力是并发用户(人)

(2)并行:同时处理什么事情(服务器)我们可以同时处理多个接口请求

(3)并发用户:人   做性能测试的源动力,  后端服务器的性能测试。都是要使用多个并发用户同时发起某个请求

        Jmeter中,就是用  线程数  来模拟  并发用户数

        在线用户数:在线,但是不发起请求; 在线,同时发起请求。

                所以,在线用户数,不能直接当作并发用户数。行业中,大概在线用户的5%-10% 作为                 并发用户数

        系统用户数:

                注册用户,有可能此时登录在系统中,也有可能,注册了之后,再也不使用;

                匿名访问,也是有一个唯一身份信息;

        而我们性能测试中,并发用户数,是需要通过负载测试来找出最大并发用户数区间,然后缩小这个区间,找到最大并发用户数。

(4)事务

        可以是一个接口请求1次, jemeter中,默认1个接口完成1次请求,当做1个事务

        也可以是多个接口请求,完成一个业务或一个功能。事务控制器,就可以把多个接口合并成1个接口,统计响应时间

        jmeter中的事务,可以是1个接口的1次请求,也可以是多个接口合并在一起的请求。

                举例:  下单接口进行性能测试,用100个并发用户数

                        登录接口  +  下单接口  == 如果设计场景  100个并发用户数,这个时候我们服务器收到100个并发用户数发起的登录接口请求和100个并发用户数发起的下单接口请求,这样不符合我们的需求,可以采用这个场景设计:100个并发用户数==得到100个用户身份(登录接口只需要登录100次即可,即在登录接口上面,挂一个 仅一次控制器,就会使每个并发用户不管运行多长时间都只会运行1次,每一百个用户必须使用100个账号来得到100个身份信息,jmeter里可能需要100个变量来接收这个身份信息来避免覆盖)

2、性能指标

(1)响应时间  一个非常重要的指标

从发起请求,经过网络传输到被测服务器,服务器内部处理,经过网络传输给发起方,整个过程所消耗的时间。

        这个里面。没有包括前端(用户端)处理时间

        我们真实期望的响应时间 = 服务器内部处理时间,所以,我们应该无限减少网络时间

                怎么减少?尽可能使用局域网(网络拓扑图尽量简单,请使用有线网络,必须是公司企业级的网络)

                        测试脚本,绝对不能放在被测服务器上

(2)TPS  服务器最主要的指标,相关概念如下:

tps  事务每秒   服务器每秒能处理多少事务数(要么1个接口,要么多个接口的合并)

qps    每秒查询率  服务器每秒查询多少次

                查询,可以是数据库的查询,也可以是文件的查询,其实也不局限于上述两种。云服务器资源提供商,一般都会提供监控平台,看到的数据,更多的是qps。所以很多企业说qps要达到多少。

rps     每秒请求率  发起方每秒发起多少请求

        1个rps  可能对应  n个qps,那么1次请求  一定等于  1个事务吗? 关系不确定,仅仅局限于一个请求就是1个接口,才会是1个事务。

        1个rps = 1个tps, 其实也代表1个rps可能跟qps存在n倍关系。可以推导出QPS大,TPS也大,所以在企业中会把qps当作tps来说。

hps     每秒点击率  发起方,而且是在前端性能测试中才有的概念

(3)吞吐量   网络最重要指标

网络中能传输多少个事务,在企业中,也会和  tps  一起讲,因为当网络没有瓶颈,服务器的处理能力,就可以通过网络的事务数来展示出来。此时,数值上,tps数值=吞吐量数值。有网络瓶颈,吞吐量数值不等于tps数值,并发用户数改变时,吞吐量数值也不等于tps数值。

(4)资源利用率  

服务器的使用情况

一般cpu、内存资源利用率  一般小于80%(整体)

需要监控

你可能感兴趣的:(性能测试,性能测试)