文档章节

持续测试的那些事

Jenkins中文社区
 Jenkins中文社区
发布于 08/14 18:49
字数 1978
阅读 72
收藏 0

本文首发于:Jenkins 中文社区

原文链接    作者:Sushil Kumar

持续测试的那些事

持续测试究竟是什么?你又如何实现它呢?

测试自动化

敏捷,DevOps 和持续交付已然存在于现今每个技术人员的词汇当中。我们都想要像硅谷里的巨头和初创公司一样,敏捷开发,快速发布软件,做出创新的产品。 向敏捷转型在多方面都已有总结,并且到了能被顺利实践的程度。然而,测试仍然是一个有思想困惑和实践挑战的领域。 当软件发布周期从以年、月缩短到以周、天为单位,或者更短时; 我们该如何重塑测试实践,以保证当软件发布到生产环境时能令用户满意, 而不是掉链子?

鉴于大多数 DevOps 实践仍然把测试视为软件生产中最令人头疼的瓶颈,显然,这是一个常见的挑战。

开发消耗占比

持续测试就是答案,但持续测试究竟是什么?你又如何实现它呢? 维基百科定义持续测试为「在软件交付流水线中执行自动化测试的过程,目的是为了获得关于预发布软件业务风险的即时反馈」。 但是这个定义缺少了本质,缺少了持续测试所示意的转变的量纲。 除了自动化是一个重要的部分以外,持续测试从根本上转变了测试, 它把线性过程中的时间点事件嵌入到整个过程当中去,作为基础贯穿于整个软件交付周期的所有活动中。

敏捷环境里持续测试的目标应该是「迭代内测试(in-sprint testing)」。 不管你的迭代是两周还是四周,目标都应该是完成迭代内所有类型的测试,这样每个迭代都可以得到一个测试完备的,准备交付的软件。 事实上很多持续交付的最佳实践都会告诉你,你不能简单的在没有持续测试的情况下去做持续交付。 如果你认为你的迭代时间不允许你去做一个综合的测试,很有可能是你对它的理解有误

测试嵌入到软件开发周期

七个步骤实现持续测试

1. 尽早规划测试,甚至早于写代码

描述不清的要求或者有不正确的理解,都可能导致返工甚至延期。 使用像行为驱动开发(BDD), 验收测试驱动开发(ATDD)和 基于模型的测试这类技术所使用的工具,如 cucumber/gherkin 和 CA Agile Requirements Designer (ARD), 可以确保业务主管,产品经理,开发人员和测试人员充分沟通并记录需求,定义清晰的测试用例,提早编写测试脚本,以达到一个流畅的测试过程。

2. 优化测试覆盖率

一些组织默认「每次运行所有的测试」来保证代码覆盖率。这不但浪费资源还延长了测试周期,而且没有真正的保证代码覆盖率。 测试那些需要测试的部分,以节省时间、金钱和资源。可视化模型可以让各种路径被探索优化,以便只用少量的测试用例就能提供最大化的覆盖率。 可以借助 Rally, Jira, HP ALM, JIRA 等此类工具导入测试用例、移除重复用例、分发优化过的用例。

3. 测试左移

为了实现「迭代内(in-sprint)」测试,将测试前置——这样测试可以在开发周期的早期运行。开发人员自己测自己的;卓越中心提供专家,定制系统和服务。 自动化测试覆盖 UI, 功能,性能和安全。各个团队一起工作,一起以要交付给客户的业务价值为专注点。这需要对开发者友好的工具以及文化转变。

4. 提供完整的测试环境

提供测试环境的能力对实现持续测试是至关重要的。 通过友好型(例如编码、CI/CD 集成、被开源支持的软件)开发工具按照需求提供的完整的测试环境来消除障碍和减少等待时间。 这些环境应该包括:

  • 虚拟服务——给那些不可达,不可访问的,还在开发中的服务提供鲁棒的模拟。开发和测试可以根据虚拟服务模拟实际服务返回的结果持续并行工作。
  • 按照需求测试数据——帮助并保证各个团队可以使用与生产环境类似的数据来运行综合的测试。
  • 预发环境——准备上线的需求,使用后退役。

