出品方:Atstudy网校

网友小Q的提问:

我最近准备去面试测试开发工程师岗位,岗位要求中提到需要熟悉“Devops方法论”,会使用相关工具链及部署Docker、Jenkins等”,我想知道面试官会提些什么问题?我又该如何回答呢?

Atstudy网校小A的回答:

DevOps是一种软件开发的解决方案,涉及软件在整个开发生命周期中的持续开发,持续测试,持续集成,持续部署和持续监控。

DevOps 适合“软件即服务(SaaS)”或“平台即服务(PaaS)”这样的应用领域,其最显著的特征就是:

打通用户、PMO、需求、设计、开发(Dev)、测试、运维(Ops)等各上下游部门或不同角色;

打通业务、架构、代码、测试、部署、监控、安全、性能等各领域工具链;

DevOps是一个自动化过程,允许快速,安全和高质量的软件开发和发布,它可以提高客户满意度,这就是为什么前沿互联网公司及中大规模企业选择DevOps作为其业务目标的前进方向的原因, 同时也是当前及未来整个IT行业大趋势下的主流解决方案,无论你以什么角色出现在项目团队中,Devops必须是你知识储备锦囊中不可或缺的点金石。

面试官通常在面试中会问到以下几个问题,供参考。

问题1:谈谈您对DevOps和持续交付的理解。

DevOps 是旨在打破开发团队与运维团队之间的壁垒的一次尝试。

通常来说 DevOps 与持续交付实践是一回事,因为在我们进行软件交付时,这两者是紧密关联的。

不过,有一种关键的实践会巩固 CD 流程,即部署管道。

它的作用不仅仅体现在通过某个 CI 服务器对每次代码变更重新构建并测试你的应用,部署管道是整个交付流程的一个模型,包含了从提交到投入生产环境的全部过程。

问题2:如何从工程角度来保证UI自动化测试的落地实施。

使用适合的设计模式编写测试脚本;

引入爬虫策略,执行UI自动化测试前先对比变动范围并更新元素信息;(对UI自动化测试来说,元素信息的变更非常频繁这个因素是我们实施UI自动化测试最头痛的因素,那么我们就可以引入爬虫策略来减少UI变动频繁带来的烦恼。具体策略是:先执行爬虫,将我们UI自动化测试脚本中所用到的元素信息全部更新成最新的,这样,在我们执行UI自动化测试脚本时就可以节省很多时就来规避因为UI层元素信息变更带来的大量的测试脚本维护工作了)

同时使用多机并行策略,减少UI自动化执行的耗时。

问题3:您所了解的持续交付流水线是怎样的?

开发提交代码到远程仓库;触发持续交付中的构建(拉取代码并编译);

更新测试环境;执行自动化测试;生成测试报告;推送构建消息。

问题4:白盒测试策略有哪些?

代码走查,静态代码扫描,单元测试。

问题5:您了解的Java编译工具有哪些?它们的优缺点是什么?

常用的Java的编译工具有Ant,Maven,Gradle。

它们的区别是:

Ant是第一个“现代”构建工具,在很多方面它有些像Make。2000年发布,在很短时间内成为Java项目上最流行的构建工具。它主要的不足是用XML作为脚本编写格式,大型项目中配置信息很多,这种方式很难维护。

Maven则是使用POM项目对象模型来管理项目配置,这样一来配置文件就会相对简洁,并且配置文件的复用性非常好。另外,Maven有3个独立的生命周期,在任何一个生命中执行构建目标,该生命周期阶段的之前所有阶段都会被执行,非常便于我们的编译构建。

Gradle结合了前ant和maven的优点,它具有Ant的强大和灵活,又有Maven的生命周期管理且易于使用。

Gradle不用XML作为配置文件,它使用基于Groovy的专门的DSL(Domain-Specific Language领域特定语言)来作为配置文件,从而使Gradle的构建脚本非常简洁清晰。

问题6:聊聊您对Svn和Git的理解。

SVN是集中化版本管理工具的代表,它要解决的问题是:如何让在不同系统上的开发者协同工作。 SVN的工作原理是:有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。

Git是分布式管理工具,它要解决的问题是:集中化版本控制的不足。 Git的工作原理是:客户端把代码仓库完整地镜像下来,这样一来,每一次的拉取操作,实际上都是一次对代码仓库的完整备份,就不存在中央仓库的概念了,因为任何一个客户端的镜像都和远程仓库一样。

想知道这些面试问题的完整回答吗?扫码添加小姐姐微信:sy51testing,备注DevOps”,即可获取。

感谢Atstudy网校 热销课程《DevOps多维场景工具链实战》晴空老师的大力支持

《DevOps多维场景工具链实战》http://www.atstudy.com/course/1625