性能测试(一)------对理发店模型的个人理解

2018/12/27 给自己定的目标,体系化的学习性能测试,虽然目前公司并没有提供接触性能测试的机会,但希望自己空暇之余,可以多提升下自己的技能,为以后的需要做好准备,对自己的职业发展也会有好处。

本阶段的学习准备参考虫师的学习路线,结合自身,坚持每日学习,记录自己的成长和学习成果。


学习性能测试,不能急于去使用工具,我认为应该先弄清楚性能测试是什么,为什么要进行性能测试,性能测试的指标分别有什么含义,搞懂了这些再去接触性能测试工具。否则,直接去学习一个工具,只是学会了对工具的使用,但是性能分析、性能要素自己还是一概不知的,这样的性能测试是没有意义的。


理发店模型博客文章链接:https://www.cnblogs.com/jackei/archive/2006/11/20/565527.html

理发店模型是一篇带我们走进性能测试很好的文章。这篇文章我已经看过了好几次,每次都会有不同的见解,很感谢博主分享给我们这么好的文章~~~


对于理发店的假设:

1.        理发店共有3名理发师;

2.      每位理发师剪一个发的时间都是1小时;

3.      我们顾客们都是很有时间观念的人而且非常挑剔,他们对于每次光顾理发店时所能容忍的等待时间+剪发时间是3小时,而且等待时间越长,顾客的满意度越低。如果3个小时还不能剪完头发,我们的顾客会立马生气的走人。

对于性能测试而言,这个假设确定了软硬件的资源环境和配置;还确定了性能需求,响应时间不能超过3个小时。

通过上面的假设我们不难想象出下面的场景:

扫描二维码关注公众号,回复: 4768523 查看本文章

1.        当理发店内只有1位顾客时,只需要有1名理发师为他提供服务,其他两名理发师可能继续等着,也可能会帮忙打打杂。1小时后,这位顾客剪完头发出门走了。那么在这1个小时里,整个理发店只服务了1位顾客,这位顾客花费在这次剪发的时间是1小时;-------并发用户数是1,此时资源没有得到充分的利用,响应时间是1小时。

2.      当理发店内同时有两位顾客时,就会同时有两名理发师在为顾客服务,另外1位发呆或者打杂帮忙。仍然是1小时后,两位顾客剪完头发出门。在这1小时里,理发店服务了两位顾客,这两位顾客花费在剪发的时间均为1小时;-------并发用户数是2,此时资源仍然没有得到充分的利用,响应时间仍然是1小时。

3.      很容易理解,当理发店内同时有三位顾客时,理发店可以在1小时内同时服务三位顾客,每位顾客花费在这次剪发的时间仍然是均为1小时;-------并发用户数是3,此时资源得到了充分的利用,响应时间不变,1小时。

从上面几个场景中我们可以发现,在理发店同时服务的顾客数量从1位增加到3位的过程中,随着顾客数量的增多,理发店的整体工作效率在提高,但是每位顾客在理发店内所呆的时间并未延长。

不过随着理发店的生意越来越好,顾客也越来越多,新的场景出现了。假设有一次顾客ABC刚进理发店准备剪发,外面一推门又进来了顾客DEF。因为ABC三位顾客先到,所以DEF三位只好坐在长板凳上等着。1小时后,ABC三位剪完头发走了,他们每个人这次剪发所花费的时间均为1小时。可是DEF三位就没有这么好运,因为他们要先等ABC三位剪完才能剪,所以他们每个人这次剪发所花费的时间均为2小时—包括等待1小时和剪发1小时。---------并发用户数是6,此时资源得到了充分的利用,对于一部分用户来说,响应时间延长,但还在可接受范围内(在性能需求范围内)。

在新的场景中,我们假设这次理发店里一次来了9位顾客,根据我们上面的场景,相信你不难推断,这9位顾客中有3位的“响应时间”为1小时,有3位的“响应时间”为2小时(等待1小时+剪发1小时),还有3位的“响应时间”为3小时(等待2小时+剪发1小时)——已经到达用户所能忍受的极限。--------并发用户数是9,此时资源得到充分利用,对于一部分用户来说,响应时间延长(响应时间较之前还要久),在极限边缘。

假如在把这个场景中的顾客数量改为10,那么我们已经可以断定,一定会有1位顾客因为“响应时间”过长而无法忍受,最终离开理发店走了。--------并发用户数是10,此时资源得到充分利用,对于一部分用户来说,响应时间延长,对于另一部分用户来说,响应时间已经达到了极限(超过了性能需求所规定的的时间),而离开(请求失败)。


对于“最佳并发用户数”和“最大并发用户数”的认识

“最佳并发用户数”:此时,资源得到充分利用,用户的响应时间不变,每秒钟处理的事务数达到最高点

“最大并发用户数”:此时,资源得到充分利用,用户的响应时间延长,但在极限范围内,每秒钟处理的事务数已经在逐步减少。

当我们需要对一个系统长时间施加压力——例如连续加压3-5天,来验证系统的可靠性或者说稳定性时,我们所使用的并发用户数应该等于或小于“最佳并发用户数”——--------用理发店模型来解释,如果想要对一个系统长时间加压测试稳定性,如果并发用户数是每小时6个人,第一个小时有3个顾客理发时间是1小时,3个顾客理发时间是2小时;在第二个小时又来了6个人,其中,有3个人的理发时间是2小时,另外3个顾客理发时间是3个小时,在第三个小时又来6个人,等待的人数会越来越多,最后导致越来越多的顾客忍受不了等待而离开(请求失败)。

 

测试小白一枚,如果理解有误,还望大家指正我~~

猜你喜欢

转载自blog.csdn.net/loner_fang/article/details/85275306