• UID10469
  • 登录2016-12-12
  • 粉丝1
  • 关注0
  • 发帖86
  • 主页
  • 金币422枚
社区居民
原创写手
binggo 发布于2016-04-05 09:44
1/1020

性能测试场景浅析

楼层直达
性能测试过程中,目标不同,需要选择的性能测试场景也有很大的差异,今天以HyperPacer为例,简单说说并发测试、负载测试、压力测试到底都是什么怎么个含义。

图片:图片2.jpg




并发测试


所谓并发测试就是模拟一群人同一时间做事。在性能测试工具还未普及的暗黑岁月,并发测试都是一群人盯着电脑,一个人喊开始,大家便在同一时间点开始操作的那种,点完之后还得每个人看响应,报时间,一群人玩儿的不亦乐乎,做个性能测试顺道还能交流交流,联络联络感情,看着挺好玩,但效率上保证不了。而且并发量不是非常大这样还能玩的起来,并发量要是成百上千的话,就没法这么弄了。
之后有了性能测试工具介入之后,这种好玩的场景便销声匿迹了。并发测试开始了新的篇章,不会有没反应过来慢半拍的同事,都是一水儿的稳准狠。还能对并发操作进行精细的调整控制,以便更好的模拟真实的场景。
瞎扯的说那么多,现在上干货。并发测试就是对被测系统的并发处理能力进行考察的一种测试手段,一般都是看在绝对并发的情况下,系统能承载多大的并发量,或者在一定的并发量下,系统的响应时间是否是可接受的。
由于是绝对并发对服务器的瞬时压力非常大,性能测试人员在开展并发性能测试之前,一定要调查清楚实际的测试需求是不是真正的绝对并发,绝对并发量到底有多少。有时候需求人员在不知道确定概念之下,把相对并发的那种场景也按绝对并发说,往往得到的结果是系统不能有效支持,而实际却是绝对并发场景的含义两边理解的不一样。
举个形象的例子,12306春运期间的放票,一到放票开始,N多的用户在同一时间点对服务器发起买票的请求。比如8:00放票时段,有100万用户对12306发起了买票的请求。由于各自请求经过的路由不完全一样,到达服务器时的顺序也是有先有后。实际同一时间点对该服务的压力只有100万中的一部分,假如是5万个用户请求,剩下的略慢到达的95万用户请求,才陆陆续续到达,都在后面排队等待处理。此时票务处理过程第一波的绝对并发就不是那100万发起请求的用户数,而是真正得到处理的那5万个的用户,等这5万个之中有处理完成的,再放一部分用户的请求进来处理。(由于不是铁路系统内相关系统的操作人员,这个只是为了举例而假想的场景,知情人士可一笑而过)。这其中的5万用户才是票务处理系统实实在在的绝对并发用户量,而不是实际参与的100万都要算进来。
需要做并发测试时,在LoadRunner里有集合点,在HyperPacer里叫做同步定时器,都是对这种场景模拟时用到的同一个东西。作用是当累积到的用户量符合释放条件时,就所有用户一起释放,模拟大家一起操作的场景。如果不加集合点/同步定时器的话,则是早到的早开始,晚到的晚开始,达不到绝对并发的那种效果了。
如果需要测试的场景不是严格意义上的绝对并发,而是在一定的时间范围内进行释放,则可在同步定时器后面再加泊松随机定时器或高斯随机定时器一类的元件来模拟。

压力测试


压力测试是在接近用户承载量极限以下一些(还不足以把系统压垮的用户量),较长时间不间断执行的性能测试,是检查系统稳定性,系统性能瓶颈的一种常用场景。
由于性能测试通常都要尽可能模拟实际用户使用场景,在压力测试过程中,用户的加载策略,操作方式等就需要尽量模拟真实情况下的操作用数量和上下线策略。比如在早上半个小时内,会有500个用户登录,完成登录后就一直操作;下班前15分钟,则陆续退出系统。当然实际的系统的用户登录上线和下线不一定那么规律整齐划一。可通过不同分组设置相应的用户数量、采用不同延时,不同的持续时间来模拟。关于用户初始和用户结束之类的加载策略由于超出了本文的范围,此处一笔带过,将来有机会再表。

图片:图片3.jpg




负载测试


负载测试和压力测试经常有人弄混,出个加载策略图和前一个场景的加载策略图比较一下就明白了。

图片:图片4.jpg


所谓负载测试,从图上直观上看就是一批一批的加用户,待到当前在线用户执行稳定后,再加下一批的用户,像这样不停的持续加压,直至系统性能明显下降或系统崩溃为止。是测试系统用户上限,查找系统性能瓶颈的重要手段。通常在还不知道系统能承载多大业务量的情况下,为找到用户承载量极限或为了快速定位系统性能瓶颈时,会采用此种方式进行测试。

总结


虽然性能测试工具提供了多种的性能测试场景来做性能测试过程的调度,但在实际性能测试过程中,依然是按照实际性能测试需求为准,尽量模拟用户的实际行为。在充分了解了性能测试目标的情况下有的放矢,从容选择。而不是无论那种性能测试需求,都先用负载测试的场景测到系统崩溃再说。
TestBird云测试
基于全球首创的对象识别技术,TestBird可以为客户提供深入到移动App&游戏内部所有功能的深度解析能力。通过自助App功能测试、远程真机调试、真机兼容性测试、真人体验测试、 真人压力测试和崩溃分析等产品,TestBird建立了云手机、云测试和云分析三大测试平台,为移动应用提供从研发到上线再到运营的一站式质量管理服务,帮助移动应用企业建立完善的质量管理体系和能力,全面提高移动应用的DAU、留存率以及付费情况。

