vlambda博客
学习文章列表

码农手记 | 深入理解「性能测试」


栏目📰:码农手记 💻

撰文✍🏻:极链科技 前测试工程师 高燕妮

编辑📚:六六

关键词📌 性能测试  loadrunner使用  jmeter 


码农手记 | 深入理解「性能测试」


✍️
 码农手记 
将会邀请


一直在幕后
用代码和算法改变世界的
技术大佬们
将会不定期推送他们
所写的在技术专业中的
技术经验/研究/论文

为你呈现
/ 更前沿的技术思考 /
 / 更专业的技术干货 /


#码农手记# 第79
文 | 极链科技Video++ 前测试工程师 高燕妮

码农手记 | 深入理解「性能测试」


01

/ 为什么要做性能测试 /

1、目前绝大多数应用都是基于网络的分布式应用,我们无法知道用户数量,用户场景的不确定性,导致系统测试时,不仅仅是功能,业务逻辑,接口测试,还要测试系统性能。 一个用户没问题,但是用户一旦多了就可能出现各种各样的问题,所以需要进行系统性能测试。

2、用户数量增加,系统负债增加,进行系统性能测试,知道系统承受的并发用户数量,带宽是否够用,cpu是否够用,内存是否够用,硬盘速度是否跟得上。从服务端来看,测试服务器是否能承载用户多并发,系统是否稳定,从用户角度看响应时间速度。



02

/ 性能测试分类 /

性能测试八大类包括:性能测试、负载测试、压力测试、配置测试、并发测试、容量测试、可靠性测试、失败测试。


1、性能测试:性能测试是为了描述测试对象与性能相关的特征并对其进行评价而实施和执行的一类测试。它主要通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项指标进行测试。通常把性能测试、负载测试、压力测试等统称为性能测试。


2、负载测试:是通过逐渐增加系统的负载,测试系统性能的变化,并最终确定在满足系统性能指标的情况下,系统所能承受的最大负载量的测试。简而言之,负载测试时通过逐步加压的方式来确定系统的处理能力和能够承受的各项阈值。


3、压力测试:是通过逐步增加系统的负载,测试系统性能的变化,并最终确定在什么负载条件下,系统性能处于失效状态,并获得系统能提供的最大服务级别的测试。压力测试是逐步增加负载,使系统某些资源达到饱和和甚至失效。


4、配置测试:主要是通过对被测试软件的软硬件配置进行测试,找到系统各项资源的最优分配原则。配置测试能充分利用有限的软硬件资源,发挥系统的最佳处理能力,同时可以将其与其他性能测试类型联合应用,从而为系统提供重要依据。


5、并发测试:测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题,几乎所有的性能测试都会涉及一些并发测试。


6、容量测试:在一定的软、硬件条件下,在数据库中构造不同数量级的记录数量,通过运行一种或多种业务场景在一定虚拟用户数量的情况下,获取不同数量级别的性能指标,从而得到数据库能够处理的最大会话能力,最大容量等。系统可处理同时在线的最大用户数,通常和数据库有关。


7、可靠性测试:通过给系统加载一定的业务压力(如CPU资源在70%~90%的使用率)的情况下,运行一段时间,检查系统是否稳定因为运行时间较长,通常可以测试出系统是否有内存泄漏等问题。


8、失败测试:对于有冗余备份和负载均衡的系统,通过失败测试来检验如果系统局部发生故障,用户能否继续使用系统,用户受到多大的影响,如几台机器做均衡负载,一台或几台机器垮掉后系统能够承受的压力。



03

/ 性能测试评价指标 /

1、响应时间:从用户视角评价系统的响应速度,通常响应的时间的经验值 2s流畅,5s可用,10s较慢


2、吞吐量/率:硬盘IO(读写),网络IO(上行下行带宽),cupIO,服务器处理能力,客户端打开页面的数量。


3、事务处理能力:打开页面,登陆服务器,实现消息发送等等用户的某一动作就被称为事物。



04

/ 性能测试关注点 /

