阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |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:406041

评论 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
回复
没有更多了
发现更多内容

云开发·多次订阅一次性订阅消息后定时发送

Yukun

微信小程序 小程序云开发 消息推送 订阅消息

架构师训练营第六周作业

Geek_4c1353

WebSocket-技术专题-服务器端消息推送

洛神灬殇

java安全编码指南之:文件IO操作

程序那些事

java安全编码 java安全 java安全编码指南 java代码规范

云原生时代 容器持久化存储的最佳方式是什么?

京东科技开发者

数据库 云存储

基于阿里云容器的CI/CD落地实践

LorraineLiu

阿里云 k8s Helm jenkins CI/CD

最近程序员频繁被抓,如何避免面向监狱编程!?

Java架构师迁哥

MySql从青铜到王者晋级之路,阿里大牛经验总结让牛少走弯路!

Java架构之路

Java 程序员 架构 面试 编程语言

来自阿里面试官的Java面试连珠炮,让你自由发挥你能撑到哪一步?

Java架构之路

Java 程序员 架构 面试 编程语言

【JSRC小课堂】Web安全专题(一)认证缺失和认证缺陷漏洞

京东科技开发者

WEB安全

搜狗搜索或成为企鹅号流量入口:腾讯欲实现自己的流量闭环

石头IT视角

uni-app支持PC宽屏适配

崔红保

uni-app 大前端

程序员不愿意说的秘密!Java进阶架构师必看:架构完美设计+程序员三门课+架构修炼之道

Java架构追梦

爬虫“学前班”,记住这些不踩坑!

华为云开发者联盟

爬虫 数据 搜索

openEuler开源下一代全场景虚拟化平台StratoVirt

openEuler

开源 虚拟化 openEuler stratovirt

分布式文件存储QoS硬核黑科技,真香

焱融科技

高性能 存储 HPC 分布式文件存储 QoS

小程序云开发实战:从0搭建科技爱好者周刊小程序

薛定喵君

微信小程序 小程序云开发 云开发

如何生成 Flink 作业的交互式火焰图?

Apache Flink

flink

你用过宏##粘贴函数,然后用函数指针查找执行吗?今天就给你说道说道

良知犹存

c c++

以A.I.之力打破方言沟通障碍 科大讯飞重磅发布智慧翻译系统

Talk A.I.

个人计算机、工作站、服务器的主要区别

德胜网络-阳

接口测试工具

测试人生路

接口文档 接口测试

API生态的发展与机遇:从5000组数据看中国API生态与开发者现状

华为云开发者联盟

华为 API

一文读懂GaussDB(openGauss) 的六大关键技术特性

华为云开发者联盟

数据库 数据 存储

求职时这样回答问题你就输了!来自IT类面试官视角的深度解读

华为云开发者联盟

面试 软件开发

来自朋友最近阿里、腾讯、美团等P7岗位面试题

艾小仙

Java 阿里巴巴 程序员 腾讯 面试

anyRTC与京东智联云市场达成战略合作,携手音视频平台

anyRTC开发者

ios 音视频 WebRTC RTC 安卓

「深度解析」告诉你如何选择容器存储

焱融科技

Kubernetes 容器 云原生 焱融科技 分布式文件存储

我服了,难倒无数程序员的源码面试,就这样被轻轻松松讲透彻

小Q

Java 学习 源码 架构 面试

大企程序员亲身经历告诉你,CRM系统,自己的才是最好的

Learun

敏捷开发

Vidyo的技术特点都有哪些?

dwqcmo

音视频 集成架构 解决方案 智能硬件

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