引言

自动化金字塔-灵魂手绘版

关于Web自动化测试,投入产出比是一个绕不开的话题,对于走到2017年的测试人,这时候可能已经有很多人会想到著名的自动化测试金字塔。它形象地展示了Mike Cohn对自动化分层中各层所应该投入比重的看法,可以作为我们Web自动化实施策略的重要参考。

我最初开始接触Web自动化测试的时候,没有直接的领路人,测试行业知识也远不及如今这么丰富和易获取,当时我对于自动化测试的分层几乎没有什么了解,更不知道什么金字塔,就如很多同行一样,我一开始先入的是UI自动化的坑,那时候我还没有养成搜索英文资料的习惯,关于Selenuim2、WebDriver的中文信息还相当有限,国内主流还在Selenuim1, 先熟悉API,熟悉元素定位方式,进行一些简单的封装,到后来的PageObject,干劲十足。

不过在UI自动化这个阶段的后期,我已经对自动化测试有了更多的认识,加上工作变动,开始跳接口自动化的坑,通过工作经历、朋友和网络,对现状有了一定的了解,大约2015年的时候,心里隐约有一些想法,我们的测试对象的架构从最简单的三层架构,到分布式架构,再到SOA,到微服务,一路向前,而再看我们测试人对Web系统接口自动化的实现方式,直接使用如 Postman这样成熟工具的先不谈,就自研框架而言,有用Java的,如Junit/TestNG + Ant( + Jenkins + JMeter + xxx),有用Python的,比如基于广为人知的RobotFramework,有用Ruby的,可能基于BDD界耳熟能详的Cucumber,等等,技术栈可能各有不同,本质上,大多是孤立的工程 + 文件形式管理的数据和用例。

可能四五年前,我看到的,大多是这样的方案,到今天,测试从业者的数量大幅度增长,有良好代码能力的并且能将其用到测试工作中的也越来越多,然而我看到的,这些的方案仍然占大多数,除开国内几家顶尖的互联网企业,就我所了解的以及网络上能搜索到的,尝试将方案走到简单Web系统的形式,用数据库存储数据,在线管理自动化实施的,很少。就这些方案本身,我觉得只要能达到自己团队的目的,都是很好的,没有优劣之分,我在意的是,我看到的变化低于预期很多,新的尝试低于预期很多,我觉得很多新的尝试,对于现在的测试人来说,难度并不会比以前的方案高多少,所需要的时间成本,也并不会高出多少,我希望我们测试人在做自动化实施的时候,能够像做业务测试一样,能够不局限于某一个方向。

既然看到的尝试很少,那我就想自己去做一做,慢慢形成一些思路,到2016年,公司原有的自动化方案不能支撑一些新产品的需求,开始投入精力去设计和实现一个Web类型的测试平台,当时感觉就像当年刚开始自主实施UI自动化一样,有一股劲。设计选型、编码、首版服务端上线、第一个团队开始使用、首版UI上线、1.6、2.0、...在功能方面来说,算是做出了勉强接近自己预期的系统(如果不考虑那拙劣UI的话)。 平台明面上是我单独完成的,但实际上,同行大牛对思路的肯定、工作安排上的支持、业务线伙伴的需求,都是不可或缺的。本来今年年就计划写关于这部分的文章,但由于今年工作、生活上都很忙,这半年几乎没有一个周末有自己独立的时间,加上拖延症作祟,所以直到今天才总算开始码了。

虽然并不确定这次计划输出的内容对读者能有多少帮助,但还是计划分几篇来写,当然具体能输出几篇现在我也没底,拖延症是个强敌,所以决定第一篇先做一个总览

这期的引言太长了点,抱歉。希望本文能为有耐心读到这里的人带来些许价值

一、目标和定位

首选需要说明的是,由于近年的工作重心主要在Web服务端,同时根据团队当前的工作情况,定的自动化策略是优先实施接口层而非UI层,所以平台当前的主要功能是围绕HTTP层的自动化测试展开的。

平台的定位是作为公司各业务线服务端的自动化公共平台,目标是通过快速落地自动化测试来支撑公司各产品组提高测试效率。

二、平台特点

最基本的特点,平台是一个前后端分离的Web服务、由数据库管理基本信息和测试用例、在线查看测试报告。详细一点的话,我认为通过对比的方式来呈现可能比较明了。这里以引言中提到的实施方案与本文所述的测试平台进行对比。

对比项 业界常见项目 本文平台
定位 支撑某一产品线的接口自动化需求 支撑各产品线的多种自动化需求
适用性 适用于特定Web系统接口的自动化 适用于不同产品、不同设计理念接口的自动化
基础架构 独立的工程,基于文件管理数据 前后端分离的Web服务,基于数据库管理数据
落地方式 本地搭建运行环境,获取工程并运行以调试新用例 在线UI操作,开放接口便于CI集成
数据管理 通过更新/上传文件的形式管理用例 在线创建/更新用例,使用MySQL管理数据
运行方式 通过编辑Jenkins job/Crontab等实现运行计划管理 在线自定义运行时间计划和运行内容
结果校验 校验粒度较粗,数据库校验可能在代码中 基于Json解析的细粒度校验,在线管理数据库校验
历史数据 历史数据缺乏有效管理 在线查看历史运行记录和测试报告

三、系统架构

整个平台的大体系统架构如下图,其中产品数据库交互主要是数据预置/清理/校验

平台系统架构

四、相关技术栈

应用 技术/工具
Web服务基础框架 Spring Boot
Web容器 Jetty
持久层框架 MyBatis
HTTP调用和校验基础框架 REST-assured
用例调度执行 TestNG
HTML报告 Allure
平台接口信息 Swagger
基础UI组件 Bootstrap
前后端交互 AJAX(Jquery)
在线代码编辑 Ace

关于在线代码编辑,主要提供给有基础代码能力的同学应用在复杂场景的自动化实施,普通的接口自动化需求不需要。后续文章会做更多的说明。

五、UI概览

基础信息管理

用例管理

在线场景编辑

定时计划管理

用例调试

在线报告

邮件样例

六、待完善部分

平台目前有两个较大的功能欠缺:

  • 账户体系和权限控制
  • 代码动态编译运行的安全控制(沙箱)

账户体系和权限控制目前没有实现,主要是时间成本的问题,考虑目前平台都是公司内部各测试组使用,暂时没有特别强的需求。至于动态编译运行的安全问题,主要是难度和时间成本两方面的原因,对于这个安全问题,目前我自己还没有一个周全的解决方案,欢迎提出宝贵意见,另一方面,作为内网运行的平台,安全需求相对较低。

 

作者:阿羅
链接:http://www.jianshu.com/p/79e493dbd4eb
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Web自动化测试平台设计与落地-概览的更多相关文章

  1. 自动化测试 接口自动化及UI自动化测试平台设计演示

    接口自动化及UI自动化测试平台设计演示   by:授客  QQ:1033553122 欢迎加入全国软件测试交流qq群:7156436 大家好,我是授客. 本视频意在分享个人,基于Python,Djan ...

  2. Robot Framework自动化测试框架核心指南-如何做好自动化测试平台框架的设计

    自动化测试如果需要能高效快速的支撑软件项目的测试,项目的快速迭代以及上线,除了以上我们介绍的需要许多的Lib来支持以及需要高效的去编写自动化测试案例外,还需要一个好的自动化测试框架平台来支撑我们的自动 ...

  3. 广州亿能自动化测试沙龙 - 自动化测试管理平台设计 [ 沙龙PPT免费下载 ]

    广州亿能自动化测试沙龙 - 自动化测试管理平台设计 [ 沙龙PPT免费下载 ] http://automationqa.com/forum.php?mod=viewthread&tid=244 ...

  4. flask + Python3 实现的的API自动化测试平台---- IAPTest接口测试平台(总结感悟篇)

    前言: 在前进中去发现自己的不足,在学习中去丰富自己的能力,在放弃时想想自己最初的目的,在困难面前想想怎么踏过去.在不断成长中去磨炼自己. 正文: 时间轴 flask + Python3 实现的的AP ...

  5. selenium项目总结(UI自动化测试平台搭建、测试报告生成、邮件转发)

    最近博主完成了一个web端UI自动化平台测试环境搭建,包括常用的操作流程组合成方法,组织测试用例,利用框架及报告文件生成,最后通过邮件添加附件的格式发送. 首先UI自动化平台的核心是selenium+ ...

  6. 前后端分离之Web前端架构设计

    架构设计:前后端分离之Web前端架构设计 在前面的文章里我谈到了前后端分离的一些看法,这个看法是从宏观的角度来思考的,没有具体的落地实现,今天我将延续上篇文章的主题,从纯前端的架构设计角度谈谈前后端分 ...

  7. java 自动化测试平台构建思想

    很多人迷信于自动化测试平台,认为这玩意是万能的,对于测试人员,不需要写代码,只需要在平台上选择一下,输入一点参数,就能达到测试的目的.想法是不错的,但关键在于实现这个平台的过程,这个就需要一个WEB开 ...

  8. 集成 Jenkins 和 TestNG 实现自助式自动化测试平台

    背景介绍 在软件业十分成熟的今天,敏捷(Agile)开发在业界日益流行,而面临的挑战也日益增多,不断变化的用户需求.缩短的开发周期.频繁的部署上线.复杂的产品架构和团队组织,如何继续保证软件的质量是一 ...

  9. AutoMagic自动化测试平台简介

    PS:给想做自动化平台同学一点思路. AutoMagic 是一个基于WebUI的自动化管理平台.为什么叫AutoMagic呢?因为自动化(Automation)在执行起来的时候是一个很神奇的事情,它可 ...

随机推荐

  1. Python编译遇到的一些错误及解决办法

    nunicodeessscape codec can't decode bytes in position2-3:truncated\UXXXXXXXX escape 描述:im=Image.open ...

  2. spark shc hbase 超时问题 hbase.client.scanner.timeout.period 配置

    异常信息 20/02/27 19:36:21 INFO TaskSetManager: Starting task 17.1 in stage 3.0 (TID 56, 725.slave.adh, ...

  3. 从西班牙、英国出租车与Uber之争,看共享打车未来发展趋势

    一种新事物.新服务的崛起,必然会损害传统事物和服务的既得利益.比如在电灯泡发明之初,煤油灯企业就将电灯泡专利收购并"雪藏"以维护自己的利益.而电商的崛起,也让传统的线下实体店受到严 ...

  4. Django专题-ugettext_lazy

    标准翻译 使用函数 ugettext() 来指定一个翻译字符串. 作为惯例,使用短别名 _ 来引入这个函数以节省键入时间. 在下面这个例子中,文本 "Welcome to my site&q ...

  5. 理论优美的深度信念网络--Hinton北大最新演讲

    什么是深度信念网络 深度信念网络是第一批成功应用深度架构训练的非卷积模型之一. 在引入深度信念网络之前,研究社区通常认为深度模型太难优化,还不如使用易于优化的浅层ML模型.2006年,Hinton等研 ...

  6. 笔记本安装SSD固态硬盘详细的优化设置

    现在好多笔记本.台式机都加上固态硬盘了,固态硬盘的优势大家应该都有所了解了,在此略写一下固态硬盘优势:  1.启动快,没有电机加速旋转的过程:  2.不用磁头,快速随机读取,读延迟极小:  3.相对固 ...

  7. LeetCode——15. 三数之和

    给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 注意:答案中不可以包含重复的三元组. ...

  8. linux mint使用中的问题解决记录

    软件升级失败 换用命令行 sudo apt update sudo apt list --upgradable sudo apt upgrade sudo apt autoremove Enter p ...

  9. Patroni 修改配置

    Patroni 修改配置 背景 使用 Patroni 部署 postgresql 集群的时候,不能单独修改单点的配置,这里需要通过 Patroni 来修改配置. 修改步骤 1. 修改 postgres ...

  10. Iterator接口(迭代器)的使用

    Iterator接口(迭代器) 前言 在程序开发中,经常需要遍历集合中的所有元素.针对这种需求,JDK专门提供了一个接口java.util.Iterator.Iterator接口也是Java集合中的一 ...