最近,我需要为自己工作的项目制定一份完整的测试策略。在我刚来到这个项目组时,我发现开发人员试图使用一个不完整的瀑布生命周期模型。这就意味着开发过程要具备专门的团队基础。刚好,这个项目组有大约12个开发人员,正处在利用并行开发工作来研究更多迭代方法的过程中。有一个测试新手,工作非常努力,为项目提供仅有的测试。而我为了帮助他们测试,也加入了这个项目。与此同时,项目组雇用了新的项目经理和架构师,非常主动地承诺会在剩余的一年时间内结束项目。这种沉闷的情景是不是听起来很熟悉?我猜它会是这样,因为这不是我第一次碰到这种情况。
这里,首要的问题是制定一份测试策略。什么是测试策略?这要看是谁在问你。这篇文章里,我们会把测试策略作为所有测试阶段、测试技术和项目所使用的测试工具的目标。最重要的一点,测试策略应该使测试过程中的交流变得更为容易,而它会影响到整个项目组。
通过制定测试策略来指导我们的工作,下面是项目组所碰到过的一些具体问题,我们需要寻找一些解决他们的方法:
· 缺乏可重复性测试—-项目缺少回归测试。
· 缺乏可见性测试—-没有收集衡量结果的指标,唯一的标准就是发布代码的期限。
· 反作用的构建过程—-他们只对项目的紧急程度构建响应,没有预测其他构建人的需要。
· 没有对测试环境或测试数据进行控制。
· 代码发布后,没有进行单元或集成测试。
· 没有简单的自动化过程,没有测试过程。
下面的故事会告诉我们如何定义并实施一个测试策略。
让我们开始吧
在制定测试策略时,你需要和项目中的关键人物一起,将关注点放在你们所面对的问题上,制定一个长期的解决方案,可以在整个项目周期内实施。除了上面列出的那些问题之外,我们的项目解决方案还要满足测试策略的基本需求:在开发周期内,帮助项目组尽可能早的找到最严重的bugs。想尽早地发现最严重的缺陷,需要把项目的测试部分和开发部分联合在一起,包括不同的测试阶段、测试类型、项目环境,以及如何在环境、角色、职责之间升级代码,还有普遍使用的工具。
这个看起来是不是有点复杂?实际上,它比你想象的简单。
保持简单:写字板上的计划
测试策略应该尽量的简单,这样我们可以将其展现在白色的写字板上,同时,一个简短的会议,你应该可以把它的含义解释给项目组内的任何一个人。在你花时间把测试策略的细节写入文档之前,清晰地定义简化的概念是简单性的保证。把想法和内容写到写字板上的过程是一件非常有参与性的事情,它可以帮助人们共享意见和观点,这时候,写字板往往是最好的媒介。人们使用写字板时,会画一些漂亮的图和流程图,而这些图形符号每个人都能理解。
制定测试策略时,你需要把项目组的其他人包含进来。一般有项目经理、开发主管、架构师、DBA(数据库管理员),以及其他一些关键人物,他们具有一些可利用的技术资源,所以他们可能具有更好的想法。此外,你的测试策略应该覆盖整个项目的生命周期,让每个人都能按照它的方式工作。这意味着你需要这些技术人员投入其中,以保证它能够成功地实施。至少,他们可以给你更多有关测试类型的现实想法(单元测试、代码复查、执行期分析等等)。我通常试着寻找那些最大程度地包含在项目中的人,和他们一起开会讨论。因为,他们的洞察力和建议往往是非常宝贵的。