性能测试理论(二)

性能测试理论(二)

性能测试的工作流程:

1.目标是什么?

2.怎么做?

3.过程中你需要收集数据

4.一定要有结论

一、性能测试步骤

性能测试模型也可以理解为性能测试步骤,具体汇总为如下:

(1)测试前期准备工作

1.梳理清楚性能测试的目标(参考之前的历史数据,性能的目标由测试主导梳理出来,但得和大家一起沟通决定)

2.在目标清楚的基础上,梳理出测试场景和准备测试数据

3.准备测试的资源(人力和机器资源)

(2)测试工具技术引入

1.LoadRunner 惠普公司研发的工具,主要在工业级的性能测试中具备非常大得优势,它是收费的。

2.JMeter Apache基金会顶级项目,是Java语言100%开发的,它是开源的,在头部互联网公司基本都进行二次开发,应用非常广泛

3.Locust是Python代码级别的性能测试工具,它是基于协程(微小的线程官网https://locust.io/

(3)性能测试计划

1、具体测试场景执行的负责人,和执行的开始结束时间

2、前置工作内容

3、具体使用到的测试技术

(4)测试设计与开发

1.编写测试脚本来执行验证具体的测试场景

(5)测试执行与管理,数据收集

1.在脚本编写的基础上执行以及验证测试场景

2.我们在测试的过程中需要收集数据(性能计数器)

A、服务系统资源:CPU和Memory

B、DB的资源:IOPS,连接

C、服务资源:响应时间(最大,最小,平均,中位数(50%),90%,95%,99%),吞吐量,并发数

3、数据收集的思路:把这些数据写到InfluxDB(时序数据库),最后展示在Grafana的平台上

(6)测试分析

1.结合收集到的数据分析是否和最初制定的性能测试目标吻合,如果达到了目标,输出性能测试报告

2.如果没有达到目标,那么开发继续调整优化,测试继续测试

场景:针对一码通的系统,需要做并发的测试,目标数据是每秒并发15万,需要测:(面试题)

1、5万 2、10万 3、15万 4、20万 5、25万

JVM监控工具:

控制输入jvisualvm,会弹出以下页面,说明java环境搭建好了

验收负载测试

在QA的环境模拟生产运行的业务压力和使用场景组合,测试系统的性能是否满足生产环境的性能诉求。

负载测试

在被测系统上持续不断的增加压力,直到性能指标(响应时间等)超过预定指标或者某种资源(CPU&内存)使用已达到饱和状态。核心是找到系统的处理极限,为系统调优提供数据,从而达到了解系统性能的容量。

压力测试

方法是指系统在一定饱和状态下,具体如CPU,内存等饱和使用的情况下,系统能够处理的会话能力,以及系统是否会出现错误,比如TimeOut超时,OOM内存泄漏,OverStackExpection(堆栈异常)。

压力测试的特点:

检查系统在处于压力情况下时应用的性能表现

等价于负载测试,使系统的资源处于一个瓶颈的状态(建议CPU和内存在75%以上)

这种方式一般用于测试系统的稳定性

系统的稳定性:被测系统在系统资源饱和的状态下,依然能够很好的处理系统的业务逻辑,举例西安一码通,在资源饱和状态下,还能够扫码

环境: 1、测试环境(QA) 2、预发布环境 3、生产环境(线上)

面试题:测试环境测的没问题,但是每次发布到线上环境就会有问题,怎么解决

答:增加一个预发布环境

配置测试

被测环境软硬件环境参数的调整,达到最优的分配原则。

并发测试

模拟用户的并发访问,测试多用户并发访问同一个应用时是否存在死锁或者其他的问题,

并发测试的特点是:

发现系统中可能隐藏的并发访问的问题

关注系统可能存在的并发问题,如内存泄露,线程锁,资源争用情况

使用的测试工具如profiler等

可靠性测试

给系统加载一定的业务压力,让应用持续运行一段时间,测试系统在这种条件下是否能稳定运行。

被测对象往往是一个服务,服务一般都会提供接口,那么我们直接访问这个接口可以来测试这个服务。

下载Jmeter并搭建环境

Jmeter下载地址https://jmeter.apache.org/download_jmeter.cgi

下载之后将Jmeter的bin目录添加到path环境变量

打开cmd控制台,输入命令jmeter -v,出现以下就是环境搭建好了

面试题:

1.怎么区分负载测试与压力测试?

负载测试:在被测系统上持续不断的增加压力,直到性能指标(响应时间等)超过预定指标或者某种资源(CPU&内存)使用已达到饱和状态,负载测试更多地体现了一种方法或一种技术。如以测试西安一码通为例,在测试过程中模拟逐渐增加用户数向服务端发送请求,以检测系统可能存在的问题。

压力测试:该方法是指系统在一定饱和状态下,具体如CPU,内存等饱和使用的情况下,系统能够处理的会话能力,以及系统是否会出现错误,比如TimeOut超时,OOM内存泄漏,OverStackExpection(堆栈异常)它一般用于测试系统稳定性。例如以测试西安一码通为例,目标是允许15万人同时扫码做核酸,那么就模拟大量数据例如15,16,17万用户向服务端同时发送请求,看系统是否能正确执行。

2.怎么理解系统稳定性测试?

被测系统在系统资源饱和的状态下,是否依然能够很好的处理系统的业务逻辑,举例西安一码通,在资源饱和状态下,看是否还能够扫码,如果依然能够处理业务,那说明系统的稳定性良好。

3.性能测试过程中,开发说需要添加服务器性能测试才能继续,此时你会?

答:首先性能测试的过程中,测试环境的资源配置与生产环境的资源必须是一致的。这时是不能同意开发的方案。如果一定要增,就叫上相关人员把生成环境和测试环境资源配置成统一的。

4.做性能测试需要准备哪些工作,为什么?

(1)测试前期准备工作

  1.梳理清楚性能测试的目标(参考之前的历史数据,性能的目标由测试主导梳理出来,但得和大家一起沟通决定)

  2.在目标清楚的基础上,梳理出测试场景和准备测试数据

  3.准备测试的资源(人力和机器资源)

(2)测试工具技术引入

  1.LoadRunner 惠普公司研发的工具,主要在工业级的性能测试中具备非常大得优势,它是收费的。

  2.JMeter Apache基金会顶级项目,是Java语言100%开发的,它是开源的,在头部互联网公司基本都进行二次开发,应用非常广泛

  3.Locust是Python代码级别的性能测试工具,它是基于协程(微小的线程)官网:https://locust.io/

(3)性能测试计划

  1、具体测试场景执行的负责人,和执行的开始结束时间

  2、前置工作内容

  3、具体使用到的测试技术

(4)测试设计与开发

  1.编写测试脚本来执行验证具体的测试场景

(5)测试执行与管理,数据收集

  1.在脚本编写的基础上执行以及验证测试场景

  2.我们在测试的过程中需要收集数据(性能计数器)

  A、服务器系统资源:CPU和Memory

  B、DB的资源:IOPS,连接数

  C、服务资源:响应时间(最大,最小,平均,中位数(50%),90%,95%,99%),吞吐量,并发数

  3、数据收集的思路:把这些数据写到InfluxDB(时序数据库),最后展示在Grafana的平台上

(6)测试分析

  1.结合收集到的数据分析是否和最初制定的性能测试目标吻合,如果达到了目标,输出性能测试报告

  2.如果没有达到目标,那么开发继续调整,优化,测试继续测试

5.性能测试中测试环境和生产环境的配置必须一样吗?为什么?

是的,因为只有测试环境和生成环境配置一样,我们在模拟用户使用情况返回的数据才具备参考性,才能更真实的了解用户真实使用的情况

6.性能测试你测什么?关注的点是什么?

答:

程序的响应时间:指的是客户端发送请求给服务端,服务端返回响应数据的时间,响应时间=网络世界+应用程序的处理时间

系统的吞吐量:吞吐量指的是操作速度,指系统每秒处理的业务数,

并发用户数:指的是同一时间同时向客户端发送请求的客户数量,

tps:统计的是每秒处理的事务数,即系统在单位时间内处理请求的数量

qps:指的是每秒查询

以及DB的IOPS:指的是每秒读和写的次数

和服务器的系统资源(cpu和内存)

通过一定的工具或者代码的方式,来验证被测试的程序是否满足性能测试的目标,以及验证程序是否会出现OOM,系统崩溃,系统无响应等情况。

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部