测试开发需要掌握哪些技术?

{"type":"doc","content":[{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"前言","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 先来个介绍背景,身边的朋友或者技术群的群友,总会时常问起,测试开发需要具备哪些技能呢?测试要如何往测开方向转岗呢?本篇文章主要聊下个人的一些观点看法。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 目前,我主要从事CI/CD(持续集成/持续交付), 自动化相关的实践。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"语言","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 对于测试开发工程师,他也是属于开发工程师,那么,最基础的需要具备一定的编程能力,从能看懂代码到能写代码。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"编程语言: Java-》基础算法-》重构","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 对于大部分的计算机相关专业的同学大学时期都有接触,把java基础掌握然后是高级的用法,不难的一件事。第二是基础的算法,冒泡,快排,二分法等基础的刷完。第三,读2+遍重构(改善既有代码的设计)这本书,再回头看一看自己写的代码,如果你觉得像一坨*,请动手重构它。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"当你每隔几个月看到自己写的代码想骂人,恭喜你又进步了!","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"英语: 技术文档,各种官网基本都是英文,当然,有的也有中文翻译。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"测试理论基础","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 测开也是测试工程师,必须具备良好的测试理论。了解各种的测试方法,以及它们之间的差异;了解常用的用例设计方法(等价类,因果图...),等等...","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 这里可以推荐大家看一本书《google软件测试之道》。(读的第一本测试相关书籍)","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"CI/CD","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 对于测开未来是工程效能方向,参考google,google在十年前就开始往这个方向走,那么,应该具备最基础的CI/CD的技能,提升开发团队的效能,为团队赋能。(目前很多公司测开还是不做这事儿...)","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" CI/CD可以为团队提供更高效的构建速度,交付更高质量的代码,一方面需要了解它的作用,让团队去做改进,比起工具,改变固有的思想往往来的更难。另一方面,大家最关心的都要会哪些工具呢?请看下图,工具真多,如何开始呢?","attrs":{}}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/61/61144402bc42d13c31c134f0d7bf709a.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"构建工具:","attrs":{}}]},{"type":"numberedlist","attrs":{"start":null,"normalizeStart":1},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":1,"align":null,"origin":null},"content":[{"type":"text","text":"Git:了解基本的使用后需要了解分支管理策略,pipeline跟分支策略密切相关","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":2,"align":null,"origin":null},"content":[{"type":"text","text":"Jenkins:这里的工具也很多,jenkins的使用还是占很大比重的,生态圈很好各种plugin,学习资源也很多。了解基本的使用,要会写Jenkins File,不要只会UI配置。","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":3,"align":null,"origin":null},"content":[{"type":"text","text":"构建工具:以java为例子,需要掌握Gradle的使用,了解它的生命周期,依赖如何安装的等等。","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":4,"align":null,"origin":null},"content":[{"type":"text","text":"Docker: 在远古时期大部分是直接在服务器上编译打包,Docker的诞生让构建变得更加便捷,快速,同时节省资源。需要掌握基本的命令行,会构建基础的镜像。","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":5,"align":null,"origin":null},"content":[{"type":"text","text":"操作系统基础知识: linux常见命令,io,cpu,内存等...","attrs":{}}]}]}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"Automation","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 现阶段,看看大部分的JD你会发现,绝大多数的公司要求掌握自动化测试技术,包括UI自动化,接口自动化,性能测试等。","attrs":{}}]},{"type":"numberedlist","attrs":{"start":1,"normalizeStart":1},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":1,"align":null,"origin":null},"content":[{"type":"text","text":"UI自动化: 主流的还是selenium,虽然,puppeteer,cypress的兴起对它来说有一定的冲击。不论哪个工具,先了解基本的使用,了解PO之类的设计模式,然后了解框架的工作原理。移动端可以看看Appium.","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":2,"align":null,"origin":null},"content":[{"type":"text","text":"接口自动化: 这就很多了,找一个看吧,httprunner,rest-assured...","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":3,"align":null,"origin":null},"content":[{"type":"text","text":"单元测试: 很多的测开对这部分的了解并不多,其实这也是一大部分的内容,比如Junit,mock 也是需要了解的。","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":4,"align":null,"origin":null},"content":[{"type":"text","text":"性能测试: 这部分JMeter吧了解基本使用,知道怎么做性能,了解tps,qps等","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":5,"align":null,"origin":null},"content":[{"type":"text","text":"静态代码分析: 1,2,3通常而言是属于动态测试,这里需要补充的是静态代码方面的测试,比如sonarqube之类的平台,了解它是做啥的,大概有个印象","attrs":{}}]}]}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"测试工具/测试平台","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 这部分内容,更多的是在于了解当前业务,当前流程有哪些可以优化提升的,有一个idea,会代码就可以干了。难的是发现当前的痛点,发现问题解决问题的过程,需要有足够的知识经验才能做好这件事。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 测试平台不一定是万能的,不要为了炫技而去开发,要立足于解决问题,节约resource。如果对之类的有兴趣不妨查下github,这里有很多开源的工具,看看那些star多的项目。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"最重要的","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 学习能力,个人觉得无论是什么样工具语言,其实最主要的还是个人学习能力,求知欲。在面试的时候,特别是对3年以内的工程师,我很关注他的自学能力,我认为这部分的人只要有好的引导他可以很好的开展工作。5年+的更关注经验了,如果疑问三不知,你跟我说你喜欢学习....礼貌性微笑。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 沟通能力,良好的沟通意味着已经成功了一半。必备软技能~","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"总结","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 从开发到测试开发再到慢慢接触管理方面,接近8年的时光里,对测试行业的看法、观点、认知,随着自我的成长一直在发生的变化,对未来我依然憧憬着,希望测试行业可以越来越好。同时,迷茫困惑也一直伴随左右(我是谁,我在哪,我将往何处去...)。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"以上内容纯属个人观点,希望对你有帮助,也欢迎跟我探讨测试方面的知识。","attrs":{}}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章