如何操纵 DevOps 挑高区块链项主意工程质量与测试效果

正文:

溪塔团队做的体系测试是一栽端对端级别的、在仿真环境中柔件运走效果的暗盒测试,为了挑高测试做事效果,吾们操纵了 CI 流水线来管理多栽测试策略。测试流水线什么是 CI/CD 流水线(Pipeline)?

柔件开发不光是把代码编写出来就完事,还必要经过测试保证完善性、把测试后的柔件安放到服务器上,还要竖立监控保障服务运走平常,并能搜集逆馈给产品、开发团队对柔件功能、质量进走不息的改善,才是一个完善可用的服务开发到上线的过程,整个过程如上图所示,一环衔接一环。

​同样的,这个监控工具的本身的开发流程也是相通按照同样的 DevOps 实践,同样也是开源的:https://github.com/cryptape/cita-monitor

溪塔团队操纵 Story Point 来评估每个义务的完善时间,操纵燃尽图逆馈义务完善进度,以便可调控每个 Sprint 的节奏和进度,如下图,是溪塔团队一个子产品开发过程的各个 Sprint 里的燃尽图:

实战经验:优化测试框架

进走 CI/CD 流水线竖立之前,先思考 3 个题目:

为了方便 CITA 服务的运维,溪塔的运维团队开发了 CITA 的监控服务,可用于监控节点中 CITA 的服务运走情况,包括采集区块链数据、CITA 进程的存活监控、运走环境监控、故障主动告警告诉,挑供给开发、运维人员友益的可视化的面板,如下图:

设计益各栽流水线的作用、执走策略和运走步骤细节后,就能够在 CI 工具上进走相答的竖立,不要一面想一面改 CI 配置,稀奇是对于复杂的流水线答该设计益再做竖立,云云一来流水线本身也有了文档留存,方便其他运维同事协调,开发和测试也能隐晦做事流程。

多所周知做柔件开发必要有 PRD(功能需求文档),同样的流水线竖立也必要有设计文档。在竖立详细的 CI/CD 流水线前,要做下贱水线设计,如下图是溪塔团队其中 2 条流水线的设计文档:

流水线设计关键要素有 2 点:

区块链服务浅易能够望作是一栽分布式的账本同步体系。为了简化行使开发者的操纵,溪塔团队开发了与之配套的各栽开发、调试工具、组件,例如:

溪塔团队操纵迅速开发中的 Scrum 框架管理团队现在标和进度。迅速开发的现在标是经过迭代开发的手段交付可做事的柔件。溪塔团队会将一个大的版本行为一个Milestone(里程碑),定义益必须要完善的总现在标和时间点,然后切分成几个较短做事周期的 Sprint(迭代),每个 Sprint 有本身要完善的阶段现在标。

协调 GitHub Flow 约定主动化触发规则

溪塔团队认为企业协调的高效秘诀之一是:Don't ask, look by your self!  (不必问,本身望)能够主动感知的新闻才有效果,经过咨询才能得知是矮效的做事手段。

重用测试对象

实战经验:优化流水线

有人认为要实践 DevOps 请求团队成员都是全栈工程师,而溪塔团队认为专科分工才能深入和精通,所以能够将团队分为区块链开发、测试开发、运维开发团队,仔细到每个岗位都是有“开发“字眼,具备有编程能力的团队才是能有效实践 DevOps 的根本。

在 DevOps 模式下开发、测试、运维人员的协调重点为:

为了挑高柔件的研发效果、保证柔件质量、高效服务运维,溪塔团队在开发管理上实践迅速开发、操纵 DevOps 进走主动化运维、执走不息的主动化测试。在介绍怎么做之前,先说下溪塔团队做了什么,云云能比较益理解晓畅团队为什么要云云做。

实践 DevOps

溪塔科技团队在 2016 年开发了一款区块链柔件 CITA,并在 2017 年进走了项现在开源:https://github.com/cryptape/cita

以下就是溪塔团队操纵的测试框架(操纵 TestNG 行为基础框架)得到的报告:

背景介绍

1. 开发区块链柔件 - 柔件代码 用 CI 进走主动化代码质检、测试、构建、发布2. 测试区块链柔件 - 测试代码 用 CI 进走冒烟、回归、性能、安详性测试3. 运维区块链服务 - 监控服务 用 CI 进走主动监控、被动告警

实战经验分享

相符并 develop 跑回归,回归过了相符并到 master

以上便是溪塔团队对区块链柔件的工程质量限制的一些经验分享,请仔细,每个企业都有各自的上风、短板或历史包袱, pt电子游戏平台经验不及复制只能参考, pt电子游戏奖池正当本身的才是最益的,上下分捕鱼电玩城谢谢。

分享大纲 背景介绍

详细怎么做

开发、测试、运维均请求有编程能力 开发、测试、监控服务的代码, 真人电子游艺平台均按照相通的开发流程、操纵CI工具 开发流程

主动化运维

