美文网首页软件测试干货整理@IT·互联网财经·投资·理财
连载|用尽荒洪之力总结之Loadrunner性能测试

连载|用尽荒洪之力总结之Loadrunner性能测试

作者: 笑笑爱笑smile | 来源:发表于2016-08-11 20:05 被阅读1445次

    上篇回顾:听说软件测试,钱多活少离家近

    软件测试火的一塌糊涂的时候,大家心里估计在颤抖。不就是点点系统嘛,能有什么大出息,软件测试做几年以后大家水平都差不多,如何才能不被快速取代,去做性能测试呀。

    测试做久了就会知道,性能测试是测试人员的终极梦想,这是为什么呢?工资高呀。我有朋友做了3年功能测试,感觉太机械,然后报培训班学习性能测试,目前从事性能测试工作。

    万事开头难,我从想做性能测试到现在5个年头过去了,现在把做性能测试过程中的迷茫、坚持、到后来的被认可写下来,纪念下那年的加班岁月。

    我一直认为自己很幸运,在校期间就找了份实习工作,做金融方面的测试。银行系统涉及到钱,所以从公司到银行很重视测试。当然了现在互联网时代,性能测试就更重要了。

    大三暑期实习时做了软件测试,培训老师说软件测试分为功能测试和性能测试,最牛逼的是做性能测试,那简直是受万人敬仰。

    刚好学校开始选毕设课题,看到了loadrunner性能测试题目,带着想成为行业的大拿,受到膜拜的幻想,于是乎选择了这个课题,仿佛看到了未来做性能测试的样子。

    由于在学校老师没教过这个,所以得自学,就连loadrunner工具也得自己在网上下载,loadrunner是大型商业软件,小公司用的大都是开源工具,公司做银行系统,所以性能测试是重中之重,正好有此软件。

    第一次听培训老师讲性能,特别认真的带着本和笔坐第一排听。培训老师在公司待10多年了,讲的很好。“80%的交易是20%的时间完成的、tps、tps拐点、脚本、并发用户数、最大并发用户数、单交易场景、混合交易场景等”听的云里雾里。

    实习时在公司培训班待了一周,做了个小型银行系统,大概只有账户查询、开户、存款贷款等小模块。系统用于是乎我就在电脑里安装了这个系统做性能测试。

    公司有配置库,文档包括各种类型,恰好有性能测试文档。由于公司有2人做性能测试,常年在客户现场出差,所以一切都得自学,带我毕设的老师也是没做过这方面的工作。

    度娘里找答案,清一色全是loadrunner的工具使用,如何设置参数、如何录制脚本、脚本参数化等。到了这步就木有下文了,宝宝心里苦。

    我最想看到的是录制脚本后脚本运行成功(数据库里有条成功数据)、如何设置场景、如何获取有用的数据、以及如何测出瓶颈、以及如何解决瓶颈、最后出份漂亮的性能测试报告。心理想着等我哪天做完性能测试一定和大家分享有用的知识。

    现在回想起来,当初真是太可怜了,录制脚本后,回放录制的视频,界面一直显示登录超时,登陆脚本都无法登录系统,更别提之后的测试脚本了。

    大四毕设做的很不好,没人指导,自己在瞎琢磨,没有写过测试脚本,毕设答辩内容很空洞,勉强通过。

    由于一直有做性能测试的心思,离开了第一家公司。之后找工作时拒绝了二包公司、拒绝了单纯的界面测试,找了家功能测试、性能测试都涉及的。然后就一直待这家公司。

    我主要做理财项目,涉及功能测试、接口测试、压力测试、稳定性测试。

    2014年银行理财忽然卖的很火,某城商行,系统承受不了压力,然后要做压力测试。我作为项目组唯一的测试员,这项工作落在我头上。真是又紧张又兴奋,开心的是可以亲手做性能测试了,紧张的是之前只有点基础。

    就像如开发人员初次学习写代码,运行helloworld一样,我首先得录制登录脚本,只要这个调通其他的也就迎刃而解。

    web系统,基于web(HTTP/HTML)脚本很快录好了,可是运行显示登录超时,百思不得其解,领导下命令今晚必须出结果,怎么办,打电话求助公司的性能测试部门,他让我在脚本里做了个关联就可以了。

    脚本调通后,运行脚本,查看日志显示交易成功。保险期间我写了个select语句查询流水表,金额、账户都正确,就是刚执行脚本后插入的那条数据。

    终于成功了一把,最终熬到凌晨2点,设置了系统运行8小时,回家睡觉去了。第二天查询数据库,成功了10万多条没有报错,简直好惊喜。

    由于知识有限,第二天买了本性能测试书,那段时间,只要闲下来就会录制其他交易的脚本,学习到了脚本参数化、关联等。那年别的项目也做性能,所以我学习了web、socket、xml协议的脚本。

    测试脚本

    做性能测试第一步就是写测试脚本,一个完美的脚本是成功的一半。

    脚本分为2种模式:录制、手动编写。

    由于系统是web类型的,所以直接用工具录制,关键是当初也不会写啊。

    连载|用尽荒洪之力总结之Loadrunner性能测试

    脚本参数化:

    添加事务

    连载|用尽荒洪之力总结之Loadrunner性能测试

    loadrunner11以上版本不添加事务,场景执行后tps无值。

    关联

    关联分为自动关联、手动关联,适合复核交易,通过流水号查询交易,适用于http协议。

    测试数据参数化

    连载|用尽荒洪之力总结之Loadrunner性能测试

    测试脚本中为了保证流水号的唯一性,添加时间数字+时间毫秒设置。

    日志设置

    f4设置log,选择参数等。

    图片发自简书Ap

    脚本运行后,日志框会显示交易状态,遇到有参数时写print语句,日志里可以看到参数取值是否正确。

    socket脚本模版

    xml脚本,保证发起报文和接收报文都是明文,接收端如果是密文,测试时先解密再测试。

    连载|用尽荒洪之力总结之Loadrunner性能测试

    发送报文,报文长度必须正确,接收报文内容可以为空,长度数字写大点,确保大于实际的报文长度。

    公司针对测试接口有模拟工具所以可以直接录制,也可以写脚本。首先明白接口用的是什么报文然后再写脚本。

    现在给大家一份性能测试报告

    1、测试背景

    首先确保功能测试覆盖率达到100%,缺陷通过率大于95%,其次做性能测试。银行理财产品有银行兜底,所以卖的很火,银行发产品后客户集中在一段时间抢购,导致系统压力,出现大量失败的交易,所以为了保证系统长期运行的稳定性,针对典型交易做性能测试。

    2、测试目标

    获取系统的处理性能指标,满足当前生产系统及未来3年的业务发展需要。

    发现性能瓶颈,协助开发人员进行性能调优。

    3、测试指标

    平均事物响应时间ART:

    响应时间遵循2、5、8s原则,本次测试响应时间小于等于8s;

    并发用户数:

    现在高峰日操作人数500人,20%的并发量计算,高峰日并发用户数大于等于100

    规划未来2年高峰操作达到600人,20%的并发量,并发用户数大于等于120

    规划未来三年操作人数达到700人,20%的并发量,用户数大于等于140。

    资源使用指标:

    cpu使用率小于等于80%

    内存使用率小于等于80%

    磁盘交换率小于等于80%

    tps值:

    每秒处理的业务笔数,80%的交易在20%的时间完成,每天交易量10万笔,一天8小时

    tps=80%*100000/(8*3600*20%)=13.89

    并发交易成功率:大于等于95%

    4、选取典型交易

    性能测试主要针对交易量大的交易,如购买、赎回、份额查询。

    5、测试工具

    loadrunner8.1

    nmon监测资源使用率,磁盘、cpu、内存等。

    6、测试类型

    基准测试

    单交易单用户测试,典型交易在无压力情况下获取单笔交易处理的耗时,为之后的并发测试提供一个数据参考,一个用户跑5分钟。

    验证测试脚本及测试参数的正确性。

    获取单笔交易的性能数据,主要是单笔交易平均响应时间、TPS。

    并发测试

    主要分为:单交易多用户测试和混合交易多用户测试,由于最后要跑稳定性,本次只做单交易多用户测试。

    每个典型交易通过单交易多用户迭代执行,获取性能指标,比如TPS、ART、系统资源使用情况,根据需要进行性能调优。

    tps出现拐点时,继续测2组数据,如果这2组数据tps明显下降,此时就测出了最大并发用户数。

    备注:交易数据库有当前流水表和历史流水表,所以每次跑场景前删除当前流水表的数据。

    稳定性测试

    多交易多用户的并发混合模式,对被测系统进行长时间的稳定测试,获取持续加压下的性能指标。考察是否会出现宕机、响应时间变长、交易成功率下降、资源使用率达99%的情况。

    选取单交易并发时的最大用户并发数取中间值跑稳定性。

    7、测试总结

    目前我遇到的瓶颈和解决方式

    1、磁盘交换率达到99%;

    2、内存使用率5%左右;加大系统进程数并增加并发用户数。

    3、内存使用率高达99%;经查看系统实时刷日志,原因是某个可有可无的参数没配置。

    4、单交易sql执行时间2s;增加索引。

    5、单交易执行时间过长;每次sum金额时,交易太多,执行时间过长,增加一张表每做一条交易sum一次,分担了压力。

    6、tps值明显在某个时间点降低,经查询当前流水表数据大于100万条;这个目前无解得对数据库进行调优。

    实践出真知,知识有限,就分享这么多了,写这篇文章已经用尽了我的荒洪之力。


    小白测试系列连载中…

    有些文章会有一些逻辑颠倒问题,我实时发现实时修改,简书是最新版。

    谢谢阅读,如文中有一个字一句话触动到你,留个喜欢可好?

    相关文章

      网友评论

      • fca94f417bd2:大神请教一个问题啦,主题就是虚拟用户与运行时间的迭代,脚本中被测系统的实际用户参数化的关系!
        比如说我,一个脚本是用户登录,再做一个频繁业务,在退出。
        第一个问题,代码都放在action中与登录在init、业务在action,退出在end。这两种有区别没,虚拟用户执行脚本是怎么的!?
        第二个问题,脚本参数化被测系统的实际用户100个,是不是就虚拟用户就只能设100个,虚拟用户可以理解为一人操作一台电脑执行一次脚本!?
        第三个问题,负载生成器按场景设置每秒X个启动虚拟用户去执行脚本的,那执行完了,运行时间设置长,那这些虚拟用户就都不会去关闭!?那继续执行脚本的是不是就迭代执行全脚本(登录做业务退出)!?运行时间完了就按设置没秒关闭虚拟用户!?
        第四个问题,那我脚本不写退出,就只有登录做业务,那又是什么情况!?
      • 六月_elins:请教笑笑:单交易多用户测试,为什么老是不能生成数据,然后单用户单交易却可以(cookie存的用户,登陆用户之后录制的订单)!:wink:
      • J丶MyDream:用loadrunner11录制 手机APP的时候总是设置不对,请问你录制过吗,给点经验
      • mo囹乱:我录制脚本回放的时候报错26488,你能告诉我什么原因吗
      • 木沐__:受益匪浅~~谢谢~~ 请问涉及到支付的脚本如何处理的?
      • 笑笑爱笑smile:大家有木有兴趣一起建个软件测试微信群
        何必如此:@笑笑爱笑smile 还想跟您学习呢
        笑笑爱笑smile:@土豆儿乖乖 木有
        何必如此:@笑笑爱笑smile 微信群建了么:smile:
      • 光明程辉: :smile: 写得不错哈,2年不用了,都忘了怎么操作。
        笑笑爱笑smile:@光明程辉 谢谢
      • 右右you:您好啊。自学lr半年了,目前还是停留在录制阶段,心塞~~~~最初是通过lr自带的webtour练习,现在还是,关联、参数化自己貌似都能搞点,运行场景也没有报错,看了您的文章,我想请教下,我想提高应该怎么做呢?还有您所说的银行网址(随便一个)我们都可以试着录制玩玩么?目前还是停留在功能阶段 :sweat_smile:
        右右you:@笑笑爱笑smile谢谢分享 :grin:
        笑笑爱笑smile:@右右you 找个功能性能都做的公司,实践出真知,时间久了就会了
        笑笑爱笑smile:@右右you 你可以在自己电脑装loadrunner,录邮箱脚本学习,比如126邮箱
      • 羽恒:希望能在后续看到您的再次更新 很喜欢
        笑笑爱笑smile:@羽恒 可以,552049165
        羽恒:客气了 如果您方便的话 可以加我QQ吗 1461165480 以后有问题可以向您请教 我准备学习这块 目前在做功能测试
        笑笑爱笑smile:@羽恒 谢谢
      • fd763c7d9a5c:哇!我也用L11,就跟开头说的一样,教程也没找到好的,后来公司让我在银行驻场一个月,玩的稍微熟练了一点,但是好多方法和思想一直还是不明白!
        fd763c7d9a5c: @笑笑爱笑smile 嗯嗯
        笑笑爱笑smile:@FlyingDragon 对,实践出真知,还得靠自己摸索,我也在摸索中
      • 汝年年:原来笑笑是专业人士😁
        笑笑爱笑smile:@汝年年 谢谢支持
        汝年年:@笑笑爱笑smile 虽然我啥也看不懂,但还是想支持你😜
        笑笑爱笑smile:@汝年年 哈哈,谢谢,分享一点心得

      本文标题:连载|用尽荒洪之力总结之Loadrunner性能测试

      本文链接:https://www.haomeiwen.com/subject/gbsssttx.html