测试人员要像医生看待病人一样检测程序

发表于:2011-6-13 11:51

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:simplezhuo    来源:51Testing软件测试博客

  如果我们将软件测试视作发现错误的过程,而不是将其视为证明“软件做了其应该做的”过程,我们发现后一类错误的可能性会大很多。

  总结:软件测试更适宜被视为试图发现程序中错误(假设其存在)的过程。一个成功的测试用例,同感诱发程序发生错误,可以在这个方面上促进软件质量的改进。当然最终我们还是要通过软件测试来建立某种程度的信息:软件做了其应该做的,未做其不应该做的,但是通过对错误的不断研究是实现这个目的的最佳途经。

  有人可能会声称“本人的程序完美无缺”(不存在错误),针对这种情况建立起信心的最好办法是尽量反驳他,即努力发现不完美之处,而不只是确认程序在某些输入情况下能够正确的工作

  穷举输入测试是无法实现的。这有两方面的含义,一是我们无法测试一个程序以确保它无错的;而是软件测试中需要考虑一个基本问题是软件测试的经济学。也就是说,由于穷举测试是不可能的,测试投入的目标在于通过有限的测试用例,最大限度的提高发现问题的数量,以取得最好的测试效果。除了其他因素之外,要实现这个目标,还需要能够窥见软件的内容,对程序作些合理但非无懈可击的假设。

  人类行为总算倾向于具有高度目标性,确立一个正确的目标有着重要的心理学影响。如果我们的目的是证明诚信中不存在错误,那就会在潜意识中倾向于是想找个目标:也就是说,我们会倾向于选择可能较少导致程序失效的测试数据,另一方面,如果我们的目标在于证明程序中存在错误,我们设计的测试数据就有可能更多的发现问题,与前一种方法相比,后一种方法会更多的增加程序的价值。

  程序中的错误总数始终是未知的。

  根据我们的经验,修改一个现存的程序比编写一个新程序更容易产生错误(以每写一行代码的错误数量计)

  代码检查与代码走查所带来的附作用是:可以发现易于出错的程序区域,通过接触软件错误、编程风格和方法来获得教育等

  软件测试中最重要的因素是设计和生成有效的测试用例。

  然而,无力软件测试进行得如何具有创造性、如何完全,也不能保证软件中不存在任何错误。测试用例的设计如此重要,原因在于完全的测试是不可能的,对任何程序的测试必定是不完全的。那么,最显然的测试策略就是努力使测试尽可能完全。

  由于时间和成本的约束,软件测试的最关键问题是:所以可能的测试用例中,那个子集最有可能发现最多的错误?

  我们建议综合最多的测试方法来设计严格的程序测试,因为每一张测试方法都有其独特的优点和弱点。举例来说,某种方法遗漏掉的错误,而用其他的方法就可能找出来。

  没有人曾承诺说:软件测试会是容易的事。引用一位智者的话“如果你觉得设计和编写程序很困难,你就并非一无所知。”

  我们推荐的步骤是先使用黑盒测试方法来设计测试用例,然后视情况需要白盒测试方法来设计补充的测试用例

  白盒测试关注的是测试用例执行的程度或覆盖程序逻辑结构(源代码)的程度。完全的百货测试是将呈现中每条路径都执行到,然而对以个带有循环的程序来说,完全的路径测试并不切合实际。

  如果完全从路径测试中条处理看,那么有价值的目标似乎就是将呈现中的媒体预计至少执行一次。遗憾的是,这恰是合理的白盒测试中较弱的准则。

  因为对程序的穷举输入测试是无法实现的,所以当测试某个程序时,我们就被限制在从所以可能输入中努力找出某个小的子集。理所当然,我们要找的子集必须是正确的,并且是可能发现最多错误的子集。

  确定这个子集的一种方法,就是要意识的一个精心挑选的测试用例还应具备另外两个特性:

  1、严格控制测试用例的增加,减少为达到“合理测试”的某些既定目标而必须设计的其他测试用例的数量。

  2、它覆盖了大部分其他可能的测试用例。也就是说,它会告诉我们,使用或不使用这个特定的输入集合,哪些错误被发现,哪些会被遗漏掉。

  1、任何问题都不应该被解决两次。这是一条看起来容易做起来非常难的“信条”。解决问题之后,要学会总结、记录和分享。时间非常宝贵。懂得记录和分享,能够减少重复解决同类问题的时间,亦能帮助其他人快速获取有价值的信息。要懂得,你在帮助他人,他人也在帮助你。任何问题都不应该被解决两次,任何代码也得尽量避免重复,任何会议要争取当堂有结论,任何交流要力求及时有效。

  不抱怨,我们不得不面对一些“不自由”,不得不要去做一些“分配”下来的任务,不得不像被洗脑过的士兵一样“高效执行”,而这些任务是你非常不喜欢的,甚至枯燥无聊的,但是我们不能应该去抱怨,应该在枯燥的任务中寻求兴趣。

  在所有公司都有一个不成文的黄金定律:当你达到一定水平后,你做什么,已经不是你的上级能决定,也不是公司总裁能决定的。你只要做你认为对公司有利的事情。当然,你得说服团队同意你的观点,投入时间和资源去做。倘若发现道不同志不合,作为hacker,你可以自由选择公司选择职位,而不是公司选择你。

  态度不代表能力,态度很重要,但能力才是决定你能否真正继续前进的关键。态度是万里长征第一步,态度很重要,但不要拿态度说事。要去做,去实践,努力去获取能力。

  2、没有必要和直接生产部门的开发争夺所谓的“重要性”,没有任何意义。

  摆正测试自身的位置才是王道。

版权声明:本文出自 simplezhuo 的51Testing软件测试博客
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • weimm
    2011-6-14 09:27:54

    文章里面有几个地方有错字~做测试的要仔细点~不是么?

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号