首页>>互联网>>DevOps->devops怎么做测试?

devops怎么做测试?

时间:2023-12-01 本站 点击:0

导读:今天首席CTO笔记来给各位分享关于devops怎么做测试的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

什么是devops 如何实现devops

在软件开发的过程中,开发人员负责编写代码,然后将代码交给 QA(质量保障)团队进行测试,然后将最终的发布版交给运维团队去布署。

DevOps 就是 Development(开发)和 Operations(运维)两个词的组合。但这里的组合并不是简单地将两个团队合并,而是要从思维和流程上变革,根据 DevOps 思想重新梳理全流程的规范和标准。

DevOps 既是一种思维方式,同时也是一种工作方式,作为一套促进开发、技术运营和质量保障三个部门之间的沟通、协作与整合的方法论,使得组织的快速迭代,实现竞争优势成为现实。

在 DevOps 的流程下,运维人员会在项目开发期间就介入到开发过程中,了解开发人员使用的系统架构和技术路线,从而制定适当的运维方案。而开发人员也会在运维的初期参与到系统部署中,并提供系统部署的优化建议。

DevOps 的实施,打破了团队内各角色的职能壁垒,让开发人员和运维人员更好地沟通合作,通过自动化流程来使得软件开发的整体过程更加快捷和可靠。

什么是devops

DevOps是IT服务管理的一种模式。过去的数十年间,IT运维发展经历了数个阶段。从早期的手工运维到标准化运维、自动化运维,到如今的DevOps、AIOps。

简言之,DevOps试图打通开发和运维的部门墙,从而打通整个IT价值交付的全生命周期,从产品需求到上线运维的全过程实现效率的提升。

DevOps最显著的作用是提高了企业产品的交付质量、缩短开发周期、减少故障。而降本增效是每一个公司在数字化转型之后的很大的挑战,DevOps无疑直击痛点。

而作为一名DevOps 工程师,除了要具备软件工程师基本的编程能力以外,还需要特定的人际交往、工具使用等技能。换句话说,DevOps 工程师需要“软”、“硬”技能兼备,具体如下:

一、沟通与协作技巧

DevOps 是一种横跨软件开发、测试和部署的协作方法。它将原本具有不同目标的开发、测试和运维小团队聚集在一起,以实现更高效和高质量的代码发布,这就要求 DevOps 流程中的不同角色之间不能有任何交流障碍。因此,良好的沟通技巧(无论是口头还是书面)对于优秀的 DevOps 工程师来说是必不可少的。

协作能力也很重要。DevOps 是团队合作的开发模式,每个工程师都是团队成员,需要在整个软件迭代过程中支持其他同事的工作。这不仅仅要求我们成为一名优秀的队友,还要在适当的时候给新人一些建议,包括但不限于指导和建议团队成员交付代码的最佳方式、编码时使用哪些工具以及如何测试最新功能。这就要求我们自身也要对这些 DevOps 流程中的必要技能有所了解。

二、熟悉和理解 DevOps 工具链

除了协作和沟通这样的“软”技能之外,DevOps 工程师还必须知道如何使用各种复杂工具协同工作以支持软件交付目标,这是成为一个优秀的 DevOps 工程师所必备的“硬”技能。

DevOps 工程师需要知道如何使用和理解以下类型工具的作用:

版本控制工具

详细地说,集合了代码审查、合并功能的版本控制工具是能让多个开发人员之间完美协作的主要DevOps 工具。由于 DevOps 流程汇集了来自各个部门的专家,所以他们需要了解源代码控制系统,以及系统跟踪不同应用程序中的更改。此外,它还维护应用程序的多个版本。

目前 DevOps 流程中常用的版本控制系统都基于开源分布式版本控制系统 Git,例如 GitHub、Gitee、GitLab 以及各大厂商基于 Git 定制的内源协作工具。

持续集成工具

