俗话说“工欲善其事,必先利其器”,要做好测试工作,首先需要建立并维护一个高效的测试团队。然而,许多小型软件企业却将测试作为产品面临发布时的一个小“插曲”,往往临时抽调几名程序员对产品的功能粗略测试一下即交付客户(甚至在进度和成本不足时首先砍掉这一块)。这种仓促完成的产品通常质量问题很多,所以我们首先应抛弃小企业惯常的思维模式,不计较一时一地之利益,立足长远,着手组建高效测试团队。
第一步:招募测试人员
在国内的软件企业中有一种普遍做法,那就是把那些刚涉足软件行业的技术新手或业绩不突出的开发人员安排去做测试工作。笔者认为这绝对是一种欠妥当的行为。事实上,对一个系统进行有效测试所需要的技能绝对不比进行软件开发所需要的技能少,测试从业者甚至可能面对许多开发人员都不会遇到的技术难题。那么,测试团队需要招募什么样的成员呢?这里,笔者总结了以下两点:
首先,测试人员要具备良好的沟通能力、自信心、外交能力、迁移能力以及怀疑精神。
其次,测试组成员应具备良好的专业技能或者技术学习能力。
当然,新招募的测试人员不可能像上面说的那么理想。关键是他们是否热爱测试这项工作,对相关的工作内容是否感兴趣以及他们的学习能力如何。
第二步:测试团队制度建设
良好的制度可以规范测试团队的工作开展,同时也便于对团队成员进行业绩考评。相反,则很有可能导致人心涣散,滋长负面风气。建设良好的测试团队制度,可以考虑以下几个方面:
· 汇报制度 团队成员汇报本周工作情况及下周工作计划、遇到的问题以及需要提供的帮助,培养团队成员的汇报及计划习惯。
· 工作总结制度 成员每个阶段汇报上阶段工作经验和教训,并在部门例会上交流、分享经验及教训,避免同样的问题重复出现。
· 奖惩制度 对于贡献突出的成员予以奖励,对于业绩差的提出批评,有效地保持测试团队的工作热情。
· 测试件审核制度 对测试件进行审核,去粗存精,鼓励测试人员使用和提出改进,保证提交到测试团队知识库的测试件的质量。
· 会议制度 定期召开部门例会,讨论、解决工作中的问题,并提供部门内的学习平台。
目前,已有不少软件企业推行给测试人员区分级别的制度,奖优罚劣。这无疑是一个好的做法,但成员业绩的具体考评办法,目前尚无可供参考的标准文件,所以笔者建议应尽量做到公正客观,以免挫伤团队成员的工作积极性。
第三步:测试团队内部的职责分工
明确测试团队内部各类测试人员的职责分工可以使测试团队内部各类测试人员能集中精力在较短的时间内完成特定岗位必需的知识储备和经验积累,同时也使得测试团队的管理更科学,真正做到“用其所长,避其所短”。
第四步:测试流程建设
我们可以通过以下步骤来建立适合本单位的测试流程:
1. 测试团队负责人员根据对公司现有测试状况的了解,及个人的测试经验,起草测试流程及相关的模板;
2. 通过一到两个项目的实践,记录测试流程草稿中的问题及不足之处;
3. 根据实施经验,完善测试流程,得到测试流程初稿,并起草相关实施指南;
4. 选择一个到多个项目,实践上述测试流程初稿及实施指南,记录实践过程中出现的问题;
5. 根据上述实践工作的反馈,组织修改测试流程初稿及实施指南,并把修改后的测试流程继续应用到项目实践中去,根据反馈进一步完善成熟;
6. 测试流程及其相关文件基本趋于稳定状态时,可以考虑发布测试流程(含测试流程、模板、表格、指南),并在以后的实践中不断改进和完善。
第五步:团队成员能力的逐步提高
有了明确、合理的职责分工后,需要针对这些分工对团队成员进行有意识的引导,稳步提升团队成员的技能。测试团队负责人需要负起监督和促进员工能力提升的任务。监督和促进测试团队成员能力提高,主要做好如下三个方面的工作:
一是,提倡资深测试人员在测试团队内部进行经常性的培训和测试经验交流,通过该渠道帮助资历浅的测试人员大幅提升业务技能,做到新老员工之间的知识传播和继承。
二是,测试团队应充分利用好测试件知识库,对于纳入到测试团队知识库的测试件应充分消化和学习,在此基础上进一步鼓励测试团队成员对这些测试件提出改进性意见。
三是,测试人员除了需要注重自身的测试技能提升,在条件许可的情况还应适度开发部门的基本知识,这样能减少与开发团队协同工作时的领域障碍。
许多测试经理在编制测试用例时往往没有把测试用例和测试数据进行区分,因此,造成的问题是当需求变化时辛辛苦苦设计的数据就作废了。在这时,假使面临一个需求动态的项目,必须在计划中对需求变更造成的测试(设计)方式变化进行说明,例如采用用例和数据分离、流程和界面分离、字典项和数据元素分离的设计方式,然后等到最终需求确定后细化测试设计;另一个方面是最好制定一个变更周期的约定――尤其在执行测试阶段发现需求的变更――定义变更的最大频度和重新测试的界限,计划从一定程度上能够降低不可预期需求变化造成的投入损失。值得注意的是:需求发生变更时测试经理额外的工作是记住要在需求跟踪矩阵上做记录。
对于测试产品版本的变更,除了部分是由于需求变更造成之外,很有可能是由于修改缺陷引发的问题或配置管理不严格造成。众所周知,测试必须是基于一个稳定的“基线”进行,否则,因反复修改造成测试资源和开发资源的浪费是可观的。合理的测试计划在章节中应增加一个测试更新管理的章节,在此章节明确更新周期和暂停测试的原则。例如,小版本的产品更新不能大于每天三次,一个相对大的版本不能每周大于1次,规定紧急发布产品仅限于何种类型的修改或变更,由谁负责统一维护和同步更新测试环境。测试计划通常制定了准入和准出准则,这是不够的,要考虑测试暂停的时候,产品错误发布或者服务器数据更新就是一个例子,暂停的时候如果测试经理不进行跟踪,可能发生测试组等待测试而没人通知继续测试的情况,所以,增加更新周期和暂停测试原则是很有必要的。
最后,测试资源的变更是源自测试组内部的风险而非开发组风险,当测试资源不足或者冲突,测试部门不可能安排如此多的人手和足够时间参与测试时,在测试计划中的控制方法与测试时间不足相类似。没有测试经理愿意承担资源不足的测试工作,只能说公司本身是否具备以质量为主的体系或者项目经理对产品质量的重视程度如何决定了对测试资源投入的大小,最终产品质量取决因素不仅仅在于测试经理。为了排除这种风险,除了象时间不足、测试计划变更时那样缩减测试规模等等方法以外,测试经理必须在人力资源和测试环境一栏标出明确需要保证的资源,否则,必须将这个问题作为风险记录。规避风险的办法可能有:
一,项目组的需求和实施人员参与系统测试;
二,抽调不同模块开发者进行交叉系统测试或借用其他项目开发人员;
三,组织客户方进行确认测试或发布β版本。