[性能测试实战30讲」之问题问答整理七_性能测试



废话不说,直接入正题

思考题

[性能测试实战30讲」之问题问答整理七_性能测试_02


1、你能用自己的话说一下代理录制的逻辑是什么?

2、当访问网页时,为什么第一个请求至关重要?废话不说,直接入正题


0

1

第一个问题:代理录制的逻辑是什么?


你也许听过这样一句至理名言:“计算机科学领域里的任何问题,都可以通过引入一个中间层来解决”。TCP/IP 协议栈是这样,而代理也是这样。

所谓的代理(Proxy)是 HTTP 协议中请求方和应答方中间的一个环节。既可以转发客户端的请求,也可以转发服务器的应答。

代理常见种类:匿名代理、透明代理、正向代理、反向代理.

代理可以做的事:负载均衡、内容缓存、安全防护、数据处理。


此处简单理解 JMeter 录制脚本则通过代理是通过转发数据包并拦截上下行的数据解析生成脚本,但录制出来的脚本都是原始的 http 请求,并没有经过适当的封装,所以录制功能比较

0

2

当访问网页时,为什么第一个请求至关重要?

 实际上,对浏览器来说,他们做的事情,就是把一个 URL 变成一个屏幕上显示的网页。这个过程是这样的:

1.浏览器首先使用 HTTP 协议或者 HTTPS 协议,向服务端请求页面;

2.把请求回来的 HTML 代码经过解析,构建成 DOM 树;

3.计算 DOM 树上的 CSS 属性;

4.最后根据 CSS 属性对元素逐个进行渲染,得到内存中的位图;

5.一个可选的步骤是对位图进行合成,这会极大地增加后续绘制的速度;

6.合成之后,再绘制到界面上。


简单理解浏览器的工作原理就很容易回答这个问题了,第一次请求后需要构建 Dom 树(内存中的数据结构),而这棵 DOM 树其实就是前端程序的业务状态。



作者回复: 理解的非常细节了。
第一个请求是创建DOM树的,没有它,后面的请求都没有地方放了。

0

3第一个问题:代理录制的逻辑是什么?

  不管是在本地代理还是远程代理, 都是通过代理的设置,在客户端和服务端之间插入一个中间件,中间件接手客户端的请求并转发到服务端.
说白了就是端口映射, 也就是老师文章里说的Port mapping

另外, 端口映射工作在传输层,重定向工作在应用层, 他们是两个东西

不知道我这么理解有没有问题?

2. 访问网页时,为什么第一个请求至关重要?
第一个请求如果都有问题,那后面就算有请求也没有再分析跟踪的必要来.


04




这一篇很实用,最近听高老师的段子有种追美剧的感觉对locust很有兴趣,不知道后面是否会有涉及。个人感觉如果是python平台的话locust很容易使用,而且方便将性能测试用例自动调度执行插入CI环节做回归验证。使用起来与Jmeter有些不同,更方便对已有测试用例资产的重用


作者回复: 从排名上看这个工具还是市场不大,所以没打算讲。
其实一开始我连工具都没打算讲。哈。


05

本节课我看了几遍,不是老师讲得不好,而是本人没接触过Jmeter、Loadrunner工具,没有对话能力呀!几个月前,用华为的PTS做了几个简单场景的压力测试,主要是利用Fiddle先抓包分析,按照PTS要求编制脚本,属于手工编制的脚本。PTS也有脚本录制功能,因为当时有其他工作,本职也不是测试,所以没有深入去研究。
代理录制就是通过测试工具代理录制功能,在浏览器与服务器之间充当第三方代理,从而自动获取并记录交互信息,为最终测试脚本生成提供快捷有效的基础和依据,集成了手工编制测试脚本中的抓包软件信息获取、分析、编制脚本几个功能。


作者回复: 那要学习性能测试就得去练工具的使用了。

另外,PTS好像是阿里的。


06

1、代理录制的逻辑是什么?
--- 请求响应的时候,不是直接到目的地,而是经过代理服务器,这时代理服务就可以拿到对应的请求和结果了;
2、访问网页时,为什么第一个请求至关重要?
--- 在录制的时候,有时是只录制第一个请求,后续的资源和其他重定向的请求,都是通过第一个请求来获取的。


作者回复: 关于2, 第一个是DOM,没有它,后面的全都没了。


总结

     在性能测试的过程中,有很多新手对录制的逻辑并不清楚。代理录制的这个动作他们也可以很快学会。但是很快就忘记了,我曾经给一些人手把手教过如何做代理录制。结果第二天就不记得了。其实并不是不记得动作,而是出了问题,脑子里没有判断问题的逻辑,所以根本无从下手排查。


    另外,你需要注意的是,录制功能并不是性能测试工具必备的功能。对性能测试工具来说,关键功能是能实现模拟批量的真实请求逻辑。至于脚本是如何实现的,怎么做就是可以的。所以我们可以用其他的工具,比如说 BadBoby、Fiddler 甚至 Wireshark 抓到交互请求,再放到 JMeter 中实现脚本,也完全是可以的。


  当然没有脚本就无从实现压力,所以脚本的实现是性能测试工程师必备的基础技术,理解原理也是必须的。




[性能测试实战30讲」之问题问答整理七_服务端_03