1.devOps
1.介绍
1.1.什么是devops
- DevOps 的理念就是打破研发与运维的屏障,让研发(Development)和运维(Operations)一体化,让团队从业务需求出发,向着同一个目标前进。
- 字面意思:是"开发运维一体化",让开发人员通过工具完成部分运维工作。
- 深层思想:是一种软件研发管理的思想,方法论,他追求的是一种没有隔阂的理想的研发协作的状态,涉及到的角色有开发、测试、产品、项目管理、运维等等。 所以我们认为,为了帮助研发团队在保持质量的前提下提高交付效率的方法和方法论都隶属于 DevOps 的范畴。
大部分公司对DevOps的定义是非常狭隘的:降低公司运营成本。
当前市场已经成熟,并且补充了安全、业务、AI相关的领域进去,出现SecDevOps,BizDevOps,AiOps等等,其实目的都是一样的。
1.2.原则
Google 提出的 5 个 DevOps 原则
- 精简组织架构;
- 愿意承担一部分试错带来的损失;
- 分阶段地一小步一小步地进行转型;
- 最大化地利用工具和自动化流程;
- 对所有的过程和结果进行记录和分析。
所以 DevOps 不是简单的开发软件化,而是企业的学习能力不断提升的结果,将企业改造成敏捷应对的学习型组织,运用新的工具, 优化组织架构和流程,不断地进行自我革命和创新的方式。工具是辅助,而非基础。
1.3.关键词
- CI:持续集成,强调开发人员提交代码后,立刻自动进行构建、(单元)测试、代码扫描等操作,目的是尽早发现代码中的质量问题。
- CD:持续部署,将集成好的软件包,安装设计好的步骤进行部署
- 流水线:通过整合多种工具非方式,实现可定制化的CI&CD。
总结:CI&CD是devops中的一重要的一部分。CI&CD 不等于 devops。而流水线只是个工具,是CI&CD的实现的方案。
1.4.生命周期
行业共识,DevOps生命周期包括:2个阶段8个环节,产品形成闭环。
- dev: 开发阶段
- plan: 计划环节,包括需求收集、问题反馈等
- code: 开发环节。
- build:编译环节。CI的一部分
- test: 编译环节。CI的一部分
- ops: 运维阶段
- release: 发布环节。CD的一部分,将编译后的软件发布到制品库
- deploy: 部署环节。CD的一部分,从制品库获得软件进行部署
- opearate:操作环节。线上运行
- monitor: 监控环境。线上监控
而实际中,根据参与人员职责的不同也可以划分下面四个步骤:
- 需求:非技术步骤,敏捷开发、瀑布开发的方式管理项目进度。
- 开发:开发人员codeing的步骤
- CI&CD:自动化完成
- 运行&监控:自动化完成
下面我们按照这4个步骤说明devops

