接口自动化测试--持续集成
前面章节我们介绍了基于Postman工具以及Python脚本实现自动化测试,但并没有与代码的提交进行关联,如果开发人员提交的代码存在导致接口错误的问题,那我们的自动化测试case无法第一时间反馈给开发人员,因此我们需要将代码提交与自动化测试相关联,在提交代码并将代码部署到服务器之后立即触发自动化测试,以便第一时间反馈接口是否存在导致用例失败的bug。
1. 提交代码触发构建
提交代码触发自动化测试的整体流程图如下图所示:
从上图可以看到,整个流程包括如下7个主要步骤:
❶提交代码:开发完成接口服务代码的开发后,将代码提交到GitHub服务器;
❷定时轮询:Jenkins Job1定时轮询检测GitHub代码库对应分支代码是否有新的提交,如有,则执行步骤3,如没有,继续执行轮询任务;
❸拉取代码:Jenkins服务器从GitHub仓库对应分支拉取代码到本地;
❹服务部署:Jenkins将拉取的代码部署到应用服务器中,并启动服务,启动服务过程中,如该服务已启动,则需先停止服务,然后再启动;
❺触发测试:Jenkins Job1完成服务启动后触发Job2执行,Job2的主要作用就是执行接口自动化测试程序;
❻接口测试执行:执行接口自动化测试任务,访问接口,并通过断言判断接口是否通过测试记录测试结果;
❼测试结果:Jenkins收集自动化测试报告,如执行失败则发送给相关人员。
上面流程图中,步骤2定时轮询检测代码库是否有代码变更的方式也可以通过GitHub提交代码后调用Jenkins Webhook的方式实现,这种方式的实时性比定时轮询要高,比如定时轮询的时间间隔设置为5min,那么Jenkins检测到代码有变化的最长时间就可能是5min,而调用Webhook的时延则几乎可以忽略,但调用Webhook的方式需要Jenkins所在机器配置并开放公网ip,以便GitHub可以访问到,读者可以根据自己的实际场景选择合适的方式。
通过上面流程图也可以看到,本文涉及到的代码共有两部分,分别是:
- 开发从DEV提交到GitHub的接口服务的代码,示例代码参见GitHub:https://github.com/8784285/ApiTestDemo.git
- 测试从TEST提交到自动化测试服务器的Python接口自动化测试脚本,示例代码参见GitHub:https://github.com/8784285/PythonAutoTest.git
另外,本文实验条件下,除了Github服务器是第三方服务器外,上图中“DEV”、“Jenkins”、“App Server”、“TEST”、“AutoTest”、“DB Server”这6台逻辑上的机器都在作者的同一台PC电脑上,读者如搭建上述环境,也请注意这一点。
2. 提交代码到GitHub仓库
1)创建GitHub仓库
首先我们需要注册一个GitHub账号,GitHub网址为:https://github.com/, 打开页面如下图所示:
完成注册后,登录GitHub,点击左侧【New】按钮,或者右上角[+]菜单中的【New repository】,如下图所示:
打开的页面中,Repository name输入框中输入代码仓库名称,如:ApiTestDemo,然后点击【Create repository】按钮
完成代码仓库创建后,会自动进入仓库详情页面,如下图所示:
上图红框中的URL就是仓库的地址,后面我们从本地仓库上传代码,通过Jenkins下载代码都需要用到这个地址。
2)提交代码到GitHub
❶提交代码
在Git Bush上输入命令
- 创建仓库目录
mkdir ApiTestDemo
- 进入仓库目录
cd ApiTestDemo
- 初始化git仓库
git init
- 添加到[暂存区]
创建名称为4.2的文件夹,并将4.2.py文件复制到4.2文件夹,完成后执行下述命令,将文件添加到「暂存区」,“add .”表示添加全部文件,也可以指定上传的文件名称,比如git add 4.2.py
git add 4.2.py
Tips:
[暂存区]:英文叫 stage 或 index,一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)
- 提交[本地仓库]
将上一步 add 过的内容「正式提交」到本地仓库(.git就是本地仓库),-m后双引号内填写备注信息
git commit -m "add 4.2.py"
- 将本地仓库关联到远程仓库
上面的操作都是在本地仓库中的操作,接下来我们将代码上传到GitHub,复制上述GitHub仓库的URL地址,执行下述命令,将本地仓库关联到远程仓库
git remote add origin https://github.com/8784285/ApiTestDemo.git
- 推送到远程仓库
最后执行下述命令,将本地代码分支的更新,推送到GitHub仓库
git push -u origin master
此时会提示输入用户名和密码,正确输入后,代码即可推送到GitHub仓库
Username for 'https://github.com': 8784285 Password for 'https://8784285@github.com':
完成后,刷新GitHub ApiTestDemo仓库的详情页,即可看到我们提交的代码,如下图所示:
❷免密登录
上面步骤中,我们向GitHub提交代码,需要输入用户名和密码信息,每次提交都输入,必然是比较繁琐的,因此我们来配置免密码登录
命令行输入,生成密钥
ssh-keygen -t rsa
执行命令后需要进行3次或4次确认:
- 确认秘钥的保存路径(如果不需要改路径则直接回车);
- 如果上一步置顶的保存路径下已经有秘钥文件,则需要确认是否覆盖(如果之前的秘钥不再需要则直接回车覆盖,如需要则手动拷贝到其他目录后再覆盖);
- 创建密码(如果不需要密码则直接回车);
- 确认密码;
以下是3次确认执行过程如下:
C:\Users\MeetYou>ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (C:\Users\MeetYou/.ssh/id_rsa): Created directory 'C:\Users\MeetYou/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in C:\Users\MeetYou/.ssh/id_rsa. Your public key has been saved in C:\Users\MeetYou/.ssh/id_rsa.pub. The key fingerprint is: SHA256:v3ysbUg9xrLJarfLJxWSCdmsRU1gF02Muamm0XhvYp4 meetyou@DESKTOP-225I7NI The key's randomart image is: +---[RSA 2048]----+ | =+++B. | | o.+.+ o | | + o o | | . + + | | So = . | | o.B * | | B.X . | | ooX+B | | ..=E@. | +----[SHA256]-----+
目录C:\Users\MeetYou.ssh 下会生成2个名为id_rsa和id_rsa.pub的文件。
打开GitHub,进入配置页,如下图所示:
选择SSH and GPG keys项,然后
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
<p> 本专刊共五章 21 篇正文及 5 个对应的 GitHub 项目,主要介绍了接口测试基础知识及测试用例设计方法,认证鉴权、加密验签,自动化测试,安全性测试,性能测试等内容,每一章节都有代码实例来剖析其原理,并提供了一个完整电商系统的代码,可以直接实操演练,让你知其然知其所以然,轻松搞定接口测试。加入专刊,你就加入了一大群志同道合的优质测试人圈子,同时还有和作者及作者的朋友们互动交流的机会。 本专刊购买后即可解锁所有章节,故不可以退换哦~ </p> <p> <br /> </p>