IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 性能测试从零开始(视频笔记 20210504) -> 正文阅读

[大数据]性能测试从零开始(视频笔记 20210504)

作者:recommend-item-box type_download clearfix

目录

第一课? 为什么要做性能测试?

第二课? 性能测试实战案例(1)

第三课? 性能测试实战案例(2)

第四课? 性能测试流程

第五课? 性能答疑

第六课? 如何做专业的性能测试

第七课? 性能测试执行

第八课? 性能测试中的理论模型

第九课? 性能测试的拐点模型分析


第一课? 为什么要做性能测试?

0 前言

0.1 受众分析

很多学生多数都没有做过性能测试,或者很多人做的性能测试不规范,所以性能侧记着门课面临如下问题:

(1)一些性能测试术语理解起来困难

(2)作为其他课程的基础中的基础,没有太多可以动手的,有人是希望多动手的

(3)这门课程放在最开始,没有太多铺垫,和学生之间的交流存在一定的磨合

0.2 教学策略

1 为什么要做性能测试

1.1 我们身边的那些事儿

1.1.1 回家的路好长?

1.1.2 赵丽颖结婚了,我的女神有主了?

—需求分析不对,粉丝多 !!!首选。方向不对,努力白费

—关键时刻并发大,系统负载高

—系统架构不具备扩大性,造成了崩溃宕机 !!!其次。

强调要了解需求分析,了解业务,了解架构。

互联网应用和传统应用的差异?

互联网的应用是一个访问不受时间和地域限制。

传统应用则相反,更可控。

1.1.3 追某女生3年了,我们终于在一起了,嗨…

—这也是性能测试,追求过程中,女生有很多废物测试,不断测试男生的可靠性,整个追求时间跨度不断,可以类比性能测试中的稳定性测试,疲劳强度测试

1.1.4 安卓的手机越用越卡,我们还是买个苹果的吧…

—手机卡本质就是一个性能问题,存在内存碎片,这个状况是由安卓采用了的架构决定

1.2 五个理由

(1)选型

系统中采用了新技术或者新的架构,但新架构能满足业务需要吗?

如果等到系统开发完成后,再来验证成本就非常大,于是功能还没开发完成,就半路突击做性能测试。

(2)验收

(3)备份

举例:服务器部署在阿里云上,为了避免风险,在华为云上也部署一套。怎么做?

阿里云和华为云的功能性能上是否有差异?此时,不能直接切。

测试团队就会对华为云做测试评估:行和不行?

行,则可以切换。说明两者是可以相互备份的。

这里强调的不是备份这个动作,而是为了备份这件事,我们需要先做性能测试。

不是说备份就备份,不先做性能测试,不先了解清楚,怎么做备份呢?

冷备份和热备份:

冷备份需要重启,用户有感知

热备份,切换时,用户无感知

(4)省钱(指导运维成本)

(5)更好

即评估,优化,预测所对应的专业场景。

把上面5个理由理解成5个场景:

(1)选择

(2)验证属实

(3)异常处理

(4)容量规划

(5)优化