2.dev:开发阶段
2.1.plan:计划环节
很多公司的管理层会比较关注需求的管理
- 需求分析&设计阶段
- Axure RP:作为高保真原型交互设计工具,能制作出接近真实产品交互效果的原型,让需求更具象化。
- Figma:用于界面设计原型制作,可快速构建出直观的界面原型,助力团队和产品方更好地沟通需求。
- 需求流程管理
- Jira:作为敏捷项目管理需求跟踪工具,能高效管理项目需求,让团队清晰了解需求的进度与状态。
- 禅道:第一款国产的开源项目管理软件,有项目和产品两种需求管理机制。https://gitee.com/wwccss/zentaopms
- tapd:腾讯开发的敏捷协作平台。https://www.tapd.cn/
- Leangoo;可视化实时项目协作平台。https://www.leangoo.com/
- DooTask:开源在线项目任务管理工具,提供各类文档协作工具、在线思维导图、在线流程图、项目管理、任务分发、即时IM,文件管理等工具。 https://github.com/kuaifan/dootask
- openproject。完全开源,提供任务跟踪、甘特图、看板、时间记录、文档协作、会议管理等全栈功能,支持自托管(On-Premise)或使用官方 SaaS 服务。https://github.com/opf/openproject
- 技术设计
- Draw.io:免费在线图表绘制工具,可轻松绘制系统架构图、流程图等,直观展示系统设计思路。
- PlantUML:代码化UML图表工具,通过代码就能生成各类UML图,适合习惯用代码表达设计的开发者。
- MySQL Workbench:数据库设计建模工具,助力开发者进行数据库的设计与建模,保障数据存储的合理性。
- PowerDesginer:老牌模型设计工具。
- Swagger:API文档设计工具,能规范地设计API文档,方便前后端及其他相关人员了解接口信息。
2.2.code:开发环节
包括:code 环节。这个步骤内容的工作全部依赖人员操作,其中包括 代码托管、开发工具、文档管理、代码检查工具等
这个环境的重要工具
- 统一团队的认知,这就是很多大厂入职后进行技术培训的目的之一
- 统一工具
- 制定流程规范(卡流程、依赖工具)
- 定期Code Review
2.2.1.代码托管
现在已经是Git的天下了,除了一些远古旧项目在使用SVN外,SVN基本退出主流市场了,以下是主流的代码托管工具
- 线上平台,主要是个人和开源组织使用最多,公司不推进直接使用
- GitHub:全球最大同性交友平台https://github.com/
- Gitee:国内最大代码托管平台:https://gitee.com/
- opensource:https://opensource.google.com/
- 私有化部署
- Gitlab:包括 官方SaaS服务,私有化部署极狐服务、社区开源版,是目前私有化部署最多的
- gitea。更加轻量的开源代码管理平台https://about.gitea.com/
- 云服务商提供的代码托管平台。使用他们的云产品后,可以免费使用大部分功能。
Git项目的开发管理模型有以下两种:
- 分支开发。针对master创建特性分支,完成后再marge request到master
- 主干开发。将master项目fork到个人的项目中,完成后再marge request到原项目的master
2.2.2.开发工具
各种语言都有自己的开发工具:
- java: eclipse、IntelliJ IDEA等
- python: IDLE、PyCharm
- golang: GoLand等
-
前端: Visual Studio Code
- 开发工具几乎被JetBrains占据了,提供了整个DevOps流程的各种工具。常用的开发工具也提供了社区版和专业版,社区版通过插件也可以达到专业版的效果
- Visual Studio Code:本质上是代码编辑器,通过安装插件,开发任意一种语言的项目。但是目前主要是前端项目使用为主。
当前使用对开发工具增加部分角色,比如
- 通过插件实现本地代码与需求的管理,方面项目管理
- 开发阶段代码分析,用于代码质量把控
2.2.3.文档管理
技术文档非常重要,不是简单的Word文档,需要支持代码预览、思维导图、注释评论、权限控制等,通常使用wiki保存技术文档
- Confluence 是一个wiki管理、编辑软件,收费的。不过好用,可以小范围的使用破解版,不要对外声张。
- xwiki:是一个由 Java 编写的基于 LGPL 协议发布的开源 wiki 和应用平台。操作与样式与Confluence非常相似,可以用来代替Confluence。 没有Confluence的空间概念,所有的文章都会堆积到一起,介意的人可以部署多个服务分别使用。
- wiki.js: 是一个基于 Node.js 的现代而强大的 wiki 应用程序,使用 Wiki.js 漂亮而直观的界面,让编写 Wiki 文档成为一种乐趣!
- VuePress:Vue 驱动的静态网站生成器,可以将markdown文档转为页面文档,当前国内非常多的项目用他编写技术文档。比较好用
2.2.4.接口文档
虽然技术文档可以写接口文档,但仅仅能够提供信息的作用。一个良好的技术文档需要有以下的功能
- 接口描述与定义。接口基本信息,请求、响应、异常说明、实例等
- 测试功能,用于联调测试等
- 权限管理与访问控制
- 更新与通知机制
- 文档导出与分享
以下是常用的接口文档:
- swagger。嵌入式,功能非常简单
- knife4j。swagger的增强版,国产界面,操作友好,能够聚合多个系统的文档,有权限功能
- YApi。开源的可视化接口管理平台,非常好用。官网https://yapi.ylzpay.com/
- SpringDoc。用于解决swagger的配置繁琐等问题。也是通过注解的方式简化API文档的编写。https://mp.weixin.qq.com/s/auS6DgsE26s7yaPaPzFuDA
- postman、apiFox、postcat等:具备接口、测试、文档、协同一站式工具,主要商业使用协议,会涉及到费用
2.2.5.本地代码检测
- PMD:是一个开源静态源代码分析器,它报告在应用程序代码中发现的问题。PMD包含内置规则集,并支持编写自定义规则的功能。
- P3C:阿里巴巴Java编码指南pmd实现和IDE插件
- CheckStyle:自动化代码规范检查、提高代码可读性和可维护性、统一代码风格,降低开发难度,提高开发效率。
- Eslint:是JavaScript检查工具,与 CheckStyle 定位相同。
CheckStyle和PMD都是静态代码分析工具,但它们的侧重点和检查规则有所不同。
- CheckStyle侧重于编码的语法风格,如缩进、命名规则等,
- PMD侧重于安全编码规则,如避免声明同名变量等
2.2.6.code review
通常我们直接使用代码托管平台,review merge request过来的代码。
2.3.build:编译环节
编译时CI阶段最重要的一环,CI是软件个人研发部分向整体部分组合和交付,以便验证个人研发工作。
- 持续集成是一种软件开发实践,团队成员频繁将他们的工作成果集成在一起(通常每人每天至少提交一次,这样每天就会有多次集成);
- 每次提交后,自动触发运行一次包含自动化验证集的构建任务,以便尽早发现集成问题。
- 持续集成是一种质量反馈机制,其目的是"尽早发现代码中的质量问题"。
2.3.1.编译工具
- maven:java项目主流项目依赖管理和编译工具
- gradle:java项目主流项目依赖管理和编译工具,主要侧重与安卓
- ant: 旧时代的产物,被maven代替了
- mvn: 前段项目nodejs提供的依赖管理和编译工具
2.3.2.代码质量
- SonarQube 是当前主流的开源代码质量扫描工具,支持自定义扫描规则,支持多种语言进行扫描
- CodeDog: https://github.com/Tencent/CodeAnalysis
- 腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台, 其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
- Gerrit:Google开源代码审查工具,提供了严谨的代码审查流程,助力团队把控代码质量。
商业的很多:奇安信代码卫士、华为的CodeCheck等
2.3.3.安全扫描
需要扫描的内容比较多,所以并非每次CI流程都会进行该步骤,可以设置为定期检查。 主要包括:开源漏洞检查、安全漏洞检查、开源协议检查、web漏洞检查、容器镜像检测等。
- dependency-check,可以分析项目的安全漏洞。通过同步漏洞数据库到本地进行对比。
- OWASP ZAP:Web应用安全扫描器,用于检测Web应用的安全漏洞,保障Web应用的安全性。
- trivy。支持开源漏洞检查、安全漏洞检查、容器镜像检测等的检测。
2.3.4.代码混淆
2.3.5.代码加固
2.4.test:编译环节
包括单元测试、集成测试、UI测试。接口自动化测试算是一种特殊的集成测试
- 单元测试:Junit、Mockito、PowerMock
- 性能测试:JMeter、ContiPerf、JMH
- 单元覆盖率工具:JaCoCo
- Selenium:Web应用自动化测试工具,能模拟用户在Web应用上的操作,进行自动化测试,提高测试效率。
3.ops:运维阶段
包括 release、deploy 两个环节。简单说就是,如何保存软件,如何部署软件
部署是把集成好的软件包,按照预先设计的方案将其安装到计算节点上,并且保证系统可以正常启动。
持续部署是指能够自动化、多批次、可控地实现软件的部署,控制故障的影响范围或方便轻松解决故障问题。要做的事情如下
- 软件包版本管理
- 包依赖管理
- 部署生产环境
- 用户验收测试
- 配置管理
- 容器管理
- 特性开关
3.1.release:发布环节
我们编译的成果,可以是jar、war、exe、docker image等。
- Nexus:jar依赖管理工具,支持maven、gradle等。
- harbor: docker image管理平台。
- Jenkins:开源自动化服务,拥有数百个插件,可以实现软件项目的自动构建、部署和测试。本质是无agent的shell命令的下发。
3.2.deploy:部署环节
本质就是自动化运维,根据部署策略,将软件部署上去。DevOps/运维工具
- Kubernetes:用来协调和编排容器,可以自动部署、维护和扩展生产中的容器群,而不需要手动发布微服务。
- Docker:用于构建、运行一个轻量级的容器的应用程序。k8s核心引擎。
-
Istio:以 服务网格(service mesh) 的方式,确保服务中一致地应用安全、加密、可观察的等网络策略
- Ansible:是关于自动化的工具,可以用来实现云配置、网络、部署、配置管理和其他任务的自动化
- Chef:是关于自动化的工具,使用Ruby来自动配置服务器,在创建和配置大量的机器时,这可能非常有用。
-
Terraform:是关于自动化的工具,可用于启动构建、版本管理和使用配置文件的进一步自动化
- Ansible
- ansible 简介
- 提供一种最简单的方式用于发布、管理和编排计算机系统的工具。Ansible 是一个模型驱动的配置管理器,支持多节点发布、远程任务执行。默认使用 SSH 进行远程连接。无需在被管理节点上安装附加软件,可使用各种编程语言进行扩展。
- Ansible 极简教程
- OMS
- 是一款轻量、全平台的开源运维管理系统(工具),目前主要的功能有 Webssh、Webvnc、隧道、定时任务、文件管理的基础功能以及批量分发命令、批量分发文件、定制脚本和任务的扩展功能
- 源码:https://github.com/ssbeatty/oms
- 文档:https://wang918562230.gitbook.io/ssbeattyoms-wen-dang/
- ChengYing
- 一站式全自动化全生命周期运维管家
- 源码:https://gitee.com/dtstack_dev_0/chengying
- Know Streaming
- 是滴滴开源的一站式 Apache Kafka 集群指标监控与运维管控平台
- 源码:https://github.com/didi/KnowStreaming/
- Dolphins-DevOPS
- 元豚科技-DevOPS-K8S服务自动化部署平台-云上业务搭建
- 源码:https://gitee.com/mirrors/Dolphins-DevOPS
- MegaIDE
- MegaIDE是一款基于Kubernetes的云IDE管理系统
- 源码https://gitee.com/mega-lab/mega-ide
3.3.发布策略
3.4.opearate:操作环节
就是正常运行阶段
3.5.monitor:监控环境
日志,作为监控的一种数据源
监控,分为三类,
- 基础指标监控,比如cpu,内存,磁盘,io,tcp,jvm等
- 日志的分析监控,比如使用kina汇总日志结果
- 链路追踪,zipkin追踪
常见的开源工具包括:
- Prometheus:通过收集HTTP端点来收集时间序列指标,并生成一个与这些数据交互的系统,提供深度查询、可视化、存储和其他功能。
- Zabbix:是一个为应用服务,网络服务和硬件监控提供的解决方案。Zabbix 将收集的数据存储在关系数据库中,如 MySQL,PostgreSQL 等。Zabbix 允许你监控简单的服务,如 HTTP 服务。 Zabbix agent 端可以安装在 Windows 和 类 Unix 服务器上,用来检视系统参数,如 CPU 负载,内存和磁盘利用率等。 另外,agent 可用于监视标准服务和自定义应用程序。Zabbix 也支持通过 SNMP、SSH 等方式,无需在要监视的服务器上安装代理。
- ELK:是由Elastic维护的三个开源项目Elasticsearch、Logstash和Kibana组合而成,开发人员可以从任何来源接收和记录数据,并创建有用的可视化。
3.6.运营
产品交付后,进行持续的运营工作,提升产品价值。
- Google Analytics:网站流量数据分析工具,可对网站流量进行分析,为运营决策提供数据依据。
- 神策数据:用户行为分析平台,能分析用户在产品中的行为,助力运营人员优化产品运营策略。
- 问卷星:在线问卷调研工具,可用于收集用户反馈等信息,为产品优化提供参考。
- App Store Connect:iOS应用发布管理工具,用于管理iOS应用在App Store的发布等事宜。
4.最佳实践
4.1.CI&CD的评估方法
研发效能认证(EPC):https://cloud.tencent.com/developer/article/1650008
- L1 合入主干触发流水线
- L2 构建成功率 超85% 流水线耗时小于20min
- L3 生产代码经过流水线自动化验证,对接发布系统,完成发布
- L4/5 成功率、耗时更高要求
4.2.流水线的设计原则与要素
- 一次构建多次使用,当某个流水线的一次运行实例构建出制品,如果需要,它就应该直接被用于该流水线后续阶段的构建过程
- 与业务逻辑松耦合,部署流水线工具应该与具体的部署构建业务分离
- 并行化原则,在流水线设计中,我们应该尽可能考虑并行化
- 快速反馈优先,在资源不足的情况下,部署流水线应该让那些提供快速反馈的任务尽早执行
- 重要反馈优先,对于反馈机制,不能只因为其执行速度慢,就把它放在后面执行
4.3.落地CI/CD的推荐做法
- 研发侧与业务侧就流程规范与目标达成一致认知
- 保持相对固定的研发时间投入
- 通过review交付结果数据来持续优化
4.4.技术选择与流程
大部分的团队:都是小团队的功能迭代,无论的是大厂还是小公司。基本流程可以参考如下:
- 禅道负责需求和问题收集
- 开发人员code【使用Gitlab,采用分支开发:feature、test、dev、master】
- 开发完毕后推送至test,自动触发流水线
- 流水线使用Jenkins构建。
- test分支使用maven/gradle编译、自动化测试、打包
- jar推送到nexus仓库用于其他项目引用
- jar使用docker构建镜像,并推送至harbor仓库
- 调用k8s api,拉取新的镜像,并运行镜像
- 开发完成后,merge request到dev分支,使用Gitlab codeview。
- 人工触发发布,重复4步骤。
- 发布成功后,自动合并dev代码到master,并将master的代码自动创建tag。
5.devops平台
devops是一种理念,一种产品研发习惯。并不是某一种技术框架就可以实现,需要打破多种工具的壁垒,串通开发流程。

