以前做过一些“山寨版”的性能测试,我都说了,是山寨么,当然不正规,不过,现在有多少企业的测试流程是正规的能,何况性能测试的流程呢。这是现状,也是机遇。这次因为项目需要,要做一个比较正规的,而且有一定难度的性能测试了。B/S, C/S,接口性能,都涉及到,对自己也是个挑战和提高。
这一个星期主要做需求理解和性能需求分析,然后写性能测试计划和测试用例。发现了很多问题,总结如下:
需求分析问题:
1.刚开始最好不要上来就跟客户谈,某个性能点需要什么样的指标,比如支持多少人同时登陆,等等。一上来最主要的事情是了解整个系统的作用,用户,部署的方式,约束,上线时间,等等,目的是让自己能慢慢的站在客户角度来看待这个系统,通过自己的知识,想客户所想,忧客户所忧,因为我们的目的就是要让客户满意么。
注意性能测试场景选择的原则:
a,重要的(业务上),
b.重复的(最常用的模块),
c.重量级的(消耗大量系统资源的)
具体性能指标分为几类类:
a.系统容量(数据容量、用户量、并发用户量),
b.系统并发度指标(注册用户、在线用户、并发用户),
c,响应度指标(正常压力下响应能力、峰值压力下的响应能力,以及异常压力下的响应能力)
2.理解整个系统及其实现之后,再列出自己分析得到的性能需求点。
3.询问客户的具体性能需求,共同分析,是否测试,测试的优先级。
4.写出性能测试计划和用例,并要得到客户认可。
性能测试策略:
1.单一性能点,多用户测试。测试过程可以隔离测试性能场景,先单独测试加压每种性能需求点,比如用户登陆,可以单独模拟此需求,建立比如50人并发登陆的场景。但此种场景并非是用户实际使用情况,不可能有个系统大家只是在拼命的登陆,而不作其他事情。但是,如果在做别的事情,那么同时再有50人并发登陆的话,那这个登陆时间会大大的延长的。所以此场景的设计仅仅为了检查这一个模块的性能水平。
2.隔离之后,再逐步建立混合的性能场景。比如登陆的同时有人在浏览、查询、写入系统。但是此时只加载20%的负载。这一步主要是一个集成测试,考虑各个功能模块之间是否有影响,是否有对某些资源的抢夺等问题。同时找出Top Time Transaction
3.如果上一步没问题了,这次就加压100%,看看在真正我们规定的要求下,系统各项性能指标如何,同时对本次测试结果作为Base Line,用来性能调优之后的比较。
4.压力测试,看系统的最大负载能力。
性能测试能力问题
Loadrunner是性能测试一个非常好用,同时也比较复杂的工具。经过这么一段时间的学习和使用发现其难点在于:
1,脚本录制和开发,怎么写这个东东,比如怎么样让日志输出合适的信息,对于后期分析有很重要的意义,这些都会有些开发能力要求。
2,如何设计测试场景,最大程度的模拟用户需求,这个有挑战,是对需求理解的挑战,对整个系统设计和实现的理解,如果知道的东西很少,那理解起来就很费力,也不容易把握住重点,这个功夫也在LR之外。
3,性能测试出来之后,结果如何分析,呵呵,这个更是挑战了,挑战来自什么的?我觉得这个也不是来自LR本身,而是来自对数据库、操作系统、中间层和这个被测系统本身的理解。这个应该是最难的。调优,在哪个行业不是是最难的啊?单独一个Oracle, SQL Server调优那需要DBA多长时间的积累啊,何况我们需要懂的不仅仅是数据库。当然这个阶段可以找DBA来帮我们分析解决问题。这个要求也是在LR之外的。
所以,性能测试工具本身并不是最大难点,学会使用工具也仅仅是个起点。能做好性能测试人的本事最主要也不是在如何熟练的使用LoadRunner,或者JMeter,主要的是对系统的理解和掌控,一种大局观。
读后感:最近公司的一个项目遇到了性能问题,所以读了很多关于性能测试的文章,从这篇文章中学到了很多。