持续集成之测试自动化-阿里云开发者社区

开发者社区> 云原生> 正文

持续集成之测试自动化

简介: continuous integration pipeline 背景介绍 持续集成(Continuous Integration)是Devops理念的一种实践过程,同时也是敏捷开发的具体表现形式。
img_3bc49a573e5fdad0e83d40c09767f938.png
continuous integration pipeline

背景介绍

持续集成(Continuous Integration)是Devops理念的一种实践过程,同时也是敏捷开发的具体表现形式。除了持续集成,还有持续交付(Continuous Delivery),持续部署(Continuous Deployment)等。这里我们着重介绍持续集成过程中的测试自动化(Test Automation),如果测试没有实现自动化的话,那么整个持续集成是不完善的,同时也不是高效的。因此自动化测试是持续集成过程中的重要一环。

img_20214e18df1f8d05aed30a6974d50b55.png
devops

测试自动化

自动化测试(Automated Test),很多团队都在做,但是往往效果不明显。究其原因还是对自动化测试的理解误区, 以为有了自动化后,就不需要手工测试了,因此将一些不适合做自动化的测试用例进行自动化,导致了投入产出比过高。同时,由于缺乏好的统一的测试框架支持,自动化测试脚本编写的复杂度过高,维护性差,耗费了测试人员大量的精力来编写和维护自动化测试用例。

img_914877290de78d7a85c86ca11917ad0a.png
Test Tools

基于此,我们在自动化测试实践过程中,选择了一款验收测试自动化测试框架Robot Framework,来作为我们的底层核心框架。同时基于RF框架,构建我们整个可维护性可扩展性的自动化测试套件架构。如下所示:

img_380f033fb248ca024d929ed49eef128e.png
Acceptance Test Suite

这个自动化测试套件架构具体分为三个大层,八个小层。我们分别来介绍:

平台层

平台层, 主要是提供测试用例运行环境,运行库的。对测试用例屏蔽了具体的底层技术细节,同时提供了一个统一的测试用例编写语法。
平台层,主要包括测试框架层,和测试库层。

测试框架层

测试框架层,我们选择Robot Framework 来作为基础框架,负责测试用例的解析,测试用例的执行,测试监控以及测试报告管理。也可以选择其他框架如Cucumber或者是TestNG等。

测试库层

测试库层,主要是与实际被测对象进行交互的工具封装层。如对Web测试工具Selenium的封装层Selenium2Lbirary,对接口测试工具requests的封装层RequestsLibrary等等。

资源层

资源层,主要是为测试用例提供资源的,如用户自定义的关键字资源,变量资源或者其他资源类型。这里重点关注关键字资源。

关键字层

关键字在资源层又被划分成三层,低阶关键字层,中阶关键字层,高阶关键字层。之所以进行这样的分层,主要是为了实现业务的分离,和用例的可维护性,可扩展性。
三层关键字在不同的测试对象上又可以有不同的表现方式,如针对Web测试对象,表现为页面对象层,页面逻辑层,业务流程层。

用例层

用例层,主要是测试套件和测试用例。概念比较明晰,不作具体介绍。

测试执行

为了能够使我们的自动化测试快速,稳定的运行,我们基于Docker搭建了一套分布式测试执行环境。如下图所示:


img_5f96f6485bc49587d0a606c67c0e3c4b.png
Test Environment In Docker

之所以用Docker来运行测试环境,是为了实现测试环境的独立,确保测试过程不受到系统环境影响。

img_77bf9d04445bd709e1a97a3fe0f83254.gif
example of CD-pipeline

帮助

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
云原生
使用钉钉扫一扫加入圈子
+ 订阅

云原生时代,是开发者最好的时代

其他文章