当前位置: 首页 > news >正文

GitLab-CI实现自动化测试

GitLab-Ci实现自动化测试

持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。

使用自动化测试, 可以提高软件的质量和可靠性, 今早发现其中的缺陷和问题, 以便即时改正.

配置环境

首先需要一个满足运行自动化测试的Docker镜像, 以便后面运行测试代码, 例如:

image: zacksleo/docker-composer:develop

配置服务

某些测试需要使用额外的服务, 如数据库、缓存服务器等等, 并通过variables配置服务中的一些变量

services:- mysql:5.6- redis:latest
variables:MYSQL_ROOT_PASSWORD: rootMYSQL_DATABASE: webMYSQL_USER: webMYSQL_PASSWORD: web    

声明依赖工件

一般在测试前要进行准备过程, 如安装依赖库或者编译等, 可将上述过程生成的的文件, 通过依赖声明, 传递过来, 这样可以比避免重复执行相关过程.

installing-dependencies:stage: preparescript:- composer install --prefer-dist --optimize-autoloader -n --no-interaction -v --no-suggest- composer dump-autoload --optimizeartifacts:name: "vendor"untracked: trueexpire_in: 60 minspaths:- $CI_PROJECT_DIR/vendor
dependencies:- installing-dependencies

配置测试脚本

假定你已经在本地编写好了测试代码, 并且可以本地运行, 那么就可以通过调整和适配, 让测试可以在GitLab-CI中自动化执行, 在下面的例子中,

测试代码位于tests目录,并且.env中配置了一些环境变量, 该文件的作用是为了让不同环境使用不同的一组变量, 如数据库、接口地址、账号等等,
这样做的目录可以尽量少的变更代码,保持核心代码的稳定性和适应能力, 通过php -S 启动了一个本地接口服务, 最后调用api测试, 对所有接口
进行测试

在下面的例子中, 还声明了coverage, 这个用来说明代码测试覆盖率的取得方法, 因为在测试中会将覆盖率输出(--coverage --no-colors),
GitLab-CI 通过正则匹配输出内容, 读取到覆盖率, 从而显示在项目徽标处

dependencies:- installing-dependencies
script:- cp tests/.env .env- ./yii migrate/up --interactive=0- php -S localhost:80 --docroot api/tests &>/dev/null&- ./vendor/bin/codecept run api -c tests --coverage --no-colorscoverage: '/^\s*Lines:\s*\d+.\d+\%/'    

测试失败如何处理

当测试失败后, 除了查看Pipline中的任务输出, 我们还应当详细查看测试中的相关日志, 下面这里, 将需要查看的文件生成工件, 在GitLab中下载,
然后可以在本地详细查看, when说明了仅在测试失败时, 才生成工件

    artifacts:name: "debug"when: on_failureuntracked: trueexpire_in: 60 minspaths:- $CI_PROJECT_DIR/api/runtime- $CI_PROJECT_DIR/tests/_output

完整的例子

下面是一个完整的API自动化测试的盒子

api-test:stage: testingservices:- mysql:5.6- redis:latestvariables:MYSQL_ROOT_PASSWORD: rootMYSQL_DATABASE: webMYSQL_USER: webMYSQL_PASSWORD: webdependencies:- installing-dependenciesscript:- cp tests/.env .env- ./yii migrate/up --interactive=0- php -S localhost:80 --docroot api/tests &>/dev/null&- ./vendor/bin/codecept run api -c testsartifacts:name: "debug"when: on_failureuntracked: trueexpire_in: 60 minspaths:- $CI_PROJECT_DIR/api/runtime- $CI_PROJECT_DIR/tests/_outputonly:- develop- master

关于持续集成完整的项目, 请查看 zacksleo/yii2-app-advanced 项目

使用Docker镜像

相关文章:

  • 完美解决Docker镜像无法拉取问题(转载)
  • 【学习笔记】GitLab 下载安装与配置
  • 「读书报告」Spark实时大数据分析
  • 职坐标IT培训:硬件嵌入式与AI芯片开发实战
  • 开源Vue表单设计器 FcDesigner 组件提供的方法详解
  • 【更新至2023年】1985-2023年全国及各省就业人数数据(无缺失)
  • 从比分滚动到数据革命:体育数据如何重构我们的观赛体验?
  • 使用 Cannonballs 进行实用导体粗糙度建模
  • 深度学习中的卷积和反卷积
  • 制药行业数字化转型:从挑战到智能化落地的实践路径
  • 单细胞数据分析(五):三种整合单细胞数据(Harmony、fastMNN、SCTransform)的完整流程
  • 西部工艺品:匠心独运,传承千年文化之美
  • 【Android】SharePreference原理
  • 安卓端智能耗材柜系统可行性方案(基于uniapp + Vue3)
  • FallbackHome的启动流程(android11)
  • Android GPU Inspector深度解析:从零掌握驱动级性能数据抓取与优化
  • 20250526给荣品PRO-RK3566的Android13单独编译boot.img
  • Oracle SHARED POOL的内部结构
  • shell之通配符及正则表达式
  • NL2SQL代表,Vanna
  • wordpress 插件太多/沈阳关键词优化报价
  • 茶山网站仿做/东莞seo外包平台
  • 投资网站模板/苏州百度快照优化排名
  • 网站后台管理权限设计/友情链接买卖平台
  • 手机编写html网页的软件/沈阳seo团队
  • 定制研发服务/泰州网站排名seo