您的位置:首页 > 其它

关于软件测试的几点反思 - 测试是必需的吗?

2014-03-17 20:43 375 查看
屈指算来,从事软件测试的工作已经快9年的时间了,不算短的一段时间,经历了很多不同类型的产品,项目以及人。发现很多事情回头去看的时候有点晚,但是可能会更清楚,加之最近工作上稍微闲了一些,把酝酿了很久的一些想法整理下写出来,一方面是希望给别人一些参考,另一方面也是还还债,这两年blog写得非常的断断续续。

思路比较明确的有三个topic,后面想清楚了再继续整理。

第一个是关于最基本也最常被问题到:测试是必需的吗?

测试是必需的吗?

为了讨论测试是否是必需的,我觉得应该先思考下什么是必需,因为这个问题本身就有一定的欺骗性。

通常我们第一反应会觉得衣食住行这些基本的东西是必需的,其他的都是额外的。这样说听起来有道理,但是隐含了两个方面的问题:

1. 什么样的衣食住行是必需的?

对不同的人,或者一个人的不同阶段,这个标准可能差别很大,对于必需的理解也会完全不同。举个简单的例子,私家车是必需的吗? 对很多人来说不是,对很多人来说是,其他的方面也是如此。

所以这里隐含的是一个标准的问题,对于品质的追求。

2. 除了衣食住行,其他都不是必需的?

这一点和上面有点相关,但是范围拓展了。人们对于沟通交流,电影,音乐,时尚等等的追求是必需的吗?恐怕对于很多人来说是,就像我们现在很多人根本离不开手机这个必需品。当然还有像coco chanel说的“女人出门不抹香水就像没穿衣服一样”更高端一点的。

讨论这个问题是因为很多人把存在的必要性和必需联系在一起,认为不是必需的东西就可有可无。但是实际上我们发现人类,越是更发达的地方,就越有更多的看似不是必需的东西。

或者,我们可以不用纠结“必需”的问题,而从另一个角度来看,哪些是更高价值或者更高附加值的东西?你可以举出很多这样的例子,几乎每个行业每个领域都有。比如手机,在满足基本功能的前提下,有几百块到几千块的,车就更不必说了。也许这要说到更深层次的人性的东西,这里就不讨论了。

我们换个角度看看,这些更高附加值的东西通常伴随的词是:精品,高品质,高性能,高可靠性。。。

OK,扯了这么远,其实是想说测试的必需性,其实是取决于我们对要做的东西的品质的要求。或者更准确一点,做多少的测试是看我们关注多少质量指标。

随手举两个例子:

1. 苹果

不是说IT业的苹果,而是可以吃的苹果。民以食为天,就先举个基础的例子(不过貌似还有比这个更基础的食物)。

如果标准是果腹:拿起来看看有没有烂掉。 这其实也是个测试,很快,代价很低。

如果标准是口感:需要吃起来看看,更科学的做法可能是检测含糖量等指标。这个测试更复杂一点。

如果标准是营养:可能要检测各种物质的含量。 网上搜了下:

“苹果的营养很丰富,它含有多种维生素和酸类物质。1个苹果中含有类黄酮约30毫克以上,苹果中含有15%的碳水化合物及果胶,维生素A、C、E及钾和抗氧化剂等含量也很丰富。1个苹果(154g)膳食纤维5g,钾170mg,钙10mg,碳水化合物22g,磷10mg,Vc7.8g,Vb7.8g。苹果中的含钙量比一般水果丰富多,有助于代谢掉体内多余盐分。苹果酸可代谢热量,防止下半身肥胖。至于可溶性纤维果胶,可解决便秘。果胶还能促进胃肠道中的铅、汞、锰的排放,调节机体血糖水平,预防血糖的骤升骤降。”

要获取上面这些指标,估计要做不少的测试。

进一步,如果标准是安全:估计还要做农药残留等方面的测试。

2. 手机

如果标准是能用:可能只要组装好之后人工试一下拨打电话,发送短信等基本功能。

如果做一个高品质的手机;可能要做很多,比如:

- 网络信号的测试,比如网络不好的情况,高速移动中

- 通话质量的测试

- 电池的耐久性测试

- 系统长时间运行的稳定性

- 物理强度方面的测试

这个list可以很长很长。

还有几个有趣的例子:

1. Thinkpad对于屏幕铰链的使用寿命的自动化测试



2. 苹果(这次是IT的苹果)针对iphone信号设计的测试实验室



3. 跑车的风洞测试

很难想象哪一款真正的跑车或者F1赛车,在设计时没有做过风洞的测试。



上面3个是很好的例子,让我们看到测试的水平和要求随着我们对最终产品的品质要求一起更高。

也许还有一个更深层次的问题,为什么是测试,而不是其他方式来保证或者验证那些质量指标?

嗯,也许还有更好的方法,就好比我们只分析材质就可以得出强度而不必实际的去压测,或者软件上我们一直想做到的通过代码就发现问题。这个问题也许部分是技术,部分是哲学,还好,作为工程师我们比较务实,看哪种效果比较好,而现实中,很多时候我们不得不实际的去验证。

