专栏名称: 51Testing软件测试网
51Testing软件测试网,人气最旺的软件测试技术门户,提供软件测试社区交流,软件测试博客,人才服务,测试沙龙,测试杂志,测试资料下载等全方位信息服务,是国内最专业的软件测试就业培训、企业服务供应商...
目录
相关文章推荐
51好读  ›  专栏  ›  51Testing软件测试网

测试工程能力容器化改造方案

51Testing软件测试网  · 公众号  · 测试  · 2017-03-20 17:30

正文

请到「今天看啥」查看全文


2.2.源码编译测试容器化

源码编译测试是运行在用户态中的程序,属于CPU密集型的测试任务。其执行测试所需时间与系统资源成反比。容器云是以时间和资源使用量为基准收费的。可以通过Docker快速部署、快速伸缩的特点,在短时间内获取容器云中大量系统资源支撑测试执行以达到测试加速的目的。在测试执行完之后,可快速释放所占资源,减少测试成本。同时可以在Dockerfile中梳理编译依赖包(如gcc)和编译软件的安装,使得环境准备的步骤更加清晰。

2.3.应用层软件测试容器化

应用程序属于最上层的软件,非常适合容器化改造。可参考以下几个方面进行改造。

(1)将Docker和Devops结合起来使用,统一开发、测试、运维环境,打通全流程自动化任务。

(2)利用容器云中Docker可扩展可伸缩的特性加速测试执行或者模拟多个终端用户来进行测试。

Selenium是针对Web应用的自动化测试工具,其支持多种浏览器。通过Selenium可以模拟用户在浏览器中的操作。

Selenium Grid是一个分布式Web测试工具,可以将测试任务分发到多个主机上并行执行测试。Selenium Grid架构中包含两个主要角色:Hub是中心点控制节点,而Node是Selenium的工作节点,它们注册到Hub上,并会操作浏览器执行由Hub下发的自动化测试用例。在传统的部署方式中,一个浏览器在操作系统上只能安装一个版本且只能有一个运行实例。为了针对不同版本的Chrome进行测试,需要将指定版本的Chrome浏览器安装到不同物理机或虚拟机上。这种部署方法耗费资源多,部署时间长。

通过容器云快速伸缩、环境隔离等特性能够快速启动多个容器并行进行不同浏览器版本的测试,可以有效的减少物料消耗和节约测试时间。

(3)利用容器隔离性和快速环境清理的特性,并行执行软件兼容性测试(如安装不同版本的数据库)。

(4)通过容器模拟测试执行需要的外部环境。可将一些典型的测试场景进行容器化处理,将镜像存储到镜像仓库中。可以通过docker-compose以微服务的方式部署这些测试场景,便于其他团队复用已有的测试场景。而微服务化的测试策略已经远超本文的范畴,感兴趣的读者可以阅读[ 《Testing Strategies in a Microservice Architecture》 ]。

(5)如想在容器云中运行与内核相关的应用,可将应用程序进行内核特性解耦,将内核模块对应的部分代码移植到应用程序中。

2.4.中间层软件测试容器化

Linux外围包(通常是rpm或deb包)是操作系统的中间层,绝大部分外围包与内核无强依赖,是适合使用容器云进行加速的。因为在容器云中无法自定义内核,所以与内核相关性强的外围包的测试是不适合使用容器云加速的。对于这类测试,读者可以搭建可定制内核的私有云来实现测试加速。

除此之外,还有两个特例需要说明一下。

(1)grub包:grub是多系统启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。因为与主机启动强相关,所以不适用容器加速。

(2)ntp包:ntp是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议。因为当前内核不支持time namespace,即容器与主机间、容器与容器间不能使用不同的时间(注意是时间不是时区)。而更改容器时间就不得不更改主机时间,这样就无法构建具有不同时间的测试环境。如果使用不同主机中的容器来规避该问题,虽然可以构建对应的测试环境,但又无法有效利用容器快速部署、执行带来的收益,相当于为了使用容器而使用容器,没有实际意义。







请到「今天看啥」查看全文