速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

苏宁蛙测 &SAT 在自动化测试方面的应用

  • 2018-11-07
  • 本文字数:3695 字

    阅读完需:约 12 分钟

苏宁蛙测&SAT在自动化测试方面的应用

前言

2018 年苏宁易购提出了智慧零售大开发战略,业务快速发展对苏宁的 IT 技术提出了更高的要求,其中一个重要的环节就是加快软件版本的上线步伐,伴随着软件的频繁快速上线迭代必然存在巨大的测试压力。

通常情况下,软件测试的工作量很大。而频繁版本迭代中,针对老功能的回归测试是重复性的且这类测试比较耗时耗力,并要求做准确细致的工作,这样,计算机就比人更适合完成任务。另一方面,手工测试存在诸多的局限性。于是,就诞生了软件自动化测试这个领域。软件自动化测试是相对手工测试而存在的,主要是通过所开发的软件测试工具、脚本等来实现。

2011 年以前,针对自动化测试,苏宁各业务部门会安排一有代码能力的测试人员,全职编写自动化脚本,有人用 java、有人用 python,有人用 ruby 等等,并没有一个体系性、标准化、流程化的规范,因此也导致脚本维护成本高,复用性低,同时对测试人员的技能门槛比较高。

在这样的背景下,开始了我们苏宁自动化测试实践之路。下面我来为大家详细介绍。

1 SAT 是什么

苏宁自动化测试工具(Suning Automation Tester)——简称"SAT",是苏宁测试平台研发中心自主研发的集 WEB 页面、HTTP 及 RSF 协议、手机终端、数据库操作、LINUX 操作等方面的于一体的自动化测试工具。
SAT 是基于 RCP 平台上实现自动化用例设计和自动化执行的工具。它采用自动化测试架构中的关键字驱动 (Keyword) 思想,使测试设计和测试实现分离,将实现不同公共组件类、业务类 Keyword 集成到一个用例中运行,也最大限度地实现 Keyword 共享,降低测试组重复开发的工作量,使测试人员可以更关注业务本身的测试;另外工具提供了完善的日志和测试报告功能,方便用户查看用例执行日志和批量执行测试报告;最大限度地降低工具使用门槛,提高了其自动化开发、测试效率。

1.1 应用范围

  • Web 应用软件产品测试
  • 移动应用产品自动化测试,支持移动端 Android、iOS 两大主流操作系统
  • 协议接口测试(HTTP、RSF、MQ)
  • 数据库操作
  • 支持 SAP 类型测试

1.2 特点优势

  • 浏览器 / 移动终端录制功能,自动生成脚本
  • 拖拽关键字快速生成测试脚本,降低自动化门槛
  • 业务关键字自由配置,满足业务扩展
  • 测试数据独立存储,维护成本较低
  • 测试脚本等相关资产可共享协作,提高测试工作效率

2 蛙测是什么

蛙测是苏宁自主研发的一套综合测试服务平台,是面向软件从业者的一体化测试解决方案,包含移动端 (Android&iOS) 自动化测试和专项测试、 PC 端多浏览器兼容性测试、接口协议自动化测试,以及性能测试和安全测试的云测平台,解决广大开发者和测试者在应用研发过程中面临的成本、技术和效率问题,提供 7x24 全天候服务。

平台核心服务有功能测试、自动化测试、性能测试、稳定性测试以及安全测试等,对应用软件提供 360 度全方位自动化检测,有效节约成本,提高了版本回归测试效率,为苏宁软件质量保驾护航。

3 蛙测自动化方面特点

  • 移动设备 /PC 终端资源共享,节约成本
    App 应用都需要在主流机型上测试验证,需要购买较多移动设备,采用蛙测平台后,可以做到移动设备资源共享。
    PC 端测试,解决本地编辑、在线编辑、云端执行的冲突和效率问题,蛙测提供了测试集群,根据有效规则指定测试执行器消化测试任务。

  • 测试计划随时创建,云端多机并行执行,多终端支持,执行计划灵活设置
    测试资源池化,7x24 全天候服务,立即执行、定时 / 循环定时执行、条件触发执行等不同执行计划按需设置,多云端设备串行、并行测试,效率高,报告日志实时查看,持续追踪。

  • 多手段自动生成测试数据,高效高质量
    构造数据手段丰富,支持 SQL 语句、UI 和接口自动化,无逢对接企业现有逻辑,百余台服务器 7*24 小时提供服务,保障数据的高效生成。数据构造集中管理,避免各自为战,严谨的数据复检功能。

  • Mock 测试,设置方便灵活,千人千面,满足多种业务场景
    支持用户创建全局和请求级桩服务,支持 HTTP、ESB、RPC 等协议 Mock,对代码无侵入,支持同步、异步以及回调场景等功能,提供调用日志查询,满足多种应用场景。同时与服务管理平台、一建站系统打通,让接口测试更便捷,更简单。

4 蛙测 &SAT 技术架构

蛙测的技术架构

SAT 的技术框架

蛙测平台的技术框架

5 蛙测 &SAT 在自动化测试实际应用