持续集成(CI)是 DevOps 的关键技能之一,它是构建 pipeline 的重要部分。DevOps 要求运营和开发团队使用统一的系统。因此,持续集成所做的就是将开发人员的代码与 master 合并在一起。有了这样的技巧,就可以有效地合并数据。因此,DevOps 工程师一定要知道如何使用一些常用的 CI 工具,例如 GitHub Action、Jenkins、Bamboo、TeamCity、Travis CI 等。

容器与编排工具

容器作为现代微服务与云原生架构的核心技术,提供了关于 DevOps 的三个基本功能,包括持续的实验、流动和反馈。容器技术的不可变基础设施实现了操作系统层虚拟化,不仅方便运维程序升级和部署,还升华成了向应用代码隐藏环境复杂性的手段,成为推广分布式服务的必要前提。

目前,Docker 仍然是应用最广泛的容器技术,而以容器编排引擎 Kubernetes 为核心的云原生技术栈则是各大互联网企业构建容器技术基础设施的事实标准。

自动化工具

自动化是软件开发过程中必不可少的要素之一。几乎所有的手工任务都可以使用各种脚本语言自动完成。例如,Ruby、Bash、Python、Node、Shell 等等。可以说,使用自动化开发工具已经成为了很多 DevOps 团队加快开发和部署过程的关键。想要成为 DevOps 工程师,掌握自动化工具很有必要。

监控和报警工具

DevOps 持续集成和持续部署的实现离不开持续监控的辅助作用。许多微服务都是由数百个组件组合而成,其中一个服务的故障可能导致整个系统崩溃。当然,手动找到核心故障问题是很复杂和耗时的。其中一个解决方案就是持续监控关键特征,如 RAM 使用、请求数量、异常数量和存储空间。因此,需要根据系统的关键特性设置一个警报系统。例如,当存储空间使用率达到 80% 时应该触发警报,以便 DevOps 运维开发人员可以在整个系统崩溃之前解决问题。

三、具有成熟编码标准的特定编程技能

然编程能力是每个开发者最基本的能力,但 DevOps 工程师在这方面仍然有一些更特殊的要求。

通常来说,DevOps 工程师需要在专精 1-2 门编程语言的基础上熟悉多种语言,例如 Java、JavaScript、Ruby、Python、PHP、Go 等,这是由微服务时代同一系统不同服务可以由不同语言、不同框架实现的特性而决定的。DevOps 工程师至少需要了解这些语言的特性并具备在操作系统环境中编写和调试它们的能力。

四、技术支持和维护技能

优秀的 DevOps 工程师不仅需要开发方面的技能,有时还需要为客户提供维护和技术支持。这意味着 DevOps 工程师应该乐于为内部和外部客户提供支持,并在出现问题时进行故障排除。

什么是DevOps

什么是DevOps?

DevOps 是一套实践、工具和文化理念,可以实现软件开发团队和 IT 团队之间的流程自动化和集成。它强调团队赋能、跨团队沟通和协作以及技术自动化。

DevOps 运动始于 2007 年左右,当时软件开发和 IT 运营社区开始担忧传统的软件开发模式。在此模式下,编写代码的开发人员与部署和支持代码的运营人员会独立工作。DevOps 这一术语由“开发”和“运营”两个词构成,它反映了将这些领域整合为一个持续流程的过程。

DevOps 如何运作?

DevOps 团队包括开发人员和 IT 运营人员,他们在整个产品生命周期中进行协作,以提高软件部署的速度和质量。这是一种全新的工作方式,也是一种文化转型,对团队及其工作的组织具有重大影响。

在 DevOps 模式下,开发和运营团队不再是“孤立”的。有时,这两个团队会合并为一个团队,合并后工程师会参与整个应用生命周期中的工作(从开发和测试到部署和运营),并具备多学科的技能。

DevOps 团队使用工具实现流程自动化,并加速流程,这有助于提高可靠性。DevOps 工具链可帮助团队处理重要的 DevOps 基础事项,包括持续集成、持续交付、自动化和协作。

DevOps 的价值有时也会应用于开发团队以外的团队。当安全团队采用 DevOps 方法时,安全性则成为开发过程中一个活跃的组成部分。这就是所谓的 DevSecOps。

