大家好,我是阿萨。今天继续敏捷测试不是。
许多敏捷团队正努力提高自己团队的验证能力,并且正在创造方法,尽可能地将高级测试技术引入他们的工作实践。
传统开发中的测试往往要用到测试计划。然而,一个有大量记录的测试计划在敏捷开发中并不常见。相反,敏捷测试要求灵活性,需要对需求的变化做出反应。因此,需要有一个敏捷的测试策略,而不是敏捷的测试计划。
本文将给大家讲解敏捷团队在实践中应用的测试策略,同时将它们应用在敏捷软件开发的生命周期中。
敏捷测试的特点
持续测试
敏捷测试是敏捷软件开发的一个重要组成部分。在敏捷开发中,测试在开发开始前就开始了。这与传统的软件方法不同,在以前,测试是开发完成后的一个阶段。敏捷测试是与开发工作平行进行的连续测试,并提供一个连续的反馈回路。
无独立QA部门
敏捷测试的另一个特点是,测试人员不再形成一个独立的部门("QA部门 "不存在)。敏捷开发团队现在包括测试人员。在某些情况下,敏捷组织没有 "测试人员 "或 "QA工程师",而是所有团队成员都参与测试。在某些情况下,有测试专家,然而,他们在软件开发周期的每个部分与开发人员一起工作。
冲刺0阶段的敏捷测试策略
冲刺0是在第一次开发迭代之前。在冲刺0阶段,团队建立环境,创建产品Backlog,确保他们有一个发布计划,并完成项目开始所需的其他任务。
因为冲刺0发生在项目开始之前,所以没有测试需要执行。为了利用冲刺0的优势,团队应该在做其他事情之前设计一个测试策略。他们还应该执行最初的设置任务,包括安装测试工具,确定负责测试的人员,并安排资源,如可用性测试实验室。
迭代中的敏捷测试策略
迭代阶段的目的是使系统达到一个阶段,为生产前的测试做好准备。团队现在应该对需求进行优先排序,并完成其需求要求。他们还应该分析需求,创建一个解决方案来满足它们,并对软件进行编码和测试。如果需要,应该越早发布系统的编译版本,越好。
大部分的测试都是在这个阶段进行的。团队根据优先考虑的需求进行工作:在每个迭代中,他们选择最基本的需求并实现它们。
迭代中涉及两种类型的测试。
确认性测试--重点是验证系统是否符合利益相关者的意图。
探索性测试--分离出确认性团队所跳过的问题。
敏捷发布阶段
在这个阶段,系统接近于部署到生产。团队应该培训支持、运营和终端用户。团队还应该发布产品,最终确定系统,运行备份和恢复,并创建用户文档。
测试人员在这个阶段可能会进行广泛的测试,包括beta测试。他们还可以对产品进行微调和返工,处理重大缺陷。最后的测试阶段包括验收测试和完整的系统测试。团队应该在迭代中对产品进行严格的测试,这样最后的测试阶段才能顺利进行。
测试人员应该在一个尽可能接近生产的环境中进行最终的探索性测试,包括类似于生产中的服务器,并使用具有真实或密切模拟数据的数据库。这对于一个与操作系统、环境或第三方产品交互的产品来说特别重要。
让常规敏捷团队以外的人参与进来是很有帮助的。局外人的观点是很有用的,因为普通测试人员由于对产品技术方面的了解,可能会忽略用户的观点。利益相关者和在公司中担任不同职位的个人可以在这个阶段参与测试。
生产阶段
生产阶段的目的是确保系统在部署到终端用户后是有用的和有成效的。
这个阶段在不同的组织和系统中会有不同的表现。例如,打包包装的软件不需要操作支持,但可能需要一个帮助台来帮助用户。企业内部使用的系统可能需要运营人员来监控和运行它们。无论在什么情况下,生产阶段的目标是保持系统的运行,确保其稳定,并协助用户。
在生产中每天使用应用程序,再加上有针对性的测试,可以使开发人员对应用程序的顺利运行充满信心。团队可以为生产测试创建一个每日理智检查表,解决所有的核心功能。
测试人员可以在生产阶段使用用户验收测试、合成用户测试和灾难恢复测试等测试。
建立质量的衡量标准来指导敏捷测试
一种被称为质量智能平台的新类别的工具正在帮助敏捷团队了解在产品生命周期的每个阶段--冲刺0、迭代中、部署和生产--的测试工作重点。
一般测试数据可视化平台,会收集有关功能测试、验收测试和非功能测试的测试执行数据,监控代码变化,并跟踪生产中的功能使用情况。创建可视化的 "测试差距":产品中最近发生变化的区域,在生产中使用,但没有得到充分的测试会在测试平台中呈现。
测试差距帮助敏捷团队立即了解哪里需要集中测试力量。而不是过度测试,或对以前的生产故障做出反应,他们可以精确地瞄准产品中存在质量问题的高风险区域。
所以选择一款可视化的数据平台,十分有用。