0人打赏
  • UID10932
  • 登录2016-04-06
  • 粉丝0
  • 关注0
  • 发帖1
  • 主页
  • 金币11枚
qq_tPNcHzw14599 发布于2016-04-06 11:43
沙发F
不错,感谢分享
您需要登录后才可以回帖
发表回复
极贡献
技术问答
专题荟萃
程序人生
视觉设计
Android开发
iOS开发
编程语言
前端开发
后端开发
服务器架构
软件测试
运维方案
创业路上



最热文章墙

  • 72677/370   【精品推荐】200多种Android动画效果的强悍框架,太全了,不看这个,再有动画的问题,不理你了^@^

  • 41481/0   Python爬虫:常用浏览器的useragent

  • 41450/191   情人节福利,程序员表白的正确姿势:改几行代码就变成自己的表白了

  • 37959/259   【精品推荐】Android版产品级的音乐播放器源码,功能太强大了,最好的产品原型有木有?

  • 36513/145   省时省力的Android组件群来了,非常棒的原型参考

  • 28435/2   超全!整理常用的iOS第三方资源

  • 27909/71   原创表白APP,以程序员的姿势备战新年后的7夕,持续完善中!

  • 27798/142   2016抢红包软件及源码

  • 22084/30   麻省理工的一帮疯子,真的实现了随意操控万物!(绝对黑科技)

  • 21912/157   Android版类似UC浏览器:非常赞,产品级的源码

  • 21700/25   Android工程师面试题大全

  • 21542/27   2016程序员跳槽全攻略

  • 21364/9   GitHub上排名前50的iOS项目:总有一款你用得着

  • 20246/20   码魂:程序员的牛B漫画

  • 18448/10   2016年最全的Android面试考题+答案 精编版

  • 18196/3   吐槽那些程序员的搞笑牛逼注释

  • 17829/42   一个绚丽的loading动效分析与实现!

  • 17726/73   【持续更新中】Android福利贴(二):资料源码大放送

  • 17711/85   Android小而全的博客源码:非常适合全面掌握开发技巧

  • 17119/1   iOS 动画总结

  • 16608/45   惊艳的App引导页:背景图片切换加各个页面动画效果

  • 16308/23   个人收集的Android 各类功能源代码

  • 16131/81   仿京东商城客户端Android最新版,不错的原型和学习资料

  • 15950/10   女程序员的梦,众网友的神回复

  • 15845/5   新一代Android渠道打包工具:1000个渠道包只需要5秒

  • 15739/104   Android带弹幕的视频播放器源码,来自大名鼎鼎的Bilibili弹幕网站

  • 15646/11   年会上现场review代码是怎么样的体验!

  • 15529/21   Android福利第三波【Android电子书】

  • 15447/17   用JavaScript 来开发iOS和Android 原生应用:React Native开源框架中文版来啦

  • 15442/53   基于瀑布流的美女图片浏览App,有注释的源代码

  • 15261/23   珍藏多年的素材,灵感搜寻网站

  • 15066/79   【精品推荐】类似360安全卫士安Android源码:非常赞的产品原型

  • 14890/0   iOS中文版资源库,非常全

  • 14518/18   65条最常用正则表达式,你要的都在这里了

  • 14212/15   基于Android支付宝支付设计和开发方案

  • 13676/17   什么是真正的黑客:收获12200+Stars,人气远超微软开源VS

  • 13475/11   有木有这样一张酷图帮你集齐所有git命令超实用

  • 13039/46   在线音乐播放器完整版(商用级的源码):非常赞,可听免费高品质专辑

  • 13021/7   一张图搞定iOS学习路线,非常全面

  • 12938/7   用程序员的姿势抢过年的火车票

  • 12921/0   GitHub iOS 库和框架Top100 

  • 12644/10   成为Java顶尖程序员 ,看这11本书就够了

  • 12518/10   微信支付终于成功了(安卓,iOS),在此分享

  • 12468/18   一张图搞定Android学习路线,非常全面

  • 12330/61   【技巧一】搭配Android Studio,如何实现App远程真机debug?

  • 12134/3   基于Node.js的强大爬虫,能直接发布抓取的文章哦

  • 12080/29   【持续更新中】Android福利贴(一):资料源码

  • 11523/4   46 个非常有用的 PHP 代码片段

  • 11278/3   即时通信第三方库

  • 10892/8   流媒体视频直播方案

  • 10788/18   八个最优秀的Android Studio插件

  • 10746/9   B站建开源工作组:APP想支持炫酷弹幕的看过来

  • 10617/9   烧了5亿美金,这家神秘的公司即将颠覆人类未来!

  • 10467/2   【精品推荐】高质量PHP代码的50个实用技巧:非常值得收藏

  • 10409/10   中国黑客的隐秘江湖:攻守对立,顶尖高手月入千万美元

  • 9793/6   开箱即用!Android四款系统架构工具

  • 9598/10   十大技巧快速提升Android应用开发性能

  • 9534/3   10款GitHub上最火爆的国产开源项目——可以媲美西半球

  • 9459/3   一张图看清Linux 内核运行原理

  • 9360/1   Android性能优化视频,文档以及工具

  • 返回顶部