DevOps 生命周期

由于 DevOps 的连续性,从业人员使用无限循环来展示 DevOps 生命周期各个阶段之间的相互关系。尽管看似是按顺序进行的,但此循环实际表示需要在整个生命周期进行持续协作和迭代改进。

DevOps 生命周期由六个阶段组成,它们分别代表开发(循环的左半部分)和运营(循环的右半部分)所需的流程、功能和工具。团队会在每个阶段进行协作和沟通,以保持一致性、速度和质量。

规划

DevOps 团队应采用敏捷开发实践来提高速度和质量。敏捷开发是一种用于项目管理和软件开发的迭代方法,可帮助团队将工作分解成更小的部分,从而提供增量价值。

构建

Git 是一个免费的开源版本控制系统。Git 可为分支、合并和重写存储库历史记录提供出色的支持,而这已为开发构建流程带来了众多极具创新且功能强大的工作流和工具。

持续集成和交付

CI/CD 可让团队频繁且可预测地发布高品质产品,其范围涵盖从源代码存储库到使用自动化工作流的生产环节。团队可以频繁地合并代码变更、部署功能标记以及集成端到端测试。

监控和警报

快速识别并解决影响产品正常运行时间、速度和功能的事务。自动通知您团队有关变更、高风险操作或故障的信息,以便保持服务的运行。

运维

管理面向客户的端到端 IT 服务交付。这包括设计、实施、配置、部署和维护支持组织服务的所有 IT 基础架构过程中涉及的实践。

持续反馈

DevOps 团队应对每个版本进行评估,并生成报告以改进未来版本。通过收集持续反馈,团队可以改进其流程,并采纳客户反馈以改进下一个版本。

DevOps 工具

DevOps 工具可应对 DevOps 生命周期的关键阶段。它们通过帮助改进协作、减少上下文切换、引入自动化以及实现可观察性和监控功能来支持 DevOps 实践。

DevOps 工具链通常遵循两种方法:一体化或开放式工具链。一体化工具链提供完整的解决方案,通常不会与其他第三方工具集成。开放式工具链则允许使用不同工具进行自定义。这两种方法各有优缺点。

DevOps 有哪些优势?

有“2020 年 DevOps 趋势调查”表明,99% 的调查对象表示 DevOps 对他们的组织产生了积极影响。DevOps 的优势包括更快且更轻松的发布、团队效率、更高的安全性、更高品质的产品,以及更高的团队和客户满意度。

速度

更频繁地实践 DevOps 发布可交付成果的团队具有更高的品质和稳定性。事实上,DORA 2019 年 DevOps 状况报告发现,精英团队的部署频率和速度分别比表现不佳的团队高出 208 倍和 106 倍。持续交付使得团队可以使用自动化工具来构建、测试和交付软件。

改进协作

DevOps 的基础是开发人员和运营团队之间的协作文化,他们会分担责任,协调工作。此举可以提高团队的效率,并省去工作交接和编写专为其运行环境而设计的代码的时间。

快速部署

通过提高发布的频率和速度,DevOps 团队可以快速地改进产品。快速发布新功能和修复缺陷有助于获得竞争优势。

质量和可靠性

持续集成和持续交付等实践可确保变更正常运行且安全无误,从而提高软件产品的质量。监控则有助于团队实时了解性能。

安全性

通过将安全性集成到持续集成、持续交付和持续部署管道中,DevSecOps 成为开发过程中一个活跃的组成部分。通过将主动安全审计和安全测试集成到敏捷开发和 DevOps 工作流中,可将安全性植入产品内。

采用 DevOps 会面临哪些挑战?

原有的习惯很难改变。深陷孤立工作方式的团队可能会难以应对,甚至抗拒彻底改变团队结构以采用 DevOps 实践。某些团队可能会错误地认为有了新工具就足以采用 DevOps。但是,DevOps 是人员、工具和文化的结合。DevOps 团队的每一个人都必须了解整个价值流,从构思、开发到最终用户体验。它要求打破孤岛,以便在整个产品生命周期中进行协作。

