声明:这里只是拿奥运订票网站的瘫痪做一个引子。并无其他商业目的。
性能测试如何对性能的保证
我们知道性能测试是对整个架构来说的。
而架构包括两个方面,即:软件和硬件。
硬件又包括很多内容,列举如:主板、硬盘、内存、CPU、路由器、交换机、防火墙等等。
软件也包括很多方面,列举如:OS、application server、application、database、middleware,etc。
做性能测试,这些方面都是要考虑到的。才能对整体有很好的把握。性能测试做的才最有实质意义(此实质意义从技术角度来说)。
奥运订票网站的瘫痪,显然是大数据量的提交造成的。我们不用怀疑它功能上的实现。如果功能不能实现肯定不会上线的了。在上线之前他们肯定也是做了性能测试的。我们也不用怀疑他们的性能测试的有效性。
提交用户的多少对性能的影响并不是二元一次的直线方程上升的。
我想在这一性能测试的过程中,任何一个环节的疏忽都有可能引起此结果。
第一,性能测试工程师的素质,必须严格要求。
所以我们在做性能测试的过程中,一定要充分把握这些环节。同时引入另一个问题:谁能把握得了这么多环节?纵然一个拥有十几年工作经验的人来说,也不能保证在性能测试中可以把握每一个具体的细节。更何况人的知识体系都是有限的。所以,在做性能测试时,我们尽量把每个问题都细化。然后找相关的技术人员,即使做性能测试的人,对网络、数据库等都非常了解。也尽量把大家召到一起,共商性能问题。这样可以减少一些一个人容易疏忽的问题。经常听到有些公司让一些没有很长时间工作经验的人去做性能测试,还有些初学者去做。这些都无非是做做幌子给客户看看,说明我们公司有这样的职位存在。但是他们的作用何在?如何体现出来?怎么衡量?这是个很重要的问题。这些应该属于性能测试度量范畴。
我为这种形同虚设的职位感觉很不值。同时也为某些公司对性能测试这一职位的态度,很痛心。如果希望在这一职位的人把这一职责做好,就应该去找有相应技能的人。而不应该把它当成拿给客户看的幌子。
当然,这里还要肯定一些性能测试工程师存在的不容忽视的价值。为一些项目的潜在问题做出了很重要的性能测试,从而避免了庞大的损失。
我必须强调,性能测试工程师的技术深度,对性能测试的效果起着非常非常重要的作用。
第二,团队的重要性也不容忽视。
在社会中生存无疑要接触人,在一个项目中,我们也在接触着自己的同事。团队的氛围我觉得可以直接影响工作的效率和效果。针对一些公司中开发和测试扯皮的事实,我觉得完全没有必要。从目标上来说,一个团队的目标只有一个:做出最好的产品。但是,存在责任推卸的最大问题,我觉得在于:岗位职责不明确。这一问题导致很多性能测试人员,感觉自己一直在打杂。可能很多其他测试人员也有此感觉。这一点,可能是由于测试行业是近几年才飞速发展起来的原因。其实这是一个应该切忌浮躁的行业。技术行业,应该是踏实而沉稳的。并不像一些广告中吹嘘的那么高深和前途无量。接着说团队,职责划分明确是非常重要的。接着还有计划的合理性,很多公司的计划都存在着严重的问题。有时是因为项目时间不够,
有时是因为工作量的判断不足,等等。有时听人说存在这样的事情:测试人员需要测试当天开发人员写出来的代码。这样的话,上班时间,测试人员,没什么事做。而下班了就一直需要加班。这只是时间的不合理。其他的资源安排不合理的事件,也不一一例举了。
这里强调的是:团队氛围良好、职责明确和资源的合理安排。
第三,软件应用系统的架构。
这一问题直接影响整个系统的性能,如果系统架构先天不良,系统根本用不着测试。这一点在前期的需求中肯定有明确描述。并于这一问题,并不是性能测试人员能够解决的。但是,是性能测试人员必须关注的。一个成熟的架构,是我们应该考虑的。但是性能问题,也有可能出在架构上。做性能测试时需要注意。
其他技术因素不再一一列举,以上是技术角度来说明性能测试。
其他因素对性能测试的影响
第一, 用户需求。
我觉得用户需求对性能测试的影响很大。因为做性能测试就是为了给用户看。有时客户会要求流程应该如何去走。这样的流程可能对客户来说是最好的。功能的实现也丝毫没有问题。但是性能就会完全不一样了。当所有用户都蜂拥而至,我们最应该考虑的是什么?系统不要瘫痪。宁愿慢,也不要瘫痪。但是流程影响着性能,如果按客户所要求的流程达不到客户的性能需求,应该采用其他手段来平衡性能问题的时候,不要犹豫。性能测试工程师们大胆的提出自己的建议。当然,需要足够的论证。
第二,领导们。
我觉得很多时候领导一句话的决策就影响着最终的结局。类似于:大领导拍脑袋,中领导拍胸脯,干活的拍屁股。
也是没有办法呀。我在外做过一个项目,那个项目的领导就很理智。他让我来做性能测试。他会和开发和测试一起商量如果制定策略。如果出了性能问题,责任划分也很明确。立即就改。但是,有些领导的要求也确实无理了点。这样的现象导致下面的测试没有办法做。
这一点是我们没有办法的,只能提建议上去了。
其他外界因素,这里不再描述。
早上听到有人说奥运订票网站瘫痪,从一个技术人员的角度来想,还是比较惊讶的。难道是性能测试没有做好?没有重视性能测试的原因?或者是做了,并没有模拟出实际的那么多用户量的数据量?在我平时做的性能测试中,如果我对某模块做了性能测试,达到了多少用户。我会充分分析性能测试的有效性。从而在写报告的时候,更深入的分析问题。如果奥运订票网站任一环节都在可控的范围内,出现这样的问题,就可以说是纯意外了。
只是我觉得并不是纯意外。
希望做性能测试的人,不要舍本逐末。
如对以上言论有任何异议,请直接留言。