软件测试人员为什么需要Docker?

前言

2021年的开始,女巫也在规划这一年的系列文章,根据近期的工作,决定开启我的容器化系列。

容器化这个词,对于互联网公司的运维人员来说是非常熟悉的。但我们测试开发的兄弟姐妹可能会有疑问:这个与测试有什么关系?其实不是有关系,而是回归到我们平时工作中遇到的困难,以及对于这些困难,我们提供了什么解决方案。

​不管从事开发工作也好,测试工作也罢,如果懂得容器化会对自己的工作有很大的增益。工欲善其事必先利其器,容器化(Docker)不管对于开发者来说,还是测试人员来说都是一把利器。

比较重要的一点是可以帮忙公司降低cost,这对于老板们来说是非常有说服力的,以下给大家举两个例子,说明一下Docker的用处,都是女巫工作中遇到的典型案例,当然这远远不能全面说明Docker的好处,但是已经很能说明问题。

便捷的迁移扩展

由于Docker确保了执行环境的一致性,使得应用的迁移更加容易,用户可以很轻易地将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。

以下是真实的范例(RF Tool C++环境问题)说明确保执行环境一致性是多么重要(血泪史:理清执行环境的一致性花了1.5天/2人的时间)。

RF Tool C++环境问题说明

开发时间已经超过4年的工具(C++开发),突然被告知"完全无法使用",该怎么办?

首先对于Tool的品质有最起码的自信:不至于说完全无法使用,所以怀疑的焦点就是这个Tool的运行环境问题。最后厘清是excel版本的问题。

厘清过程说明

Tool运行环境:

​Tool运行结果

使用者电脑:

当使用默认安装的NI软体,且在仪器和DUT均未连接的情况下,运行FCC test case时出现"Run time error";

当两个NI软体在卸载后重新安装,且将subitem全部选中后,且在仪器和DUT均未连接的情况下,运行FCC Test case时不会出现"Run time error",会出现"RF Tool已经停止运作(由于发生问题,导致程序停止正常运作,请关闭程式)"。

开发电脑:

使用RF RD 4台电脑 (windows 7且已经默认安装RF工作所需要的各种软件),且在仪器和DUT均未连接的情况下,运行FCC test case时,不会出现任何错误。

使用开发者一台windows 7的电脑,没有安装任何RF Tool所需要的软件,安装NI4882_170F0后,运行FCC Test case时,不会出现任何错误。

问题总结

相同的RF Tool版本,在上述不同的环境下,就会有不同的运行结果,就需要一一厘清,这些环境的差异,耗费很多时间。

那为什么Docker为什么可以解决这些问题呢?

本质

Docker容器将一个软件包装在一个完整的文件系统中,该文件系统包含运行所需的一切:代码、运行时、系统工具、系统库,可以安装在服务器上的任何东西。这保证了无论其环境如何,该软件将始终运行相同的软件。默认情况下,容器将应用程序与基础架构相互隔离,同时为应用程序提供了额外的保护。

Docker是以Linux为其原生开发,所以在大部份的Linux系統上都可以安裝。但是Docker是在2013年发行初始版本,这意味着若是要建构Docker开发平台,建议以较新的Linux系统为优先考量。

RF Tool C++环境问题的畅想

最终厘清的结果是:在更换了数个电脑,重装了多次环境后,想到是不是Excel版本的问题。

因为南京办公室为了cost down,让大家默认使用wps,没有让大家随着系统更新office,所以南京同事的电脑上的Excel都是非常旧的excel2007,而公司总部没有这个政策,总部同事的电脑都是很新的excel,例如Excel2017。

就是这个差异造成两边完全不一样的运行结果~

假如上述的C++的程序可以使用container的方式提供给使用者,就不需要做上述痛苦而漫长的厘清工具的"执行环境问题"。

Docker技术建立的container就可以保证无论是在什么环境(包括excel版本),该软件始终在相同环境下运行相同的软件(即使在不同的OS环境下也可以做到这样)。

高效的资源利用

Docker不仅可以保证测试和开发环境一致性,而且它具备高效资源利用的特点,接下来用一个生动的实际工作中的例子来给大家讲解。

搭建不同的开发环境

假如开发者根据客户需求,需要搭建各种开发OS如何用最便宜的方式构建?

如果不同OS的需求都是用真实的电脑来解决:太不靠谱,老板会疯掉,看一下这个实际范例,看看Docker到底可以为我们解决什么问题~

虚拟机解决OS兼容性的实例范例

来自客户的需求是希望在Amazon Web Services (AWS)上用Ubuntu 20.04 开发一套软件APP,而他平常惯用的电脑是Windows系统(或者是Mac OS)。

难不成要去买一台新的电脑,然后安装Ubuntu操作系统来开发项目?又或者有更简单的方法,就是直接在他的Windows系统上安裝虚拟主机(Virtual Machine),有了虚拟化的技术,软件兼容性变得不再是文图。

假若我们又接了新的项目,这次是帮客户修改既有的软件,他看了看操作系统版本,环境是Ubuntu 16.04,虽然还是Ubuntu系统,但在20.04的软件竟然无法在16.04上编译。

开发者花费了大量工夫,才发现原来一些函数库在新版的20.04上已更新并不支援旧版,于是他花了一周末重新编译所需的函数库,花了这么多时间,却还没开始开发项目,所以知道下次遇到这种情形,直接安装虚拟主机Ubuntu 16.04是最快的方法。

事业越做越大后的解决方案只能是Docker

随着事业越做越大,开发者的电脑里有着各式各样不同的虚拟操作系统:Debian、Ubuntu、CentOS......等等几十几套不同版本的开发环境,很显然他必须要去买一个新的硬盘来存放这些虚拟环境。

而且遇到一个困难点,若要同时执行多个虚拟主机显然会降低系统效能,难不成要再买一台新电脑吗?一台电脑最多可以执行十台虚拟主机就已经很勉强了。

如果有人告诉小明,有一个新的虚拟技术,可以在一台主机上同时执行数百个不同的虚拟应用程式,而且彼此完全隔离,不就解决了现有的难题吗?

传统的虚拟主机技术是利用硬件的功能来模拟,而这套轻量的虚拟技术,一般习惯將它称之为容器(Container),则是套透过操作系统(Linux为其原生),建立多个虚拟的实例(instances),有独立的函数库及独立的shell,并彼此隔离。

以下就以容器与虚拟主机作一个对照表:

​为什么Docker可以做到这样高效利用资源

用三张图给大家做一个生动的解释,它的设计原理就是胶囊式公寓的概念,即它使用物理机的资源是非常非常有限的!

​总结

从我们自己工作中遇到的血淋淋的例子,以及我们在实际工作遇到的多系统环境的开发维护,就能了解:容器化真的是开发的趋势,它对于后续使用者在部署环境时,达到“一键式部署”,不需要厘清环境差异,大大提高工作效率。

对于多系统的开发以及测试,也可以使用容器化的思维,大大降低企业运行的成本:一台电脑可以运行数千个相互隔离的容器,而不是傻傻地买数千个电脑,所以还会问:容器化只是运维人员要顾的技术吗?

加油!2021年是测试女巫的容器化之年,大家跟随我,一起进入容器化的美妙世界!

最后:

可以我的个人V:atstudy-js,可以免费领取一份10G软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Mysql数据库、抓包工具、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试等。

这些测试资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

敲字不易,如果此文章对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值