第二课? 性能测试实战案例(1

1 两个问题

问题1: 负载和并发的区别?

所谓负载:不断加压力,观察在加压力的过程中,系统的表现。

所谓并发:做性能测试,根据先前的需求分析出来的结果做性能测试。

后面再说详细区别。

问题2: 先预习再上

2 性能测试发展过程

2.1 我是谁

早期:不会性能测试,先上产品,先抢用户,气候再紧急补债

现在:两级分化严重,专业的人做专的专业,不专业的人还在裸奔

裸奔的人什么样子呢?

没有明确的性能测试指标,没有测试需求,没有测试策略。

但这却又偏偏是性能测试,所以称之为尴尬的性能测试。

性能测试就是扔给你一个Loadrunner, 给你的url链接,然后再给你个性能测试报告的模版,最后告诉你,给你一个星期,或者说再xx号前把报告交给我。

很多性能测试工程师一拿到Loadrunner和url就开始性能测试的旅程。

但是没有明确的测试目标,没有测试策略,既然任务已经下来,就不管其他的,用这个万能的Loaderrunner.

脚本篇—懂一点儿Loadrunner的测试流程,于是就用它强大的录制功能,录制了基本急哦脚本。然后在脚本中参数化参数,插入事物,插入集合点等等增强脚本。在迭代几次回放后,没有报错,就算完成了。

场景片—脚本完成后,开始准备设置场景的参数。没有做任何的基准测试和铜梁测试,测试报告上要求多少用户,持续多长时间,就填上相应的参数。作为性能测试,总归要监控服务器的性能,一开始性能工程师是用头儿推荐的方法:用操作系统自带的性能工具来监控服务器的性能。理由是Loadrunner是装在测试机的,用测试机来监控服务器的数据,会存在网络上的延时而不准确。用了Loadrunner, 为什么不相信它?如果用系统自带的性能测试工具来监控,为什么不请100个民工一起点,或者这样的效果更好。。。这个想法,有点儿。。。

专业的人做什么事?

—需求分析:了解产品规格说明,用户计划,用户行为,用户分布,运维日志,市场计划,架构

—准备工作:写的脚本不管何时何地何人,不管多少人在跑,都能跑

—监控:表面看(TPS,响应时间…),深层看(CPU,内存),长期看

—分析:从整体到局部,从表到里,做好分析,调优

课程要求:学完后,需求分析,脚本编写都要专业!

2.2 我要去哪里/发展方向

—功能测试是业务型的。性能测试是技术型的。技术无止境(编程,数据库,操作系统,中间件)

—自动化3个月能入门。性能测试的入门要比较久,掌握的内容,除了自动化内容之外,还有其他。

—性能测试的发展方向:

平民化(大众化)

开源化

专业化

3 什么是软件性能测试

3.1 性能测试概念

性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

负载测试压力测试都属于性能测试,两者可以结合进行。

通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。

压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。

3.2 什么时候(阶段)做性能测试

—先前给予占领市场的公司产品线上,有一定用户后再考虑系统性能

—一些正规公司,功能测试稳定后再做性能测试

—但并不绝对,有的公司,架构复杂,人员能力强的,会在技术架构选型之前开始做性能测试。

有的公司,在功能测试之前,先做规划(需求分析),准备完成后,等功能测试完成后,做性能测试。

第三课? 性能测试实战案例(2

4 软件性能测试分类(重点)

(1)基准测试: 先测一轮作为后面测试或者后面版本的基准

(2)性能测试:基于用户行为情况和用户分布等信息,对系统能否达到预期服务能力进行验证

(3)负载测试:日本不断挑战我们的底线,占领xx, 。。。我们一直在忍耐,直到77事变前(一个循序渐进的过程)

(4)压力测试:1937年77事变,忍无可忍,抗日战争全面爆发 (压倒骆驼的最后一根稻草)(极端情况)

(5)容量测试:我们能忍多少事,比如全面抗战前夕,我们对日本的挑衅行为的容量久就是,77事变没有发生前的所有事的总和。

系统会有很多配置参数,所有配置参数都放到最大的时候,是不是生效?系统是不是扛得住?它们之间是不是存在冲突?

(6)疲劳强度测试:结婚7年,牵着老婆的手就像左右牵着右手,牵着小姨的手。。。

(7)现网性能测试:在真实环境上做性能测试(为了得出真实的数据,这种类型测试要注意对网络性能的影响,比如占用过多的带宽,影响其他业务,垃圾数据的清理等)

在内网测试,我们关注的是服务器,系统软件,系统相关的各种配置等是否有问题。缺点是:我们没有评估系统所在的这个环境的带宽网络层面的限制,真实使用时会有问题。

所以我们先在内网测,然后要评估真实的带宽。于是我们会做一些现网性能测试。

(8)失效恢复测试:(这个比喻可能不太恰当:某明星出轨,女主进入局子,男主角带着原配住进了美国豪宅,这里原配扮演了故障转移的角色)

不过失效恢复测试一般是对具有负载均衡的系统进行的,主要是为了测试当系统局部发生故障时,是否会对全局产生大的影响,产生的影响是否在可以接受的范围内,以及用户能否继续使用系统。

在实际应用过程中,可以模拟一台或者几台负载均衡及其出现故障来进行失效恢复测试。但需要注意的是,不仅要关心失效后,用户是否可以正常访问或者恢复后系统是否可以正常工作,也要关注失效后,系统还能支持多少并发用户,已经采用哪些备选方案来快速响应。(储库功能要大于主库)

问题:性能测试是不是包含负载测试和压力测试?

性能测试是一个通俗概念,下面有几个概念:

性能测试

负载测试

压力测试

第四课? 性能测试流程

1?性能测试包含哪些?(配图略

(1)性能测试(重要):期望点。a点,持续测试,验证系统资源是否在可接受范围内(自己定义的),是不是符合预期。

(2)负载测试(重要):高于期望。a-b点,持续测试,验证压力增大后,系统的表现如何?(b点不固定,只要高于a点,任何一点都可以称为b点?)a点只有一个,b点有很多个。如果a点有很多个,那产品不明确。

(3)压力测试:临界点,系统资源吃紧。b-d 点,持续测试,验证系统超出自身能力后的表现。重点是要找到系统在不断加压的过程中,在什么时间点(并发量时)崩溃。

(4)稳定性测试(重要):系统崩溃,超时等。 a-b点,验证系统n*24小时持续运行后的稳定性。强调时间维度,重点是验证系统持续提供服务的时间,稳定情况。

有时候会把稳定性测试和负载测试合二为一,为了省时间。业界比较少人只做负载测试。

对性能测试而已,最关注的是tps和相应时间。虚拟用户数没那么关注。

2?作业讲解

1)上述已讲

2)怎么考虑性能测试的典型场景?

产品规格:产品经理提供

用户模型:用户喜欢用什么功能,什么时间段用,大概有多少用户 (产品经理不太会说,需要我们自己分析)

系统数据:基础数据(用户名密码地址信息等)和业务数据(买了什么东西花了多少钱等)

为什么需要考虑这些数据?

我们要访问的数据大多放在数据里了。性能测试过程中需要制造大量的数据,是要解决数据库当中数据量比较大时性能低的问题,数据太少的话,和数据库相关的性能问题根本就测不准确。

原则:准备数据时,宁多勿少

系统架构:一个是逻辑结构,一个是 ?(即有哪些模块构成,在部署的时候分别部署在哪些系统上)

举例:比较粗的逻辑架构:Browser—Tomcat(nginx)—Redis—Mysql

不同硬件不同结构,会对性能有影响。要把架构做好,不然会在很多阶段有很多遗漏,或者影响性能。

运维日志

市场计划

项目管理计划

Btw:-》测试需求-》设计出模型

第五课? 性能答疑

1. 负载测试时,有时服务器过大,测试过程没有测试出它的极限,上市后出现瘫痪,怎么解决?

测试环境搭建:

1)尽可能在线上测(全链路压测)

