【云桌面】性能测试--过程中遇到的问题总结

性能测试任务是云桌面性能压测,接到需求后首先对云桌面的部署架构及要压测的业务场景做了初步的了解,根据架构和业务场景的复杂度好去评估测试计划中各个阶段所需要的时间。初步了解之后发现云桌面的系统架构及要压测的业务场景并不复杂,排了一个测试计划后开始按计划实施,然而整个测试过程中发现并没我想的那么“单纯”,还是遇到了很多问题,和大家分享交流下。

这个问题是我在脚本开发过程中遇到的,发现Jmeter在录制脚本过程中一直有一个请求在不停的发送,比如登录系统后加载首页,打开首页的这个事务控制器下除了录制到加载首页的接口之外发现包含该路径/icdp/smc/listNotifySchedu的接口在不停的录制,这就导致我每次录制一个场景的脚本之后,还要去一一删选我需要的接口,很浪费时间。通过该接口的返回数据,也看不出这个接口的作用,和开发沟通后了解到这个接口只是我们对接第三方业务系统的一个消息推送的接口,不需要压测,在脚本调试和压测过程中都可以把这个接口屏蔽掉。那么问题就来了,jmeter录制脚本过程中如何过滤包含某个指定路径的接口请求?我之前录制脚本只知道怎么去屏蔽css、js、gif、png等静态资源加载,但如何过滤具体的接口路径,还是第一次遇到,在网上百度了Jmeter的排除模式,也都是静态文件的过滤,还是没有方法,最后在飞测群里问了大佬,才学习到解决方法---正则表达式。

设置排除模式之前,包含/listNotifySchedu的请求在不停的发送

     用正则表达式在Jmeter的排除模式中设置过滤该路径/listNotifySchedu的请求后,就可以正常按业务场景录制脚本了。

问题二、Jmeter中的正则表达式如何提取参数匹配到的所有值?

    这个问题可能很简单,很多同学网上一百度Jmeter的正则表达式就会了解到匹配数字的含义:0代表随机取值,1代表取匹配到的第一个值,-1代表取所有值。真正实际应用场景中我们用的最多的可能都是0或1的场景,什么情况下才会用到-1的情况呢,以及如何去应用取到的所有值,和大家分享下。

业务场景:在云桌面首页点击应用管理菜单,进入应用商店页,在加载应用商店页面资源的过程中会加载应用商店页面首页的所有应用标识,一个接口返回一个应用标识,每一个应用的应用标识是和它的应用id所关联的,那么我就要取到每一个应用的应用id,首页一共有20个应用,就要取到首页所有应用的应用id。

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

操作步骤:

1、在获取应用id的请求下面添加正则表达式提取器,提取应用id

2、添加Debug Sampler,运行脚本之后可以在察看结果树中看到marketapp_id取到的所有值。

3、一个接口返回一个应用标识,每一个应用的应用标识是和它的应用id所关联的,将取到的marketapp_id的参数按顺序传到相应的接口参数中去。

其实之前有做过这种场景的,当时觉得很简单,还觉得自己get了新技能,结果后来很长一段时间没写过脚本了,这次脚本调试过程中遇到这种问题居然就卡住了,虽然最终还是找邱大神协助解决了,但也深刻的意识到积累的重要性,平时过程中遇到的问题还是要多记录,多积累,避免重复的问题反复问。

问题三、性能测试场景中如何模拟在线用户?

我们这个项目中有一个需求是这样的:2000用户在线,100用户并发访问首页。和开发沟通了解了具体的需求:2000用户是在线登录状态,这2000用户中要达到100用户并发去访问首页,在这个过程中可能会有停留时间,并不是用户登录之后就一定要去访问首页。我以前做过的性能测试都是单个web场景多少并发压测,模拟在线用户还是第一次接触,首先网上百度了怎么设置模拟在线用户,并没有形象的案例,还是找了邱大神和刘大佬指点,最终测试完成。过程记录了下来,如有不对的地方,可以指出相互交流。

1、分析需求,2000用户在线,100用户并发访问首页。用户必须要登录之后才可以访问首页,相当于要压测两个场景,一个登录场景,一个访问首页的场景,只是每个场景访问的用户量不同。于是想到可以用吞吐量控制器去模拟混合场景并发,总的线程设置2000并发,其中95%的用户是登录状态,5%的用户是访问首页的状态。

2、模拟在线用户,2000用户是在线登录状态,这2000用户中要达到100用户并发去访问首页,在这个过程中可能会有停留时间,并不是用户登录之后就一定要去访问首页。于是考虑加个思考时间---固定定时器。需要让每个线程在请求之前按相同的指定时间停顿。

3、脚本运行时间建议30min以上,如果运行时间太短,脚本运行结束的时候会少量报错,可能是请求没返回结果进行结束导致。

猜你喜欢

转载自blog.csdn.net/zhusongziye/article/details/83514189