15.7 持续集成与自动化测试
持续集成在敏捷开发团队中非常适用,一方面可尽早地发现集成错误,测试团队成员每天都要将开发的测试代码集成到一起,也就意味着每天可能会发生多次集成,通过持续集成工具可自动化地构建来验证脚本的正确性。另一方面可快速验证被测产品的变更,如果监测到被测产品发生了变更,通过持续集成工具可实现自动触发自动化测试项目的执行,从而快速验证被测产品,发现被测产品的BUG。
15.7.1 什么是持续集成
持续集成(Continuous Integration,简称CI)是一种软件开发实践,可以让团队成员持续地收到反馈并改进,不必等到开发周期后期才寻找和修复缺陷。团队开发成员经常需要集成他们的工作,每天至少集成一次。每次集成都可通过自动化构建来验证集成的正确性,包括编译、发布和自动化测试,以尽快检测集成错误。通过这种方法,可以有效地减少集成问题,允许团队更快地开发出高可用的软件。
持续集成最大的好处是减少了集成错误,降低了产品风险。传统的产品问题大部分来源于手工测试,但这种反馈时间周期长,代码更改后几个小时才能得到反馈,如果是全面测试,可能几天后才会得到反馈,假如在这段时间又有新的代码集成,意味着在错误的代码上开发,这无疑会带来更多问题。使用持续集成(CI)则会加快代码变更的反馈速度,开发人员在几分钟内就可以快速定位和修复问题,除此之外,持续集成还可减少重复过程,将重复的动作变成自动化,减少甚至无须人工干预,让人员投入更多的时间到更有价值的事情上。
测试行业中,当测试自动化与持续集成结合后,一可保证自动化测试脚本集成的正确性,二可快速测试被测产品,确保被测产品每个构建的质量。对整个产品而言,自动化测试提高了测试效率和准确性,而持续集成则确保了代码的稳定性和可靠性。
15.7.2 持续集成常用工具
持续集成已是现代软件开发中非常重要的一环,在软件开发过程中,将代码集成到共享代码库中,并自动进行构建和测试,这样可以确保代码的质量和稳定性,并加快开发周期。使用持续集成工具可以实现持续集成,常用的持续集成工具有Jenkins、Travis CI、CircleCI、GitLab CI/CD、Bamboo等,分别介绍如下:
·Jenkins:Jenkins 是一款使用Java语言编写的开源的自动化持续集成工具,支持大量的插件和扩展,可用于构建、测试和部署软件。它提供了简单的安装和更新过程,并且可以通过图形界面轻松配置,且拥有丰富的插件生态系统,并可与多种编程语言、版本控制系统和构建工具集成。
· Travis CI:Travis CI是一个基于云的持续集成工具,在托管时不必依赖任何平台,主要用于构建和测试GitHub上的开源项目。它提供了简单的配置和集成,支持多种编程语言(如Node、PHP、Python、Java、Perl等)和平台(包括Linux、macOS和Windows)。
· CircleCI:CircleCI是一种现代化的持续集成和持续交付工具,它支持在Linux、macOS和Windows上构建和测试。
· GitLab CI/CD:GitLab CI/CD是GitLab自带的内建持续集成和持续交付工具,与GitLab代码托管平台紧密集成。它支持多种构建器和编程语言,并提供了一套强大的CI/CD功能,包括自动构建、测试、部署和容器编排。
· Bamboo:Bamboo是Atlassian公司的一款持续集成和持续交付工具,与Atlassian公司其他产品(如Jira、Bitbucket等)紧密集成,它他支持多种编程语言和平台,并提供了丰富的构建和部署功能。
15.7.3 部署测试项目
Jenkins是目前最流行的持续集成工具之一,本节使用其集成本书实战练习的测试项目。
进入Jenkins主页,依次创建Leadshop单元测试、Leadshop后台接口测试、Leadshop后台UI测试、Leadshop小程序测试和Leadshop性能测试任务,如图15-41所示。并将本书实战练习的测试项目添加到对应的任务中,然后设置定时任务定期执行。
图15-41 测试任务
至此,所有测试项目都已集成在Jenkins平台上,测试人员后续只需跟踪测试结果,对失败的内容进行结果确认,上报BUG或优化测试脚本即可。
15.8 思 考 题
1. 容器化部署与传统部署相比较,有哪些优点?
2. 你对Docker是怎么理解的?
3. 你对Docker中仓库、镜像和容器是怎么理解的?
4. Docker中操作容器常用的命令有哪些?
5. 如何使用Jenkins实现自动化测试项目的持续集成?
6. 什么是持续集成?自动化测试与持续集成结合有什么益处?
7. 持续监控测试项目有什么益处?