为了在整个软件生命周期中保证代码质量,需要持续地对软件进行回归测试。
这种持续的测试有几个特点:
- 无人值守,自动回归
- 多轮回归,持续时间长短不一
- 回归失败,自动生成报告
为了做到上面几点,测试程序需要做到:
- 能在一定的时间内执行完成。不能无限执行,这样对测试不友好。
- 失败时有明确的错误标记,错误能被外界识别,以便生成错误报告。
Jenkins 如下几个功能服务于上面目的:
- 【参数化构建过程】 通过命令行参数为测试程序指定测试次数,以便有限时间内完成
- 【构建触发器,Build periodically】 定时启动任务进行回归
- 【构建后操作,Publish HTML reports】 把脚本生成的日志做成HTML页面发布,直接在Jenkins中展现
- 错误码:Jenkins收到的脚本返回码不为0的时候认为回归失败。所以,控制脚本返回值来告知测试者成功/失败。
其他
- MacOS支持运行Docker
- Docker里可以直接安装Jenkins,非常简便
后记
- 现在看,以上都很自然。但早期却做了很多“匪夷所思”自己给自己制造困难的事情:测试无限循环,直到出现错误才退出;不区分返回码,每一轮回归都依赖人肉看结果;半夜服务器定期自杀导致测试出错,并且无法继续测试,后半夜一直回归失败,错失回归机会。