• 10
  • 10
分享
  • 软件测试人员为什么需要Docker?——软件测试圈
  • 恬恬圈 2022-03-29 13:45:25 字数 3031 阅读 1624 收藏 10

前言

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

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

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

便捷的迁移扩展

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

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

RF Tool C++环境问题说明

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

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

厘清过程说明

Tool运行环境:

图片 1.png

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,并彼此隔离。

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

图片 2.png

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

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

图片 3.png

图片 4.png

图片 5.png

总结

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

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


作者:Atstudy网校

原文链接:https://www.toutiao.com/article/7054466416631677454/?log_from=abf82da858517_1646895188080

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   测试用例方法  1.等价类设计测试用例  具体步骤:  1)明确需求  2)划分有效和无效等价类  ·有效等价类:满足需求的  · 无效等价类:不满足需求的     -规则     - 长度     - 类型     - 是否为空     - 是否重复  3)设计测试用例  · 典型应用场景:输入框  2.边界值设计测试用例  定义:是等价类的一种补充,对输入或输出的边界进行测试的一种黑盒测试方法。  上点:边界上的点。  内点:边...
            0 0 1505
            分享
          •   当地时间上周六,埃隆·马斯克表示,受广告收入下降近50%和沉重的债务负担影响,推特现金流仍然为负,未达到他3月份做出的“推特将在6月份实现现金流为正”的预期。  马斯克在推文中回复有关资本重组的建议时说:“我们需要先做到现金流为正,然后才能奢侈地做其他事情。”  周日,马斯克在另一条推文中说,推特未达到6月份预期的广告收入增长,他补充说,“7月份比较有希望。”马斯克说,推特Spaces音频聊天室还尚未产生收入,现在全是成本。  这些迹象表明,自马斯克去年10月收购推特以来采取的激进成本削减措施不足以让推特实现现金流回正;今年4月份马斯克表示大多数广告商已经回到了推特平台,但是推特的广告收入...
            0 0 1309
            分享
          •   据报道,针对美国政府起诉微软690亿美元收购动视暴雪交易,法官将于1月3日举行首次审前听证会。  去年1月,微软宣布将以每股95美元的现金,收购游戏开发和互动娱乐内容发行商动视暴雪,交易总金额约为690亿美元。交易完成后,微软将成为世界上营收第三高的游戏公司,仅次于腾讯和索尼。  上个月,负责反垄断执法的美国联邦贸易委员会(FTC)要求法官阻止这笔交易,理由是交易将使微软的Xbox游戏平台获得动视暴的独家内容,从而导致竞争对手任天堂和索尼的游戏平台被冷落。  而微软则反驳称,这笔交易将使游戏玩家和其他游戏公司从中受益。同时,微软还承诺,至少在10年内继续向索尼等竞争对手提供《使命召唤》游戏...
            0 0 974
            分享
          • 前言:性能压测中我们需要明白以下几点1、好的开始是成功的一半,前期的准备非常重要2、过程中,关注每个细节,多个维度监控3、在调优中多积累经验4、对结果负责,测试报告要清晰易懂,追求数据的准确性一、如何分析性能数据(测试结果)答:主要从吞吐量,错误率,资源监控数据,比如一个接口的处理能力为100个/s,高于需求的期望值。错误率为0.001%,期望值为0.01%,最高cpu占用率不超70%。以上指标都符合期待值,那么通过提取这些关键数据就可以记录下来,作为测试的准出标准二、如何快速定位到性能阈值eg:每秒处理事务数达到最理想的值,有没有什么技巧?答:对于一个新的压测单元,建议先设置一个线程数较小的...
            0 0 1961
            分享
          • 10月宠粉福利即将结束,填问卷马上参与。不仅能免费获得测试资料,还能参与抽奖活动,京东卡、测试书籍不容错过。链接:http://vote.51testing.com/  APP兼容性测试维度包含:新旧版本兼容测试、不同机型测试(系统兼容性、屏幕兼容性、分辨率兼容、尺寸兼容)、不同网络兼容,具体如下:  一、新旧版本兼容性测试  新旧版本覆盖安装升级正常  新增功能,新旧版本覆盖安装后使用正常  二、不同机型测试  1.系统兼容性  iOS系统:iOS11.x、iOS12.x、iOS13.x、iOS14.x  Android系统:Android5.x、Android6.x、Android7.x、...
            0 0 2020
            分享
      • 51testing软件测试圈微信