首先,软件测试的出发点就是质量。软件测试的一切工作应该围绕质量而开展。质量是软件测试的中心,可以看做是金字塔的顶点,而支撑这个顶点的就是人员、资源、技术、流程。
因此,构成软件测试的5个要素就是:质量、人员、技术、资源、流程。
5个要素构成5个面,每个面由3个要素构成,代表着软件测试的工作面。其中每两个要素构成8条边,每条边代表两个要素之间的关系,如何处理这些关系,也就决定着测试能否获得成功。
质量是软件测试的中心。测试是质量保证的重要手段之一,测试本身就是为质量服务的。测试能否通过,其检验的标准是用户的需求,也就是质量的标准。所以,在软件测试的5个要素中,质量是核心,其他4个要素要服务于质量,服从于质量。
继续往深处思考,在测试活动中,哪两样东西是我们必须关注的?答案应该是“测试覆盖率”和“效率”。如何保证质量,一个重要的衡量方法就是测试的覆盖率,包括用户实际需求的覆盖率和代码覆盖率。在保证质量的前提下,确定任务的优先级,采取正确的策略和方法,包括自动化测试方法,以高效的方法完成测试。
现在已经知道了测试的关注点,那又如何来保证这两点呢?不外乎就是测试人员、测试流程、测试技术、测试资源几个方面。就人员来说,要从招聘、培训和考核等各个环节来培育良好的团队文化,树立正确的工作态度,强化质量意识,提高团队的战斗力,构建卓越的测试团队。无论是采用敏捷的测试流程还是传统的测试流程,一定要结合具体的产品和技术特点,因地制宜的形成适合自己的、有效的测试流程。测试技术比较丰富,从客户端到服务端,从黑盒测试到白盒测试,权利构造一个完成的测试技术体系,使之满足测试工作的需要。测试过程中会涉及到一系列的硬件、软件资源,满足测试过程中的所需资源,确保在其他几个要素都完备的情况下,不会因资源而导致项目出现进度延期,质量下降的现象。
5个工作面:
①质量-人员-技术:团队建设,包括人员的招聘、培训、考核等;
②质量-人员-资源:成本管理,人员和软硬件资源都是测试的投入,但同时必须将人和软硬件资源区别对待,不要将人也作为软硬件资源那样处理,否则会带来较多的问题。
③质量-技术-流程:技术和流程结合起来就是一种测试架构或测试框架,通过技术,将流程融入系统或工具中,流程的执行才能稳定、有效。技术通过框架固化,技术才能发挥最大效益。
④质量-流程-资源:基础设施,构建测试环境,将测试建立在坚固、流程的基础设施之上。
⑤人员-技术-流程-资源:项目管理,在一定的质量标准下,如何平衡这些要素、如何获得最大的生产力,就是软件测试项目管理的主要任务。
8组关系:
①质量与人员的关系:质量需要组织中的全员负责,每个人的行为都能对软件产品质量有直接或者间接的影响,每个人都应该树立积极的态度,做正确的事情,对软件产品质量的提高贡献自己的力量。(全员参与)
②质量与流程的关系:借助流程避免或减少人为的错误,借助流程可以督促人们在正确的时间做正确的事,甚至基于已有的良好流程迫使流程自身的优化,持续改进。所以,基于流程的质量改进是相对可靠、稳定的,基于流程的质量改进是可持续发展的。
③质量与技术的关系:有些流程的实施需要借助技术的支撑。借助技术,将流程固话在某个信息系统中,这样流程的执行就更加可靠。如未经过评审的代码不允许上传到svn,这时候就可以开发一个辅助的代码评审系统,未经过评审环节就无法提交,从这个角度保证质量。从这个意义上看,技术完全可以服务于质量,并能更好地保证质量,或使质量保证工作能事半功倍。
④质量与资源的关系:质量保证是需要成本的,从这个角度看,质量的提高需要更多的资源。可以说,质量和资源是成正比的,资源不足会降低质量,而资源充足可以改进质量,质量与资源的关系是被动的,最终取决于人、流程和技术。
⑤人员与技术的关系:软件测试人员隶属于研发团队,在工程师范畴内,因是技术人员,故以技术为本。软件测试人员作为用户代表,虽然更多的是站在用户的角度去看问题,去测试产品,但还是要靠技术武装自己。因为,要完成测试任务,无论是测试环境的设置,还是测试工具及其脚本开发、性能测试等,都需要技术,包括系统部署技术、网络技术、变成技术等。
⑥人员与流程的关系:树挪死、人挪活,流程是死的,人是活的。人发现流程有问题,就需要作出调整,对流程进行修改。流程是人开发出来的,流程是为人服务的,而不是人为流程服务。但同时,我们也要认识到,流程是多数人甚至是组织的全部人员,达成一致意见的结果。是一种约定,在流程没有改版之前,人们要遵守流程。
⑦技术与资源的关系:技术与资源相辅相成,技术的发展需要资源的支撑,而技术发展以后,又可以反过来优化资源,减少资源的需求。如果技术和资源之间的关系建立在这样和谐的良性循环基础上,对企业、对产品都有利。
⑧流程与资源的关系:流程与资源的关系和技术与资源的关系类似,也是相辅相成的关系。流程需要资源支持,资源为流程服务;同时,流程可以帮助我们更好地管理资源,充分地利用资源。