2)自己搭建环境测试

(1)线上服务器很多,不可能搭建完全真实的环境,此时采用等比缩放,测试出扩散系统

(2)能搭建出真实的环境测试,那就测试吧

2. 现网性能测试时在公网进行吧?

看应用,具体情况具体分析。要看服务器是给谁用,如果开发的应用程序只是给公司内部使用,则只需内网。如果给外部使用,则公网。

3. 基准测试,是不是每一轮版本都会作为下一轮的基础,还是稳定版本呢?

一般情况下只会把第一版本第一轮测的数据作为基准。

PS. 更多的是同一个大版本下的第一轮测试。

不同版本之间需要评估,版本跨度不能过大,不然没有意义。

4. 基准测试时有基准标准,不一定非要自己做一遍,也可以用行业标准作为基准。

这是对的。

如果你做的系统是业界已经有的系统,那就用业界标准;

如果你做的系统是业界最新,标准就是你们自己定的,这里的标准来源于几个方向:

1)产品说明——大家期望的结果

2)基准测试的结果——实际上的标准(当然大家要同意)

5. 例如行业usb2.0, usb3.0传输标准,5g传输标准这些都可以认为是基准。

有行业标准用行业标准,没有的话自己定。

具体情况具体分析。

6. 难道大多数公司做性能不一定都有会行业标准,可能还是探索阶段的吧。。。

