【测试女巫Docker系列】测试人员为什么需要Docker?

发表于:2021-5-13 09:22

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:王平平    来源:51Testing软件测试网原创

#
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年是测试女巫的容器化之年,大家跟随我,一起进入容器化的美妙世界!



版权声明:本文出自《51测试天地》第六十一期。51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号