埃及金字塔的神秘,不仅是因为它的规模宏伟、结构精密,而且它的兴起和演变至今只是一个传说,成为千古之谜。而软件测试,也感觉和金字塔有一种神秘的关系,为什么这样说呢?
金字塔中有神奇的黄金分割数Φ,其值是个无穷小数,若只取三位小数便是0.618。如用金字塔的高除以底边长,即1÷1.618 = 0.618。而金字塔许多特征数据,和13世纪数学家法布兰斯所提到的奇异数字的组合,有许多巧合之处。这些奇异数字的组合是1、1、2、3、5、8、13、21、34、55、89、144、233…它们任何两个连续的比率都接近0.618,如3/5、5/8、34/55、55/89、89/144等。而且金字塔有一个顶点、五个面、八个边,总数为十三个层面,这些特征数据也和上述奇异数字非常吻合。
首先,软件测试的出发点就是质量,软件测试的一切工作应该围绕质量而开展。质量是软件测试的中心,可以看做是金字塔的顶点,如图1-1所示。测试的其他部分就是支撑这个顶点的测试人员、测试资源、测试技术和测试流程。因此,构成软件测试的5个要素就是:质量、人员、技术、资源、流程。
这样,5个要素构成了5个面,每个面由3个要素构成,代表着软件测试的工作面。具体是怎样的工作面?请往下看,自然会越来越清楚。
在这金字塔构成中,还有每两个要素构成的8条边,每条边代表两个要素之间的关系,如何处理这些关系,也就决定着测试能否获得成功。基于要素、工作面、要素之间的关系,我们确定了13项软件测试原则、21个关键域。针对软件测试关键域,每个软件组织可以了解自己在这个领域的水平,持续进行改进。最后,列出目前所使用的各种软件测试方法,并将这些方法应用于软件测试实际工作之中。所以软件测试可概括为:
从1个中心到5个要素
质量(quality)是软件测试的中心,这是毋庸置疑的。测试是质量保证的重要手段之一,测试本身就是为质量服务的。测试能否通过,其检验的标准是用户的需求,也就是质量的标准。所以,在软件测试的5个要素中,质量是核心,其他4个要素要服务于质量,服从于质量。
如果要问,除了质量,还有什么是最重要的?那自然是测试人员。人是决定的因素,决定了技术和流程的执行。像软件开发这样的智力活动,要强调“以人为本”的管理文化,才能真正发挥每个人的潜力,以最有效的方法完成测试工作。
如果继续追问下去,在软件测试过程中,哪两样东西是我们必须关注的?答案应该是“测试覆盖率”和“效率(productivity)”。如何保证质量,一个重要的衡量方法就是测试的覆盖率,包括用户实际需求的覆盖率和代码覆盖率。在保证质量的前提下,确定任务的优先级,采取正确的策略和方法,包括自动化测试方法,以高效的方法完成测试。
一而再、再而三,关注了“测试覆盖率”和“效率”,拿什么来保证呢?这不外乎三个方面,就是测试人员、测试流程和测试的技术。就人员来说,要从招聘、培训和考核等各个环节来培育良好的团队文化,树立正确的工作态度,强化质量意识,提高团队的战斗力,构建卓越的测试团队。无论是采用敏捷的测试流程还是传统的测试流程,一定要结合具体的产品和技术特点,因地制宜,形成适合自己的、有效的测试流程。测试技术比较丰富,因而下面各章的讨论会很多,从客户端到服务器端,从黑盒测试到白盒测试,从静态测试到动态测试,全力构造一个完整的测试技术体系,使之满足测试工作的需要。这些内容,可以用图1-2形象地描述,使我们一目了然。
软件测试的金字塔体系可以基于上一节的描述进行扩充,得到如下结构,更接近于一串神秘的数字。
图1-2 软件测试核心、目标、基础等关系
最后,总结一下软件测试的5个要素。
● 质量:软件质量是软件测试的目标,也是软件测试工作的中心,一切从质量出发,也就是一切从客户需求出发。任何违背质量的东西都是问题,测试就是要找出这些问题。
● 人员:人是决定的因素,测试人员的态度、素质、能力决定着测试的效果,对测试产品的质量也有很大的影响。测试人员因素包括测试组织结构、角色和责任的定义。
● 技术:软件测试技术,包括方法、工具。
● 资源:主要是指测试环境中所需要的硬件设备、网络环境,甚至包括测试数据。另外一个重要因素就是测试时间,时间也是测试的资源,但测试人员不能看做资源,每个人的能力千差万别,不同的测试人员担任不同的角色,不能相互代替。这也是软件图书的经典之作——《人件》的作者反对将人作为资源对待的原因。
● 流程:从测试计划和测试用例的创建、评审到测试的执行、报告,设定每个阶段的进出标准。
5个工作面
基于软件测试金字塔的构成,我们好好研究其5个工作面,如图1-3所示。
图1-3 软件测试的5个基本工作面
● 质量-人员-技术:团队建设,包括人员的招聘、培训、考核等。
● 质量-人员-资源:成本管理,人员和软硬件资源都是测试的投入,但同时必须将人和软硬件资源区别对待,不要将人也作为软硬件资源那样处理,否则会带来较多的问题。
● 质量-技术-流程:技术和流程结合起来就是一种测试架构或测试框架,通过技术,将流程融入系统或工具中,流程的执行才能稳定、有效。技术通过框架固化,技术才能发挥最大效益。
● 质量-流程-资源:基础设施,构建测试环境,将测试建立在坚固、流程的基础设施之上。
● 人员-技术-流程-资源:项目管理,在一定的质量标准下,如何平衡这些要素、如何获得最大的生产力,就是软件测试项目管理的主要任务。
本文节选自《完美测试:软件测试系列最佳实践》一书,朱少民主编