Table of Contents

CI(Continuous integration,持续集成)

CD(Continuous Delivery, 持续交付)

Different types of testing explained

单元测试

整合测试

回归测试

烟雾测试

验收测试

性能测试

负载测试

Jenkins - 最流行的开源免费持续集成工具

TravisCI - Test and Deploy with Confidence


CI(Continuous integration,持续集成)


CI(Continuous integration,中文意思是持续集成)是一种软件开发时间。持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。借用网络图片对CI加以理解。

持续构建一直是比较热门的话题,通过持续集成可以自动编译、打包、签名项目,配合单元测试可以实现持续集成+自动化测试。本文在结合CI的基础上,通过fir-cli的发布命令,完成了持续集成+自动化部署。让工程师从重复而又枯燥的手动打包完全解放出来,让工程师能更加专注于代码本身,最大限度的减少误操作风险,降低修复错误代码的成本,大幅提高工作效率。 -- https://www.jianshu.com/p/3025c3814961

CD(Continuous Delivery, 持续交付)

CD(Continuous Delivery, 中文意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。下图反应的是CI/CD 的大概工作模式。

Different types of testing explained

https://dev.to/thejessleigh/different-types-of-testing-explained-1ljo


前几天,在站立时,我的团队的DBA正在谈论为他最近的项目运行烟雾测试。我以前听过人们谈论烟雾测试,但是由于某种原因,它从未真正使我不知道烟雾测试是什么。它与单元测试有何不同?集成测试?回归测试?

在这一点上,我无法表达这些东西之间的区别让我感到有些尴尬,因此,我决定进行一些研究,并写一个解释器,以便将来我可以参考它,而不会觉得自己是无知的橡皮筋。我认为,由于我已经从事开发工作了将近5年,并且遇到了这个问题,所以可能还有其他一些人同样也不太愿意提出这样的问题。

阅读了许多不同的博客文章,堆栈溢出问题和随机资源后,我为几种不同类别的测试构建了共识的弗兰肯斯坦近似。在花了一些时间进行谷歌搜索之后,我认为要理解各种测试需要考虑三件事。

  • 1.)他们测试什么样的东西?
  • 2.)这些测试什么时候编写和运行?
  • 3.)测试失败会提供哪些信息?

不同的人有不同的定义,一个测试套件可能包含多种类型的测试。例如,您可能要运行一组将集成测试和回归测试组合到一个套件中的测试。没关系。有灰色地带,团队有养成自己的,特定于团队的词汇的习惯。您不需要为每个类别都提供全面的套件。您应该在以下方面进行测试:

  • 您的应用程序的复杂性
  • 您的应用看到的流量
  • 您的团队规模

如果您认为我根本错误地描述或忽略了一些重要的事情,尤其是在进行测试时,请在评论中告知我!

单元测试

他们测试什么?

单元测试评估代码的每个原子单元都按照预期的方式执行。理想情况下,在计划和编写单元测试时,应隔离无法进一步分解的功能,然后进行测试。

单元测试应该没有测试外部依赖或相互作用。您绝对应该模拟出api调用。单元测试纯粹主义者还可以让您模拟数据库调用,并且仅在外部源提供正确输入的情况下,才能确保代码正确运行。根据您现有的代码库或经理的偏好,这可能无法实现。如果您无法从单元测试套件中排除数据库功能,请确保对性能有所了解并寻找潜在的优化方法。我可以从经验中告诉您,长时间运行的单元测试套件非常令人不快,并且会大大减慢开发速度。

我什么时候运行它们?

您应该与代码并行编写和运行单元测试。当人们指的是测试驱动开发时,他们指的是单元测试,并使用测试作为代码应完成的规范。

他们失败了怎么办?

单元测试失败使您知道特定的代码段已被破坏。如果您已将其分解得足够远,则故障应该放大无法正常工作的确切代码段。

故障可以帮助您快速发现并解决问题,并在需要更新规格时通知您。对于何时更新代码文档,它们也可能是一个很好的指南。

整合测试

他们测试什么?

集成测试检查两个或多个原子代码单元之间的交互。您的应用程序由执行特定小功能的各个单元组成,并且这些小功能中的每一个可能都是孤立运行的,但是当您将它们编织在一起时会中断。

集成测试还测试代码与外部依赖项(例如数据库连接或第三方API)的集成。

我什么时候运行它们?

集成测试应该是单元测试之后的下一步。

他们失败了怎么办?

集成测试失败时,它会告诉您应用程序的两个或多个核心功能无法协同工作。这可能是您编写的两个模块,它们在某些复杂的业务逻辑中发生冲突,或者是第三方API更改响应结构而导致的失败。如果数据库连接失败,它可能会提醒您错误处理错误。

故障可能很容易识别,或者可能需要一些手动验证和试验才能识别。难以解决集成测试故障表明您可以在哪里改进日志记录和错误处理。

回归测试

他们测试什么?

回归测试将检查一组过去有效且应该相对稳定的方案。

我什么时候运行它们?

您的集成测试通过后,您应该运行回归测试。在现有回归测试通过之前,请勿将新功能添加到回归测试套件中。

他们失败了怎么办?

回归测试失败意味着新功能破坏了一些现有功能,从而导致了回归。

故障应该让您知道哪些旧功能已损坏,并指示您需要在新功能和旧的,已损坏的功能之间编写其他集成测试。

回归测试失败还可能表明您无意中引入了过去修复的错误。

烟雾测试

他们测试什么?

冒烟测试是高级的,精心策划的一组自动化测试,位于集成测试和回归测试之间的某个位置。他们在那里的目的是为了确保您网站的核心功能没有损坏。

这个词smoke test似乎是对管道的影响。如果您看到烟气或蒸汽从管道中逸出,则表明它有泄漏,需要进行修复。

我什么时候运行它们?

冒烟测试应同时对整个系统进行测试,以确保核心功能保持完整。这些不应该是全面的。这些是您重大的,全面的,不合格的测试失败。您应该在登台环境和生产环境中尽早且经常(最好是每天)运行它们。

他们失败了怎么办?

如果冒烟测试失败,则说明您网站的功能存在重大问题。在解决这些故障之前,您不应部署新更改。如果它们的生产失败,则应优先解决这些问题。

验收测试

(我也听说过这称为QA / BV /手动测试等)

他们测试什么?

验收测试通常是在端到端开发完成之后执行的一组手动测试。他们检查以确保所编写的功能实际上符合所有初始规格或接受标准。

他们失败了怎么办?