5.1 自动化测试脚本实际应用

5.1.1 数据定义的应用

全局变量:基于对业务的理解抽取公共字段定义变量

局部变量:根据数据的复杂度决定使用组合关键字定义变量,或用表格定义数据实现用例数据分离

5.1.2 组合关键字的应用

多操作步骤封装为一场景步骤关键字,大大减少了测试脚本的步骤数,提升了脚本可读性,且该组合关键字后续可重复拖拽使用,有效提高了脚本编写效率,减少了维护成本。

操作:选择合适的场景—> 封装组合关键字—> 拖拽组合关键字至测试用例

选择合适场景封装组合关键字

引用组合关键字后脚本测试步骤展示:

5.1.3 原子用例的应用

原子用例的设计为实现高可维护性自动化提供一种解决方案,单场景复用,便于测试场景的有效列举。

操作:选择合适用例—> 设置原子用例—> 拖拽原子测试用例至测试用例

用例树区分展示原子用例、普通用例、已引用原子用例的用例;

业务用例中拖拽引用原子案例,根据业务场景多次引用相应场景原子用例,编写对应场景用例

5.1.4 应用效果

基于对业务的理解抽取公共数据、公共逻辑实现组合关键字、原子用例,自动化脚本优势可充分利用并放大实际应用效果

  • 脚本可读性高
    降低测试用例的冗余度,大大减少步骤数,也提高可读性
    减少编写案例的工作量
  • 公共逻辑可复用性强
    组合关键字 / 原子用例存在共性,可供重复引用
    便于测试场景的有效列举
  • 脚本可扩展性高 / 维护成本低
    需求发生变更,只要维护少量组合关键字 / 原子用例
    大大降低维护成本
    无论业务如何变化,合理使用好组合关键字、原子用例,抽取数据做好数据定义,这两项能为大家的自动化测试工作保驾护航。
    (Tips:工具提供的只是手段,最核心的还是需要大家深入理解、挖掘业务)

5.2 mock 实际应用

桩发展历程:最初 SAT 端只支持请求级别桩,但是异步的 rsf 请求中,找桩标记无法自动下传,需要服务修改代码把找桩标记下传后才可使用。

后经过多方研讨,决定把桩服务升级应用于蛙测平台,通过对接口设置挡板的方式,构建测试数据实现千人千面,也就有了现在的全局桩、UI 桩、回调桩等全面桩。

5.2.1 请求调用


请求桩 / 全局桩实际应用

脚本中 rsf 埋桩 demo 展示示例:

设置桩响应条件,填写请求报文相应属性路径下,参数的属性值,接口请求时,根据响应条件的匹配,返回相应设置的模拟桩,即做到某桩在某请求条件满足响应条件下生效,真正做到千人(桩响应条件)千面(桩响应报文)。
SAT 端桩响应条件设置

蛙测端桩响应条件设置

5.2.3 MQ 接收

MQ 接收的场景一般分为以下两类:
场景一:通过 MQ 队列接收数据之后直接存库;
场景二:通过 MQ 队列接收数据后需要继续调用处理其他资源,然后入库 / 入缓存等操作。
自动化实现:
场景一 场景二

截图中测试步骤列举的为 MQ 收到消息需要调用其他资源需要用到的一些关键字。
MQ 场景二涉及调用其它资源,为独立测试该场景,mock 相应依赖,因此引入全局桩的概念。

5.2.3 应用效果

请求级别桩优势:

  • 桩数据在本地,对蛙测依赖小
  • 通过 SAT 日志就能定位问题,方便简洁
    全局桩优势:
  • 支持场景丰富,同步 / 异步请求都支持,且不需要被测系统嵌入代码
  • 通过构造请求报文的多样性,实现千人千面
  • 蛙测支持多机并行

根据请求桩与全局桩存在不同优势,结合业务需求相应结合使用,实现 Mock 测试,摆脱被测系统间依赖,提高测试质量及效率,同时成功解决测试人员、开发人员在测试和研发过程中,数据构造、环境依赖等痛点,大大提高了生产效率,提高测试场景的覆盖率,保障了业务版本上线的质量。

6 蛙测 & SAT 解决的问题和实现的价值

6.1 解决的问题

  • 用户手工测试耗时长效率低
  • 自动化脚本写作门槛高
  • 自动化脚本维护成本高,复用率低
  • 用户自动化执行需占用本机的资源
  • 用户缺少特定测试设备
  • 单机执行并发度低,测试耗时久,效率低下
  • 本地执行后测试结果无法有效追踪
  • 接口测试时依赖方不可用,测试人员无法提前介入测试
  • 构造异常数据流程复杂,无法很快生成,影响测试效率
  • 依赖方涉及到现金交易,测试成本高

6.2 实现的价值

  • 测试资源池化,多浏览器、多终端设备、稀缺资源统一管理
  • 降低测试成本,测试设备在云端,共享使用
  • 多维度并发执行,提高测试效率
  • 云端任务执行,测试结果持续追踪,
  • 摆脱被测系统间依赖,自已的测试自己做主
  • 数据构造集中管理,统一调度

