什么是公理?在百度百科中可以查到:

所谓公理,就是经过人们长期实践检验、不需要证明同时也无法去证明的客观规律,释义如下:

         1) 经过人类长期反复的实践检验是真实的,不需要由其他判断加以证明的命题和原理。 

         2) 某个演绎系统的初始命题。这样的命题在该系统内是不需要其他命题加以证明的,并且它们是推出该系统内其他命题的基本命题。     

    那么在测试领域是否也存在这样的客观规律呢?

    我们看到,在不同项目的测试过程中,测试行为的差异如此巨大。在软件测试的七项基本原则中有一条“测试活动依赖于测试的Context”,也就是基于不同版本的应用目标、复杂程度、质量要求以及人员成熟度等等因素,每个测试过程都会有所区别,但不是质量上的差别,而是方法。

    因此应该有一些客观规律,它们并不依赖于所测试的对象(路由器还是手机),所采用的开发模型(瀑布还是迭代),TPI模型正是基于这一认识来建立的,不过在TPI模型中有157个非常详细的Checkpoint,它们更像由公理推导出来的“定理”。

    公理应该是简洁的,作为测试域的初始命题,从2008年Paul Gerrard (2010年EuroSTAR测试杰出贡献奖获得者)第一次提出“测试公理”概念,目前已发展了16条公理,大家来看看Paul所提出下面这些公理是否可以反驳或证伪吧:

首先是测试第一等式,究竟哪些东西影响了测试的过程和方法:

 AXIOMS + CONTEXT + VALUES + THINKING = APPROACH

 公理 + 环境 + 价值 + 思想 = 方法

Paul按照3个方面来组织测试公理:利益干系人、测试设计、测试执行与交付。

利益干系人

     公理1:测试需要利益干系人

     公理2:测试的价值是为利益干系人提供决策依据

     公理3:如果我们不约束测试的范围,我们永远无法符合利益干系人的期望

     公理4:测试和验收的范围始终是妥协的结果

测试设计

     公理5:测试设计基于模型(注:这一模型可能是正式的,由形式化来描述;也可能是非正式的,在测试人员的脑中)

     公理6:测试人员需要知识来源(Sources of Knowledge)来选择测试内容

     公理7:测试人员需要知识来源(Sources of Knowledge)来评价被测对象的实际产出或行为

     公理8:测试需要一个或多个覆盖模型

     公理9:测试需要一种机制来排序测试优先级

     公理10:测试的知识来源(Sources of Knowledge)是模糊且不完整的

测试执行与交付

     公理11:通过利益干系人做决策时的信心来衡量测试的价值高低

     公理12:一些重复测试是不可避免的

     公理13:先执行最有价值的测试——否则可能没有时间执行它们

     公理14:测试执行需要明确、可控的测试环境

     公理15:测试永远不会按计划进展,测试所得到的证据按照离散量子化的模式出现

     公理16: 测试永远不会结束,只会停止

 

    如果认可这些公理,那么根据它们也就可以推导出哪些实践是正确的,哪些是不那么正确的。

    例如公理10:测试的知识来源(Sources of Knowledge)是模糊且不完整的。在绝大多数开发项目中,都存在这样的问题:需求质量很差,测试设计所依赖的许多知识:如应用场景,如系统在异常下的行为和结果,都是不明确的,这也是我们一直希望测试能够尽早投入,通过详细的测试设计来提升需求质量,达到预防缺陷的根本原因。

    再例如公理16: 测试永远不会结束,只会停止。无论何时,只要你进行测试,就一定会发现更多缺陷。因此,测试是“Stop”而不是“Finish”,停止的原因是因为我们提供了足够的证据,使得决策者认为剩余的产品风险已经可以承担,已经满足客户的应用期望,因此测试不是“盖章放行”,不是质量的“看门人”。

    我很欣赏2009年EuroSTAR中的一个演讲“董事会中的测试人员”,其中Martin Kooij提出随着软件产品对人类的生活变得越来越重要,测试人员的终极职位将是“CRO”——首席风险官,负责监控和管理产品风险(注意,不是项目或金融风险),不过Martin也认为这是在2018年才会发生的事儿了!

 

posted on 2013-02-22 21:52  Paul.Z  阅读(994)  评论(1编辑  收藏  举报