1、软件测试的作用和价值:两个方面产品和用户。产品角度:在研发过程中尽早的发现问题,提高软件质量,确保产品交互,功能完善,稳定可靠。用户角度:关注用户体验,操作,界面,性能,尽可能想办法提升用户体验,持续改善。


2、性能测试的关注点:(三层架构,多方面制约,采用集群,云计算,虚拟化)

· 响应时间快慢,服务器端的处理速度

· 服务器端的使用情况

· 数据库端的资源使用情况

· 最大用户访问数量

· 同时处理最大业务数量

· 考察系统能否支撑7x24小时运转

· 内存资源、线程资源能否正常回收

· 代码,算法,sql语句设计是否合理

· 整个系统的稳定性,可恢复性



05

/ 性能测试核心原理 /

1、基于协议(前端后端通信机制),基于界面(决定和前端交互),基于代码(后端)。


2、基于网络的分布式架构:基于网络协议去模拟用户发送请求


3、多线程:模拟多线程操作,多人同时操作,模拟大负载量(功能测试在于用以测试功能)


4、模拟真实场景:真实的网络环境,用户操作时间不确定性,操作不确定,得出的数据是准确的,场景不对,数据也不一定可用。



06

/ 代码实现性能测试 /

针对某一功能做性能测试,论坛的登陆以及发帖(post协议,多线程这两点)

登陆操作,发帖操作(涉及协议),使用多线程同时操作。



07

/ loadrunner使用 /

四个主要部件:1、vuser generator 开发性能测试脚本 。2、controller 提供多线程并发等操作. 3、ananlysis 结果分析 4、load generator 负债生成器(controller 里面的一个主键)


   vuser generator(虚拟用户生成器) 


码农手记 | 深入理解「性能测试」


进入界面,点击start 录制一段脚本


码农手记 | 深入理解「性能测试」


internet application 指的是b-s 架构,win 32 是指c-s 架构,默认是录制到action,勾选recond表示立即开始。


码农手记 | 深入理解「性能测试」

可以手写,可以录制

点击web_url,使用get请求

点击web_submit_data,使用post请求

解决乱码

开始时:tool > advaced > support charset // utf-8 或者本机编码

运行时:vuser > preferences > option > convert from/to utf-8

编码的差别:

国标GB-x ,2byte-16bit , 2^16种组合,只对中文进行编码。

utf-8 :3byte = 24bit 2^24种组合 ,对全世界的文字进行统一的编码。

ascii码:一个字节 (2^8=128)



08

/ jmeter简介及使用 /

同样性能测试工具包括两点:模拟协议,使用多线程。同样是录制脚本,或者手写脚本,进行多线程高并发,分布式进行压力测试。


使用场景以及特点:

· 功能测试

· 压力测试

· 分布式压力测试

· 纯java开发

· 上手容易,高性能

· 提供测试数据分析

· 各种报表数据图形展示


   安装jmeter4.x 


安装jdk 1.8 及以上环境(jdk>jre)

window下点击 bin>jmeter .bat 文件进入

bin> jemeter-server.bat :window下面分布式压测启动文件

bin>report-template :报告模板


   文件目录 


bin目录:启动文件目录,包含配置

docs目录:文档目录

extras目录:插件目录,安装二次插件目录

lib目录:安装包目录,ext核心包,junit单元测试包


   定添加线程,一个请求,一个查看结果树 


码农手记 | 深入理解「性能测试」

【 in second :多少秒达到峰值,10秒完成一个线程。】


码农手记 | 深入理解「性能测试」


码农手记 | 深入理解「性能测试」

post 请求


码农手记 | 深入理解「性能测试」


jmeter 断言

对测试结果添加断言,选择只测本次请求main sample olny,以及需要断言的内容,断言的后输出error http code。


   聚合报告分析 


1、对一个线程组添加一个聚合报告(在结尾处添加一个聚合报告),点击运行可查看报告结果



lever:接口名称sample

samples:总共发送请求

avriage:平均响应时间

error:错误请求率

throughput:吞吐率(qps,性能)

receive:接收字节数量

send:发送字节数量




🚀

 极链科技Video++ 
 聚焦于AI消费的科技公司 

👇🏻点击「阅读原文」查看更多深度技术好文