7 总结

目前蛙测 &SAT 在苏宁集团各业态已全面应用,包含苏宁易购、物流、金融、科技、置业、文创、体育和投资八大体系近万名 IT 研发人员。此间测试资产积累效果显著,每月自动化测试执行案例数超过 100 万,自动化测试步骤数超过 3000 万行。

蛙测团队一直在努力,在测试技术方向,持续探索,永不停歇!我们的宗旨:提供专业、简单、高效的测试服务!

欢迎大家多多关注、共同交流!

作者:
卢烨,苏宁云测试平台技术经理,2013 年加入苏宁,一直从事测试工具与平台的测试、产品工作,始终专注于测试技术、测试效率等相关领域。精通自动化测试、测试管理方面新技术和新理念,同时对自动化测试、测试管理在实际测试活动中的应用实践积累了比较丰富的经验。

2018-11-07 18:406325

评论 7 条评论

发布
用户头像
公共方法抽象,数据驱动,基于关键字,让自动化无门槛,同时也支持自定义方法,基本满足了不同的人群。不错
2018-11-13 17:19
回复
用户头像
SAT降低了自动化测试的门槛,蛙测一个浏览器搞定测试,确实很赞!
2018-11-13 17:13
回复
用户头像
赞 测试人员自动化写作的好工具
2018-11-13 17:09
回复
用户头像
没卵用的东西
2018-11-08 14:12
回复
何出此言?
2018-11-12 15:28
回复
为啥呢?没有论据的东西都是耍流氓
2018-11-13 17:16
回复
没有更多了
发现更多内容

实战案例丨分布式系统中如何用python实现Paxos

华为云开发者联盟

Python 算法 分布式系统 PAXOS 集群库

Java 并发系列(二):DCL — Double Check Lock

TroyLiu

Java volatile 多线程 synchronized DCL

华为云自研PB级分布式时序数据库揭秘第一期初识GaussDB(for Influx)

华为云开发者联盟

云原生 时序数据库 华为云 分布式时序数据库 GaussDB(for Influx)

区块链溯源服务平台,区块链商品防伪溯源解决方案

13828808769

区块链+ #区块链#

Python基础之:Python中的异常和错误

程序那些事

Python Python3 程序那些事

一个魔幻的框架,3分钟纯 Java 注解搭个管理系统

程序员小富

Java 大前端 后端

“广度”和“深度”,是我最终选择蚂蚁的理由

DT极客

科技赋能城市建设,英特尔正式发布智慧社区解决方案参考架构

E科讯

首站重庆聚焦智慧物流、呈现最新AI能力

百度大脑

AI 百度大脑

开源项目月刊《HelloGitHub》第 60 期

HelloGitHub

GitHub 开源

【签约计划】技术编辑能力考核成绩公布

InfoQ写作社区官方

签约计划 热门活动

银四30天,苦心啃透java高级工程师面试1000题,涨薪10K很难吗?

Java 编程 程序员 架构 面试

Python OpenCV setMouseCallback 回调函数,取经之旅第 13 天

梦想橡皮擦

3月日更

云图说|一张图带你了解华为云分布式数据库中间件

华为云开发者联盟

数据库中间件 DDM 分布式数据库中间件 华为分布式数据库中间件

LDO和DC-DC有什么不同?如何选型?

不脱发的程序猿

28天写作 3月日更 LDO DC-DC 电源转换

Java程序员都要懂得知识点:反射

华为云开发者联盟

Java 对象 反射 class 函数

【技术面对面】基于场景图的多物体图像生成技术

京东科技开发者

云计算

Elasticsearch详细剖析

大数据技术指南

ES 3月日更

Python+OpenCV检测灯光亮点

不脱发的程序猿

Python OpenCV 28天写作 3月日更 检测灯光亮点

Rust从0到1-基础概念-注释

rust 代码注释

如何学习数据结构与算法

C语言与CPP编程

c c++ 数据结构 程序人生 算法

区块链溯源,茶叶溯源平台的搭建

13828808769

#区块链#

区块链溯源,茶叶溯源平台的搭建

13828808769

区块链+ #区块链#

智慧公安警务系统搭建,警务大数据可视化分析平台解决方案

13828808769

智慧城市

python中find_element()和find_elements()的区别

Geek_6370d5

Python

企业利用边缘计算的10种方式

边缘计算

实现一个“能中断”的ajax

云小梦

JavaScript ajax Promise axios 请求拦截

Mongodb特定场景性能数十倍提升优化实践(记一次十亿级mongodb核心集群雪崩故障)

杨亚洲(专注MongoDB及高性能中间件)

MySQL 数据库 mongodb 架构 分布式数据库mongodb

百度飞桨中国行南京站开启!共研AI赋能产业新模式

百度大脑

百度 AI 飞桨

一次客户需求引发的K8s网络探究

京东科技开发者

云计算

在开源的公链上实现隐私保护?静看NA公链 NAC公链创新之路应如何蜕变

区块链第一资讯

苏宁蛙测&SAT在自动化测试方面的应用_软件工程_卢烨_InfoQ精选文章