敏捷开发与敏捷测试
随着软件开发方法的不断演进,敏捷开发方法在各软件企业和团队中应用越来越广泛。传统的瀑布式方要求有详细的项目计划和文档,部署、QA测试和交付过程严谨。而敏捷方法的优点则体现在能够快速迭代,更多的强调人员在整个开发过程中所发挥的作用。
基于Scrum方法,TechExcel 的DevSuite产品能很好的实现敏捷开发方法,它独创混合的敏捷研发方法,实现需求、研发、测试三位一体的整合研发过程。
DevSuite是一套完整的研发过程管理软件套件,覆盖产品的概念形成、需求分析、项目规划、到任务跟踪和质量测试等全生命周期管理,帮助您有效地控制需求、资源、工期和质量,规范和改进产品研发过程,提高产品质量和工作效率。
DevSuite 其灵活、强大、易用的工作流配置和自定义能力,使之已成功应用于众多领域。
在运用DevSuite实现敏捷研发方法的同时,我们也强调敏捷测试。
QA,通常指的是质量分析/保证工程师,测试是软件质量的最后把关者、QA在敏捷团队有对质量负责的原则。
敏捷测试就是在敏捷开发模式下对软件进行的测试,要求尽早测试、频繁测试,以及时提供反馈。敏捷测试要求团队对软件产品的质量负责。
敏捷测试流程大致如下:
1. 验证需求和设计
需求和设计具体来说一般包括:
(1) 由项目经理根据需求文档而编写的功能设计文档
(2) 由开发人员根据功能文档而编写的实施设计文档。
作为测试人员,审核重点是检查文本对用户需求定义的完整性、严密性和功能设计的可测性。
在测试初期,测试人员要学会做静态测试,做好需求分析,做好对设计逻辑的分析。测试人员要更多的思考需求的可实现性,将自身作为第一用户积极参与项目和系统的需求分析,设计和开发。积极的参与前期工作,并迅速反馈给设计和开发其静态测试结果。要尽早的开始测试,不要等待到功能完全做好才开始。
2. 测试计划,测试用例
2.1 编写计划,测试用例
在敏捷开发的过程中是根据user story 来分配开发任务的,当一个new feature assign story 到in development 状态去的时候,说明当前的new feature已经进入开发阶段,QA就应该根据功能设计文本开始编写对应new feature的测试用例。
2.2 测试用例的审核
当测试用例编写完毕后,QA Floater进行测试用例的审核。对覆盖率不足的地方能够及时给出意见。
在迭代后期测试要抽时间更新test case
3. 实施运行测试
在敏捷方法中,我们要求开发人员做单元测试,QA Floater做验证测试,然后才是有QA 团队进行New feature 测试流程,最后发布给客户,客户对需求的新功能进行验证和接收测试。
单元测试(开发):
在每个new feature打到QA Verification Testing之前,开发首先要根据QA Testevent 里的template进行单元测试。只有开发通过了template里的所有test points,才能打到QA Verfication Testing,由QA Floater 开始验证测试。
做单元测试的好处是可以提高newfeature质量,减少浅层次的bug发生率,使QAFloater 的验证测试能顺利的进行下去,能够将更多的精力投入到寻找深层次的bug上面。
验证测试(QA Floater):
QA Floater 的验证测试从总体上说就是将上一步设计的测试用例按照计划付诸实施的过程。
QA Floater 验证测试过程中,能第一时间的对new feature 进行测试,发现问题迅速地反馈给开发,使开发能在有效的时间内帮助修复bug。
New Feature 全面测试流程 (QA Team):
测试执行的一开始是在SQL DB上进行测试,首先针对new feature部分,之后逐步扩展将new feature 与软件现有功能结合起来,进行整合测试。
接着开始采用迭代的过程完成newfeature的整体测试,将测试划分为多个周期,分别在SQL,Oracle,MySQL等不同DB以及IE,Firefox,Chrome等不同浏览器上进行测试。
4. 软件开发末期开展fullfunction testing。
QA 全面开展测试cycle,将所有new feature 和软件现有功能整体进行系统集成测试,找出更多的bug。
QA通常不是仅仅工作在某个迭代,而是并行的同时工作在多个迭代:要对当前迭代的newfeature进行验收测试、探索性测试,和开发人员结对实现测试自动化等;还要和业务人员结对分析下一个迭代的new feature,编写测试计划和测试用例。
敏捷测试中的QA,是多角色开发团队的一员,测试贯穿于整个开发流程中,QA和不同的角色合作(designer,developer),及时向团队提供关于产品质量的反馈,便于调整。在每个迭代结束时候,QA需要分析统计该迭代的缺陷,并结合自己通过测试对系统质量的了解,及时跟团队反馈,讨论分析质量下降的原因以尽快作出改进,或总结质量上升的经验,鼓励团队再接再厉。QA通过参与开发流程的每个阶段,能够协助团队从内部提升质量,让质量融入到产品开发中来,在敏捷开发中体现了重要作用。