5. 获取正确的测试数据

在很多应用发布周期,获取鲁棒性测试数据能力的缺乏会造成严重延期。为了准确的测试新功能,测试数据应该尽可能的跟生产环境时所应用遇到的数据相近。 如果测试数据缺乏特定真实世界的特征(例如具体字段、数据定义、负面场景等),测试就很难找到许多潜在问题和应用的弱点。 理解数据模型并提取出正确的数据是一种特殊的技巧。尽管使用生产环境数据测试是最接近真实的,但数据隐私条例通常都会限制使用生产数据。 下面,我们来看看 CA Test Data Manager 是如何复制生产数据,抹掉敏感信息的同时保持了测试所希望的生产数据特征(接近现实,并且多行指征完整)的。 生产数据不可用时,测试数据也可以使用 TDM 工具根据模版生成。

6. 别忘了测试右移

测试向右移动,使用开发周期和生产中的数据来优化测试周期、调整测试用例,以建立最佳回归套装。右移技术包括真实用户监控、金丝雀部署、A/B 测试、混沌工程等。 例如,通过测试右移,你可以确定哪些功能被用于生产,保证回归测试覆盖能够这些功能。 同样的方法,你可以开放新功能给一小部分人(内部或外部),了解新功能可能给生产造成的影响,按需调整。 许多敏捷公司例如 Facebook 和 Netflix 都严重依赖测试右移。 Gartner(美国一家从事信息技术研究和顾问的公司)最近发布了一份测试右移的报告, 声称测试右移对 DevOps 实践来说是「必需」的。

7. 使用数据矩阵持续优化

建立跨团队协作,根据可行性分析和反馈机制不断优化。持续交付和持续测试就像旅行。确保你的所有团队都有 KPI, 查阅那些能够提供附加优化的数据。 不要只是收集数据,那很容易办到,收集并且总结数据能够帮助你提出持续优化的确切建议。探索应用发布流程以实施建议,并作为所有团队应用交付周期的「单一事实来源」。

要了解更多关于持续测试的挑战和实践,点击这里 CT Academy Video Series.

© 著作权归作者所有

Jenkins中文社区

Jenkins中文社区

粉丝 36
博文 48
码字总数 79155
作品 1
杭州
私信 提问
苹果收购初创公司Buddybuild 有望进一步简化iOS应用开发

苹果收购初创公司Buddybuild 有望进一步简化iOS应用开发 移动信息化那些事2018-01-031 阅读 动态iOS开发 苹果最近收购了总部位于加拿大温哥华的应用初创公司 Buddybuild。根据 Buddybuild 网...

移动信息化那些事
2018/01/03
0
0
什么是持续集成?该怎么做?

什么是持续集成?该怎么做? 程序师2018-01-061 阅读 持续集成业界观察 互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuous integration,简称 CI...

程序师
2018/01/06
0
0
多些时间能少写些代码(转自酷壳 – CoolShell.cn)

我在我的微博上说过这样一段话,我想在这里把我的这个观点阐述地更完整一些。 @左耳朵耗子:聪明的程序员使用50%-70%的时间用来思考,尝试和权衡各种设计和实现,而用30% – 50%的时间是在忙...

SHUIMOMO
2013/11/05
0
0
《持续集成》读书笔记之一

为什么要读这本书? 现在做任何事情心里都要先想着问个为什么,明确原因和目标。持续集成我们已经推进了好几年了,为什么现在还要读《持续集成》这本书?是因为教练对我们做的持续集成做了评...

bullboying
2017/11/26
0
0
世界观10.1.4推背图第40象 山風蠱

巽下艮上 蠱 蠱卦是家道中落,子承父业,整饬家业的故事。 蠱,元亨,利涉大川。先甲三日,後甲三日。 蠱卦是吉卦。渡水有利。当然渡海峡也不错。 初六,幹父之蠱,有子,考无咎,厲終吉。 ...

好香帅
06/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
401
10
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
4
0
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
3
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
6
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部