|
单元测试是软件开发中被普遍接受的优秀实践,也是影响软件质量的一个重要方面。有效的、充分的单元测试能够提高代码质量,从而有效避免了返工。但是如何保证单元测试得到有效的执行呢?按照经验过程控制的思想,我们可以先使单元测试成为一个可观察的因素,然后对其进行检查。检查过程中发现偏差时及时进行纠正从而保证单元测试得到有效的执行。项目管理者联盟
定义单元测试的产出物可以使单元测试活动成为可观察的因素。对单元测试产出物进行评审可以发现单元测试所覆盖的测试用例是否真正执行通过以及测试用例覆盖是否充分。若单元测试评审过程中发现有测试用例未通过的或者遗漏的,则及时反馈给开发人员进行纠正,从而避免了缺陷进入下一道工序——Story 测试。项目管理者联盟
笔者曾经在一个基于 SOA(Service Oriented Architecture)的项目中将单元测试过程中系统所产生的接口日志文件定义为单元测试产出物。在这个项目中,开发人员会将单元测试过程中每个测试用例执行时系统所产生的接口日志文件按所覆盖的测试用例的名称进行命名提交到配置库上,然后知会其他项目组成员进行评审。由于这个单元测试产出物能够反映系统所要实现的功能,评审人员可以通过分析产出物判断每个测试用例是否真正执通过以及测试用例是否覆盖充分。评审者把评审过程中发现的测试用例未通过或者未覆盖等问题会整理成评审意见提交到配置库上,并知会开发人员进行处理。项目管理者联盟文章
项目管理者联盟
面对面代码复审talent.mypm.net
在比较常见的轻型代码复审过程中,开发人员提交代码到配置库上,然后代码复审人员从配置库上获取相应代码并借助一些代码复审工具将复审结果形成意见提交给代码作者进行处理,并跟踪复审意见的处理结果。代码复审人员往往只在复审过程中有疑问的情况下才找代码作者进行确认。这种轻型的代码复审复审表面上执行起来比较容易,成本也比较低。但是它和《敏捷宣言》中提到的“个人与交互胜过过程与工具”这一价值观是相违背的。因为它缺乏有效的人与人间的交互。这种缺乏人员间交互的方式也导致了评审结果最终呈现给代码作者的往往是问题。这一方面使得代码作者只是被动得发现问题和解决问题。被动得发现和解决问题往往导致当事人对问题及其解决方法印象不深刻从而极易导致相同或者类似问题重复得出现。虽然我们可以将复审过程中典型的问题形成检查表由开发人员在代码提交前对检查表中的项目进行自检,但是这个检查表往往也是在重复的问题被重复得发现后才形成的。另一方面,这种代码复审往往给代码作者一种“挑刺”的感觉,而作者自认为代码中比较优雅的部分往往也被人忽略了,因为那不是问题因此复审人员也不会将其指出。这容易导致开发人员对代码复审的本能性排斥心理,因为人总是倾向于被他人肯定,而不是总是被人指出问题。pmp.mypm.net
笔者在所带的项目中开展面对面代码复审。面对面代码复审活动中,代码作者通过电脑显示器或者投影仪向其他参与人展示其代码并逐行对其代码进行讲解。其他参与人则对其讲解进行分析判断,并将其分析判断的结果提出同其他复审人员进行讨论。复审人员发现比较优雅的代码时可以及时指出来,并对代码作者给予肯定。因此,面对面代码复审某种程度上也是编程经验和优秀实践的一个交流形式。另外,对于经过讨论后确认的问题则记入代码复审意见表由复审人员跟踪其处理结果。代码作者对其代码讲解的过程某种程度上说也是其本人对其代码进行回顾和再思考的过程。因此,代码讲解过程中,讲解人往往会自己发现代码中的问题,从而对发现的问题有深刻的印象,这有助于避免同样或者类似的问题再次产生。另一方面,由于代码中的问题会当众暴露出来,对代码往往有种敝帚自珍心理的开发人员在代码复审前会小小谨慎地去检查代码,从而避免“当众出丑”。因此,面对面的代码复审某种程度上也是一种缺陷预防的措施。项目管理者联盟
项目管理者联盟
Story演示与转测试控制项目管理者联盟
《左传·庄公十年》提到“夫战,勇气也!一鼓作气,再而衰,叁而竭”。返工不仅增加了成本,阻碍了进度,还影响了士气降低了质量。返工往往是由于某道工序缺乏它的入口条件控制。比如,Story 转测试这道工序如果没有控制其入口条件,则很容易由于事先未评估被转测的 Story 质量导致在测试时仍然有大量的缺陷存在。这就意味着在第一次转测试后,开发人员需要修复大量的缺陷,并且开发人员在修复缺陷的过程中往往又引入了新的缺陷,进而导致了对于同一个 Story 需要进行多次修复缺陷和多次转测试的工序才能使这个 Story 满足质量要求。项目管理者联盟
因此,对 Story 转测试这道工序进行入口控制可以有效避免返工现象。任何一个 Story 在其转测试前,我们要首先评估其质量是否满足一定的要求才决定其能否转测试。项目管理培训
笔者在所带项目中通常以 Story 演示作为 Story 的转测试控制。Story 演示要求开发人员在 Story 转测试前召集该 Story 的测试人员及其他相关人员对该 Story 的各个验收测试用例的执行情况进行展示。其他参与演示的人员则根据展示的结果分析各个验收测试用例是否真正通过,进而评价所演示的 Story 的质量水平并决定所演示的 Story 能否转测。项目管理者联盟
Story 演示过程发现的问题以及疑问可以记录入 Story 演示记录。Story 演示记录样例见表 6。项目管理者联盟
项目管理者联盟
结论bbs.mypm.net
经验过程控制模型为敏捷质量管理提供了一个简单易行的理论指导。缺陷预防是质量管理的一个重要思想,而经验过程控制模型可以帮助我们具体实施缺陷预防。另外,敏捷宣言所体现的敏捷价值观也为质量管理提供了思想指导。service.mypm.net www.mypm.net
|