具体情况具体分析。

更多的是同一个版本(的第一轮)作为基准,跨基准的话也可以,但是不能跨太远。比如版本2,版本3可以用版本1来做基准,但是版本10再用版本1来做基准,就不合适了。

很多系统已经有所谓的标准了,但实际情况,中小型公司很多执行不到位,有标准不一定用,所以需要我们推进这件事。

7. 疲劳度测试和稳定性测试区分一下。

疲劳测试:测试系统出现疲劳时候的点(可以是跑了多少时间,也可以是并发量等)

稳定测试:系统是否稳定,长时间运行时是否有内存泄漏

两者并没有太本质的区别,只是关注的点不一样。

8. 即便抛去现网测试因素,在内网下如何判断出接近真实的数据量(用户量,真实配置量等)

性能需求分析重要解决的问题:

需要记住:在互联网应用中,一个服务降级,另一个自动扩容。(!!!非常重要)

100人 ——— 1台服务器

200人 ——— 监控检查到有更大的压力过来了 ———又启动2台服务器

1000人 ——— 监控检查到有更大的压力过来了 ———又启动10台服务器

性能需求分析非常重要。方向不对,努力白费。

性能需求分析即使做了之后,还是会出现问题,说明在服务降级或者自动扩容这些方面存在一些问题。

服务降级是什么?

系统比较繁忙时,停掉一些不常用的服务。

80%的用户,支持20%的功能。

9. 内网下的性能测试数据量,标准时如何来的呢?

性能需求分析重要解决的问题:

如果你做的系统是业界已经有的系统,那就用业界标准;

如果你做的系统是业界最新,标准就是你们自己定的,这里的标准来源于几个方向:

1)产品说明——大家期望的结果

2)基准测试的结果——实际上的标准(当然大家要同意)

10. 这些每一种类型的测试后面都有实战吗?

不完全有。

11. 其实我在想淘宝的那种现网性能测试他们是怎么测的?

全链路压测:

存在几个问题:担心线上用户,担心数据污染线上数据库,应用比较复杂时协调各部门比较复杂。

淘宝之类的,能解决上述问题,所以他们能进行线上压测。

12. 我想知道基准测试,什么时候做,做几次?

第一个版本第一轮。测第一轮的时候可能测好几次。

比如,产品要求TPS100, 相应时间在1秒内:

实际测试结果TPS90, 相应时间1秒。测多次后,定一个基准。

一般是在大面积做性能测试之前,先做一下基准测试。

13. 全链路压测是什么意思?

14. 什么是失效恢复测试?

15. 当一个接口,根据数据不同,会走不同的分支,逻辑不同,然后性能跑出来的基线都不一样,怎么测性能?

答:关键(起点)—> 性能需区分分析 —> 各种准备(数据准备) —> 这个问题不存在了

16. 项目中介入第三方支付,需要用户绑卡和授权支付,这种场景下的性能如何测试?支付过程中需要使用的数据都是正实的,第三方支付对支付笔数和金额是有限制的,这种场景的测试数据如何设计?

答:1) mock。 2)模拟数据 。3)导入真实数据,脱敏等等

17. 如何学习软件性能测试

17.1 L0需要掌握的知识技能

1)需求分析只是:用户分析性能测试需求

2)测试分析设计能力:(不具备该能力,功能测试都做不好),用于设计压测方案

3)一定的代码能力(Java,python):用户编写性能测试脚本

4)Linux知识:环境搭建,监控工具部署等

5)数据库知识:oracle或者 mysql

6)网络知识:如http协议

7)工具使用:loadrunner等

8)中间件知识:tomcat, nginx等

9)文档编写能力:测试报告编写

17.2 如何学习性能测试

17.3 我们要达到的目标

1)熟练分析项目性能测试需求

2)能独立编写性能测试脚本

3)能独立执行性能测试

4)能熟练收集相关性能数据,并做简单分析(知道一些套路)

