其实这个问题可以先从DevOps开发运维谈起,DevOps是最近一年非常火的概念,其主要要求就是开发对版本发布及质量负责。
过去开发只负责实现,不考虑环境及发布所导致的问题,一旦发布不规范就会产生测试环境与开发环境与生产环境不同步的问题。在敏捷中非常强调持续集成&持续发布,所以对开发的要求就进步为了要对环境及质量负责,本质来说就是全栈的概念,全生命周期的全负责。
听起来好像开发搞定了所有的事情,那么是不是就不需要测试了呢?其实不然,DevOps可以解决流程上的问题,但是不能解决质量细节的问题,所以DevOps能够协调及统一研发体系及测试体系流程,但是无法解决具体测试的问题,这个时候与之配对的TestOps就诞生了。
TestOps顾名思义就是测试运维,其主要的目的是推动整个研发体系与发布体系更多在质量方面,可以这样理解DevOps是从研发推动配合运维和测试,而TestOps是从测试角度推动研发和运维。所以TestOps才是真正把测试落地到整个研发体系的关键岗位。
比如DevOps可以规范需要有自动化接口测试,但是测试用例还是需要专业的测试人员来写的,而DevOps并不能有效的去指导及培养这类技术测试人员,反而TestOps就是做这个事情的,不但可以推动公司采用接口测试自动化,而且还能有效的在测试团队里面部署及应用。从某些角度是一个技术型测试经理的职位,其懂研发及运维技术,能够很好的将测试技术与相关部门结合并推动。
那么TestOps需要懂那些东西呢?
简单来说就是三块:
1.开发及版本控制
2.环境及持续集成工具
3.各种静态、动态测试方法工具,并且可以整合进入持续集成
那么作为一个TestOps最终要达到的效果是什么呢?
简单说个理想场景吧,当开发提交代码后,每天晚上系统自动触发静态检查体系(sonar),在静态检查通过后,开始调用xunit框架完成自动单元测试,确定所有单元测试用例通过则进一步进行打包发布到测试平台,否则将错误信息返回通知相关人员。
打包完成后自动发布测试平台,测试平台会进行接口及UI的自动化,如果都正常通过生成测试报告,发布测试版本到手工测试平台,提交给最后的手工系统测试及A/B测试。
这样每天晚上或者每次提交代码都可以做到非常系统的单元、集成、系统的测试流程,将缺陷扼杀在24小时内,这样的软件质量就会非常的高,这也是针对持续集成&持续发布非常重要的自动化质量保障体系。
如果再配合AI测试体系,以后测试人员就都失业啦,而TestOps就是要做到这一切的体系化、自动化、高效化。