看起来您在编写代码时错过了一些功能。您将需要重新进行开发并修复该问题。:(

如果验收测试失败,您可能需要在下一次计划过程中更早地决定验收标准。

我什么时候运行它们?

由于这些是手动测试,而不是作为代码运行的测试,因此时间安排略有不同。您和您的项目所有者应在项目开始工作之前起草一套验收标准。发现或添加到项目中的任何其他范围都应反映在验收标准中。

在完成开发后,应很快进行验收测试,以便您可以返回并在不正确的地方快速进行迭代。在单元或集成测试之后立即进行这些操作是很有意义的,在您尚未进行太多测试之前就没有必要进行重大更改。

性能测试

他们测试什么?
性能测试检查产品和基础架构的稳定性,可伸缩性和可用性。您可能会检查每秒的错误数或加载页面需要多长时间。性能测试不一定有通过/失败标准。这个阶段更多地是关于数据收集和寻找需要改进的地方。

他们失败了怎么办?
性能测试不会完全以单元测试套件失败的方式失败。取而代之的是,您收集一组基准,并根据您希望这些数字的位置对其进行评估。如果性能测试失败,则可能表明您需要更多地关注基础结构扩展,数据库查询时间等。

我什么时候运行它们?
在主要版本和重构之后,性能测试是一个好主意。

负载测试

他们测试什么?
负载测试是一种专门的性能测试,可以专门检查您的产品在预定时间内承受巨大压力的性能。

他们失败了怎么办?
负载测试可评估您为流量的显着增长做好准备的情况。如果负载测试失败,这并不意味着您的站点已损坏,但这并不意味着您没有为病毒击中或DDOS攻击做好准备。对于刚开始的小型产品来说,这可能不是什么大问题,但是随着用户群的扩大,失败应该成为一个问题。

我什么时候写的?
负载测试不应立即成为您首先要解决的问题,但是随着您的产品变得越来越大和越来越成熟,您可能应该对新功能进行负载测试,以查看它们是否会影响站点的整体性能,以及是否可以优化。

我不能再说我不知道​​什么是烟雾测试,希望您也能从中学到一些东西!如上所述,我不是测试人员,所以如果您发现我遗漏或误解的内容,请在评论中告诉我!

Jenkins - 最流行的开源免费持续集成工具

http://www.jenkins.org.cn/


Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。-- https://www.jianshu.com/p/5f671aca2b5a

TravisCI - Test and Deploy with Confidence

https://docs.travis-ci.com/

https://www.jianshu.com/p/3025c3814961


持续构建一直是比较热门的话题,通过持续集成可以自动编译、打包、签名项目,配合单元测试可以实现持续集成+自动化测试。本文在结合CI的基础上,通过fir-cli的发布命令,完成了持续集成+自动化部署。让工程师从重复而又枯燥的手动打包完全解放出来,让工程师能更加专注于代码本身,最大限度的减少误操作风险,降低修复错误代码的成本,大幅提高工作效率。 -- https://www.jianshu.com/p/3025c3814961

围绕Travis-CI持续构建的核心文件.travis.yml,根据实操所需,涉及到每个具体的点时再进一步讲解相关配置,避免前期做一些零散、关联性不强的操作产生混乱,基于操作流程再进一步细分到对应的配置点,由上而下,由里到外的了解Travis-CI的运行步骤及可能遇到的问题的解决办法。 -- https://www.jianshu.com/p/3025c3814961

这是将Travis CI与您的云平台托管代码存储库一起使用的简短指南。如果您不熟悉连续集成,或者想了解有关Travis CI功能的更多信息,请 改用Core Concepts for Beginners。

Travis CI 是目前新兴的开源持续集成构建项目,它与jenkins,GO的很明显的特别在于采用yaml格式,简洁清新独树一帜。目前大多数的github项目都已经移入到Travis CI的构建队列中,据说Travis CI每天运行超过4000次完整构建。

CI/CD(持续集成构建/持续交付):如何测试/集成/交付项目代码?(Jenkins,TravisCI)相关推荐

  1. winform 项目 发布后比本地运行慢_前端团队基于 GitLab CI/CD 的自动化构建、发布实践,快来学习吧...

    在公司搭建内部 GitLab 平台后,前端活动项目从 SVN 迁移到 GitLab.本文介绍如何基于 GitLab CI/CD 实现自动化构建及发布. 在从 SVN 迁移到 GitLab 和接入 Gi ...

  2. 测试开发工程师成长日记010 - Jenkins中的CI/CD/CT(持续集成构建/持续交付/持续测试)

    CI(Continuous integration,持续集成) CI(Continuous integration,中文意思是持续集成)是一种软件开发时间.持续集成强调开发人员提交了新代码之后,立刻进 ...

  3. 持续集成与持续部署宝典Part 4:创建持续部署流水线

    2019独角兽企业重金招聘Python工程师标准>>> 随着Docker项目及其相关生态系统逐渐成熟,容器已经开始被更多企业用在了更大规模的项目中.因此,我们需要一套连贯的工作流程和 ...

  4. CI/CD——构建企业级Docker+Jenkins+Git+Harbor流水线自动化持续集成持续发布平台

    构建企业级Docker+Jenkins+Git+Harbor流水线自动化持续集成持续发布平台 CI/CD是什么? 持续集成(CI)/持续交付(CD)的优势 自动化部署流程图 Git Github Gi ...

  5. 推荐10个CI/CD工具,用于云平台集成交付

    虽然云平台的到来让开发者免于安装和维护物理服务器,但测试和部署代码过程依旧需要人为完成,持续集成可以自动消除构建.测试和部署代码的大部分痛苦.如果希望最大限度提高效率,持续集成和交付工具是最好的选择. ...

  6. 持续集成与持续部署(一)——核心概念之持续集成、持续交付、持续部署

    持续集成与持续部署(一)--核心概念之持续集成.持续交付.持续部署 5-4 持续集成与持续部署 课程介绍 那些大厂们,天天DevOps.持续集成的?到底在讲些什么?这堂课来给你揭开持续集成与持续部署的 ...

  7. Azure DevOps+Docker+Asp.NET Core 实现CI/CD(三.实现CD持续部署管道)

    前言 本文主要是讲解如何使用Azure DevOps+Docker 来实现持续集成Asp.NET Core项目(当然 也可以是任意项目). 上一篇: Azure DevOps+Docker+Asp.N ...

  8. GitOps—通过CI/CD自动化构建虚拟机模版

    <CI/CD(持续集成构建/持续交付):如何测试/集成/交付项目代码?(Jenkins,TravisCI)> <什么是DevOps?人员,流程和产品的结合,过程.方法与系统的统称&g ...

  9. Jenkins 构建CI/CD(一看就会)

    文章目录 一.CI / CD 1.概念 2.CI / CD 方法简介 二.jenkins介绍 1.Jenkins概述 2.Jenkins目标 3.Jenkins特性 4.产品发布流程 三.部署应用Je ...

最新文章

  1. Spring中ThreadPoolTaskExecutor的线程调度及问题
  2. TensorFlow 强制使用CPU
  3. .NET EF框架的安装、及三种开发模式
  4. Sublime text3关闭自动更新(hosts屏蔽)
  5. mybatisgenerator使用_如何优雅地使用MyBatisplus
  6. activexobject对象不能创建_面向对象设计方法(Object oriented)
  7. matlab求系统根轨迹代码_要想正确画出根轨迹,先搞清楚这8大法则再说!
  8. ios php ide,最好的PHP IDE for Mac? (最好免费!)
  9. mysql 按月和年累加_广西柳州市市场监管局公布市2020年11月(第一批)电梯按需维保试点名单...
  10. 右侧快速入口滑动时左侧跟着变化
  11. java 无开发环境时在记事本中编写的方法与命令行运行java代码
  12. 制作小游戏贪吃蛇即解决将python制作成exe
  13. php编码怎么变西欧了403,你知道一个简单的PHP脚本在ip检查后抛出403吗?
  14. libusb-win32
  15. 计算机系统结构试卷填空,计算机系统结构试卷
  16. 矩阵按键原理和BUG
  17. 名字作诗,拯救诗歌的最后一根稻草
  18. 记录下对游戏主机配置的个人理解与心得
  19. 【Java每日一题】Java笔试100题(1)
  20. 优秀logo,最基础的设计技巧(三)

热门文章

  1. android httpget 参数,安卓通过httpget传入json参数,请求数据
  2. 最短路径算法——迪杰斯特拉(Dijkstra)
  3. leetcode题解54-螺旋矩阵
  4. 多线程执行sql报错处理
  5. 使用pdf.js在移动端预览pdf文档
  6. Oracle 增加修改删除字段与添加注释
  7. 《深度探索C++对象模型》调用虚函数
  8. wordpress如何屏蔽wp-json(禁用REST API)
  9. ecipse theme
  10. int指令02 - 零基础入门学习汇编语言65