5)目标决定方向,同时表明了重点

17.4 性能测试理论在性能测试中的位置

1)作为后续课程的基础

2)可理解为葵花宝典总纲“要练此功,必先自宫”,用于指导实际性能测试工作

练习题提问汇总:

1~12点 (截图)

性能测试是需要参数化

数据和业务分离很重要

8核16G电脑足够用

第六课? 如何做专业的性能测试

(接着上述第四课讲,讲解作业)

  1. 怎么考虑性能测试的典型场景?

产品规格:产品经理提供

用户模型:用户喜欢用什么功能,什么时间段用,大概有多少用户 (产品经理不太会说,需要我们自己分析)

系统数据:基础数据(用户名密码地址信息等)和业务数据(买了什么东西花了多少钱等)

为什么需要考虑这些数据?

我们要访问的数据大多放在数据里了。性能测试过程中需要制造大量的数据,是要解决数据库当中数据量比较大时性能低的问题,数据太少的话,和数据库相关的性能问题根本就测不准确。

原则:准备数据时,宁多勿少

系统架构:一个是逻辑结构,一个是 ?(即有哪些模块构成,在部署的时候分别部署在哪些系统上)

举例:比较粗的逻辑架构:Browser—Tomcat(nginx)—Redis—Mysql

不同硬件不同结构,会对性能有影响。要把架构做好,不然会在很多阶段有很多遗漏,或者影响性能。

运维日志: 了解运维日志,进一步确定真实用户的数据和行为。

市场计划:跟市场部要,为来帮助我们考虑性能的扩展性。

项目管理计划:用来帮助我们明确测试的优先级(重点)。

以上,就能得出我们的性能测试需求,根据性能测试需求,进而设计出压测模型。

—测试需求-》设计出压测模型

2. 在给定的测试环境下,考虑北侧系统的业务压力量和典型场景?

考虑业务量,即进行性能分析。

3. 什么时候可以开始执行性能测试?

一般是在功能稳定后开展的比较多,不然录制脚本后,往往因为开发修改代码,功能出现问题而导致性能测试用例脚本无法运行,测试阻塞。

但目前有些公司的项目可能因为项目要上线赶进度,往往没有做性能才认识的,功能没问题就直接安排上线,等用户多了,出现问题了,才开始性能调优。

6 软件性能测试流程(重点)

1)流程是什么?

需求分析 —> 测试计划 —> 用例编写 —> 测试执行 —> 输出报告

细化:

? ? 前夕准备 中期准备 ? ? ? 测试执行

—————————————— ————————————————— ———————

需求分析 —> 方案设计—> 计划 —> 脚本编写(环境搭建,预热,数据准备) —> 执行 ,监控

?? ? ? ? 完成

—— ? ————

调优 —> 输出报告

1)需求分析:需求分析和调优是性能测试的难点。? (做什么事情?)

输入:

产品规格

用户模型

系统数据(基础数据和业务数据)

系统架构

运维日志

市场计划

项目管理计划

输出:

性能测试需求分析

2)方案设计:主要是讲流程思路(比较粗略的),测试用例讲的是具体的一个功能点。(我怎么做这件事,宏观)

测试需求是:什么场景(功能),多少人,在多长时间完成多少事

压测模型是:将上面测试需求,用对应方案,工具,技术来实现

3)计划编写

什么时间,什么人,做什么事,什么时间完成

不同的企业,测试计划的编写形式不尽相同,有完成版和精简版

完整版,有项目背景,风险说明,风险应对等等,通常用Word来编写

精简版,事情—时间—谁做, 通常用project来编写

4)脚本编写:

性能测试脚本

要先了解系统,对接口,功能(模块),彼此间的依赖关系,再开始编写。

常见的问题:

—脚本全都放在一个Action里面,耦合性太强

—没有注释

—写完后没在场景中(编译器中)跑,结果压测一开始,脚本就各种报错 (通常先在场景

中跑15分钟)

。。。。。。

第七课? 性能测试执行

5)环境搭建:

性能测试环境

搭建环境需要多少资源,这个环境要满足什么样的需求(比如 4核8g,带宽多少,需要

多少台)?

