5.18-性能测试(一)

软件测试:功能、自动化(UI仅由代码来操作系统,无人工、API)、性能、安全(渗透测试)

性能测试学习章节:理论;方法;实战;代码级别性能测试;资源监控

一、测试理论

1.性能是衡量软件用户体验最核心的指标。

2.给用户最直观的体验是响应时间(速度快慢)和吞吐量(同时多少个用户可以访问这个系统)

如何查看响应时间

打开淘宝网右键检查,network清空数据并刷新页面 右下角红色load为响应时间(多少毫秒)

用户视角

1.软件性能是用户操作的响应时间。

2.响应时间:1-3秒网络速度优秀;3-5秒可以接受;5秒以上无法接受

如果测试一个页面响应时间大于5秒,需要反馈程序员并提交一个优化问题单

运维

1.维护和管理服务器并负责公司网络环境。阿里云、IBM的小型服务器

2.运维除关注响应时间外,也会关注更多底层的资源信息,资源信息如下: • 系统资源(CPU和内存)

CPU和内存(memory) 数据库(database,db)

• 数据库资源(IOPS资源)

存储数据,因此读写速度就非常重要。衡量读写速度指标是IOPS

• JVM内存是否够用

Java语言特点跨平台,Java通过jvm跨平台,Java 编写程序都有内存大小设置,如果程序超过内存大小设置,会出现内存泄露(Out Of Memory ,OOM)

• 系统的最大容量

开发

代码是由程序员写,因此开发会关注的更全面,总结如下: • 前后交互的响应时间 • 中间件的参数设置(rabbitMQ,redis,kafka)

Redis:缓存穿透。存到内存里,目的是查询时候读取速度很快

• 内存释放泄露 • 连接数泄露

数据库(DB):程序员需要连接到数据库查询数据。由于资源有限,如果之前占用的没释放,会导致后面的连接不上就会泄露

• 是否存在不合理的内存使用方式 • 是否存在不合理的线程同步方式 • 系统中是否存在不合理的资源竞争 • 系统架构&代码结构

单体(所有代码整合一起)

垂直(按照模块整合不同代码)

SOA(不同模块之间数据同步)

微服务(按照业务类型把每个业务写成一个服务。企业使用最多)

SAAS:Software As A Service 软件即服务

PAAS: Platform As A Service 平台即服务

测试

用户关注视角属于全栈性,测试需要考虑用户产品体验也要监控及关注运维和开发视角,性能测试工作职责为:

• 设计合理的场景和测试用例来验证系统的资源数据

• 验证在高并发情况下架构是否满足

• 给架构师以及开发人员提供中间件配置参数的合理值范围

• 使用技术手段监控系统,DB,中间件,全链路监控的方式来监控系统资源情况

WEB前端

前端性能是性能测试中比较热门的技术,具体关注的点:

• 浏览器资源加载(HTML解析,图片资源加载,CSS文件资源加载)

• 前端缓存技术的优化是否合理性

• 前端与后端的交互性耗时

响应时间

⼀次操作完成的时间,是客户端发送请求到服务端后,服务端返回到客户端的响应数据的时间。包含用于等待和服务的时间,以及用来返回结果的时间。

响应时间=网络时间+应用程序的处理时间

客户端<---》路由器(DNS)<---〉nginx中间件<--->淘宝服务<--->淘宝数据库

并发用户数

1.性能测试核心是验证当前系统能否支持现有用户的访问,系统可以承受在同一时间段多少用户访问系统。比如王者荣耀,是否可以承受同时在线一亿人同时进行玩游戏?

2.并发用户数,不论从业务视角出发,还是服务端承受压力,指同一时间同时向客户端发出请求的客户,也称为“并发测试”。是服务端承受的最大并发访问数。

吞吐量

用于数据传输,被测试系统的执行效率。⽤于描述数据传输速度(字节/秒或者⽐特/秒),如DB数据库,吞吐量指操作速度,每秒操作数或者每秒业务数或单位时间内客户端请求的数量,体现系统性能承载能力。

例如一码通:

早上6点至7点学生上班族都开始做核酸检测,并发用户数指这个时间段服务端能够承受的最大用户数,吞吐量指这个时间段,每秒能够同时多少人进行核酸检测

性能计数器

性能测试过程中需要收集哪些数据,并且收集的这些数据对性能测试有帮助 系统:cpu memory db:iops

被测系统:响应时间,并发用户数,吞吐量

