Rational Quality Manager(RQM)是以业务为驱动的软件质量管理集成平台和门户,它通过强大的从业务需求到测试计划,设计和执行过程的跟踪帮助企业有效控制软件质量。本文将主要介绍如何利用 RQM 快速地对敏捷开发项目的软件业务进行响应,从而缩短软件测试生命周期。
在并不遥远的过去,商业开发的节奏比现在要稍微慢一些,一个新产品和方案的开发往往需要几个月甚至几年时间。但是随着软件全球化的到来,客户和市场开始了快速、高响应和安全有序的敏捷业务实践,软件的开发周期以周进行计算,并且能够随时根据客户的反馈对业务进行修改,越来越多的企业意识到一个敏捷的开发和测试方法能够带来更大的商业价值和更广阔的发展空间,同时,这也给软件质量管理带来了许多新的挑战。
什么是敏捷开发
敏捷软件开发(Agile Software Development)初起于九十年代中期。最早是为了与传统的瀑布软件开发模式(Waterfall Model)相对应,所以当时的方法叫做轻量级方法(Lightweight Methods)。二十世纪初,17 位该方法的倡导者建立了敏捷联盟(Agile Alliance),并将该软件开发方法命名为敏捷软件开发过程。
敏捷联盟在成立之初总结了四条基本的价值原则:
人员交流重于过程与工具 (Individuals and interactions over processes and tools) 软件产品重于长篇大论 (Working software over comprehensive documentation) 客户协作重于合同谈判 (Customer collaboration over contract negotiation) 随机应变重于循规蹈矩 (Responding to change over following a plan)
图 1. 敏捷开发流程
查看图 1 大图
敏捷测试方法就是通过高度迭代工作、频繁得到客户的反馈,动态调整测试计划、进行测试的执行来保障整个生产的过程安全的、及时的发布最终产品。同时,敏捷测试人员需要通过不断的沟通和协作,修正质量指标,从而正确建立测试策略,确保客户的有效需求得以圆满实现。
敏捷开发的挑战
我们可以看出在敏捷开发中最为核心的价值观就是:持续不断的客户发聩;以一定时间为迭代周期;频繁高效的沟通和协同工作;简化和重用。
这也是敏捷测试所面临的核心问题,如何才能正确、及时地确保持续不断的客户需求被全部测试?如何才能保证团队之间能够高效协作?如何进行周期迭代测试?
持续不断的客户反馈
敏捷开发中强调对需求变化和用户反馈的动态管理,我们在敏捷开发中常用的测试工具,往往都不能对需求的变化进行跟踪和管理。通常,我们会通过邮件或者口头的方式来通知需求的变化,这就给我们的测试带来了许多新的问题。
我们可以假设一下,每天测试人员收到了一堆邮件,这些邮件中包含着无形中的需求变化,往往这些需求变化没有任何的文档,大多情况下是口头传达,所以这使得测试人员并不清楚需求具体做了什么变化,而且往往会突然发现开发出的产品已经和之前预想的产品部分样子不一样了。接下来测试人员需要确认需求变化内容,修改业务流程图,需要修改被测的功能列表,而一天以后测试人员还有很可能还需要去修改这些已有的业务流程图和被测的功能列表……于是我们产生了困惑,究竟该怎么做才能使维护的成本下降,且又保障产品质量?
分布式团队
敏捷专家推荐开发测试工程师们坐在一起工作,这样交流更加方便直接,减少沟通成本,但是,在这个全球化的时代,越来越多的团队分布在不同地理区域,不同时间区域下工作,这就给敏捷开发和敏捷测试带来了额外的沟通成本和挑战。如何能够在这个敏捷团队中通过各种方法保障沟通顺畅,是不得不面对的问题。
让我们模拟一个真实的软件测试过程来感受一下敏捷所带来的挑战吧。有一个基于 Web 的应用服务正在如火如荼的进行敏捷开发,业务需求是这个应用能在 IE7 上正常运行。测试经理王经理根据需求,制定好了一个在 IE7 上测试的测试计划,测试人员小李和小胡根据计划部署好了测试环境,准备对软件质量进行测试。但是,在测试的过程中,从市场部门过来的需求变化了,一个新的浏览器 Windows IE8 问世了,并且用户非常渴望这个软件能在新的浏览器 IE8 上运行正常,需求的变化,引发了整个测试计划的转变,测试团队必须修改测试计划去对 IE8 进行测试。这种情况下,整个测试团队面临的以下问题:
面对需求的变化(支持新的浏览器 IE8),而这个变化能够被整个测试团队感知,并且快速的对这个变化进行行动么? 测试经理小王如何根据需求的变化,迅速地将变化转换成工作任务交给测试人员小李和小胡去实施呢? 测试人员小李准备好的测试用例需要根据需求进行修改,有哪些能重用的方法可以节省他的时间么? 测试人员小胡搭建的测试环境也需要变化,需要快速部署,有加速部署减少时间的捷径么? 测试经理小王更担心的是,测试工作因为需求带来了巨大的变化,测试真的能成功,从而保障软件的质量么?
我们需要的是一个支持敏捷实践的工具,一方面它首先能够支持敏捷的实践,另一方面能够解决敏捷测试中需求的变化追踪,能够帮助测试人员和开发业务人员进行交流,并且有效能够支持重用和简化过程。这样,就能缩短整个测试的生命周期。