回到我们的软件和互联网行业,其实我们对于测试的投入也是一样,随着项目的性质和要求而不同。想想通常对于下面几种系统的测试的投入:

1. 一个毕业设计项目

2. 一个创业阶段的POC

3. 一个每天亿级PV的网站

4. 一个每天百万订单的电商交易核心系统

以上是从项目的性质来看,其实只是一个维度,还有一个变数是即便同样类型的项目,我们对于质量的期望是什么,同样也影响着测试的投入。而这个问题再往上追溯,其实是一个政治问题:对这个标准谁说了算,他/她怎么看?

所以我们常常发现,一个对质量有话语权和推动力的测试团队,背后往往都有坚定的大老板的支持。他/她对业务负责,希望有更高的标准,然后赋予了测试团队一些权力。这听起来不漂亮,但是很现实和合理,结合一个商业组织的一些本质。

上面的这一条其实也是很多同类的企业差别的地方。往深了说,这个差别不只是源于对品质的追求,能力的差别,而更多是观念和目标,比如都是生产手机或者汽车,决策层希望大家生产什么样定位的产品? 这个问题不是技术的范畴,难说对错,因为都有市场的需求。

对比而言,我们其实也可以粗略的发现,测试做的深入程度很多时候是和这个企业的定位有关,而不是和测试人员的能力有关。或者应该来说,长期来看,取决于这个方面。因为有人员的流动和发展,对比下国内几个大的互联网公司,测试都做得相对比较深入,但是几年前可能还不是,因为有强烈的业务方面的需求和大的投入,以及有很多人才都不同的地方汇入。

讨论到这里,我们可以说对于更高的质量要求,测试很必需很重要。但是有一个关键的问题没有说清楚,是测试这个工作很重要,而不一定是测试这个工种。或者换个角度,必需的是测试这个事情本身,而不一定是测试作为一个独立的工种存在。

好,那我们接下来看看测试作为独立工种存在的必要性。

为了讨论这个问题,可以看下现实世界里面的测试工作和专职测试人员的挂钩的情况。

看看下面的几个例子:

1. 交管方面的速度测试,酒精测试。 工具成熟,使用简单,警察叔叔们只是顺手做了这个测试工作,非专职测试人员。

2. 品酒师,古董鉴别。 工具简单,非常依赖于人的判断。需要非常专业和资深的人以及经验阅历的积累。

3. 化学成分监测,医学化验等。工具非常的复杂,很依赖工具,但是也需要有一定专业知识的人来操作和完成。

类比来看,测试在不同的地方,是否作为一个独立的工种存在还不一定。其形态也可能更是一种工具的存在,而工具的存在就是背后专门的独立的厂商,工具本身也是一个独立的business,这个已经非常的普遍了。

那我们再回来看看软件测试的情况。

目前来看,软件开发本身的标准化做得还不够,也许很多人期望如此还没有做到,另有一些观点觉得可能很难做到。

总体来说,软件行业相对比较复杂,其实我们目前讨论的很多软件开发的形态是一种量身定做,宏观来看是一个比较初级的方式。很多的企业,自己的开发人员(几十,几百,几千。。。)做出的一些系统只是给自己的产品和系统用,而且累积下来设计非常的复杂。这样使得通用的全自动的测试系统比较难,至少相对于传统行业而言,测试工具的通用性要差很多,即便LoadRunner这种算是比较通用的商业工具,其实也有非常大的定制的数据和方案的工具,而且对使用的人要求比较高(你知道我的性能测试不只是录个脚本跑一下这个层次)。当然,对于一些比较标准化的产品,比如防火墙,路由器等,是有RFC
3511之类的东西,测试也相对标准化了。

好,假设我们接受这个现实,对于一个质量有一定要求的自己开发的软件系统,我们需要测试,那么接下来的问题就是,这个进行测试的人员是什么样的人,最起码有三种可能:

1. 我们的开发人员把测试工作也做了

2. 外包给别人来做软件测试

3. 我们自己的专职的测试人员

而实际上,绝大部分是上面三种的混合体,因为混合的比例不同体现出一些差别。比如我看到的几种模式:

1. 开发做了比较完整的单元测试和基本的功能测试,使得测试人员极少。比如大家常说到的google的模式,他们的开发人员素质非常高,自测也做得比较完善。

2. 专职的测试投入的人力,还取决于一个重要的因素,提交测试的质量。有些地方开发只做了很少的自测,大部分依赖自己的专职的测试人员,这个其实也比较常见。测试除了基本的功能测试,也会去做全系统的集成测试,安全测试,性能测试,兼容性测试等等。

3. 在2的基础上大量的使用外包,把很多基础的版本功能测试通过外包来完成,自己的测试人员可以做更多测试技术方面的实践。

结合以上的几个维度,我们再来看测试是否必需,也许会更加的清晰一点。

后面我们再来看看测试如何满足组织对于质量管理的要求,有哪几个层次,以及测试组织安排方面的一些思考。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: