01、Docker与自动化测试

对于重复枯燥的手动测试任务,可以考虑将其进行自动化改造。自动化的成本在于自动化程序的编写和维护,而收益在于节省了手动执行用例的时间。简而言之,如果收益大于成本,测试任务就有价值自动化,否则受益的只是测试人员的自动化技能得到了提升。利用 Docker 的快速部署、环境共享等特性,可以大大减少自动化的成本,使很多原本没有价值自动化的测试任务变为了有价值自动化的任务,大大提升了项目效率。

那么如果自动化测试已经运行在了虚拟机中,是否有必要使用 Docker 技术将其进行改造?这个就要具体问题具体分析了。笔者并不赞同将所有测试任务一刀切的进行容器化改造。如果当前虚拟机已经满足测试需求,你就需要评估一下引入 Docker 进行改造所需的成本,其中包含学习 Docker 技术所需要的时间成本。反之,如果虚拟机无法满足当前的测试需求,可以考虑尽快引入 Docker 进行改造。

02、Docker 的约束

Build, Ship, and Run Any App, Anywhere. 这是 Docker 公司高调宣称的口号,即在任何平台都可以构建、部署、运行任何应用。然而,由于 Docker 自身的特点,其使用场景有一些约束:

  • 因为容器与主机共享内核,如果容器中应用需要不同的内核版本,就不得不更换主机内核。但如果主机内核变更后又会影响到其它容器的运行。变通的方法是将应用源码的编写与内核特性解耦。

  • Docker 使用时需要 3.10 或以上版本的内核,这是最低的限制。如果你需要使用更高级的 Docker 特性,如 user namespace,那么还需要更高版本的内核。

  • 使用“--privileged”选项后可以在容器内加载或卸载内核模块,但这个操作会影响到主机和其它容器

  • 无法模拟不同平台的运行环境,例如不能在 x86 系统中启动 arm64 的容器。

  • 因为 Docker 采用了 namespace 的方案来实现隔离,而这种隔离属于软件隔离,安全性不高。不适合安全性高的测试任务。

  • 因为目前没有 time namespace 技术,修改某个容器时间时就不得不影响到主机和其它容器。

03、适用于Docker的测试场景

由于容器与主机共享内核使用,凡是和内核无强相关的测试任务是适合引入 Docker 进行改造的,例如源码编译测试、软件安装测试、互联网应用测试、数据库测试等。而与内核强相关的测试任务是不适合使用 Docker 进行改造的,如内核网络模块测试、内核 namespace 特性测试等。

04、Docker 测试实践

1、容器化编译系统测试:

早期我们将 linux 发行版安装到物理机中进行测试。当需要重新进行全量测试时不得不手动还原测试环境。之后改用了虚拟机,虽然能够通过自动化的方式实现环境还原,但虚拟机的损耗较大,效率不高。

之后我们尝试将环境制作成 Docker 镜像,同时进行了如下的改进:

  • 通过 Docker 的“-v”选项,将主机目录映射到容器中,实现多个容器共享测试代码。测试代码部署时间从 2 分钟减少到 10 秒。

  • 将大粒度的执行时间较长的用例拆分成为若干个小用例。

  • 利用容器并发执行测试。

  • 使用 Dockerfile 梳理产品依赖包和编译软件的安装。

编译系统测试是用户态的测试,非常适合使用 Docker 进行加速。如果需要针对某一个 linux 发行版进行测试,可以通过 Docker 快速部署的特点,将所有的资源快速利用起来,从而达到加速测试执行的目的。

2、linux 外围包测试:

外围包包含动态链接库文件和常用的命令行工具,属于 linux 操作系统的中间层,其上运行着应用程序,其下由 linux 内核支撑。起初的外围包测试采用串行执行,效率不高。同时受到环境污染的影响,容易产生软件缺陷的误报。在改进方面,我们首先通过 Dockerfile 基于 rootfs 制作一个 Docker 镜像,然后通过 Docker-compose 工具实现测试用例的并发执行

3、改进前后的对比

05、通过Docker进行测试加速的原理

Docker 本身并不会直接加速测试执行。在串行执行测试时,在容器中执行测试反而会带来约 5% 左右的性能衰减。但我们可以充分利用 Docker 快速部署、环境共享等特性,同时配合容器云来快速提供所需的测试资源,以应对测试任务的峰值。如果忽略环境部署时间,当每个测试用例粒度无限小并且提供的测试资源无限多时,测试执行所需的时间也就无限小。

技能提升

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

