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

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

前言



严格来讲,测试开发也属于开发的一种,只是输出的产品和服务的用户群不同罢了,我所在的部门主要负责通过技术手段提高部门内业务测试和开发同学的工作效率来达到保障产品质量的目的。最近一两年我主要负责部门内自动化能力和专项测试体系的建设,在这过程中接触到了很多其他的技术栈,比如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来管理和维护镜像,这样可以统一又清晰地管理整个开源项目。

相关文章
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
531 4
|
11月前
|
Web App开发 人工智能 JavaScript
主流自动化测试框架的技术解析与实战指南
本内容深入解析主流测试框架Playwright、Selenium与Cypress的核心架构与适用场景,对比其在SPA测试、CI/CD、跨浏览器兼容性等方面的表现。同时探讨Playwright在AI增强测试、录制回放、企业部署等领域的实战优势,以及Selenium在老旧系统和IE兼容性中的坚守场景。结合六大典型场景,提供技术选型决策指南,并展望AI赋能下的未来测试体系。
|
存储 容器
46.[HarmonyOS NEXT RelativeContainer案例三] 打造自适应容器:内容驱动的智能尺寸调整技术
在HarmonyOS NEXT的UI开发中,创建能够根据内容自动调整尺寸的容器是实现灵活布局的关键。RelativeContainer结合自适应尺寸设置,可以实现内容驱动的智能尺寸调整,使UI更加灵活且易于维护。本教程将详细讲解如何创建自适应尺寸的RelativeContainer,帮助你掌握这一实用技术。
378 5
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
691 59
|
10月前
|
人工智能 Java 测试技术
单元测试覆盖率的自动控制技术
Jacoco是Java程序覆盖率工具,可以在pom.xml通过配置来自动控制程序的覆盖率
221 5
|
11月前
|
人工智能 资源调度 jenkins
精准化回归测试:大厂实践与技术落地解析
在高频迭代时代,全量回归测试成本高、效率低,常导致关键 bug 漏测。精准化测试通过代码变更影响分析,智能筛选高价值用例,显著提升测试效率与缺陷捕获率,实现降本增效。已被阿里、京东、腾讯等大厂成功落地,成为质量保障的新趋势。
|
11月前
|
Kubernetes Cloud Native 持续交付
Docker:轻量级容器化技术解析
Docker:轻量级容器化技术解析
|
11月前
|
运维 测试技术 Docker
Docker:轻量级容器化技术革命
Docker:轻量级容器化技术革命
|
弹性计算 Java Maven
从代码到容器:Cloud Native Buildpacks技术解析
Cloud Native Buildpacks(CNB)是一种标准化、云原生的容器镜像构建系统,旨在消除手动编写Dockerfile,提供可重复、安全且高效的构建流程。它通过分层策略生成符合OCI标准的镜像,实现应用与基础镜像解耦,并自动化依赖管理和更新。阿里云应用管理支持通过CNB技术一键部署应用至ECS,简化构建和运行流程。
|
存储 虚拟化 Docker