需求分析问题:
1.刚开始最好不要上来就跟客户谈,某个性能点需要什么样的指标,比如支持多少人同时登陆,等等。一上来最主要的事情是了解整个系统的作用,用户,部署的方式,约束,上线时间,等等,目的是让自己能慢慢的站在客户角度来看待这个系统,通过自己的知识,想客户所想,忧客户所忧,因为我们的目的就是要让客户满意么。
注意性能测试场景选择的原则:
a.重要的(业务上),
b.重复的(最常用的模块),
c.重量级的(消耗大量系统资源的)
具体性能指标分为几类类:
a.系统容量(数据容量、用户量、并发用户量),
b.系统并发度指标(注册用户、在线用户、并发用户),
c.响应度指标(正常压力下响应能力、峰值压力下的响应能力,以及异常压力下的响应能力)
2.理解整个系统及其实现之后,再列出自己分析得到的性能需求点。
3.询问客户的具体性能需求,共同分析,是否测试,测试的优先级。
性能测试策略:
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,主要的是对系统的理解和掌控,一种大局观。我自己感觉,自从这几个月比较深入的学习Oracle、Linux之后,对性能的理解越来越深刻了,测试过程会有计划有目标的选取某些数据,执行某个过程,不像以前仅仅是个表面的照葫芦画瓢,尽管测试完了,但却总是感觉心里不安。
发现这个世界,道理都是相同的,你越是想搞钱,越是难搞到钱,即使有,也都不会是大钱。为什么呢?因为能赚多少钱,这个东西,不在钱本身,而在钱之外。我想当年Bill、李嘉诚也没想自己一定要赚多少多少钱吧,他想的是怎么把这个事情做大、做好、做强吧,要不然他们也不会有钱之后,又投入这么大把的钱到慈善事业上的了,李嘉诚可是放弃了1/3啊!不像国内的某些企业家仅仅做个样子而已。扯远了……性能测试似乎也是这样,能力在性能测试之外。所以说吧,做什么都要放大视野,这样道路才会更宽!