技术开发 频道

为盈利而测试

【IT168 技术文章】

    引言:

    [ 美 ] Grenford J. Myers 在 1978 年所著的《 The Art of Software Testing 》一书中,首先用一章的篇幅论述了程序测试的心理学和经济学问题。他认为要淡软件测试问题, “ 最为重要的却是经济学问题和心理学问题 ” 。并在列举了当时大多数人使用的完全错误的 “ 测试 ” 定义所导致的危害之后,给出了被业界普遍公认和引用的 “ 较为恰当的定义 ” ,即 “ 程序测试是为了发现错误而执行程序的过程 ” 。

    Grenford J. Myers 所以把测试经济学问题和心理学问题看得如此之重,因为软件测试至今仍是由人为主体的一系列活动,而人类的活动却具有高度的目的性, 即可以说绝大多数的人类行为是由 “ 目标驱动 ” 的。一个正确的测试目的,可引发一系列为实现该目的的有效测试行为和结果;相反,一个不正确的测试目的,可引发一系列无效的或有害的测试行为和结果。

    •  什么是软件测试

    在谈到软件测试时,业界还是都引用 Grenford J. Myers 在《 The Art of Software Testing 》一书中表述的观点:

    ① 程序测试是为了发现错误而执行程序的过程;
    ② 测试是为了证明程序有错,而不是证明程序无错误;
    ③ 一个好的测试用例是在于它能发现至今未发现的错误;
    ④ 一个成功的测试是发现了至今未发现的错误的测试。

    但是软件测试 决不等同于找 BUG 。 不幸的是,仅凭字面意思理解这些观点,认为发现错误似乎是软件测试的唯一目的,这样就可能会产生一些误导。认为查找不出错误的测试就是没有价值了;一些软件企业在制定对测试组(人员)的业绩考核标准时,简单地把捕捉到缺陷个数作为主要考核指标。然而事实并非如此简单。那些把寻找缺陷当作是软件测试的唯一目的的测试管理人员往往会陷入一个又一个测试管理误区。

    以下列出是作者总结的六个值得业界重视的误区。

    误区一:忽视对正常输入的测试。

    软件缺陷最常见的地方是哪里?一般来说软件缺陷最为密集的地方就是当用户输入非正常输入组合时。一方面软件设计人员较容易忽略一些极难发生的情况,另一方面设计与开发人员往往会把更多的精力用在功能实现上,容错与错误处理往往是开发上的薄弱环节。所以当测试人员将测试目标订在缺陷数量上时,重点测试非正常输入显然就是最好的手段。

    然而对于用户来说,真正影响使用的却是正常输入组合激发的缺陷。而这种缺陷,一个就已经太多了。

    例如对于一个记事本软件,也许没有人会去注意为什么将字体大小设置到大于 49151 的正整数时,每个字会突然变成一个小点。也许很少人会去在乎若将字体大小设置到超过窗口高度时右方的滚动卷标不能滚动到一个能让你看到某一个字的下半截的位置。但若使用一般的剪贴功能会将一段话搞成乱码,那每一个用户就都会跳起来了。

    误区二:忽视设计阶段的参与与评估

    在多数企业里,软件的设计阶段往往没有软件测试人员的参与,甚至有些企业在编码几乎完成了才开始组织测试团队。原因无他,设计还没定型呢,怎么找缺陷哪?

    事实上设计上的缺陷往往是耗用成本最高,也是最难在开发后期修复的缺陷。而一个软件的质量与它有多大的设计缺陷有着密不可分的联系。而有经验的测试人员的质量意识,安全意识,对用户需求的了解及分析能力,对于打造高品质的软件设计都有着不可忽视的作用。

    同时对于技术可行性与用户需求之间的设计妥协,测试人员也必须要有充分的评估和理解。这样在最紧张的开发后期,才不会把大量的(测试及开发人员的)宝贵时间用于记录和处理那些已在设计阶段确定放弃的功能。

    误区三:忽视测试计划与测试文档的建立及维护。

    设计测试计划与建立测试文档常常会被看作是浪费时间。即使做了也只是为了交差,要么敷衍了事,要么找个范本一抄,略作修改便万事大吉。真正测试起来还是全靠灵感与直觉。

    但软件测试的另一个重要目的是确认及评估一个软件是否能够符合用户的需求。而对软件质量的保证不能只是靠测试人员一开金口,而要靠详细的测试计划以及完整的测试结果来取得用户的信任。

    误区四:忽视缺陷的分析,报告及跟踪。

    找到缺陷本身并不能提高软件的质量。只有缺陷被正确修复了才能真正提高软件的质量。作为一个好的测试人员不仅仅要善于发现缺陷,同时还要善于描述缺陷的表现特征,并积极跟踪缺陷的处理过程,确保缺陷被正确诊断及修复。不负责任的缺陷报告常常会给软件开发人员带来很多不必要的麻烦甚至误导。这会严重影响开发人员对测试人员的信任与尊重。

    误区五:错误的测试目标及测试终止条件。

    没有缺陷的软件是不存在的。同时也没有方法可以知道一个软件中到底有多少个缺陷。一个简单的文本处理软件经过三个月的测试找到了 100 个缺陷,那说明这个软件总共有多少缺陷呢?也许是 101 个,你找到了 99% 的缺陷,也许是 10000 个你只找到 1% 的缺陷。又或连着两个星期只找到一两个缺陷,那么说是软件质量已达到较高水平了呢,还是你的测试方法走进了死胡同呢?谁也说不清。

    误区六:不懂得合理调配使用测试人员的知识技能结构。

    除去发现缺陷的洞察力外,好的测试人员还应该拥有很好的组织能力,准确的表达能力,严密的逻辑推理能力,以及对软件开发过程,软件使用对象,软件开发技术等的较深入地了解。同时具备所有素质的测试人员也许比凤毛麟角还要难找。所以在构建一个测试团队的时候就一定要合理搭配拥有各种能力的测试人员,并在使用的时候注意发挥各自的特长。如果让所有测试人员一心一意地找 BUG ,那不仅仅是压制了其他方面的人才,整个测试团队的实际绩效必然会大打折扣,甚至会影响到整个软件产品的顺利开发。

0
相关文章