测试开发成长学习路线--如何做一个DevOps流水线上的开发测试

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011541946/article/details/82943431

大家知道,测试开发或者开发测试范围很大,一个人的精力和你当前的项目经历,决定了你属于某一个领域的具体的测试开发的工作。在这里,我不纠结测试开发和开发测试有何不同,有一个叫法罢了。今天这里要讨论的是如何在DevOps流水线上做一个比较合格的测试开发工程师。实话讲,我只有三个月的DevOps环境下测试开发的工作经历,这篇文章,只是我个人角度的一个总结,主要告诉那些想做DevOps产品线下的测试开发的同学一个入门方式或者一个学习路线。不一定都对,不一定是好的,自己看看就好。有兴趣的可以交流下,我也一直在努力转型,学习如何适应做好一个这样的角色。

1. DevOps是文化也是趋势

DevOps已经在敏捷软件开发模式上进行了升级,当前各大公司都在使用这种软件交互的文化或者技术。什么是DevOps,这里不讨论,我博客有一个DevOps基础扫盲的系列文章,快速读一下,就有一个概念。DevOps可以分成两大部分,CI和CD,也就是持续集成和持续交付,可以说CD包含CI。DevOps单词是开发和运维组成的,但是当前它已经形成一种软件开发和交付的文化,传统软件开发就包括开发 测试 和运维,在DevOps依然离不开测试。这篇我就站在一个测试角度上,如何融入到DevOps中去。可以说,在DevOps中想要做测试,应该技术上需要很多要求,主要体现到代码基本功上面。当前DevOps已经很热,所以,不管是测试还是开发还是运维,都需要往DevOps靠拢,你的职业发展之路才能尽可能延长。

2. DevOps中一个测试开发的标准的技术栈

上面说了DevOps简单划分为两部分,CI和CD。我们这主要讨论CI,因为CI是CD的必要前提。CI就是持续集成的意思,集成测试,大家都熟悉,这里CI是不光指测试,包括开发,软件和各种服务的集成。用我三个月项目的经历,来描绘下,一个CI开发测试工程师的涉及的技术栈。

我们知道,传统的软件工程师技术栈有代码,数据库,Linux等。在CI中,数据库这个我不想放进去,这个看项目,有项目需要用到数据库,那么就要走掌握数据库基本操作,有项目不需要,这个数据库不是必要技能。

2.1 编程语言

因为要持续集成,任何东西都需要代码串联起来,进行自动化。编程语言是最重要的基石,没有代码能力,就不会来讨论测试开发了。三个月,我用过Java, python, groovy, perl, shell, 我这么写排序顺序,说明使用编程语言的频率。第一个,很多人会关关心的问题,选择Java还是python,我的答案是,都可以,因为,到后面,你都逃脱不了,你都要学习和使用它们。

下面,我写三个语言(Java python groovy)打印hello word的代码。

//java print hello world

public static void main(String, args[]) {
    println "Hello World!";
}
# python 3
print "Hello World!"

# python 2
print ("Hello World!")
// groovy
println "Hello World!"

有人看了前面Python和Java的代码,果断选择了Python,原因是Python简单,那么,你看完了groovy的代码,还是这么坚定选择python吗。我计划,打算学一个Groovy的学习笔记系列。要学习Groovy,先要去学习Java,这个是必须的。

2.2 Linux掌握

这里Linux包含Linux操作系统基本操作和简单管理,肯定不是那种图形界面的Linux。最简单的,shell的常用命令,这些在我们手动debug的时候,和查看日志都是用得到的。第二个Linux层次,需要学习shell 编程,shell也是可以编程完成复杂的任务,做成自动化。举例更具体的代码中需要用到的linux知识,用代码完成,ssh登陆机器,拷贝文件,替换文件内容,如何把日志写入到文件等等。

2.3 工具链的使用能力

我们一直在说CI,CI工具链有很多强大的工具,可以辅助我们完成一些任务。第一个我想说的就是Jenkins平台,Jenkins是Java语言开发的一个CI构建服务器平台。市场上有很多CI工具,Jenkins就是那个最流行的工具,10家公司有九个半选择Jenkins,因为他开源,免费获取,还有就是强大的插件支持。这个我博客有Jenkins基础部分介绍,接下来,我主要介绍Jenkins的高级部分,pipeline即代码的核心功能,应该会写一个系列文章带你们入门。

还有其他的技术栈,我只是列举出了最常见的功能。例如还有Docker,k8,ant, gradle,maven等。

3. 学习路线(如何开始)

针对第二个部分,我提的技术栈,我会给出一个学习路线,参考一下就好

编程语言和linux我不写出来,这个靠自己长时间积累,学习才有质的突破。下面,主要介绍,jenkins和groovy和docker的学习和实践路径。jenkins主要学习表面功能,基础部分,我博客已有,这里重点学习Jenkins的pipeline部分。这里就引出了groovy,因为pipeline是groovy语言编写的脚本,所以学习groovy很关键。在这里,学习py,没有学习java就很遗憾了,至少你学习groovy是需要更多时间去掌握。docker2013年火到现在,一直还火下去。至少,你要学习基本docker技术,学习到和基本使用linux系统一样好才算入门基础知识。

3.1 先学习groovy

先学习groovy,才能写pipeline代码,才能到jenkins上进行集成测试。

3.2 学习Jenkins pipeline

pipeline即代码,这个是jenkins宣传的口号。如果你来到DevOps,你就会经常听说CI CD pipeline, 我我们QA或者测试开发重点就是在这里。我即将写的文章,就会介绍如何在jenkins上做pipleine的单元测试和debug等工作中经常需要用到的技术。

3.3 学习Docker和其他

目前,docker我也学习基本知识,而且,一段时间不用,还经常忘记。容器化技术很好解决了DevOps中交付和软件部署环节,加快了DevOps落地的一种技术手段。

这里,我们忽视了git或者svn工具的基本使用.当前来说,git应该更需要掌握,例如eclipse上如何安装git插件,如何pull和push代码,如何解决提交冲突和合并请求和冲突等等。

总的来说,技术有很多,一个一个去学,慢慢学也好,快速掌握也罢,的确需要有实际项目支撑去锻炼学习才有进步。到这里,还是很想爆粗口,一切的起点还是在于编程语言,对不对。Java还是Python,对于初学者来说,真的不重要,重要是你自己兴趣,能不能长期坚持学习下去。

猜你喜欢

转载自blog.csdn.net/u011541946/article/details/82943431