本周我们的讨论话题有关于容器化:
讨论话题
话题: 容器技术能为测试工作带来哪些好处? 大家工作中有哪些实践经验?
话题描述: Devops 容器化已经成为当前测试工程师的标配技能, 你目前的工作中有没有哪些实践经验? 你觉得为你的测试工作带来了哪些好处? 欢迎大家来沟通交流, 发表你的看法.
本周的讨论话题平台上的小伙伴们都反应有点偏难了, 但是我还是 "抓" 了郑州两家在容器化方面做的不错的公司分享他们的经验.
大家讨论分享的内容
郑州某在线公司 - 韩毅
其实容器技术其最大的威力就是结合流水线来去使用效果比较显著, 那么结合测试人员的具体工作来说, 通过个人经验 + 对公司的相关同事进行定向调研后, 结合使用经验总结出产生的价值主要如下:
从技术前瞻性来说
容器化技术作为云原生四大体系之一已成为国际标准化技术标准, 做为一名合格的测试人员显然对 docker 原理及其常用的命令掌握显得格外重要, 同时也是其个人能力的体现;
从 DevOps 交付流水线来说
我司 DevOps 流水线 CI/CD 能力由原有的依赖虚拟机切换至 k8s+docker 的容器云平台作为依托, 在这一转变过程中:
测试环境的日常搭建与维护效率提升比较明显, 如可以使用集群的公共镜像仓库来一键搭建测试环境, 遇到测试资源不足的情况可以直接一键扩缩容, 不仅提升资源利用率
在项目需要压测时, 也可以根据不同的场景, 快速扩容.
滚动发布的优势: 传统的虚机环境发布模式在测试环境需要发布升级时可能需要进行强制杀掉进程, 停止服务后再进行测试, 除非是有多个节点并行测试, 容器化下可以实现服务滚动升级, 在不停服下一遍发布一遍测试, 避免尴尬的 hard wait;
最主要一点就是能够通过流水线的容器化发布能够实现一次构建, 多次部署, 既解决了因环境不一直导致问题的出现, 更主要是可以解决了不同环境的流水线都需要重复进行 CI 造成的时间和资源消耗, 提升整体项目的交付效率;
~ 以上为个人的拙见, 希望能够抛砖引玉! 谢谢!
郑州某银行 - 王伟亮
容器技术对测试的好处, 个人总结如下:
提升测试环境的稳定性. 未使用容器, 测试人员经常遇到的一个问题是, XX 系统又访问不了了. 需要测试人员将问题反馈给开发或者环境管理人员进行问题定位和环境维护, 环境稳定性得不到保障. 使用容器后, 容器的健康检查机制, 实时监控系统服务状态, 发现异常服务, 容器平台会按照规划好的处理机制进行自维护, 前端测试人员是无感知的, 提升了测试环境的稳定性. 除了健康检查机制以外, 容器的弹性扩容, 解决了因服务器资源不足引起的测试卡顿问题, 在性能方面保障了测试环境的稳定性.
提供隔离测试环境. 测试人员应该遇到过这样的问题, 举例: 在 A 环境的前台系统测试了一段时间, 发现做的交易都发往了 B 环境的后台系统, 导致测试无效. 原因可能是前台系统的配置文件错误导致. 容器的租户使用了 namespace(命名空间), 即同一租户下网络相通, 不同租户间网络是隔离的. 如果按环境维度划分租户, 即可杜绝上面的问题发生. 即使配置文件配置错误, 在服务启动或者做第一笔交易的时候就会报错, 因为 A,B 环境的网络是不通的, 而不会在测试一段时间后, 才发现环境配置错误, 容器可以保障各个测试环境的独立性.
消除环境差异. 测试人员经常遇到的一个问题, 测试发现一个 bug 提给开发, 开发拒绝, 原因可能是环境问题, 同样的代码版本, 该 bug 在 A 环境下可以复现, 在 B 环境不能复现. 因为部署版本中不包含基础环境, 有可能是 2 套环境的软件版本或者环境变量不一致导致. 容器解决了环境差异, 因为容器部署的对象不是代码版本而是镜像, 镜像中不仅包含代码版本, 还包含了系统运行所需的基础环境, 使用同样的镜像版本进行测试, 不会存在环境不一致的情况. 容器消除了环境差异, 降低了环境类 bug.
提升测试环境交付速率. 在测试环境搭建方面, 容器比传统物理机或者虚拟机上搭建环境速率更快. 1 个系统手工搭建测试环境可能需要 1-2 天, 容器搭建 1h 左右即可完成; 在版本同步方面, 因为容器采用 "一次构建多次部署", 所以节省了应用构建时间. 大大提升了测试环境交付速率, 节省了测试人员的等待时间.
江苏某公司自动化测试工程师 - 武韬
在之前搞 cicd 的时候, 基本所有的工程都用到了 docker, 好处主要有以下几点:
环境隔离, 不同的任务运行在不同的容器中, 互不干扰.
多样化, docker 能提供不同的操作系统镜像, 无需使用多台不同系统的机器, 降低了使用成本.
方便移植, 直接把容器打包带走, 或者放到镜像仓库, 后面重新部署的时候就可以开箱即用.
便于管理, 使用 k8s 或者 docker swarm 能够很轻松的编排容器, 快速搭建环境或者执行任务.
某公司测试工程师 - 吕俊杰
好处是可以接近完美的做到环境隔离和方便部署, 弊端是维护成本和硬件成本以及外部依赖处理起来比较麻烦.
我的观点
我对容器化的理解还停留在对 docker 的简单实用上, 所以上面大家提到的: 环境隔离等我没有实际的经验可以分享, 不过最近我正好在搞 selenium grid, 我觉得用 docker 去搭建 hub 和 node 真是相当方便, 直接拉取镜像, 然后运行镜像就能将 selenium grid 搭建起来, 所以从这个角度看, 容器化能够提升我们的工作效率.
另外是结合我们公司目前的服务端上线方式, 通常将跟环境有关的配置和镜像分离开, 这样的好处是上面大家提到的: 一次编译, 多次部署. 比如: 然后我们在验证 rc 环境功能时, 构建一次, 验证通过, 真正上线时就直接用之前构建好的镜像就可以了.
总结
容器化应该变成每个工程师必备技能, 只有熟悉起来, 才能在平时的工作中寻找更多的场景. 我后面为大家整理容器化相关知识点, 比如: docker 的使用 / 原理, 如何环境隔离等.
做个小小的宣传: 每周一个测试行业话题, 在微信圈子 (测试开发进阶训练营), 知识星球(测试开发技术圈) 欢迎大家加入进来进行讨论. 一起成长, 一起进步!
来源: https://www.cnblogs.com/zhouliweiblog/p/12450437.html