很高兴地看到测试员在企业中的地位日见增长,这一方面得力于软件工程规范化的落实,另一方面也是测试员的工作成绩提高了这一岗位的重要性。但还应该看到,对于大多数企业而言,测试员仍处在从企业的边缘人向主体群落融入的过程中。在这一漫长的过程中,有许多困惑和许多误解。建立一个企业的测试文化,是澄清这些困惑和误解的重要途径。
一个基本的也是最有分歧的问题就是:测试文化应是服务型还是控制型?我认为较好的测试文化应是服务型的。有的企业将测试文化定位为控制型,即测试员对最终产品的质量负责,对质量过程负责,甚至批准或拒绝产品的发布。事实上,测试员不应有也不应期望拥有这些控制权利,应将不合理地赋予的这些权利分离出去:1)质量的过程控制应由QA负责,因为,最终产品的质量是设计与开发出来的,而不是测试出来的;2)批准或拒绝产品的发布更有应是企业高层的职责,不应是测试部门更不是测试员的职责。测试部门或测试员应明确自已的角色定位,努力培养服务型测试文化,在服务意识的指导下,努力做了自已的本职工作。
既然测试文化定位为服务型,那么,对测试员的职责就可以从如下方面来描述:
为高层提供服务:即测试部门将产品的测试报告提供给高层,由高层作出有关决策。测试报告应包含高层希望了解的产品情况:错误发现率、错误改正率、问题收敛趋势,等等。
为项目经理提供服务:向项目经理提供的测试报告应满足项目经理关注的需求,这些需求包括:产品的功能有哪些未满足、性能方面有哪些问题、哪些问题已与程序员沟通,但未达成一致意见,需要提交高层仲裁,等等。
为QA提供服务:测试人员参与质量管理活动应该是服务性质的,即他不是去主导质量管理活动,而是为质量管理活动提供服务支持。测试人员通过测试报告,利用事实和数据来反映产品目前的质量情况,为QA的工作提供依据。
为程序员提供服务:测试员要同程序员交朋友,向程序员及时反馈具体的程序问题,并与程序员共同探讨。一方面,测试员通常比程序员更了解业务领域,因此,他能从业务员的视角来检测产品的功能;另一方面,测试员通过测试用例能发现程序员不易想到的问题;再一方面,测试员从用户(操作员)的角度所进行的随机测试,也是检查产品的可用性。这些方面的测试情况,应及时反馈给程序员,以便进行及时修改。同时,测试员也要从程序员角度考虑问题,并获取相关程序的文档资料,使得测试员编制的测试用例更切合测试的重点、难点以及关注点。必要时,测试员也应了解程序员所使用的开发语言,这对于进行程序的白盒测试尤为重要。
为市场推广人员提供服务:产品最终是要投放市场的,在产品的投产前,市场推广人员必须了解产品的优缺点和与同类产品对比的特色,从而有利于组织产品的广告宣传,以及应对媒体的挑剔与非难。总之,在市场推介活动中,市场推广人员应充分了解产品的相关信息,这些信息的主要来源就是测试报告。
综上所述,测试人员的职责就是通过测试报告向项目的主要涉众传达产品的信息,即他是作为一个重要的信息源,为质量体系的运作提供到位的服务。
从形式来看,测试报告是测试人员的工作成果,因此,测试人员的职责可以围绕着“测试报告”来描述——这里的“测试报告”是广义的,包括测试员的所有的报告(含非正式的口头报告)。例如:
描述“测试报告”的前期工作:包括测试计划、测试案例、测试过程、信息收集。
描述“测试报告”的信息管理:通常使用测试管理工具,它对测试中的问题进行收集、流转和跟进或督办,并提供分析与统计功能。
描述“测试报告”的撰写:要注意不同的涉众需要不同的信息,即需要不同的测试报告。如,高层可能只需要一些统计信息或问题的收敛情况,而程序员可能需要一些非正式的、直接的、及时的反馈意见。因此,对不同类型的“测试报告”可能有不同的模板或样例,测试报告的编写能力应是测试员的基本功之一。
描述“测试报告”的报告流程,测试报告(正式的或非正式的)的报告流程应清楚明白,特别是问题报告应形成闭环。
描述“测试报告”的管理:测试报告应作为企业的重要信息加以保存、管理,并作为历史数据供以后参考和比较。
测试员的职责的描述形式可以是多种多样,如何描述并不重要,重要的是应通过职责的描述,体现企业的测试文化,努力营造一个好的测试文化是我们所关心的。