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

本文涉及的产品
容器镜像服务 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来管理和维护镜像,这样可以统一又清晰地管理整个开源项目。

相关文章
|
2月前
|
Java Go 开发者
Docker容器技术简介及其与Go语言的结合点
【2月更文挑战第23天】本文首先概述了Docker容器技术的核心概念和优势,接着探讨了Go语言与Docker容器技术的结合点。通过阐述Docker的轻量级、可移植性和版本控制等特性,以及Go语言在容器化应用中的优势,本文旨在说明两者结合能够实现更高效、灵活的应用开发和部署。
|
2月前
|
Kubernetes 开发者 Docker
基于容器技术的微服务架构
基于容器技术的微服务架构
33 0
|
2月前
|
安全 测试技术
现代软件测试中的自动化技术应用及挑战
在当今数字化时代,软件测试的重要性日益凸显。本文探讨了现代软件测试中自动化技术的应用现状和挑战,分析了自动化测试在提高效率、降低成本、增强可靠性等方面的优势,同时也提出了自动化测试所面临的挑战和解决方案。
|
3天前
|
Cloud Native Linux 开发者
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
|
1天前
|
Linux Shell 虚拟化
【Linux学习】Linux 的虚拟化和容器化技术
【Linux学习】Linux 的虚拟化和容器化技术
|
1天前
|
机器学习/深度学习 人工智能 算法
深入分析自动化测试中AI驱动的测试用例生成技术
【4月更文挑战第29天】随着人工智能技术的不断发展,其在软件测试领域的应用也越来越广泛。本文主要探讨了AI驱动的测试用例生成技术在自动化测试中的应用,以及其对提高测试效率和质量的影响。通过对现有技术的深入分析和实例演示,我们展示了AI如何通过学习和理解软件行为来自动生成有效的测试用例,从而减少人工编写测试用例的工作量,提高测试覆盖率,降低错误检测的成本。
|
5天前
|
测试技术 数据库 UED
【白盒测试】单元测试的理论基础及用例设计技术(6种)详解
【白盒测试】单元测试的理论基础及用例设计技术(6种)详解
11 1
|
6天前
|
运维 Kubernetes Docker
这是一项颠覆性技术 - 容器
这是一项颠覆性技术 - 容器
|
6天前
|
资源调度 JavaScript 测试技术
Vue的集成测试:使用VueTestUtils进行单元测试的技术博文
【4月更文挑战第24天】本文介绍了如何使用VueTestUtils进行Vue.js项目的集成测试。首先,需安装VueTestUtils和vue-template-compiler。接着,展示了如何编写测试用例,包括使用`mount`和`shallowMount`方法挂载组件,以及通过`wrapper`操作和断言组件行为。文章还讨论了单元测试与集成测试的区别,并提到了模拟依赖、交互、组件状态管理和断言的策略。最后,强调了测试的可读性和可维护性对代码质量的重要性。通过VueTestUtils,开发者能更高效地进行Vue组件的测试。
|
15天前
|
运维 Kubernetes Devops
构建高效自动化运维体系:DevOps与容器技术融合实践
【4月更文挑战第15天】 在当今快速发展的信息技术时代,传统的IT运维模式已难以满足业务敏捷性的需求。本文旨在探讨如何通过整合DevOps理念和容器技术来构建一个高效的自动化运维体系。文章将详细阐述DevOps的核心原则、容器技术的基础知识,以及两者结合的优势。此外,文中还将分享一系列实践经验,包括持续集成/持续部署(CI/CD)流程的搭建、微服务架构的应用,以及监控和日志管理策略的优化,以期帮助企业实现快速、可靠且安全的软件交付过程。