云化测试七种武器(下)
上篇介绍了云化测试基本概念部分,本篇将结合华为云优秀实践,重点讲解服务接口测试、在线全链路压测、Mock 服务、Web 全自动化测试、现网导流测试、现网拨测和AI 辅助质量评估,七种云化测试常见方法。对于测试人员了解并熟悉云化全流程持续测试,具有指导意义。
1 云化测试七种武器
1.1 云化测试全景图
基于云化测试基础理论和云化测试的原则,可以发展出很多实用的云化测试方法和实践。结合研发模式和角色,形成云化测试全景图。
图9:云化测试全景图
1.2 云化测试七种武器
以服务接口测试能力为核心,构建七种云化测试核心能力。导流测试导入现网真实接口场景,解决研发环境测试场景覆盖问题。通过Web 自动化测试记录接口调用链。全链路压测可以复用功能测试用例,Mock服务实现接口依赖替换,现网拨测复用研发用例,有效看护现网质量,接口测试为AI 复制质量评估提供原始数据,并从质量评估获得持续反馈。
图10:云化测试七种武器
1.2.1 云化测试七种武器之一:服务接口测试
接口测试,主要负责测试系统间的交互接口的测试。主要测试后端、微服务接口和API,和界面测试相比,稳定性、效率高。测试测试又可进一步划分成单接口测试和多接口组合测试。
单接口测试,制定接口测试覆盖策略,全部 or 部分覆盖,使用等价类划分、边界值分析等方法设计单个接口的测试用例。
图11:单接口测试
多接口组合测试,先后调用多个关联的接口,测试接口组合起来可以正确完成一个用户场景
图12:多接口组合测试
API接口测试有三个指导原则,即同源、独立测试和100%自动化测试。
1. 同源: 就是设计、开发、测试三个活动基于同一源头开展
2. 独立测试: DevOps模式下,50%+服务涉及服务依赖,服务自测试前移到开发自测试阶段开展,创建Mock服务使环境解耦,否则微服务独立测试难以开展
3. 100%自动化测试:在开发自测试阶段,开发人员时间有限,为了提高转测效率应该尽量高效使用自动化,也就是说能自动化解决的工作尽量自动化解决,就是我们倡议的100%自动化
实践:DevCloud接口自动化测试
使用DevCloud测试工具APITest进行接口和接口级场景功能自动化测试,结合华为优先研发实践和研发理念,测试用例免代码编写、一键导入swagger接口定义自动生成脚本模板,基于脚本模板组装编排、管理接口自动化测试用例。
图13:DevCloud接口自动化测试
DevCloud 接口自动化测试的主要优势:
1、简单
• 0编码开发成本
• 0环境搭建成本
• 2步接口测试
• 1步性能测试性能
2、高效
• 可视化编排测试用例
• 测试关键字批量复用
• 云端弹性资源池
• 实时反馈测试结果
3、专业
• HTTP等4种API协议
• 高级测试场景编排
• X类XX+预置检查点
• 多环境测试参数管理
• 流水线持续自动化测试
1.2.2 云化测试七种武器之二:在线全链路压测
在线全链路压测目前在业界的主流互联网公司均在开展,主要目的是使用真实的现网环境,模拟流量突发时,识别整个调用链路中的性能瓶颈。
在线全链路压测的核心是如何做好测试流量识别和隔离,避免对生产环境用户正常使用造成影响。需要解决以下关键问题:
• 流量标记
• 数据隔离
• 外部服务隔离
• 资源/KPI监控
• 压测流量调整
• 调用链辅助分析
• 业务低峰执行
• 数据清理
图14:在线全链路压测
在线全链路压测需要对被测系统进行调整。上图中,蓝色部分为测试组件,压测平台控制中心发起压力,经过压测负载均衡,进入被测云服务环境,外围依赖服务采用Mock 方式固定返回值。橙色部分为压测辅助系统,收集调用链,并对系统的资源进行监控。
下图为华为公司终端云某产品为应对春节抢红包活动进行的50倍压测,压测过程共发行带宽瓶颈、内存Full GC,服务挂死等20+问题,达到了预期效果,有效保障了当年春节抢红包活动的顺利进行。
图15:华为终端云某产品在线全链路压测效果
1.2.3云化测试七种武器之三:Mock 服务
Mock服务可以模拟接口的响应,解决在微服务系统开发及测试过程中依赖的服务未开发、第三方服务不稳定等问题。同时支持性能测试、异常测试等场景,还可以将Mock实例替代真实服务,支持系统级的联调及混沌测试等场景。
下图展示了Mock 服务的工作原理:用户访问Mock 门户,Mock 服务启动Mock 实例,根据需要决定是否要转发给真实服务,然后根据规则,匹配返回消息。
图16:Mock 服务工作原理
Mock 服务在开发、测试、部署阶段, 均有应用场景:
- 开发阶段,实现并行开发,提升开发效率。
- 测试阶段,提升测试的效率和覆盖率,以及自动化测试执行的成功率
- 部署阶段,在微服务系统中部署mock服务替代真实服务,便于进行系统级测试及混沌测试
以下是华为云Devcloud Mock 服务的核心能力:
图17:Mock 服务核心能力
1.2.4云化测试七种武器之四: Web全自动化测试
Web自动化测试,目前业界比较流行的开展方式是Selenium+TestNG组合。但这种方式需要基本的编程经验,而且需要查阅大量的API说明,不利于手工测试人员快速上手。
华为公司Web 自动化能力,满足了手工测试人员期望“不用编码就能实现Web自动化测试”。通过图元驱动+控件驱动测试技术的全自动化测试框架,通过AI算法能力和图像识别技术,实现全GUI界面的自动化测试能力,解决HTML5等无法获取控件ID的自动难题。具体方案如下:
图18:一站式Web 全自动化能力
实践: 华为公司进行WebUI场景功能自动化测试
使用华为测试工具ARTBot进行WebUI场景功能自动化测试,结合华为优先研发实践和研发理念,测试用例免代码编写、录制回放机制生成脚本,基于脚本模板组装编排、管理WebUI自动化测试用例。
图19:WebUI 自动化测试能力
WebUI 自动化测试具有如下优势:
简单
- 0编码开发成本
- 0环境搭建成本
- 3步生成WebUI脚本
- 1步WebUI自动化执行性能
高效
- 可视化编排测试用例
- 测试关键字批量复用
- 云端弹性资源池
- 实时反馈测试结果
专业
- 高级测试场景编排
- 定制化用户数据配置
- 固化常用步骤
- 流水线持续自动化测试
1.2.5 云化测试七种武器之五:现网导流测试
导流测试工作原理:将生产环境用户真实数据引流至研发区验证环境,通过对比研发区的验证结果与生产环境真实结果是否一致判断新版本是否存在
导流测试实施要点:
1.请求收集:收集生产环境用户真实请求
2.数据同步:生产环境冷备DB数据,同步至A/B两套环境
3.流量回放:将真实流量回放至A/B两套环境
4.结果对比:比对A/B两套环境流量执行结果
图20:导流测试工作原理图
实践:云测导流测试
关键效果: 基于调用链的导流回放能力,通过http、mysql、redis三种类型的MOCK能力的构建,解决回放中的数据依赖问题,实现导流回放技术上新的突破,引流现网蓝环境(灰度环境)流量进行例行回放,完成1XXX个接口回放设计,现网灰度流量覆盖XXX+接口,共发现版本问题XX个。
图21:导流测试效果
1.2.6 云化测试七种武器之六:在线拨测
在线拨测,又称为在线持续测试,是指产品/服务发布后,在生产环境对产品/服务重要功能进行7*24小时持续拨测以便尽早或先于用户发现问题并协助研发人员快速修复上线
在线持续测试要点:
1.筛选用例:筛选版本重要功能对应的测试用例
2.定时拨测:定时(每隔5分钟)对重要功能进行拨测
3.现网告警:拨测用例执行失败并发送告警短信,提示告警等级
4.处理上线:研发人员根据告警快速处理并快速修复上线
图22:在线拨测
实践:云测在线持续测试
关键技术:
1、用例共享:研发、在线测试用例资源共享,提升研发效率
2、执行方式灵活:用例按节点区域、并行串行、定时执行等多种执行策略,满足不同测试需求
3、模拟全球用户持续发起在线测试:全球部署测试客户端,模拟全球用户,跨区域持续测试被测服务,实现分布式部署,实时发起线上真实请求并收集数据
图23:在线拨测实践
1.2.9 云化测试七种武器之七:AI 辅助质量评估
测试有效性是测试设计和质量监控管理的核心目标
- 基于时间维度的AI可靠性模型、基于空间维度的易失效模块分析辅助测试有效性预测和评估
- 基于E2E追溯一张图(测试资产知识网络)&图挖掘/搜索算法,实现从过程全程质量跟踪
以上就是本文的全部内容,如果有帮助到你,请点个赞吧~
- 点赞
- 收藏
- 关注作者
评论(0)