不息主动化测试挑高了开发、运维效果, pt电子游戏平台还要保障柔件的质量,这个是溪塔测试团队的做事重点。下图是柔件测试中著名的测试金字塔,测试金字塔表明了一栽两难的境地:越是表层的测试,就会消耗越多的精力、时间和成本。

主动化测试才能让 QA 的价值最大化; 主动化必要 CI 工具来做管理和执走。

如何设计一条相符理的流水线? 如何设计测试流水线? 为什么要竖立多条流水线?

设计正当的Workflow:做事流程,如:stage 1 -> stage 2 -> stage 3 设计Workflow 中的 Stage Job:阶段做事,如:unit-test, build, integration-test, code-audit, staging-deploy, production-deploy

Up/Down stream:上下游的Stage Job Trigger: 触发条件 Input/Output:输入参数;输出构件产物、输出参数 Steps:执走步骤 Notification:效果告诉;末了的 stage 都要有清晰的告诉对象

构建测试对象:获取柔件代码,主动编译生成分歧算法版本的二进制文件bin 生成测试运走环节:把 bin 文件放入可运走的环境,构建 Docker Image 运走测试用例:对分歧 bin 版本运走主动化测试用例;并走执走撙节时间 生成测试报告:主动汇总各个版本的测试效果,主动生成一份包含测试对象、测试环境、测试效果的报告;并主动把构建产物存档,方便对表发布 多栽流水线策略

体系测试流水线: 当开发人员在开发的 develop 分支有相符并时执走全量测试用例集的回归测试,用于保障开发主分支的代码质量。 冒烟测试流水线: 用于做测试用例的添量,用于保障测试代码的代码质量;当测试人员挑交测试代码的 feature 分支时执走;只运走 P1 级别的测试用例集,执走速度快,添快代码审阅、相符并流程;复用由发版流水线生成的测试对象。 回归测试流水线: 用于保障测试代码的代码质量;当测试人员相符并测试代码的 develop 分支时执走;运走全量的测试用例集,真钱赌场21点执走速度慢,但避免引入有损坏性的代码;同样是复用由发版流水线生成的测试对象。

性能测试流水线: 除了保障柔件的可用性,溪塔团队专门关注柔件的运走效果,所以团队竖立了性能测试流水线。性能测试关注的效果是一些性能指标,如逆映服务处理能力的 TPS、耽延和相答时间等。但性能测试的运走代价很高,必要独占主机资源并长时间运走。所以溪塔团队竖立成每天夜晚早晨 2 点半主动运走性能测试流水线,运走完毕会生成图形化的报告发送邮件告诉开发团队。云云开发团队每天都能晓畅到主分支的性能转折情况,当展现有庞大性能转折时能够及早进走优化修复,而不是等到发版测试阶段才晓畅效果。 安详性测试流水线: 溪塔团队还关注柔件的安详性,柔件的安详性是指在服务有大量乞求压力时各栽关键功能还能平常做事。所以溪塔团队竖立了安详性测试流水线,在发版阶段执走,能够按必要选择压测的参数。 可用性测试流水线: 开发人员做了一些庞大改动,在相符并到主分支前,想晓畅是否有其他副作用,所以运维挑供了可用性测试流水线,开发本身选择必要测试的分支执走即可获得该分支回归测试的效果。 性能改进测试流水线: 开发人员做了一些性能有关的改动,想晓畅集体上的性能转折,所以运维挑供了性能改进测试流水线,开发本身选择必要测试的分支执走即可获得该分支回归测试的效果。 在 DevOps 模式的协调重点

运维的做事现在标是操纵主动化运术为开发、测试挑供便利流程、工具,削减重复做事 测试的做事现在标是操纵主动化运术挑高测试效果、保障开发收获质量 开发享福主动化的便利,专一做开发,挑高柔件质量

流水线优化技巧 流水线互相制约保障质量 体系测试流水线保障开发代码质量 回归测试流水线保障测试代码质量 存档构建工件 相符并测试报告 测试环境操纵 Docker Container 阻隔 每条测试用例阻隔运走 测试框架优化技巧 操纵环境变量及 Docker Image Tag 获取测试对象 操纵 Docker Image 获得同一的测试环境 出错主动重试用例 测试用例并走执走 管理输出日志 输出直不悦目的测试报告 什么样的测试报告才是益的报告?

溪塔的测试团队的做事重点正是最耗时间、资源的体系测试的主动化。这并不是说开发团队就不必管测试了,开发团队主要编写单元测试、集成测试等的白盒测试。

冒烟、回归操纵已构建的测试对象

feature 分支跑冒烟,冒烟过了相符并到 develop

如何设计测试流水线

而一个益的测试框架答该能协助测试人员主动生成云云一份测试报告,挑高测试人员的做事效果和实在性。

服务监控

DevOps 流程 - 需求、开发、测试、运维、监控一体化

如何优化流水线和测试框架,以下是吾们实践的一些技巧和收获:

CITA 内核与各组件的有关图:

这些工具都是开源的:https://www.citahub.com/#componentArea

每个 Stage Job 也有 5 个设计关键要素:

发版测试流水线分为 4 个阶段:

运维操纵 ELK 服务进走日志搜集、数据分析,如下图,溪塔团队对测试链各个节点上服务的日志搜集和分析,展现柔件故障时方便运维、开发人员晓畅因为。

操纵 CI/CD 流水线 进走主动化构建、测试、发布、安放:

为什么要主动化测试?

对云云的团队的请求:

如上图所示,DevOps 不光是运维团队的事情,而是开发、运维、测试各栽岗位人员一体化实施的一个过程。溪塔团队请求做到流程规范化,云云各个职能成员能互相晓畅对方的做事输出预期,才能高效协调。流程规范化后,才能操纵工具进走主动化来挑高做事效果和削减人造产生的故障。让各环节的协调像是流水线般清亮可感知、可预期。

1. 测试对象1. 柔件名称2. 柔件版本3. 源码地址4. 源码commit id5. bin文件输出的版本新闻2. 测试环境1. 测试代码的commit id3. 测试用例4. 测试效果

其他测试流水线

如下图所示,Jenkins 是溪塔团队操纵的 CI 工具之一,一条 CI/CD Pipeline 像是一节节的管道,代码挑交后会触发 CI 的运走策略,执走主动化的构建、测试从而实现不息集成或不息安放流程,分歧管道环节有各自的输入、输出,任何一个环节出题目都壅塞影响到整个管道的做事。

区块链柔件是一栽多实例运走的体系,只保障了单元测试、集成测试的效果是远不及够保障体系最后是可用、效果是可信的,而区块链又是一个用计算机柔件解决「信任」的工具,柔件最先必须是可信的,产生的数据才能让人信任,所以溪塔团队对测试做事投入大量的精力来保障柔件的质量。

望板是一栽图形化的展现工具,由于人类先天对视觉化的新闻更容易理解,经过它能够很直不悦目的逆答每个义务的状态、同时也是一栽做事量的直不悦目表现,让开发组中每个成员都能够清亮晓畅本身、同时晓畅到其他人的做事挺进。

开发人员的代码开发完善会进走代码审阅、静态代码扫描检查代码规范和代码坦然检查、运走主动化测试;按照分歧的分支相符并策略进走分歧环节的主动化安放,如相符并到 develop 分支会触发 staging 环境的安放,安放成功后主动告诉测试人员进走验收测试;相符并到 master 分支会触发 production 环境的安放,安放成功后主动发送上线告诉让运营人员进幸运营操纵。操纵主动化的 CI/CD 工具和流程,能够把功能开发到上线时间,缩幼到开发人员挑交代码的末了一刻,并且在 CI 服务上有记录,每幼我都能晓畅是什么人、在什么时候、安放了什么改动、到哪个环节,挑高了运维效果也削减了人造操作过程的人造事故能够性。

异国主动化则异国效果升迁和质量不息保障,而主动化工具的维护自然也是有代价的,这个正就是实践 DevOps 的团队真实要做的做事。

操纵 GitHub Flow 进走代码管理, 本地创建 feature 分支 -> 发PR -> 代码审阅 / CI 检查 -> 相符并 master 分支:

由于溪塔团队认为:

迅速开发与 DevOps - 开发和测试、运维答该如何协调

在详细的义务管理上溪塔团队操纵 Kanban(望板)工具来跟踪每个成员的义务状态,如下图:

介绍 CI/CD 流水线

发版流水线无疑是溪塔团队平时开发中最主要的一栽流水线,为了能让开发人员尽早发当代码质量题目,团队还竖立各栽策略的测试流水线,例如用于保障开发主分支的体系测试流水线、用于保障测试代码质量的冒烟、回顾测试流水线;用于保障柔件性能的性能测试流水线等。

发版测试构建测试对象

测试对象放入Docker Image 做版本管理,本地测试和CI上操纵相通测试对象

给溪塔团队设定3个现在标:

CITA 是溪塔团队从头开起自立研发的一个高性能区块链内核,具有微服架构、程度扩展、组件可插拔、高性能这些特质。

如何实践 DevOps

测试做事的最后表现效果就是测试报告,那什么样的测试报告才是益的报告?溪塔团队认为一份清亮实在的测试报告总结内容答该包含:

如下图,是溪塔团队竖立的发版测试流水线:

本文分享介绍了溪塔团队如何行使 DevOps 技术体系让开发和测试、运维进走高效协调,如何操纵 CI/CD 进走区块链柔件主动化测试、柔件发布;设计 CI/CD 流水线时必要仔细哪些题目;区块链柔件主动化测试有哪些难点;如何挑高主动化测试运走效果;什么样的测试报告才是益的报告;测试框架优化实战经验分享。

溪塔团队对测试框架不息改良,使得主动生成测试报告中能输出吾们关注的测试对象版本、测试环境、测试代码版本等新闻,收到测试报告告诉时,每幼我都在经过报告能够清亮并实在晓畅测试的是什么、是什么效果、怎么测试的。

,,
posted @ 19-08-23 01:07  作者:admin  阅读量:

powered by 手机电玩城捕鱼 @2014

Powered by 手机电玩城捕鱼 @2018 RSS地图 html地图