一种自动化测试持续集成方案

96
wywincl
2016.11.19 09:51* 字数 470

1. 背景介绍

当前项目是Web应用,采用的是前后台分离的设计思想。后台通过RESTful API对外提供服务。因此在测试的时候,也需要同时对前台页面和后台API进行独立测试。考虑到大量的API测试和页面功能测试,因此不可避免地需要进行自动化以加快项目的回归测试时间,减少人的工作量。

2. 测试目的

3. 方案设计

3.1 技术选型

由于我们在Robot Framework (RF)框架上有一些技术积累,因此在自动化框架选型上,我们选择RF作为自动化测试的核心底层框架。持续集成平台我们选择最流行的Jenkins来作为持续集成与调度平台。
同时,我们也选择postman的命令行工具newman, jmeter等作为我们的辅助测试框架,以应对不同的测试需求。我们整体的技术选型如下表所示:

newman in docker
编号 平台 介绍 备注
1 jenkins 开源的持续集成平台 整个自动化测试平台的核心
2 robot framework 开源的自动化测试框架 测试用例执行的核心
3 Selenium2Library RF框架下的Web测试库 web测试用例依赖库
4 requestsLibrary RF框架下的API测试库 api测试用例依赖库
5 newman postman的命令行工具,用于REST API测试 api测试用例执行工具
6 jemter 通用的接口测试工具 api测试用例执行工具
7 docker 一个开源的应用容器引擎 用于创建测试环境
8 gogs 开源的git web服务器 用于管理自动化测试用例

3.2 测试平台设计

这里,我们通过docker容器技术,封装了相关的测试环境,使得测试环境随用随起,用完即销毁,不污染我们测试机本身的系统环境。同时,也不需要我们在测试机上安装不同的测试工具了,通过docker,我们可以同时在测试机上启动多个容器来运行不同的测试任务。


AutoTest Platform

这里是相关的测试环境docker镜像地址。大家可以自己pull下来运行。

镜像地址 介绍 备注
wywincl/docker-jmeter jmeter镜像,提供jemter执行环境
wywincl/robotframework Robot Framework镜像,提供RF执行环境, 支持Web与API测试,内置了Selenium2Library和RequestsLibrary库
postman/newman_ubuntu1404 newman镜像,提供了newman执行环境

样例1, 运行一个robotframework容器。

docker run -it --rm -v /path/robot-content:/etc/robot wywincl/robotframework [options] data_sources

样例2, 运行一个newman容器。

docker run -v ${WORKSPACE}:/etc/newman postman/newman_ubuntu1404 run "testcases/smoke_test/restapi_smoke_test/AMS_RESTful_API_SMOKE_TEST.json" -r "cli,junit" --reporter-junit-export

详细的使用介绍,请大家参考相关工具的使用指南。

DevOps最佳实践