|
好,我来说下我的看法吧。一家之言,我先申明下面的话不一定对,初学者最好不要照单全收。
恩,简单来说,IEEE的标准里包括软件工程和软件测试相关的部分,早在大学时我已经学过一部分,可能不全面,不过其中包含的最大问题已经很容易地发现出来,就是太过于理想化。也就是说IEEE定义的标准全部是针对传统的瀑布式软件工程流程的,他在这个流程中假设各阶段都能够按照他的标准出文档,然后才能往下走,也就是说,他对与测试的隐含条件是假设已经有了一个完整的需求功能说明书。从你列出的对缺陷的定义上就可以看到必须有一个完整的需求规格说明书你才能按照这个来定义缺陷。
那么事实上是我们有时候有一个需求规格说明书,有时候却没有,而且,即使有,通常也是不完整的。这一点不管国内还是国外,都是一样的。这是理想化的软件工程在实际应用中遇到的问题。也是IEEE标准仅能作为参考,而鲜有公司实际按照他去做的原因。(另一个原因是IEEE方法的高成本)所以后来,在IEEE的基础上发展出了很多的质量模型,比如CMM,CMMI之类,他们期望通过定义流程上的一些具体活动和标准来使现实的软件工程能够更规范,但同样也是强调过程的的一种方法。对软件测试的来说,这类方法的意义在于降低缺陷的出现率,和及早发现缺陷,以应对项目后期修复缺陷的高成本问题。
那么在此之后又出现了很多新的方法,比如敏捷开发,极限编程等等,直到2005年,这些新方法的创始人们决定把这些方法合并,并且称之为敏捷方法。敏捷方法对软件测试的意义就是他直接降低后期修复缺陷的成本,以此来解决这个缺陷修复的成本问题。而不会去对需求过程做过多的控制。
那么,不是说IEEE标准不对,也不是说IEEE标准不好,就像相对论不会威胁到牛顿定律在普通物理学里的地位一样。IEEE作为一个参考是很好的。另外按照瀑布模型开发的成功案例也是有不少的,当然现在这些公司也在由瀑布转向迭代。这里只是介绍一下整个软件测试发展的历史走向,那么参考了pnsqc(中文译名可能叫西北太平洋软件质量会议)上2009年的一个由Elisabeth Hendrickson做的演讲Agile, Testing, and Quality: Looking Back, Moving Forward,里一些关于敏捷测试的历史的内容以及Cem Kaner 和James Bach在BBST黑盒软件测试课程上(04-06年)讲到的一些关于需求文档的内容,其他是我自己总结的,来源就一下子找不到了。 |
|