探索式测试实践之缺陷大扫除和结对测试(2)

发表于:2012-06-08来源:新浪博客作者:JerryGao点击数: 标签:结对测试
缺陷大扫除是常规测试的有效补充。测试团队将各个子系统连成业务系统,执行端到端(end-to-end)的 系统测试 ,能够发现个人在子 系统测试 中难以发现的

  缺陷大扫除是常规测试的有效补充。测试团队将各个子系统连成业务系统,执行端到端(end-to-end)的系统测试,能够发现个人在子系统测试中难以发现的缺陷。此外,测试人员在测试不熟悉的子系统时,没有任何先入为主的“偏见”,往往能立即发现那些被“熟视无睹”的缺陷。而资深测试人员还可能发现一些初学者难以察觉的隐蔽问题。不过,相比找到的缺陷,我认为缺陷大扫除在以下两个方面更有价值:

  (1) 团队建设。在日常工作中,测试人员更多的时间在独立地工作,彼此之间的联系并不紧密。在缺陷大扫除中,测试员进行渗透式交流,互通情报,一起嘲笑那些拙劣的设计、滑稽的缺陷,甚至说一些无关的笑话以相互逗乐。全部这些“小事”都在潜移默化中逐步凝聚一个团队。

  (2) 团队学习。团队举行“缺陷检讨”会议,总结缺陷模式(bug pattern),完善测试策略,补充测试检查列表(check list)。这是一种积极的集体学习行为。在此过程中,测试人员可以积累经验、分享技能,测试团队可以沉淀知识、凝聚士气。

  2011年度淘宝网的商品线也举办了几次缺陷大扫除活动,效果是比较显著的。对于互联网的测试行业,存在多个复杂的运行环境。用户群拥有的不同的浏览器、浏览器的不同版本、不同的硬件配置、不同的网络速度,这些都可能会影响网络应用的页面的展示和功能特性之间的交互。由于涉及到内部信息,本文不展示缺陷大扫除活动的具体数据。

  我以前的blog也提到过国外有一个专门从事探索式测试的团队,有着非常高的单位时间缺陷发现率。我们可以通过多次开展缺陷大扫除活动,从而观察出每次活动缺陷发现前三名的测试人员。我认为这些测试人员可以是探索式测试团队的储备人员,他们还需要接收更全面更深入的培训,包括测试技术、产品知识、系统思维、测试方法等。这样的一个专门团队需要在实战和学习中不断的提高,让自己的处事效率更加专业和正确。一旦公司团队紧急需要(任务复杂度,紧急程度等),这些储备人员将以最高效的测试手段进行测试,最快速的反馈产品的质量,就像特种部队一样。但是公司领导需要明白的是,探索式测试团队测试产品后,仍有存在重要缺陷的风险。另外公司成立特种部队的主要目的是让他们传播经验、培训员工。让大多数员工都成长,才是团队的努力方向。

  总体上来说,Bug Bash 不仅仅能给项目的质量带来新的思考方法和参考指标(质量和用户体验上都有所提升),而且还会驱使Bug Bash的参与者更加有激情和热度去从事测试工作。至于Bug Bash活动的相关细则可以根据自己团队的特点来定制化,目标就是提升项目的质量和提高测试人员的测试敏感度、测试关注度、创造性思维、团队分享精神。

  结对测试

  当开发人员都在关注结对编程的时候,测试人员应该关注什么呢,如何来解决单人测试带来的测试遗漏这个问题呢,结对测试行不行呢?结对测试是软件开发中的一种技术,它允许团队中两个人一起测试某个产品,一个测试人员实际操作测试产品,另一个测试人员分析或评审测试过程和测试结果。

  结对测试也未必一定是两个人,多个测试人员合作共同测试的时候就称为结队测试。测试人员都是很敏感的,在自己执行测试的时候,程序稍有一点反常,都会意识到可能是缺陷,一定会去究根追底,去确认到底是缺陷还是操作问题引起的。当测试人员互相交流发现的缺陷的时候,可能会互相启发去发现更多的缺陷。一个测试人员发现了一个缺陷,另一个测试人员可能发现和这个缺陷类似的更多缺陷,特别是在复杂环境下的测试。

  两个测试人员工作在一起,在一个固定的时间段内一起产生测试思路,且持续的交换测试思路。假设我们需要进行测试设计,则一个成功的结对测试实践需要三个具体的条件:

  (1) 至少有一个测试人员可以被信任且能在没有指导的情况下进行测试。

  (2) 另一个测试人员需要参与到测试设计过程中。

  (3) 两个测试人员必须要有一起合作的能力和心态。

  在结对测试过程中,实践者需要注意以下关键因素。

  交换测试想法

  在很多活动过程中,将你的想法解释给其他人听是一个负担,但是在测试活动中,这将是一种收益。因为测试的过程就是一个测试想法生成的过程,解释和质疑的过程有助于培养出更多新的测试想法。尤其当某个测试人员的知识远少于另外一个测试人员时更是这样。很多情况下,一个测试人员单独的测试容易陷入到一个错误的结论,除非另一个测试人员质疑该结论,否则他也不会重新审视该结论。

  关注个人和社会因素

  我们不知道每个测试人员的个人特质,如脾气、技能、经验对结对测试的效果有多大的影响。但是结对测试的实践表明该活动非常有趣,无论你的经验是丰富还是欠缺。当然,测试人员必须是友好相处的,且在过程中有一定的承诺,如果某一个测试人员在工作过程中感觉到被攻击、失去自主权、或变得沮丧都会影响结对测试的效率。结对测试是一个比团队测试更加特殊的组织方式,结对意味着最大化每个测试人员的贡献。在某个主管和其下属的结对情况下,通过结对的提问和测试的演示可以让主管更加信任测试的质量。

  与测程相结合

  我们在结对测试的过程中,可以在早期选择好需要结对测试的测程,测程的概念在我之前blog中已经做了详细描述。在一个测程中,结对的测试人员有一个清晰的目标和测试策略。当然,由于结对测试充满着乐趣,则结对测试的时间段可以是测试人员的测程的间隙。

  通过结对测试,对初级测试人员来说,特别是和资深的测试工程师结对的时候,是一个非常好的学习机会,学习测试思路的转变、业务需求的分析、测试时的策略等。结对的人员是搭档,而初级测试人员一般是在计算机上操作相关功能,他/她应该得到充分的尊重,是可以根据自己的想法去测试。

  原则上,结对测试时的两个测试人员需要对被测需求负有共同的责任,但是某些人员存在自己的一些个性和处事方式,可能会影响结对测试的效率。此时应和资深测试人员或测试领导一起来沟通解决此问题,让大家对结对测试有一个明确的认识,一起提高合作效率。

  总体上来说,有经验的测试人员和新测试人员一起结对测试会带来双赢的收益,这里我鼓励大家多去参与其他测试人员的测试过程中去。我需要提醒大家的是,结对的测试人员需要把握一个度,那就是测试人员给出的意见或建议需要有一定的价值(这样才能让测试执行人员更换测试步骤关注其他的测试点,若更换步骤后发现了bug就更有说服力),而不能频繁抛出自己的想法或思路(让测试执行人员产生不耐烦的心态)。

原文转自:http://www.ltesting.net