DevOps中的测试

本文为《DevOps软件架构师行动指南》一书测试相关章节的学习笔记。

DevOps

DevOps是一套实践方法,在保证高质量的前提下,缩短系统变更从提交到部署至生产环境的时间。

DevOps五要素

  • 敏捷
  • 持续
  • 协作
  • 系统性
  • 自动化

部署流水线

部署流水线是从开发提交代码,到代码实际部署到正式生产环境的流程。

部署流水线.jpeg
  1. 开始:开发人员把代码提交至联合版本(dev、test、master)
  2. 在本地环境执行提交前测试
  3. 测试通过后,提交代码,提交操作触发集成构建,并进行集成测试
  4. 集成测试通过,提升到准生产环境(预发布环境),再次测试
  5. 测试通过后,部署到生产环境,并进行密切监控
  6. 经过一段时间的密切监控后,部署到正式生产环境
  7. 结束
  • 持续集成:通过自动触发器进行集成,直到集成测试
  • 持续交付:使用自动触发器,直到预发布系统
  • 持续部署:直到部署到生产系统,都是自动化的

环境

不同环境用于不同的测试类型。成功完成的测试越多,对系统版本质量更有信心。

  • 提交前:开发本地环境或开发服务器,有更详细的日志记录以帮助发现缺陷
  • 构建与集成测试:持续集成服务器,有足够多的测试数据
  • 用户验收测试/预发布/性能测试:尽可能接近生产环境。数据库应包含真实生产数据的一个子集
  • 生产:正式生产环境,应有足够的资源以满足其日常需要

测试关注点

  • 测试框架
    软件以及配置的测试数据,通过在各种条件下运行它,并对行为和输出进行监控,来测试一个程序单元。测试框架会产生报表,并识别测试失败的测试用例。
  • 负面测试
    即异常测试。违背正确输入和执行顺序操作的测试。在进行异常测试时,常见期望是程序可能优雅地降级或失败。若故障不可避免,反馈有意义的错误信息,并以可控方式退出。
  • 回归测试:
    ①在程序变更后力求发现新的缺陷
    ②确保已经被修复的缺陷不再被引入

部署流水线的不同测试

在部署流水线流程中,代码提交前、构建后、预发布环境、生产环境都有测试参与。

在开发和提交前测试中的测试

在开发过程中有两种类型的测试过程。测试驱动开发和单元测试。

  • 测试驱动开发
    传统开发流程:先概要设计,再详细设计,编码完成后进行测试。
    测试驱动开发:先开发自动化测试,再编码开发功能,直到测试通过。

  • 单元测试
    在知晓系统代码的前提下,对单独类或方法进行测试。

在执行提交前,自动地运行以上测试。提交前测试通常包含一组相关的单元测试,还有几个冒烟测试。目标是在集成测试前可以发现通过单元测试但未破坏整体系统的缺陷。一旦测试通过,就可以执行代码提交操作了。

集成测试

对系统已构建的可执行部分的测试。

功能测试

对已构建提交的整体系统的功能进行逐个测试,测试是否满足需求,功能能否正常,满足用户使用需求。

接口测试

对已提交的功能对应的接口进行测试,从接口层面底层是否满足健壮性,容错性,易用性。

自动化测试

丰富自动化测试用例,将测试过的主流测试功能转化为自动化脚本,在后期的回归测试中更加容易减少人工投入,丰富测试手段。

用户验收测试/预发布/性能测试

预发布是系统部署到生产环境前的最后一步,因此预发布环境应尽可能贴近生产环境。在这个步骤中有以下测试类型:

  • 用户验收测试(UAT)
    相关的用户或独立测试人员根据测试计划和结果对系统进行测试和接收。
    可根据测试脚本测试,也可使用探索性测试。
  • 自动化验收测试
    对最重要的、需要重复执行的,且不太需要做很多维护的检查点实现自动化
  • 冒烟测试
    是自动化验收测试的一个自己,用于快速分析提交的代码是否影响到系统的某些核心功能
  • 非功能测试
    对性能、安全、容量以及可用性等方面的测试

生产环境

在系统部署到生产环境后,还会继续进行观察和测试。

早期发布

  • beta发布
    将产品有计划地发布给特定用户,让用户大量使用来发现软件存在的问题与错误,再把信息反馈给开发者修改。

  • 金丝雀发布
    若系统部署有多台服务器,先将新版本部署到其中几台服务器上,然后观察验证。确认没有异常后,后续再更新剩余的所有服务器。
    若只有一台服务器,不可以使用金丝雀发布。

  • A/B测试
    beta发布与金丝雀发布是发布策略,A/B测试关注的是发布效果。
    线上同时运行多个版本的服务,不同服务会有一些体验上的差异。相关人员通过分析各个版本的实际效果确定哪个版本执行得更好。
    例如:推荐算法、用户界面

错误检测

即使系统通过所有测试,还是有可能存在缺陷。
对于检测非功能的错误,可以对系统信息进行监控。监控包括:用户请求的响应时间、队列长度等。当监控数据与历史数据有偏差时,会触发报警并通知给相关人员。
在检测到错误后,为了对错误进行跟踪溯源,一般要求系统日志有合适的记录。
在错误诊断并修复后,会在未来发布的版本进行回归测试。

现场测试

在系统部署后,通过特殊手段干扰正在运行的系统。例如:宕服务、宕虚拟机、模拟网络变慢等。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容

  • 软件行业正在向更加快速交付转型,新的工具和技术对测试人员构成更大的挑战,适应这种快节奏有太多内容需要学习,而且常常...
    城下秋草阅读 864评论 0 0
  • 原文:https://www.tricentis.com/wp-content/作者:Wayne Ariola碎碎...
    CC先生之简书阅读 2,941评论 0 5
  • 尽管DevOps仍需要手动测试,但测试人员能做的还有很多。 DevOps需要在各个阶段进行协作,因此,使开发人员和...
    FunTester阅读 227评论 0 0
  • DevOps四大能力的建设需要实践与工具进行支撑,结合能力建设的要求,实践主要分布在持续交付和技术运营两大领域,包...
    AIOPstack阅读 2,858评论 1 12
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,536评论 28 53