Docker在自动化测试中的实践应用,看了必有提升相关推荐

  1. Docker与自动化测试及其测试实践

    Docker 与自动化测试 对于重复枯燥的手动测试任务,可以考虑将其进行自动化改造.自动化的成本在于自动化程序的编写和维护,而收益在于节省了手动执行用例的时间.简而言之,如果收益大于成本,测试任务就有 ...

  2. 全网最火爆,最详细Docker与自动化测试讲解,看完觉得我又行了

    目录:导读 一.Docker 与自动化测试 二.Docker 的约束 三.适用于 Docker 的测试场景 四.Docker 测试实践 1.容器化编译系统测试 2.linux 外围包测试 五.通过 D ...

  3. 中国电信基于Mesos+Docker的运维自动化在CDN中的实践

    本文讲的是中国电信基于Mesos+Docker的运维自动化在CDN中的实践[编者的话]本次分享将讲解容器技术在CDN系统中的应用,包括应用的容器化,使用Mesos.Marathon.ZooKeeper ...

  4. Docker在英雄联盟游戏中的实践探索(二)

    本文讲的是Docker在英雄联盟游戏中的实践探索(二),[编者的话]这篇博客是Riot的Docker实践系列博客的第二篇,主要内容是:基于Cloudbees镜像创建新的Dockerfile,设置了一个 ...

  5. Docker在英雄联盟游戏中的实践探索(五)

    本文讲的是Docker在英雄联盟游戏中的实践探索(五),[编者的话] 这篇博客是Riot的Docker实践系列博客的第五篇,主要讨论了如何从头创建你的Docker镜像. 在以前的帖子中,我们讲解了如何 ...

  6. Python Appium自动化测试框架 综合实践案例(中)

    Time will tell. 本篇章紧接上一篇继续来分享关于 Appium 自动化测试框架综合实践案例代码.框架所需要的代码实现都已基本完成. data数据封装 1.使用背景 在实际项目过程中,我们 ...

  7. Docker在英雄联盟游戏中的实践探索(四)

    本文讲的是Docker在英雄联盟游戏中的实践探索(四),[编者的话]这篇博客是Riot的Docker实践系列博客的第四篇,主要讨论了如何添加一个基于Nginx的代理容器,以及如何用Compose来管理 ...

  8. Docker在英雄联盟游戏中的实践探索(一)

    本文讲的是Docker在英雄联盟游戏中的实践探索(一), [编者的话]Riot将Docker和Jenkins相结合,以此来构建流水线(Pipeline).这篇博客是Riot实践Docker的系列博客的 ...

  9. 五阿哥钢铁电商平台Docker容器云平台建设实践——你想知道的都在这里!

    前言 五阿哥钢铁电商平台(www.wuage.com)是由钢铁行业第一的中国五矿与互联网第一的阿里巴巴联手打造,并充分运用双方股东优势资源,即:阿里巴巴在大数据.电商运营.互联网产品技术上的巨大优势, ...

最新文章

  1. Windows Mobile 6.0 SDK和中文模拟器下载
  2. MySQL里面的CONNECTION_ID
  3. WPF命中测试示例(一)——坐标点命中测试
  4. c语言中#39;xd#39;代表什么,关于C语言宏定义的技巧:#39;##39;和#39;###39;
  5. A. Boredom【DP】
  6. QT的QLayer类的使用
  7. 基于svm图像分类C语言,基于SVM的图像分类算法与实现.PDF
  8. PotPlayer安装与配置
  9. 计算机教育类会议论文,中国教育和科研网(CERNET)第七届学术会议征集论文通知...
  10. latex表插入的位置不对_VSCode_LaTex_英文amp;中文配置
  11. 大数据_MapperReduce_Hbase的优化_存数据_自动计算分区号 自动计算分区键---Hbase工作笔记0027
  12. 区别对待 【找到问题发生的原因】 以及   【关于这个问题的 「正确可行」 的解决方法】
  13. hadoop 主要配置文件
  14. 命题逻辑——自由之门与死亡之门
  15. Transact-SQL语言类型
  16. 2012考研英语--前辈的高分复习经验
  17. 联想ghost重装系统_史上最全的重装ghost系统错误解决方法大全
  18. python中调用π的值_python如何调用math函数库求π值
  19. 如何持续、正确、安全地把材料性能检测试验做好:“清单革命”读书报告
  20. 11.0、C语言数据结构——栈

热门文章

  1. Typora 是什么?
  2. NPDP知识推送-第七章产品生周期管理(4)
  3. 终端运行npm install @tinymce/tinymce-vue -S报错的解决办法
  4. 【苹果推相册软件】imessage群发arrangesAllSubviews安装
  5. (附源码)springboot 新闻管理系统 毕业设计 211113
  6. virtual box和centos问题杂记(一)
  7. 太赞了!微软《dotnet中文手册》火了,完整PDF开放下载!
  8. 大数据分析的四个关键环节
  9. 企业推广品牌网络营销占比必须重视哪些流程
  10. 作为网络推广从业人员每天的工作内容和日程