前段时间在内部做了一个性能测试方面的培训或者叫sharing,发现谈到一些具体技术的时候大家都比较容易接受,但是性能测试中有些部分却比较难以理解。比如说常见的问题有:
1. 为什么选用这样的sample来测试?
2. 为什么用这样的配置来测试?
3. 这样的测试结果能反映客户的真实情况吗?
这些都是很好的问题,愿意思考的人才会提出这样的问题。
其实这些也是困扰做性能测试的人的问题,因为这里存在着一对矛盾。相比稳定性(stability)或者大流量(volume)的测试而言,性能测试是要求精确量化的测试,比如response time要到毫秒,还有concurrent connection和throughput等指标,都是要实际测出的具体数字。但是另一方面,它其实又是很模糊的,比如说你只可能挑选一种或者几种可能 的配置来测试,而不可能精确的涵盖所有的配置情况下的性能。而且实验室测试的数据和production上真实的数据流量也是不一样的,甚至客观的讲永远 不可能完全精确的模拟,就好比一个网站上线之前怎么能预料到将来成千上万的用户将要怎么来使用呢?姑且称之为性能测试的dilemma。
联想起最 近看到的一个例子,大家可能更容易理解,据称工信部最近列出了6000多种车型的“实际“油耗。相对于之前都是各个厂家给出的理论油耗,很多是在90公里 等速的情况下的理论或者叫完美油耗,在无风的日子里,平坦的马路,没有急踩油门,没有刹车,所以很多油耗都是6.x。但是很显然,大家都知道,你不可能找 到一条这样完美的 路,连续的开上100公里。
我们也可以把上面的油耗测试看成是一种性能测试。那么因为这样的不完美,我们就变成一个怀疑论者吗?认为所有的性能测试都是没有意义的,因为它永远不可能反映真实的情况。
自己做性能测试也有很长一段时间了,有段时间我也在思考同样的问题,does it make sense?直到有段时间,我看到一个很好的别的行业的例子。
不好意思,还是汽车行业的例子。(最近怎么老关注这个行业?)
比较关注汽车安全性的人常常会去看他关注的车在一些碰撞测试中得到几星级的评价。在中国,这个标准就是C-NCAP。由于最近几年才开始运作,所以也参考了不少美国和欧洲的标准。好吧,让我们来看一下它大概是如何来给一辆车的安全性打分的。
关于这一部分,大家可以参考 C-NCAP的评价规程 。
“
试验车辆100%重叠正面冲击固定刚性壁障。碰撞速度为50km/h~51km/h(试验速度不得低于50km/h)。试验车辆到达壁障的路线在横向任一方向偏离理论轨迹均不得超过150mm。在前排驾驶员和乘员位置分别放置一个Hybrid III型第50百分位男性假人,用以测量前排人员受伤害情况。在第二排座椅最右侧座位上放置一个Hybrid III型第5百分位女性假人,用以考核安全带性能。 ”
从测试的角度,我们可以看出这里的test config包括:
1. 迎面很正的撞到一个很硬的墙上 (好吧,这是很通俗的理解 :))
2. 撞上的时候速度是 50-51 km/h
3. 一个驾驶员,第二排坐了一个人。
然后根据两个人的受伤情况来评分。
还包括另外两个类似的测试。
正面40%重叠可变形壁障碰撞试验
这个大概模拟的是车头部分追尾前车的情况。
可变形移动壁障侧面碰撞试验
这个模拟的是驾驶员侧面被另一辆车撞上的情况。
根据总分,按照以下星级划分对试验车辆进行星级评价:
总分 |
星级 |
≥50分 |
5+ (★★★★★☆ ) |
≥45且<50分 |
5 (★★★★★ ) |
≥40且<45分 |
4 (★★★★ ) |
30且<40分 |
3 (★★★ ) |
≥15且<30分 |
2 (★★ ) |
<15分 |
1 (★ ) |
到此为止,我们就知道在广告上看的“五星安全”是怎么来的了。现在再看到这样的字眼和你完全不了解它的做法的时候是不是有些不一样呢?
我说说自己的感受吧。在不了解这些规程之前,会以为他们一定有一套完美和非常全面的评价方法,然后得出这些评分。第一次了解后不免很失望,好像很粗糙的方法,覆盖的方面也很少。是的,如果严格的从测试完整性的角度来看,上面的方法确实有很多不够全面的地方。比如说,
1. 为什么时速是 50~51或者56~57 km/h?
我不知道交管部门有没有统计数据,是不是很多事故中“撞墙”的速度都是这样的范围?
无论统计数据如何,肯定有很多的例外吧。比如70码撞上去会如何呢,看运气和人品?
2. 为什么第一个正面100%的测试中,车上只有两个人?
如何是四个人,会有几个人受伤,伤势如何?而且更实际一点,人有高矮胖瘦,一个很胖或者很高的司机有没有可能更容易受伤?
3. 为什么是40%重叠而不是其他的比例?
4. 这些都是在平路上的碰撞,有没有下坡或者上坡的时候的结果?
因为在这样的时候车身的倾斜导致角度的不同可能会有不同的结果。
...
如果你够严谨,你一定可以问出更多的类似的问题。我不认为这样的问题是吹毛求疵,看起来都相当的重要和合理,毕竟是人命关天的事情。
我 想他们没有选取那么多的场景和参数来测试,一个很重要的原因是这样的测试是破坏性的,每辆车都是在市场上按市价买的,花费也不少。要是从时速50 -100, 按5为步长,重叠从10% - 90%按10%为步长逐级测下去,该需要很多的车吧,显然成本太高。测试的覆盖率有所提高,但是一样是很不完备的。幸运的是,在软件测试中,我们的性能测 试很多时候还不是破坏性,而且由于测试工具或者framework的支持,我们可以将性能测试自动化来覆盖很大的一个配置范围,从而得到很多不同情况下的 结果。即便是这样的情况,实际做的时候我们还是要做些取舍,因为很多因素摆在一起,做正交的话数量一样大得惊人。比如一个邮件系统的测试可能包括这些参 数:邮件的sample大小;policy的条数; 采取的action;核心处理进程的数目;所用机器的配置等等。
既然如此,从可行性的角度,就会引伸出另外一个问题,既然测不完,那么我们在有限的测试中,该如何选取配置或者参数?
我想了很久,觉得一个合适的词是:
Reasonable
什 么样的值大家觉得比较合理,在实际中比较会遇到,或者会概率比较高,或者大家最想知道在这样的情况下的结果是什么。 那么我们就应该去测这样的场景。以谁的标准来觉得合理呢? 这要看你做测试的上下文环境,通常还包括组织结构,提出这样的标准的可能是你的客户、产品经理、领域专家或者是有经验的测试人员。在实际中,一个好的 practice是邀请相应的stakeholder来review,听取大家的意见。
正是基于以上的思考。过了一段时间,觉得其实这样的测试结果也是很有帮助的,当然前提是你理性的看待这样的参考。
意义何在?
对买车的人:得分高的车(通常)比得分低的车安全。
对厂商:如果更进一步,可以看看它在哪一方面得分低,需要改进的是什么?
对整个行业或者社会而言: 由于有了这样的评价标准,使得汽车安全的标准在不断提高,安全性的关注和投入更高,更多人的生命安全得到保障。
正是因为看到这些意义,人们可以接受各种碰撞标准的不完美,而另一个方面,这样标准也在改进自己的方法。
还有附录中的新闻提到的。
在写这篇文章的时候还顺便引发了两个小的思考。
关于工程
更侧重实际的效果,而不是理论上的完美。
测试的意义
测试本身隐含的前提就是”模拟“。
by Ricky Q.
附录:
|
2009年05月27日 15:16 来源:中国经济网
|
|
2009 年5月27日下午,中国汽车技术研究中心主任、党委副书记赵航做客中国经济网《程远会客厅》,中国经济网汽车频道总监、汽车业资深媒体人程远主持对话,并 就汽车安全(C-NCAP)、环保、新能源汽车发展战略等做深层次探讨。中国经济网《程远会客厅》是程远加盟网站汽车频道后全力推出的一档品牌栏目。该栏 目将主要约请汽车行业资深从业人士、协会领导、企业负责人等嘉宾做客《程远会客厅》,就汽车行业热点问题做深度交流和剖析。图为赵航主任做客《程远会客 厅》现场。 中国经济网北京5月27日讯(记者 牟修锐)中国生产的轿车在国外屡屡遭遇“碰撞门”,以致难以打开海外市场,而现在,外国企业的车要想进中国市场也不那么容易了。2006年,中国汽车技术 研究中心推出C-NCAP评测标准,在社会上引起强烈反响。今天,该中心主任赵航在做客中国经济网汽车频道《程远会客厅》时表示,我国推出C-NCAP标 准以来,主要收到了两大成效。 赵航表示,C-NCAP标准是借鉴了欧、美、日评测方法的基础上、结合中国国情形成的,推出三年来市场有两个明显的变化: 一 个引进车型到中国减配置的情况减少或者杜绝。以往,由于中国没有自己的评价标准,一些车型在欧洲、美国碰撞得到五星、四星的评价后,到中国就会减掉一些跟 安全相关而外表上看不出的设备,比如夹层的装置,一次降低成本,但实际上欺骗了中国消费者。现在有了这样一个评价规程,使国外车无论卖到美国、日本还是中 国,都得用同样的配置。 二是自主品牌的安全性大幅度提升。从06年这个评价标准刚推出时,自主品牌的碰撞成绩以两星居多,到了08年底是四星居多,两星已经见不到了。自主品牌在技术上下功夫,所以安全性能很快得到提升。 测 试时考虑后排安全是C-NCAP标准的一大特点。赵航介绍,我们国家现在轿车刚刚开始进入家庭,后排经常有乘员,全家出行、或者老人和孩子一起出行。中国 的领导也习惯坐后排,所以对后排的安全要尤其重视。起初,欧洲、美国、日本都对此有微辞,认为中国搞“特立独行”,而现在,随着时间的推移,美国也接受了 这种标准,下一步也将评测后排安全;欧洲也在考虑后排是否用假人。相对以前而言,外国品牌进入中国不再是畅行无阻,也得考虑C-NCAP这个门槛,让自己 的车型适合中国的标准。 |