第四篇 平 台 篇
通过前面的学习,基本框架已经形成,但是在实际项目中还不够。因为实际项目可能很复杂,需要频繁地进行迭代回归测试,这时就需要建立平台去管理。如持续集成工具 Jenkins 可以将测试流程自动化(如自动部署 App、自动规划测试执行等);如邮件服务器可以设置自动发送邮件功能(测试执行完成,或者测试异常等);如代码托管工具 Git(可以对测试脚本、测试数据进行版本控制,方便管理)及 Docker 容器技术。搭建平台的优点如下:
· 易于账号管理。
· 可以集成不同的环境。
· 存储每次执行结果(数据库存储等模式)。
· 发送邮件。
· 实现定时执行测试。
本篇章节如下:
第 13 章 测试平台维护与项目部署
第 14 章 Docker 容器技术与多线程测试
第 13 章 测试平台维护与项目部署
项目中的自动化测试一般是需要互相协作。如果需要互相协作就需要有规范。而对自动化测试来说,平台的建设就显得很有必要,平台可以使管理更为高效,如可以将一些基础操作用平台去实现,而人工只需要聚焦真正的业务部分。
本章将介绍与平台相关的一些知识,涉及 Git、Jenkins 和 Docker 等应用,这些都是当前测试平台搭建经常使用的技术集合。
13.1 Git 应用
Git 是分布式版本控制系统,是当前比较流行、比较好用的一款版本控制系统。可以有效、高速地处理项目版本管理工作。Git 是 Linus Torvalds 当初为了帮助管理 Linux 内核开发而开发的版本控制软件。
这里讲到 Git 是因为自动化部署会用到版本控制系统,如 12.4 节讲到的 Jenkins 自动化平台,它是需要版本控制系统的。利用版本控制系统,可以更好地对版本进行管理,避免产生混乱。
举个实例来说明版本控制的重要性。比如我们的测试活动需要自动化部署 Tomcat 应用,在设置 Tomcat 的配置时,如果没有版本控制,我们就可能采取备份/复制等传统方式来保持对配置的追踪和更新,这样就会显得特别混乱。并且这样的模式维护也不方便,增加了维护成本。而如果使用 Git,可以减少这种重复劳动,更方便追踪版本情况,也可以随时切换版本。
以下为利用 Git 进行开发的经典场景:
(1)先从 Git 服务器上克隆完整的 Git 仓库(包括代码和版本信息)到本地。
(2)然后在自己本地的 Git 环境里根据不同的开发目的,创建分支,修改代码。
(3)在本地提交自己的代码到自己创建的分支上。
(4)在本地合并分支。
(5)把服务器上最新版的代码 fetch 下来,然后跟自己的主分支合并。
(6)生成补丁(Patch),把补丁发送给主开发者。
(7)看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。
(8)解决冲突的方法,开发者之间可以使用 pull 命令解决冲突(pull 命令的功能是先从 Git 库中抓取最新的代码到本地),解决完冲突之后再向主开发者提交补丁。
13.1.1 Git 安装
1.Linux Git
对于不同的 Linux 版本的操作系统而言,可以使用包管理工具进行快捷安装。如 Debian/Ubuntu,可以使用命令「apt-get install git」直接安装;若是最新版的 Fedora 可以使用命令「dnf install git」直接安装,具体如图 13.1 所示,网址为「https://www.git-scm.com/download/linux」。
图 13.1
2.Windows Git
Windows 操作系统,安装显得更容易些。如图 13.2 所示,下载 32 位或者 64 位的基于 Windows 图形化界面的安装包,具体安装步骤如下。
在安装过程中,可以按照提示进行安装。其中有一个步骤需要设置 Git 的默认编辑器(如图 13.3 所示),这里选择本机已经安装的即可,没有什么特殊之处。若本地安装了「Notepad++」,则选择 Notepad++。
图 13.2
图 13.3
安装步骤完成后,在 Windows 桌面单击右键,出现如图 13.4 所示的界面,选择「Git GUI Here」,打开 Git Gui 界面,如图 13.5 所示。也可以选择「Git Bash Here」,其用法和 Linux 系统下操作 Git 类似,采用的也是命令行式。大家可以尝试一下,其实命令行式的操作也很方便快捷。
3.Mac OS Git
Mac OS Git 安装包如图 13.6 所示,选择 Mac OS X 版本进行下载,再下载 dmg 安装包进行安装。不过 Mac OS 的 Git 都是内置的,其实不需要安装,除非版本不合适。下载地址为「https://gitscm.com/downloads」。下载完成后,按照安装包提示一步一步安装即可。
图 13.4
图 13.5
图 13.6
安装成功后,在 Mac OS 中运行命令「git--version」,如果显示 Git 的版本信息则说明 Git 安装成功。
13.1.2 Git 常用操作
(1)Git 库一般是用 Git Hub 应用程序进行管理的。如果要用 Git 去管理项目,需要把 Git 库相应的分支克隆到本地,
可以执行命令如「git clone -b master https://github.com/user/ProjectName.git」。git clone 的功能是将项目 Git 库复制到本地当前目录下;「-b master」参数是执行当前 clone 为 master 分支的内容。如图 13.7 所示,master 分支已经成功复制到本地。
图 13.7
(2)将本地新增文件/文件夹上传到 Git 库(远端)。如果本地新增了两个文件,要如何正确地将新增的文件上传到 Git 远端库呢?以下为具体步骤。
① 先将本地库更新,命令为「git pull」。目的是在提交本地改变前将本地库更新到最新的状态。
② 运行命令「git status」,查看当前库的改动,会列出所有改动,包括新增、修改、删除等改变的文件等。如图 13.8 所示,「newadd1.log」和「newadd6.log」是本地新增的文件。
图 13.8
③ 如果要上传其中一个文件「newadd1.log」则此时需要运行命令「git add newadd1.log」;如果要上传当前所有的改动,则可以运行命令「git add -A」;如果要只添加新文件或更改过的文件但不包括删除的文件,则可以运行命令「git add .」;如果只添加编辑过的文件或删除的文件但不包括新添加的文件,则可以运行命令「git add -u」。「git add」命令运行之后,代码就从工作区添加到了暂存区。
④ 运行命令「git commit」,此命令是将代码从暂存区提交到本地的版本库。此步骤需要添加注解,如图 13.9 所示,用以说明此次提交的目的和用途等事项。
⑤ 运行命令「git push」,目的是将本地版本库的当前分支推送更新到远程服务器上对应的分支。此时新增的文件才真正从本地提交到远程服务器。
图 13.9
(3)假设在 Git 本地工作区,修改了一个文件,在提交到远程服务器之前,如果想要查看该文件的改动情况,则可以运行命令「git diff newadd1.log」。运行结果如图 13.10 所示,控制台添加了一行字符「newadd23」。
图 13.10
(4)Git 回退版本的操作。这种操作在工作中也比较常见。如果要将版本回退到上一个版本,则可以运行命令「git reset --hard HEAD^」;如果要回退两个版本,则可以运行命令「git reset --hard HEAD^^」;如果要回退到指定版本怎么操作?可以采取如下步骤。
① 运行 Git 命令「git log」,运行结果如图 13.11 所示(图片只截取了部分版本信息)。
图 13.11
② 选择要回退的特定版本号,如选择版本「46baa5dd8728598c6e26de5004f5bb 8458c4bba7」回退,则执行Git命令「git reset --hard 46baa5dd8728598c6e26de5004f5bb8458c4bba7」即可。
13.1.3 GitHub 运用
GitHub 是一个面向开源及私有软件项目的托管平台。因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub。
GitHub 除了 Git 代码仓库托管及基本的 Web 管理界面,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。其中不乏知名的开源项目 Ruby on Rails、jQuery、Python 等。其对于 Git 作为版本控制系统的支持是很好的,很多企业也在内网中部署了专属的 GitHub 应用,以方便管理内部代码。
以公网 GitHub(https://github.com)为例,讲述一下如何一步一步将自己的代码放入 GitHub 上,再下载到本地环境。
(1)注册 GitHub 账号,网站地址为「https://github.com」。
(2)新建 GitHub 库,如图 13.12 所示,单击「New」按钮,再新建库页面填写库的相应信息,同一账号下只要库的名字不同即可。然后选择库的权限设置,可以选择「Public」(任何人都可以看到、下载等),或者「Private」(可以配置哪些人有下载、浏览、提交代码等权限),具体如图 13.13 所示。
图 13.12
(3)单击「Create repository」按钮后,在「Quick setup」页面有三种方式可以快速地创建 GitHub 库,如图 13.14 所示。一般常用的是第一种,可以将本地代码传入新库中,截图显示已经列出了每一步的命令操作,很实用。这里有两点需要注意,一是要把当前的位置切换到代码的目录;二是如果有很多文件要操作,按照之前 Git 的操作命令,可以使用「git add -A」,而不是「git add filename」,这样可以提高效率。
图 13.13
图 13.14
(4)GitHub 库创建完成后,如图 13.15 所示。
图 13.15
(5)GitHub 库创建完成后,假如现在有其他人想要下载 Git 库,那么如何获取 Git URL?可以通过如图 13.16 所示的方式获取,URL 为「https://github.com/ld0906/jenkinstest.git」。
图 13.16
(6)获取 Git URL 之后,可以利用命令「git clone -b master https://github.com/ld0906/jenkinstest.git」将代码复制到本地,现在就可以开始 Git 的代码管理之旅了,如图 13.17 所示。
图 13.17