Devops 不是任何一个个人的工作,而是每个人的工作。

从传统的基础架构转向使用基础架构即代码 (IaC) 和微服务可以加快开发和创新速度,但增加的运营工作量可能极具挑战性。最好为自动化、配置管理和持续交付实践奠定坚实的基础,以帮助减负。

过度依赖工具会使团队偏离 DevOps 的必要基础:团队和组织结构。一旦建立了结构,就应该建立流程和团队,然后确定工具。

如何采用 DevOps?

首先,采用 DevOps 需要致力于评估且可能更改或删除组织当前所用的所有团队、工具或流程。这表示需要构建必要的基础架构,以便团队能够自主构建、部署和管理其产品,而不必过分依赖于外部团队。

DevOps 文化

DevOps 文化是指团队采用新工作方式(包括加强合作和沟通)的环境。这是人员、流程和工具的协调一致,以实现更加统一的客户导向服务。多学科团队负责产品的整个生命周期。

持续学习

在 DevOps 方面表现良好的组织鼓励进行实验和一定程度的冒险。在这些组织中,跳出固有思维模式是常态,而失败则被理解为学习和进步的自然组成部分。

敏捷

敏捷开发方法在软件行业中非常受欢迎,因为它们赋予了团队内在的灵活性、出色的有序性以及响应变化的能力。DevOps 是一种文化转型,可促进软件构建和维护人员之间的协作。搭配使用敏捷开发和 DevOps 时,可提高效率和可靠性。

DevOps 实践

持续集成

持续集成是将代码更改自动集成到软件项目中的实践。它允许开发人员频繁地将代码更改合并到执行构建和测试的中央存储库中。这有助于 DevOps 团队更快速地修复缺陷、提高软件质量以及缩短验证和发布新软件更新所需的时间。

持续交付

持续交付通过自动将代码更改部署到测试/生产环境中来扩展持续集成。它会沿着持续交付管道推进。而在此管道内,自动化构建、测试和部署会被编排为一个发布工作流。

情境意识

对于组织中的每个成员来说,能够访问他们需要的数据以尽可能高效和快速地完成他们的工作可谓至关重要。团队成员需收到部署管道中的故障警报(无论是系统性故障还是由于测试失败引起的故障),并及时收到在生产中所运行应用的运行状况和性能的最新信息。指标、日志、跟踪、监控和警报都是团队了解其工作进展所需的重要反馈来源。

自动化

自动化是其中一个最重要的 DevOps 实践,因为它能让团队更快速地完成高品质软件的开发和部署流程。利用自动化,将代码变更推送到源代码存储库的一个简单操作便可触发构建、测试和部署流程,从而大大减少这些步骤所花的时间。

基础架构即代码

无论您的组织是拥有本地数据中心,还是完全托管在云中,能快速、一致地调配、配置和管理基础架构是成功采用 DevOps 的关键。基础架构即代码 (IaC) 不仅仅是编写基础架构配置脚本,它还将基础架构定义视为实际代码:使用源控制、代码审查、测试等。

微服务

微服务是一种架构技术。在此技术中,应用被构建为一系列可以相互独立部署和运行的小型服务。每个服务都有其自己的流程,并通过接口与其他服务通信。这种关注点分离和剥离的独立功能支持 DevOps 实践,例如:持续交付和持续集成。

监控

DevOps 团队监控从规划、开发、集成和测试、部署到运营的整个开发生命周期。如此一来,团队就能迅速、自动地对客户体验中的任何降级做出响应。更重要的是,它允许团队“左移”至开发的早期阶段,并最大程度地减少具有破坏性的生产变更。

开始使用 DevOps

开始使用 DevOps 的最简方法就是识别小型价值流(例如:小型支持应用或服务),然后开始尝试一些 DevOps 实践。与软件开发一样,与一小群利益相关者一起转换单个数据流比尝试在组织内一次性过渡至全新的工作方式要容易得多。

如何实现DevOps?