主要问题:线下环境如何模拟线上环境?

答:能在线上做就在线上做,两个方面:

没上线的,可以在线上做(没上线,没用户);

全链路的方式(已上线,有用户)。——很多小公司做不到

如果不能在线上做,搭建模拟环境,测试机器的扩展系数+自动扩容(或服务降级)构成

一个方案。

如果线上和实际的数据差异过大,缩放后也没有参考意义,大家都不认可,那就不要

做。(主要指数据的差异,配置上的差异没那么大)

性能测试的差异和功能测试的差异分析,差不多。

PS: 搭建环境完成后,要预热。

6)数据准备:

包括基础数据和业务数据

主要是性能分析的结果:准备多少数据?

测试方案:怎么准备?(业务生成,SQL存储过程,工具生成,导入线上数据(敏感数据

要脱敏))

具体准备:测试准备

自动扩容,扩容系数。。。!!!需要进一步理解

性能测试忌讳记住死数据,要记住的是思想思路。流程是怎么玩的,为什么要这么做,不

这么做的问题是什么。

7)执行压测

设置好场景,跑数据跑出来

8)监控搜集数据

监控:为了搜集数据,为后面分析和调优做准备

9)分析调优

调优往往是一个团队的事

调优:为了软件更好,更能服务预期

过程:是一个迭代反复的。

10)编写报告

什么人,看什么数据,是有讲究的

比如:

给领导看的报告,如何写?(过程中的问题和成长)

给客户看的报告,如何写?(结果)

2)为什么需要流程?

保证项目顺利进行

第八课? 性能测试中的理论模型

7 性能测试指标(重点)

7.1 性能指标详解

1)并发用户数/在线用户数/注册用户数

并发用户数 <= 在线用户数 <= 注册用户数

12306同时在线买票的用户,12306登上去的所有用户,12306的注册用户数

Ps: 并发用户数是用来压测的。注册用户数会根据这个值来造数据。

2)响应时间:

响应时间是和一定的用户行为联系在一起的,对外说的时候:TPS多少的时候,响应时间是多少?

响应时间一般是越短越好,需要看具体测试对象的标准。

响应时间组成(web):

—打开浏览器,在百度中输入:新浪

—浏览器自身的处理

—DNS的解析时间:host — 本地DNS —国内DNS — 国际DNS

—TCP建连时间:三次握手所需要花费的时间

—请求在网络上传输的时间

—服务端接收时间

—服务端解析时间:OSI网络模型接缝状到找到具体的业务程序解析所花费的时间

—数据库处理时间

—数据发送给客户端的时间

—数据在网络上传输的时间

—客户端收到数据并呈现出来所需要的时间

—整个业务处理中经过的模块话费的都要考虑进来

3)TPS:每秒事物数

用来衡量系统处理业务的能力,根据实际需要增加。

注意:

这是看在客户端的角度来说的,并不是服务端自己定义的。

单位是:xx个/

举例:测试登录的性能,一个事务里面可能有很多的请求。

4)吞吐量:

用于反应客户端和服务器之间网络状况的一个指标,其能间接反应服务器承受的系统压力。

衡量网络性能的实际指标(带宽是理论指标)

实际单位是:比特/秒 (bit/s)

5)思考时间:

模拟真实用户操作而停顿的时间间隔。

思考时间会影响系统TPS。

编写脚本的时候,要考虑思考时间

6)资源利用率 — 之 cpu, 内存,网络, IO(磁盘的,网络的)? (在资源监听器窗口可以看)

—CPU: 物理cpu, 逻辑cpu,cpu核心数。(百度,这几个概念要搞清楚)

关注具体指标:

会看整体是否够用。

会看具体要测试的程序用掉多少CPU。

(性能测试里,定性不定量)

—内存

Windows 系统显示用了多少就是多少

Linux 所有的内存都会被系统拿来用。

关注具体指标:

会看整体是否够用。

会看具体要测试的程序用掉多少内存。

有没有交换分区 ———如果使用交换分区,也表明了系统的内存紧张。(win和linux都有,一般当内存使用了80-90%的时候,基本都在使用交换分区了)