性能测试什么时候开始合适?

性能测试最好是在功能测试的基础上,系统测试完全OK再做性能测试

使用率

分两个维度:系统资源的使⽤率;系统内部署服务对系统资源的使⽤率

系统内部署服务,对系统资源的使⽤率对于服务所请求的资源,使⽤率指所给定的时间区间内资源的繁忙程度;对于存储资源来说,使⽤率指所消耗的存储容量

如⼀个业务中,会使⽤⼤量的内存资源,总的内存资源是4G,在⼀定数据量的情况下执⾏该业务形态,内存使⽤率从100M⼀直占⽤到3G,随着业务形态内存资源得到释放呈下降的趋势,内存使⽤率最⾼为75%,会存在OOM的错误信息和内存泄露的情况。

当系统的资源使用率(cpu和内存)达到60%以上,系统就会存在很卡的情况

思考时间

Think Time也称休眠时间,在业务视角指用户在进行操作时,每个请求之间的间隔时间。

IOPS 磁盘和数据库读写

主要针对数据库,指每秒发⽣的输⼊/输出操作的次数,是数据传输的⼀个度量⽅法。⽤于磁盘的读写,IOPS值的是每秒读和写的次数。

TPS/QPS

TPS:统计每秒处理的事务数。即系统每秒能够处理事务的数量

事务:一系列操作动作的组合。如登录,输入账户,输入密码,点击登录按钮

QPS:每秒查询率

资源调度

系统资源是有限的,假设所有程序都启动资源会不够,谁先抢到资源谁先执行,过程中资源会不停的切换。

在操作系统级别上,进程是操作系统最小的运行单位。什么是进程,进程是每个程序运行后,都是一个独立的进程。现在的软件都是可以同时干很多的事,比如抖音,可以同时看视频的同时也可以发私信,也可以聊天,这个过程中,发私信,聊天,看视频,都是由线程来支撑执行的,所以现在的软件是多线程的模式。

在进程角度,多线程内部都是共享数据的(如拿抖音看视频,聊天,发私信,其实是同一个人)。

调度策略:在资源有限的情况下,所有的任务都可以执行,如果不够的情况,就会有排队的机制。

排队的机制:

队列(数据结构),先进先出。

Queue:put():进队 get():出队 empty():队伍是否为空

CPU密集型

1.应⽤程序执⾏繁重的计算,通常运⾏时间⽐较⻓,会占⽤⼤量的CPU ;

2.存在大量计算任务,占用大量CPU而占用少量内存;

IO密集型

1.应⽤程序执⾏I/O,计算不多,会占⽤⼤量的内存资源。系统的最⼩粒度是线程,系统调度中粒度最细的就是对线程的调度。

2.占用少量CPU占用大量内存

等待队列

在程序中都会涉及等待队列。同步交互和异步交互中,都会涉及它的最⼤队列,核心是防⽌在客户端⾼并发时及服务端在没有队列时,出现雪崩以及最终导致服务端出现瘫痪

服务端的稳定性测试怎么保障? 客户端在持续高并发的情况下发送请求给服务端,服务端处理能力有限,导致资源出现瓶颈的同时排队的任务越来越多,最后服务端就出现瘫痪。为了服务端不出现崩溃,服务端一般会使用队列的机制。例如:服务最多可以处理任务是30个,如果过来的任务是少于30个,则全部同时处理,如果过来的任务是100个,则70个任务在排队。

1、队列设置的值是多少?最⼤可以运⾏的任务是多少? 2、需要测试到排队的策略机制,模拟⼤批量的程序进⾏排队,⼀个任务执⾏结束后,队列位置释放 ⼀个,等待中的可以⽴刻进⼊并执⾏,这中间就设计到先进先出或先进后出,以及线程优先级的设计策略 3、线程在排队的过程中,设置最⼤的等待时间是多少,⼀个线程不可能永远处于等待中,等待多久还没到执⾏的阶段,这时服务针对排队等待的线程处理的机制是?这个时间专业术语就是:访问等待时间 4、⼀个线程完整的时间是由三部分组成,响应时间:客户端发起请求时间+访问等待时间+逻辑执⾏时间 +返回给客户端的时间。在测试中,把每个线程名称设置为uuid,这样它都是独⽴的,可以依据这个 uuid,让开发配合输出每个阶段的时间输出,就可以得到每个阶段的具体时间,根据时间再来判断时间是否优化。

posted @   Yvonne_26J  阅读(57)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示