DevOps 是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作。DevOps 旨在统一软件开发和软件操作,与业务目标紧密结合,在 软件构建、集成、测试、发布到部署和基础设施管理中大力提倡自动化和监控。

DevOps 的目标是缩短开发周期,增加部署频率,更可靠的发布。用户可通过完整的工具链,深度集成代码仓库、制品仓库、项目管理、自动化测试等类别中的主流工具,实现零成本迁移,快速实践 DevOps。

DevOps 帮助开发者和运维人员打造了一个全新空间,构建了一种通过持续交付实践去优化资源和扩展应用程序的新方式。DevOps和云原生架构的结合能够实现精益产品开发流程,适应快速变化的市场, 更好的服务企业的商业目的。在容器云PaaS、DevOps、微服务治理、服务网格、API网关等等方面,时速云做的还不错,他们是一家全栈云原生技术服务提供商,你可以了解一下。

性能测试到底该怎么做?

作为一名开发者,我们最长听到的就是编程界的三高:

高性能、高并发、高可用。

听起来非常高大上,但是性能到底如何呢?又该如何评定呢?

这次我们谈一谈性能测试,看一看到底什么样才叫做高性能。

本文主要从以下几个方面进行讨论。

(1)性能测试是什么?

(2)为什么需要性能测试?

(3)性能测试如何做?

(4)有哪些性能测试的工具

老马曾经说过,你想理解一件事物,首先必须先定义它。

这里直接引用一下百科中的定义:

性能测试的定义也不难理解,往往定义本身阐述了性能测试的作用。

如果你是一名开发、测试,平时接手过不少需求,可能性能测试接触的也不多。

每一个需求,都有对应的功能性需求和肺功能性需求。

功能性需求是产品需求文档中最直接的,需要实现的功能目标。简称,能用就行。

非功能性需求则要宽泛的多,架构设计是否合理?是否便于后期拓展?是否便于监控?代码实现是否优雅?文档注释是否完整?

就像你写了一只鸟,鸟头做螺旋桨非能飞起来,但是在架构设计上可能是不合理的。

飞起来

一个查询功能,用户点击查询,10S 种才返回数据,功能上是满足的,但是性能上是不能接受的。

线上的交易功能平时各方面都很棒,节假日高峰期直接系统就瘫痪了。

那如何避免这些问题出现在生产上呢?

这就需要上线之前,首先做好对应的性能测试,避免再生产上出现问题,带来严重的生产事故。

性能要高,性能要硬,性能测试,又高又硬!

又高又硬

做一件事情之前,我们首先要确定好自己的目标。

性能测试,到底要测试什么?

有些类似于开发过程中的需求分析,常见的测试指标如下。

响应时间是指某个请求或操作从发出到接收到反馈所消耗的时间,包括应用服务器(客户端)处理时间、网络传输时间以及数据库服务器处理时间。

作为用户而言,在页面点击查询,等待了多久才能获取结果,这个就是响应时间。

用户不关心你后端经过了多少个服务,慢就是原罪。

对于微服务系统,链路监控就显得比较重要。可以帮助我们快速定位到底慢在哪里。

TPS(Transaction Per Second)是指单位时间(每秒)系统处理的事务量。

我看网上还有很多类似的概念:点击量/点击率、吞吐量/吞吐率、PV/UV,这里不做赘述。

个人看来本质上 TPS/QPS 就是去压测你应用的极限,当访问量较大的时候,程序能否活下来?

这里主要涉及到两个概念:高性能和高可用。

我们后面会简单讨论下这两点。

明确了测试指标之后,就需要进行测试的准备。

环境准备:比如你想压测数据库,那就需要准备对应配置的数据库资源。

脚本的准备:数据初始化脚本,调用脚本等。

这个可以类比开发过程中的代码开发。

ps: 性能压测一般不是很常用,所以环境准备流程会比较长,这一点需要注意。

当进行测试之后,测试的结果一定要给出一份报告出来。

是否通过压测要求?

最高的 QPS 是多少?

这样开发可以根据这份报告进行相应的优化。