—网络(连接客户端和服务端)

关注:带宽,实际吞吐量是多少,丢包率是多少,一般有丢包率的时候还有延迟

—IO (典型:硬盘读写)

关注:当前使用了多少,是谁在读在写,他们各自占用了多少

7.2 不同视角下的性能指标

—用户视觉:TPS, 响应时间

—开发视觉:代码能跑多快

—运维视觉:CPU, 内存,网络,IO

—测试视觉:上述全部

8 性能测试中的理论模型(重点)

8.1 性能测试拐点模型 (图)

TPS和吞吐量是有本质区别的。

TPS是:用来衡量服务端处理业务的个数,是一个网络指标,是实际的值,带宽是一个理论值。

吞吐量是:客户端和服务端之间的网络性能,间接的反应服务端的处理能力。(这里是吞吐量还是响应时间?)

第九课? 性能测试的拐点模型分析

8 性能测试中的理论模型(重点)

8.1 性能测试拐点模型 (图)

1)随着压力增大,响应时间逐渐变大

2)随着压力增大,吞吐量显示逐渐增大,维持一个较高水平,之后吞吐量会下降

3)随着压力增大,资源利用率显示逐渐增大,维持一个较高水平

该模型用于统筹一些指标之间的关系。

这些关系在后面实战及实际工作中可用于排查定位性能问题。

出现拐点的地方,是我们要重点关注的点。

理论情况下,系统在压力大到不可接受后,如果出现崩溃,tps会断崖式下跌。

8.2 理发师模型

该模型用于理解资源调度和业务排队等待之间的关系。

最大的好处是,让我们理解到压力增大之后,吞吐量为什么会降低,资源利用率为什么会

逐渐增高。。。(自己搜相关概念来理解)(模型图跟拐点模型基本一样)

9 前端性能测试

9.1 前端性能测试概述(图)

前端性能测试是一个用户的行为,而服务端性能测试是很多用户并发起来的行为。

9.2 前端性能测试工具介绍

—httpwatch

—Fiddler

—浏览器自带开发工具

—在线前端性能测试工具 : https://gtmetrix.com

(这是谷歌的一个工具,在谷歌浏览器打开,然后输入你要测试的网址。

默认用国外的服务器,如果要用国内的,注册,选择一个国内服务器?)

(运行完了之后看结果,重点看标红的项)

(这个工具能出来很多具体的问题分析,很方便,建议使用)

前端性能测试工具:浏览器的开发者工具(F12), httpwatch, 在线免费工具等。

9.3 前端性能优化工具介绍(略)

1)smush.it 图片优化

2)PunyPNG图片优化

3)SiteReportCard图片优化

4)js优化

5)css优化

9.4 前端性能测试实战

1)注册一个https://gtmetrix.com 账号,并登录

2)输入 www.sina.com.cn 并开始测试

3)搜集测试数据,并分析测试结果是否符合预期

10 App 性能测试

某个角度来说,APP装在移动设备中,可以看作是嵌入式设备。

所以APP的性能测试既受嵌入式设备的限制,也要考虑APP自身的特点。

这里的性能测试,重点是服务器端,APP性能测试略。

作业解答:

  1. 如何识别性能瓶颈点

TPS —— 响应时间

分析:初步性能数据是否满足预期?

满足呢,则看四大件有没有潜在风险,有潜在风险的话,分析。

不满足呢,分析,看看瓶颈点在哪里,看谁占用过多的资源,再进一步确认它占用这么多资源和不合理,如果合理,ok。如果不合理,开发介入优化。

2. 你如何设计负载?标准是什么?

测试出满足产品需求的数据(假设是50)

开始设计负载测试,以大于50的压力开始跑,比如60,70, 80…….开始跑负载测试,直到系统挂掉(压力测试压挂掉系统时的压力)

实际上

更关注性能测试,更关注系统的稳定性

要知道系统能不能满足应用

要知道系统什么时间点开始不满足应用

什么情况下会挂掉

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-04 17:36:52  更:2021-09-04 17:37:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:46:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码