- DevOps工具链大全 on Openshift: https://cloud.tencent.com/developer/article/1357361
- 必备的DevOps工具链大盘点: https://cloud.tencent.com/developer/article/1899222
轻量级devops平台。
- BigOps:
- 盘古:国产开源devops平台,小规模开发可以使用。
- LiteOps:
- spug: 是面向中小型企业设计的无 Agent的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、应用发布、任务计划、配置中心、监控、报警等一系列功能。
- 演示地址:https://demo.spug.dev
- 官网地址:https://www.spug.dev
- CODO是一款为用户提供企业多混合云、一站式DevOps、自动化运维、完全开源的云管理平台、自动化运维平台。
- 建木:建木是一个面向DevOps领域的极易扩展的开源无代码(图形化)/低代码(GitOps)工具。
5.1.蓝鲸智云
1,蓝鲸智云
腾讯蓝鲸智云,简称蓝鲸,是腾讯互动娱乐事业群(Interactive Entertainment Group,简称 IEG)自研自用的一套用于构建企业研发运营一体化体系的 PaaS 开发框架, 提供了 aPaaS(DevOps 流水线、运行环境托管、前后台框架)和 iPaaS(持续集成、CMDB、作业平台、容器管理、数据平台、AI 等原子平台)等模块, 帮助企业技术人员快速构建基础运营 PaaS。
传统的 Linux 等单机操作系统已发展数十年,随着云时代的到来,企业所需资源数暴增,操作节点(物理或虚拟服务器及容器)数量普遍达到数千个, 大型互联网公司甚至达到百万级别,混合云模式成为常态,虽然 IaaS 供应商的出现从一定程度上解决了资源切割调度问题,但并未很好的解决资源与应用的融合, 企业需要一种介于 IaaS 与应用(SaaS)之间的层级,用于屏蔽及控制 IaaS,快速开发及托管 SaaS,我们将其称之为基础 PaaS 层, 并着重发展用于研发及托管企业内技术运营类 SaaS 的基础运营 PaaS,并将其作为区别于传统 OS 的下一代企业级分布式运营操作系统。
企业 IT 应用的全生命周期可划分为研发、运维、运营三段,在各行业进行互联网化转型的过程中,融入敏捷思维,即形成持续集成、持续部署、持续运营的概念(CI-CD-CO)。
为降低转型成本,不以增加人力数量为转型前提,腾讯 IEG 以运维团队作为转型起点,充分利用这一群体低价值重复性工作量占比高的特点, 从 CD 领域切入,以 PaaS 技术进行运维自动化领域的烟囱治理,形成运维 PaaS 体系。将自动化所释放的人力资源,转型为运维开发团队, 利用 PaaS 的自增长属性,将运维 PaaS 逐步向 CI 及 CO 拓展,最终完成企业级研发 - 运维 - 运营基础 PaaS 构建,落地企业研发运营一体化。
腾讯蓝鲸智云秉承开放共赢的理念,招募及联合国内优质合作伙伴,以改变中国运维行业为起点,致力于推动国内企业借助研发运营一体化, 低成本实现企业 IT 经营管理模式升级和自主化。
- 官网:https://bk.tencent.com/ ,重点是有免费的社区版可以使用
- 蓝鲸介绍:https://cloud.tencent.com/developer/article/2148317
主要功能如下:
- 管控平台
- 配置平台
- 作业平台
- paas平台
- 数据平台基础服务
- 数据平台-datahub
- 数据平台modelfow
- 容器管理平台
- 移动平台
- 故障自愈
- 标准运维
- 蓝鲸监控
- 日志检索
- 蓝鲸devops
- wman
- 网络管理
6.运维工具
6.1.堡垒机和跳板机
所谓跳板机,就是一台服务器,开发或者运维人员在维护时要先登录这台服务器,然后通过该服务器登录到目标主机上然后进行维护和操作。
但是,普通的跳板机不能对运维人员的操作进行控制和审计,如果运维人员误操作导致系统问题,很难进行事故定责和快速定位原因。
堡垒机是在跳板机的基础上,弥补了跳板机的一系列缺点,比跳板机多了实时收集、监控网络环境、集中报警等功能。堡垒机是指在一个网络环境中, 为了保护数据和网络不受外来人员和内部用户的入侵和破坏,而运用各种技术手段实现收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动, 以便于实现集中报警、及时处理和审计定责。
6.2.jumpserver
jumpserver是使用python的django开发的开源跳板机系统,是全球首款完全开源、符合 4A 规范(包含认证Authentication 、 授权 Authorization、账号 Accounting 和审计 Auditing)的运维安全审计系统,Jumpserver 通过软件订阅服务或者软硬件一体机的方式, 向企业级用户交付多云环境下更好用的堡垒机。与传统堡垒机相比, Jumpserver 采用了分布式架构设计,支持多云环境并可灵活扩展。资产管理方面,
Jumpserver 无并发和资产数量限制,支持水平扩容。 Jumpserver 采用了业界领先的容器化部署方式,并且提供体验极佳的 Web Terminal 。
Jumpserver 还可实现基于 Web 的文件传输,并且支持用户将运维审计录像保存在云端(例如 AWS S3 、阿里云 OSS 、 ElasticSearch 等)。
jumpserver堡垒机由以下三个部分组成:
- jumpserver:jumpserver是jumpserver的核心组件,是一个使用Python的django开发的管理后台,支持restful API。
- coco: coco是SSH Server和Web Terminal Server的组件,提供SSH和WebSocket接口,使用paramiko和flask开发。
- luna: luna是Web Terminal Server的前端,前端页面均由该项目提供,主要负责页面后台的渲染。
6.3.小规模运维工具
运维管理工具:
- 宝塔:https://www.bt.cn/new/index.html
- 1Panel:1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。
服务器监控工具:
- nmon:命令窗口版的监控,简单的监控和导出监控数据 安装教程
- Monit:最灵活、功能最强大的监视工具之一,提供Web 界面 https://mmonit.com/
mayfly-go:
- 一站式Linux&数据库管理平台。国产开源项目:web版 linux(终端[终端回放] 文件 脚本 进程)、数据库(mysql postgres)、redis(单机 哨兵 集群)、mongo统一管理操作平台
- https://github.com/may-fly/mayfly-go
6.4.Pdsh
pdsh的全称是parallel distributed shell,与pssh类似,pdsh可并行执行对远程目标主机的操作,在有批量执行命令或分发任务的运维需求时, 使用这个命令可达到事半功倍的效果。同时,pdsh还支持交互模式,当要执行的命令不确定时,可直接进入pdsh命令行,非常方便。
教程:https://www.cnblogs.com/liwanliangblog/p/9194146.html
6.5.白盒&黑盒测试
- 白盒测试:知晓被测试对象(如代码、脚本、系统)的内部实现逻辑、代码结构、数据流转细节。
- 基于内部机制设计测试用例,核心验证逻辑正确性、分支覆盖完整性、异常处理有效性,常用单元测试、静态代码分析、逻辑覆盖等方法,侧重"穿透内部查问题"。
- 黑盒测试:不关心被测试对象的内部实现,仅将其视为"黑盒",通过输入预期数据、观察输出结果及功能表现来验证是否符合需求。
- 核心关注功能可用性、用户场景适配、输入输出一致性,常用功能测试、场景测试、兼容性测试等方法,侧重"模拟用户验功能"。
白盒测试重要的一个应用点就是系统可用性测试,通过对外暴露测试功能点,主动探测其正确性,例如探活接口。
Uptime Kuma。则是一个轻量级的、面向服务外部可用性的状态监控器。开源:https://github.com/louislam/uptime-kuma
特性如下:
- 监控 HTTP(s) / TCP / HTTP(s) 关键词 / HTTP(s) Json 查询 / Ping / DNS 记录 / Push / Steam 游戏服务器 / Docker 容器的运行时间
- 支持常用中间件监控,如mysql、Redis、kafka、MongoDB等
- 精美、响应式、快速的用户界面/用户体验
- 通过钉钉、电子邮件 (SMTP) 、短信等 90+ 种通知服务进行通知
安装
docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1
http://0.0.0.0:3001
- 本文作者:zhangxue
- 本文链接:https://lucksnow1989.github.io/article/10.devOps/1.devOps.html
- 版权声明:本文为本人原创文章,遵循 CC 4.0 BY-NC-SA版权协议,转载请附上原文出处链接和本声明。
