作为芒果的新年第一篇,想跟大家聊一聊测试运维工程师(TestOps)的必备技能。
在聊测试运维工程师之前我们得先了解一下什么是TestOps?
TestOps顾名思义就是测试运维,是在DevTestOps这个概念下抽象的结果,是一个将测试技能真正在生命周期中支撑的关键职业。其测试技能与运维技能都缺一不可,除了要负责需求的分析归纳,测试环境与生产环境的统一协调,还要解决测试脚本与构建平台的统一整合,确保测试能够在最短的时间内落地执行。
想详细了解我们DevOps和TestOps可以关注云大写的两篇文章:
TestOps是什么(1)
TestOps是什么(2)
近几年的互联网企业对于测试人员的编码能力最大的需求应该是Python跟Java,今天芒果俩跟大家来聊一聊TestOps对于Python来说,应该具备什么样的技能。
编码基础
现在要想做好测试运维,甚至仅仅是测试,对于被测系统必须是熟悉的,你需要了解业务流程,需要了解数据的处理,需要了解系统的整体框架,为了更清楚的了解被测系统,而不是满足于简单的做个黑盒测试,势必就需要了解整个系统的开发流程,编码能力是一个测试运维的基础能力之一。
对于Python而言,我们需要掌握开发环境的维护,了解Python的开发环境、编码规则、基本语法、virtualenv等;我们需要对web开发流程有一定的了解,了解Django、Flask、Pyramid、Tornado等web开发框架;我们需要了解前端开发,了解Html CSS JavaScript,了解Bootstrap等前端框架,了解React等JavaScript框架;我们需要熟悉代码版本管理系统,熟练使用Git、SVN等版本控制管理工具。
持续集成
在过去的几年时间里,互联网行业高速发展,,每天/每周要发版本,要保证快速交付,掌握持续集成的技术,也是TestOps必须掌握的技能之一。只有这样我们才能够跟开发保持同步,也能够更高效的选择各个版本进行测试。
在容器化跟微服务盛行的今天,熟练使用Docker、封装合适的Docker镜像已经成为了基本技能;谈到持续集成,就不能不提到Jenkins,对于Jenkins的部署、集成开发环境、构建自动化发布就属性使用Jenkins的基础了,还有可视化工具BlueOcean;对于提交的编码进行单元测试是保证高质量代码的关键之一,对于Python而言可以掌握pytest、UnitTest等单元测试框架,还需要大家注意的是了解单元测试覆盖率工具,比如coverage等;静态代码审查也是保证软件质量的关键技术,现在除了定期进行代码评审、结对编程,使用SonarQube也是非常好的方法。
自动化测试
自动化测试技术大概是近几年来,被测试讨论得最多的技术了,对于出身于测开的芒果也跟大家多次探讨过自动化测试,但是这次想说的不仅仅是老生常谈的自动化测试对于现在的整个软件开发流程的重要性、UI自动化跟接口自动化技术。而是想跟大家说说,我们需要掌握的yapi接口管理、postman Newman jenkins持续集成、Rest与Restful、sqlmap、swagger,对于python而言还有django rest framework、python json解析库、自动化性能测试框架Locust。
持续部署
对于已经做到持续集成,并经过单元测试、代码审查、自动化测试通过的代码来说,想要做到快速上线,持续部署也是必须具备的,而TestOps作为能够保证测试更快落地执行的人员,对于持续部署的能力也是不能比运维人员差的。
相对于运维人员仅仅是部署生产环境以及简单的测试环境,TestOps应该掌握测试环境(即被测对象环境)的管理技能,这其中就包含多套docker的管理,参数、配置、日志等信息,版本管理工具保存多套版本以及其对应的环境配置,也要做到配置的脚本话;当然测试平台的管理、预生产环境管理也是需要掌握的;想要做到持续部署,现在被说的最多的就是自动化运维了,这时候就不得不提ansible、Puppet、Chef、SaltStack、Fabric等工具了,推荐大家优先了解ansible。
其他
当然想要成为一名合格的TestOps对于DevOps、敏捷、运维技术也是必须有一定了解的。