测试开发人员该如何看待容器技术

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 测试开发人员该如何看待容器技术

前言



严格来讲,测试开发也属于开发的一种,只是输出的产品和服务的用户群不同罢了,我所在的部门主要负责通过技术手段提高部门内业务测试和开发同学的工作效率来达到保障产品质量的目的。最近一两年我主要负责部门内自动化能力和专项测试体系的建设,在这过程中接触到了很多其他的技术栈,比如Devops、后端&前端框架、CI、CD、Python、iOS(PS:之前我是做Android开发的)等。


其实,我在实践过程中发现,合理应用容器技术,不仅能提升开发效率,而且还能提升技术水平。


快速上手新技术



众所周知,新技术的学习往往从学习简单示例(例如Hello World)开始,这是学习新知识的标准思路:最小系统原则,即从变量最少的最小系统开始,循序渐进地学习。


现实生活中,简单的事物背后往往蕴含着复杂的机制。用户在构建最小系统的时候,首先面对的就是环境(或者说前置条件)的搭建。虽然随着程序语言自身的发展,周边工具越来越多,但学习成本仍然居高不下,各大技术论坛中关于环境安装的问题总是层出不穷。


就拿专项测试中的耗电量测试来说吧,这块领域目前还比较空白,在《APP耗电量测试白皮书》这篇文章中提到的battery-historian是我调研各种方案的过程中发现作为分析工具口碑比较不错的一个,考虑到希望快速验证测试分析效果,不想在配置环境上花费太多时间,于是通过docker的方式在本地服务器上快速部署好了一个耗电量测试平台:

docker run --restart=always -d -p 9999:9999 bhaavan/battery-historian

image.png


通过Docker的使用,用户可以将精力和注意力都尽快地放在语言本身的学习上,而无须折腾系统环境的各种配置。Docker官网的口号就包含了以上含义:Build,Ship and Run Any App,Anywhere,即“任何应用都可以自动构建、发布、运行于任何环境”,将环境的影响因素降至最低,全面掌控应用整个生命周期。


面向业务开发



最近几年,各种新的技术和工具层出不穷,虽然万变不离其宗,但能快速掌握新的业务需求和新的技术栈,对一个优秀技术人员来说非常重要。


例如,在自动化测试系统中需要集中管理被测应用,对外提供包下载服务,这时需要部署一个Nginx服务作为静态文件服务器,因为官方的Nginx镜像mime类型不支持应用下载,所以我去Docker Hub搜索到Nginx官方镜像,根据自身业务需求修改Dockerfile定制了符合要求的镜像,然后快速部署启动:

docker run -d -p 8899:80 --name webserver -v /Users/mafei/Downloads:/usr/share/nginx/html/ logan62334/nginx


可见,容器技术可以帮助我们更加专注地面向业务需求,快速启用新技能。


降低运维成本



还是拿之前文章《终端自动化测试探索之路》中提到的自动化测试平台来说,其中涉及了Jenkins环境、Android&iOS编译环境、Python环境、Nodejs环境等,因为我们的自动化服务器集群有3~5台机器,如果每台都去配置这些环境成本有点高,而且一旦出现升级版本之类的情况运维成本也会比较高,而通过容器技术可以有效改善这些痛点,参考上篇文章《利用Docker+Jenkins+Pipeline完成Android自动化测试打包服务》。


提高开发工作效率



经常整理和收集常用代码库是软件工程师实现高效交付的“秘诀”。


在技术团队中,为何行业新人和资深工程师之间的生产力可以有几十倍的差距呢?暂且不论基础技能和经验的差距,同样是做一件任务,新人首先面对的就是工具的选型,然后需要解决工程实践中的各种“坑”。而资深工程师接手后,可以快速规划所需要的资源,并在最短时间内利用积累的模块搭建起系统,从而可以快速完成任务。


目前Docker官方支持的编程语言镜像已达几十种,涵盖所有的主流编程语言的开发环境。除此之外,常用数据库、缓存系统、主流Web框架等都有官方的镜像,另外,Docker Hub还提供了丰富的第三方镜像。


比如想要通过Flask+MongoDB来快速部署一个Web服务,完全可以用Docker Compose编排功能将Python、Flask、MongoDB等镜像组合起来,就可以快速搭建起一个完整的Web服务。


使用Docker Hub发布开源项目



技术人员从社区借鉴和学习各种好用的工具和技能时,也需要积极反馈社区,共同营造一个良好的生态环境。


读者如果参与开源项目的建设,那么可以通过Docker完成程序的打包、测试、发布和部署,通过Docker Hub来管理和维护镜像,这样可以统一又清晰地管理整个开源项目。

相关文章
|
8天前
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
25 4
|
7天前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
12天前
|
开发框架 安全 开发者
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。本文探讨了 Docker 在多平台应用构建与部署中的作用,包括环境一致性、依赖管理、快速构建等优势,以及部署流程和注意事项,展示了 Docker 如何简化开发与部署过程,提高效率和可移植性。
34 4
|
12天前
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
34 3
|
14天前
|
运维 Kubernetes Docker
深入理解容器化技术:Docker与Kubernetes的协同工作
深入理解容器化技术:Docker与Kubernetes的协同工作
36 1
|
14天前
|
运维 Kubernetes Docker
深入理解容器化技术及其在微服务架构中的应用
深入理解容器化技术及其在微服务架构中的应用
31 1
|
15天前
|
安全 持续交付 Docker
深入理解并实践容器化技术——Docker 深度解析
深入理解并实践容器化技术——Docker 深度解析
34 2
|
16天前
|
持续交付 开发者 Docker
探索容器化技术Docker及其在现代软件开发中的应用
探索容器化技术Docker及其在现代软件开发中的应用
|
16天前
|
持续交付 开发者 Docker
探索容器化技术Docker及其在现代软件开发中的应用
探索容器化技术Docker及其在现代软件开发中的应用
|
22天前
|
Cloud Native 云计算 Docker
云原生技术的崛起:从容器化到微服务架构
云原生技术的崛起:从容器化到微服务架构