TestOps
之前学习了DevOps的一些知识,最近又看到新的东西,即TestOps。现就将资料整理一下。
DevOps,简单的说就是开发运维,wikipedia解释:DevOps是一种软件工程文化和实践,旨在统一软件开发(Dev)和软件运维(Ops)。DevOps的主要特点是在软件构建的所有步骤中极力提倡自动化和监控,从集成、测试、发布到部署和基础设施管理。DevOps的目标是缩短开发周期,增加部署频率,更可靠的发布,与业务目标紧密结合。
也有人认为其主要就是要求开发对版本发布及质量负责。过去开发只负责功能实现,不考虑环境及发布所导致的问题,一旦发布不规范就会产生测试环境与开发环境与生产环境不同步的问题。在敏捷中非常强调持续集成&持续发布,所以对开发的要求就进步为了要对环境及质量负责,本质来说就是全栈的概念,全生命周期的全负责。
听起来好像开发搞定了所有的事情,那么是不是就不需要测试了呢?其实不然,DevOps可以解决流程上的问题,但是不能解决质量细节的问题,所以DevOps能够协调及统一研发体系及测试体系流程,但是无法解决具体测试的问题,这个时候与之配对的TestOps就诞生了。
TestOps简单的说就是测试运维,主要目的是推动整个研发体系与发布体系更多在质量方面。可以这样理解DevOps是从研发推动配合运维和测试,而TestOps是从测试角度推动研发和运维。所以TestOps才是真正把测试落地到整个研发体系的关键岗位。
比如DevOps可以规范需要有自动化接口测试,但是测试用例还是需要专业的测试人员来写的,而DevOps并不能有效的去指导及培养这类技术测试人员,反而TestOps就是做这个事情的,不但可以推动公司采用接口测试自动化,而且还能有效的在测试团队里面部署及应用。从某些角度是一个技术型测试经理的职位,其懂研发及运维技术,能够很好的将测试技术与相关部门结合并推动。
那么作为一个TestOps最终要达到的效果是什么呢?
简单说个理想场景吧(理想与现实之间是有差距的),当开发提交代码后,每天晚上系统自动触发静态检查体系(sonar),在静态检查通过后,开始调用xunit框架完成自动单元测试,确定所有单元测试用例通过则进一步进行打包发布到测试平台,否则将错误信息返回通知相关人员。
打包完成后自动发布测试平台,测试平台会进行接口及UI的自动化,如果都正常通过生成测试报告,发布测试版本到手工测试平台,提交给最后的手工系统测试及A/B测试。
这样每天晚上或者每次提交代码都可以做到非常系统的单元、集成、系统的测试流程,将缺陷扼杀在24小时内,这样的软件质量就会非常的高,这也是针对持续集成&持续发布非常重要的自动化质量保障体系。
如果再配合AI测试体系,以后测试人员就都失业啦,而TestOps就是要做到这一切的体系化、自动化、高效化。
参考资料:
作者:TeacherAilie
链接:https://www.jianshu.com/p/b25c5dcb7085
不像其他技术文章的资料非常多,关于DevOps和TestOps的资料还不是很多,而关于如何落地和实践的资料就更少了,根据以上的理论与思路,我粗略的整了一个设计图:
设计图画的不是很好,最主要的是体现了一个主线设计思路。
展现层主要是前端操作展示页面及调用中间服务层的接口。
中间层有三个服务,一个是用于实施部署环境的,一个是用于持续集成调度的,一个是代码构件仓库用于代码版本及发版服务管理。
工具层主要是用于测试服务并生成测试报告。SVN主要用于管理测试脚本。
采用到的技术路线及工具包括
python+django+ansible+Jenkins+ Docker+robotframework+appscan+jmeter+svn
系统界图:
该文章对你有帮助吗,求分享转发: 分享到QQ空间 分享给QQ好友