本文首发于:Jenkins 中文社区html
原文连接 做者:Sushil Kumarweb
持续测试到底是什么?你又如何实现它呢?api
敏捷,DevOps 和持续交付已然存在于现今每一个技术人员的词汇当中。咱们都想要像硅谷里的巨头和初创公司同样,敏捷开发,快速发布软件,作出创新的产品。 向敏捷转型在多方面都已有总结,而且到了能被顺利实践的程度。然而,测试仍然是一个有思想困惑和实践挑战的领域。 当软件发布周期从以年、月缩短到以周、天为单位,或者更短时; 咱们该如何重塑测试实践,以保证当软件发布到生产环境时能令用户满意, 而不是掉链子?安全
鉴于大多数 DevOps 实践仍然把测试视为软件生产中最使人头疼的瓶颈,显然,这是一个常见的挑战。ide
持续测试就是答案,但持续测试到底是什么?你又如何实现它呢? 维基百科定义持续测试为「在软件交付流水线中执行自动化测试的过程,目的是为了得到关于预发布软件业务风险的即时反馈」。 可是这个定义缺乏了本质,缺乏了持续测试所示意的转变的量纲。 除了自动化是一个重要的部分之外,持续测试从根本上转变了测试, 它把线性过程当中的时间点事件嵌入到整个过程中去,做为基础贯穿于整个软件交付周期的全部活动中。工具
敏捷环境里持续测试的目标应该是「迭代内测试(in-sprint testing)」。 无论你的迭代是两周仍是四周,目标都应该是完成迭代内全部类型的测试,这样每一个迭代均可以获得一个测试完备的,准备交付的软件。 事实上不少持续交付的最佳实践都会告诉你,你不能简单的在没有持续测试的状况下去作持续交付。 若是你认为你的迭代时间不容许你去作一个综合的测试,颇有多是你对它的理解有误。性能
描述不清的要求或者有不正确的理解,均可能致使返工甚至延期。 使用像行为驱动开发(BDD), 验收测试驱动开发(ATDD)和 基于模型的测试这类技术所使用的工具,如 cucumber/gherkin 和 CA Agile Requirements Designer (ARD), 能够确保业务主管,产品经理,开发人员和测试人员充分沟通并记录需求,定义清晰的测试用例,提前编写测试脚本,以达到一个流畅的测试过程。开发工具
一些组织默认「每次运行全部的测试」来保证代码覆盖率。这不但浪费资源还延长了测试周期,并且没有真正的保证代码覆盖率。 测试那些须要测试的部分,以节省时间、金钱和资源。可视化模型可让各类路径被探索优化,以便只用少许的测试用例就能提供最大化的覆盖率。 能够借助 Rally, Jira, HP ALM, JIRA 等此类工具导入测试用例、移除重复用例、分发优化过的用例。测试
为了实现「迭代内(in-sprint)」测试,将测试前置——这样测试能够在开发周期的早期运行。开发人员本身测本身的;卓越中心提供专家,定制系统和服务。 自动化测试覆盖 UI, 功能,性能和安全。各个团队一块儿工做,一块儿以要交付给客户的业务价值为专一点。这须要对开发者友好的工具以及文化转变。优化
提供测试环境的能力对实现持续测试是相当重要的。 经过友好型(例如编码、CI/CD 集成、被开源支持的软件)开发工具按照需求提供的完整的测试环境来消除障碍和减小等待时间。 这些环境应该包括:
在不少应用发布周期,获取鲁棒性测试数据能力的缺少会形成严重延期。为了准确的测试新功能,测试数据应该尽量的跟生产环境时所应用遇到的数据相近。 若是测试数据缺少特定真实世界的特征(例如具体字段、数据定义、负面场景等),测试就很难找到许多潜在问题和应用的弱点。 理解数据模型并提取出正确的数据是一种特殊的技巧。尽管使用生产环境数据测试是最接近真实的,但数据隐私条例一般都会限制使用生产数据。 下面,咱们来看看 CA Test Data Manager 是如何复制生产数据,抹掉敏感信息的同时保持了测试所但愿的生产数据特征(接近现实,而且多行指征完整)的。 生产数据不可用时,测试数据也可使用 TDM 工具根据模版生成。
测试向右移动,使用开发周期和生产中的数据来优化测试周期、调整测试用例,以创建最佳回归套装。右移技术包括真实用户监控、金丝雀部署、A/B 测试、混沌工程等。 例如,经过测试右移,你能够肯定哪些功能被用于生产,保证回归测试覆盖可以这些功能。 一样的方法,你能够开放新功能给一小部分人(内部或外部),了解新功能可能给生产形成的影响,按需调整。 许多敏捷公司例如 Facebook 和 Netflix 都严重依赖测试右移。 Gartner(美国一家从事信息技术研究和顾问的公司)最近发布了一份测试右移的报告, 声称测试右移对 DevOps 实践来讲是「必需」的。
创建跨团队协做,根据可行性分析和反馈机制不断优化。持续交付和持续测试就像旅行。确保你的全部团队都有 KPI, 查阅那些可以提供附加优化的数据。 不要只是收集数据,那很容易办到,收集而且总结数据可以帮助你提出持续优化的确切建议。探索应用发布流程以实施建议,并做为全部团队应用交付周期的「单一事实来源」。
要了解更多关于持续测试的挑战和实践,点击这里 CT Academy Video Series.