质量(quality)是软件测试的中心,这是毋庸置疑的。测试是质量保证的重要手段之一,测试本身就是为质量服务的。测试能否通过,其检验的标准是用户的需求,也就是质量的标准。所以,在软件测试的5个要素中,质量是核心,其他4个要素要服务于质量,服从于质量。
如果要问,除了质量,还有什么是最重要的?那自然是测试人员。人是决定的因素,决定了技术和流程的执行。像软件开发这样的智力活动,要强调“以人为本”的管理文化,才能真正发挥每个人的潜力,以最有效的方法完成测试工作。
如果继续追问下去,在软件测试过程中,哪两样东西是我们必须关注的?答案应该是“测试覆盖率”和“效率(productivity)”。如何保证质量,一个重要的衡量方法就是测试的覆盖率,包括用户实际需求的覆盖率和代码覆盖率。在保证质量的前提下,确定任务的优先级,采取正确的策略和方法,包括自动化测试方法,以高效的方法完成测试。
一而再、再而三,关注了“测试覆盖率”和“效率”,拿什么来保证呢?这不外乎三个方面,就是测试人员、测试流程和测试的技术。就人员来说,要从招聘、培训和考核等各个环节来培育良好的团队文化,树立正确的工作态度,强化质量意识,提高团队的战斗力,构建卓越的测试团队。无论是采用敏捷的测试流程还是传统的测试流程,一定要结合具体的产品和技术特点,因地制宜,形成适合自己的、有效的测试流程。测试技术比较丰富,因而下面各章的讨论会很多,从客户端到服务器端,从黑盒测试到白盒测试,从静态测试到动态测试,全力构造一个完整的测试技术体系,使之满足测试工作的需要。这些内容,可以用图1-2形象地描述,使我们一目了然。
软件测试的金字塔体系可以基于上一节的描述进行扩充,得到如下结构,更接近于一串神秘的数字。
1个中心→1人(以人为本)→2个目标(关注点)→3个支撑→5要素或5个工作面→8关系→13原则→21关键域→34个方法
图1-2 软件测试核心、目标、基础等关系
最后,总结一下软件测试的5个要素。
1) 质量 :软件质量是软件测试的目标,也是软件测试工作的中心,一切从质量出发,也就是一切从客户需求出发。任何违背质量的东西都是问题,测试就是要找出这些问题。
2) 人员 :人是决定的因素,测试人员的态度、素质、能力决定着测试的效果,对测试产品的质量也有很大的影响。测试人员因素包括测试组织结构、角色和责任的定义。
3) 技术 :软件测试技术,包括方法、工具。
4) 资源 :主要是指测试环境中所需要的硬件设备、网络环境,甚至包括测试数据。另外一个重要因素就是测试时间,时间也是测试的资源,但测试人员不能看做资源,每个人的能力千差万别,不同的测试人员担任不同的角色,不能相互代替。这也是软件图书的经典之作——《人件》 的作者反对将人作为资源对待的原因。
5) 流程 :从测试计划和测试用例的创建、评审到测试的执行、报告,设定每个阶段的进出标准。