提升性能的内容写一本书也不为过,这里简单罗列一些最常用的几点:

(1)慢 SQL

一般程序如果响应时间较长,可以首先看一下慢 SQL。

看下是否需要增加索引,或者进行 SQL 优化。

(2)缓存

针对查询,性能提升最显著的就是引入缓存。

当然,引入缓存会使架构变得复杂,这一点要结合自己的实际业务。

(3)硬件升级

如果程序优化的空间比较小,可以考虑升级一下硬件资源。

比如服务器配置翻倍,数据库配置翻倍。

什么?你说公司没钱升级?

没钱升级做什么压测?

这个时候测试报告的作用就显露了,直接用数据说话。

直接说 QPS 达不到生产要求,程序优化的空间很小,推荐硬件升级配置,升级到多少。

做人,要以德服人。

做测试,要用数据说话。

以德服人

测试最常用的工具当属 jmeter。

除此之外,还有一些其他的工具:

LoadRunner、QALoad、SilkPerformer和Rational Performance Tester。

下面对几个工具做下简单介绍

Apache JMeter 可以用于测试静态和动态资源(Web动态应用程序)的性能。

它可以用于模拟服务器、服务器组、网络或对象上的负载,以测试其强度或分析不同负载类型下的总体性能。

将负载测试集成到开发工具中:IDE、jUnit、nUnit、Jenkins、Selenium和Microsoft Visual Studio。

从12.55版本开始,您可以运行您的JMeter脚本,并在任何性能测试中集成JMeter和附加的脚本类型。

ps: 这个设计理念就非常好,可以和成熟的工具进行整合。站在巨人的肩膀上。

QALoad是客户/服务器系统、企业资源配置(ERP)和电子商务应用的自动化负载测试工具。

QALoad可以模拟成百上千的用户并发执行关键业务而完成对应用程序的测试,并针对所发现问题对系统性能进行优化,确保应用的成功部署。

ps: 这个工具本人没有接触过。

SilkPerformerV可以让你在使用前,就能够预测企业电子商务环境的行为—不受电子商务应用规模和复杂性影响。

可视化的用户化、负载条件下可视化的内容校验、实时的性能监视和强大的管理报告可以帮助您迅速将问题隔离,这样,通过最小化测试周期、优化性能以及确保可伸缩性,加快了投入市场的时间,并保证了系统的可靠性。

作为 DevOps 方法的一部分,IBM Rational Performance Tester 帮助软件测试团队更早、更频繁地进行测试。

它验证 Web 和服务器应用程序的可扩展性,确定系统性能瓶颈的存在和原因,并减少负载测试。

您的软件测试团队可以快速执行性能测试,分析负载对应用程序的影响。

ps: 这一款工具有 IBM 提供,质量值得信赖。

这么多工具可供使用,相信读到这里的小伙伴已经找到了自己心仪的测试工具。

别急,下面专门为做 java 开发的小伙伴们推荐一款性能测试工具。

男人有男人的浪漫,开发者当然也要有开发者的浪漫。

【男人的浪.jpg】

作为一名开发者,老马平时单元测试使用 junit 最多。

所以一直希望找到一款基于 junit 的性能压测工具,后来也确实找到了。

@JunitPerfConfig 指定测试时的属性配置。(必填项)

使用如下:

@JunitPerfRequire 指定测试时需要达到的要求。(选填项)

使用如下:

对应的测试报告生成方式也是多样的,也允许用户自定义。

基于控台日志:

或者基于 HTML:

junitperf

本文对性能测试做了最基本的介绍,让小伙伴们对性能压测有一个最基本的理解。

测试和开发一样,都是一件费时费力,而且需要认真做才能做好的事情,其中的学问不是一篇就能说清的。

性能测试工具也比较多,本文重点介绍了专门为 java 开发者打造的 junitperf 工具。

下一节我们将从源码角度,讲解一下 junitperf 的实现原理。

我是老马,期待与你的下次重逢。

开源地址:

结语:以上就是首席CTO笔记为大家整理的关于devops怎么做测试的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/DevOps/7627.html