持续集成是一个自动化的周期性的集成测试过程,从检出代码、编译构建、运行测试、结果记录、测试统计等都是自动完成的,无需人工干预。我们的项目都是团队协作开发,采用持续集成的优势显而易见:
持续集成最大的好处在于能够尽早高效发现问题,降低解决问题的成本。而发现问题的手段主要就是测试。
根据 Martin Fowler 的测试理论,测试应该遵循如下测试金字塔组合,测试金字塔最底层是单元测试,然后是集成测试,继而是面向应用程序服务层的中间层测试,最高层是面向用户的业务逻辑测试:
测试自动化的测试层级越多,持续集成平台就能产生越大的价值。
UI 测试目标是覆盖最核心的代码,尽可能去掉依赖,让不稳定因子降到最低,这样既保证自动化测试层级的全面性,又保证持续集成的稳定构建,降低测试的投入产出比。因此,在我们的 UI 自动化测试中,我们选择核心功能的冒烟用例来完成持续集成中的测试金字塔。
Jenkins 是一个开源的持续集成工具,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。
Jenkins 以 Job 为单位运行项目,一个 Job 的工作流程为:在指定的时机,选择合适的 salve 节点,从版本管理系统上获取对应的源码,使用命令行脚本或者 maven 或者 ant 进行构建,构建后归档文件,处理报告,如果构建失败那么就通过邮件进行反馈等。
Job 的触发时机主要有3种选择: