孙勇男:实时视频 SDK 黑盒测试架构丨Dev for Dev 专栏
Dev for Dev 专栏全称为 Developer for Developer,该专栏是声网与 RTC 开发者社区共同发起的开发者互动创新实践活动。透过工程师视角的技术分享、交流碰撞、项目共建等多种形式,汇聚开发者的力量,挖掘和传递最具价值的技术内容和项目,全面释放技术的创造力。
本文为专栏系列内容,作者为声网音视频实验室工程师孙勇男。
什么是测试自动化框架
测试自动化框架是为自动化测试用例或者脚本提供执行环境而搭建的基础设施。自动化测试框架为用户提供了各种好处,可帮助他们有效地开发、执行和报告自动化测试用例。自动化测试框架更像是专门为自动化测试而创建的一套系统。用一种非常简单的语言,也可以说框架是各种编码标准、测试过程、工作实践、项目层次结构、模块化、报告机制、测试数据注入等支持自动化测试的功能的极大融合。
自动化测试框架的类型
现在我们对自动化框架有了基本的了解,让我们看一下现在流行的各种类型的测试自动化框架。这些框架可能基于对不同关键因素(例如驱动类型、可重用性、易于维护等)进行自动化的支持而彼此不同。
● 基于模块的自动化测试框架
● 仓库架构自动化测试框架
● 数据驱动自动化测试框架
● 关键字驱动自动化测试框架
● 黑盒混合自动化测试框架
● 行为驱动自动化测试框架
为什么选用黑盒混合自动化测试框架测试 SDK
所谓黑盒,即提供给业务测试人员无需考虑程序内部结构和内部特性的情况下,在程序接口输入测试的参数并选择输出项,通过程序内部混合测试框架得到相应的结果,使用者只需关心输入与输出。
场景设计初衷
"自动化是为了更好的解放双手,追求更高的效率"
与互联网软件(app、web)的测试有所不同的是,简单来说实时视频SDK测试几乎不需要点点点,基本是通过自研自动化工具完成端与端间经过自定义网络损伤后的视频通信,并采集端上 SDK log 作为测试产出数据,客观测试数据即客观测试结果。围绕并以此通过结合实际业务需求,去离"Code based automation",根据业务测试以平台化、模块化来提供解决方案,从而提供更多的测试维度、减少重复体力劳动和效率瓶颈问题。
01 解决方案架构简述
基础建设方案
● 采用 CI 集群+测试工具及自动化测试框架 +数据平台化
支撑 daily、发版测试、开发自测的测试工作
● 具体模块功能简述
落地机房实景
● 多套测试节点支撑整个视频客观发版业务线
02 基于自动化测试维度的思考简述
逐步完善自动化闭环
通常我们在做自动化测试过程中通常先完成“执行测试”这一步骤,然而这只是相对自动化的一部分,我个人理解的自动化闭环优点不局限于"输入便捷性灵、测试覆盖性全、测试避障性强、输出聚合性高",更多的站在整个链路逐步突破测试精准性和效率瓶颈。
下面是我们在测试避障性和输出聚合性模块中的举例:
举例1 时段网络波动影响
在生活中使用聊天软件视频时,往往会因为网络突发波动造成突然的卡顿或者或者画面模糊,波动幅度和时间都具有不确定性,对于实时视频 SDK 的测试也会遇到这样的问题,虽然我们尽力保证网络环境的稳定,但是在长时间的测试过程中也经常会遇到诸如此类问题,影响我们的测试数据。
如何在测试过程中降低因网络波动造成的数据误差?
● 利用漏斗式重跑筛选方式,简要结构如图所示
即循环求值保证在设定误差内有效降低因为网络波动影响 SDK 版本测试数据。
举例2 版本数据波动影响力采据
在完成自动化测试后对于测试版本间或者与 release 版本各项体验指标数据上,一般是通过报告间数字的差异,但随着体验指标的增加,往往我们更迫切需要多个版本精确到端到端上某个指标上的差异性感知质量可视化。
● 后台管理系统-客观报告模块
支持多版本报告对比的case、devices、体验指标等求值动态视图
目前这种客观报告的视图形式虽然暂时满足了我们对自动化报告指标数据上的取证对比需求,但是在数据的梳理和合成功能还需要更加切入业务的理解。
03 总结
相对不同业务的框架并没有什么官方的标准,而是紧贴实际业务需求,搭配适用性高的主流框架或者自研框架集成到整个测试架构来提供解决方案。操作者可能为开发可能为测试,大家技术线有所不同,作为相对"黑盒"使用者暂不需要知道他的原理构造,仅需清楚了解能为自己在最短时间解决工作上的问题即是黑盒测试框架的价值。
孙勇男:实时视频 SDK 黑盒测试架构丨Dev for Dev 专栏的更多相关文章
- 迅为6818开发板-Cortex-A5架构丨支持4G全网通丨GPS丨WIFI丨另有丰富的扩展模块
迅为6848开发板-S5P6818芯片采用Cortex-A53架构! Cortex-A53和其高端兄弟Cortex-A57一样都是64位架构,实目前ARM的主力,且二者的指令集是完全兼容的,可以组成新 ...
- 英特尔® 实感™ SDK 架构
英特尔® 实感™ SDK在架构上完全不同于其前代系统 — 英特尔® 感知计算 SDK. 如果您使用英特尔感知计算 SDK 进行应用开发,会很快发现,全新的 SDK 可提供增强型编程模式,从而可通过几种 ...
- 环信ONE SDK架构介绍
环信ONE SDK架构介绍 摘要 环信即时通讯SDK自2014年6月正式公布2.0版本号至今已走过一个年头.从主要的单聊功能,到群聊功能,再到聊天室的实现.SDK无论是功能.稳定性,还是易集成性都在一 ...
- 短视频 SDK 架构设计实践
作者简介 孔维乐,七牛云客户端团队 Android 平台高级开发工程师,专注音视频,图形图像领域.OpenGL 专家,先后参与直播推流及连麦 SDK 的开发,主导短视频 SDK 的架构设计与实现, 对 ...
- 全球最低功耗蓝牙单芯片(DA14580)系统架构和应用开发框架分析
DA14580是Dialog公司研制的蓝牙单芯片,号称全球功耗最低,是TI CC2541的四分之一,是运动手环等穿戴类电子产品的常用芯片.但是DA14580的开发门槛不低,适合有蓝牙开发经验的团队来开 ...
- 朱晔的互联网架构实践心得S2E4:小议微服务的各种玩法(古典、SOA、传统、K8S、ServiceMesh)
十几年前就有一些公司开始践行服务拆分以及SOA,六年前有了微服务的概念,于是大家开始思考SOA和微服务的关系和区别.最近三年Spring Cloud的大火把微服务的实践推到了高潮,而近两年K8S在容器 ...
- [Android Pro] 开发一流Android SDK
cp from : https://blog.csdn.net/dd864140130/article/details/53558011 本篇文章已授权微信公众号 guolin_blog (郭霖)独家 ...
- QQ视频直播架构及原理 流畅与低延迟之间做平衡 音画如何做同步?
QQ视频直播架构及原理 - tianyu的专栏 - CSDN博客 https://blog.csdn.net/wishfly/article/details/53035342 作者:王宇(腾讯音视频高 ...
- ESP8266文档阅读2A-SDK-Espressif IoT SDK 使用手册v1.0.1.pdf
2A-SDK-Espressif IoT SDK 使用手册v1.0.1.pdf 1.前言 本⽂文主要介绍基于ESP8266物联⺴⽹网模块的SDK相关使⽤用⽅方法,包括开发⼯工具使⽤用以及SDK软件包架 ...
- NDK编译不同架构的参数
随着Android的蓬勃发展, CPU的架构也越来越多. 早期只支持ARMv5, 截至目前, 支持的架构已达三类七种: ARM(ARMv5,ARMv7 (从2010年起),ARMv8), x86(x8 ...
随机推荐
- Required request part 'file' is not present
问题描述: @RequestMapping(value = "upload", method = RequestMethod.POST,consumes = MediaType.M ...
- flutter-linux(未完成)
运行命令 flutter run -d linux --no-sound-null-safety 打包(build/linux/x64/release/bundle/) flutter build l ...
- vue的易错点合集
关于vue的操作,可以借鉴到一些Ajax的方法和思路,但是因为语法的不一样,所以易错点多在语法. 第一步要引用相对的方法 div的id名称应该与下文的el名称一致 挂载方法created,相当于aja ...
- Kubernetes 平台中的日志收集
准备 关于容器日志 Docker 的日志分为两类,一类是 Docker 引擎日志:另一类是容器日志.引擎日志一般都交给了系统日志,不同的操作系统会放在不同的位置. 本文主要介绍容器日志,容器日志可以理 ...
- 【BOOK】解析库--pyquery
CSS选择器 1.初始化 html=''' <div> <ul> <li class="item-0">first item</li> ...
- python机器学习——KNN(K近邻算法)
背景与原理: KNN算法其实是逻辑最简单的分类算法--我们认为一个数据的类型是由与其最接近的数据决定的,而"接近"实际上就是我们度量两个数据点之间的距离,如果我们把一组数据看做一个 ...
- 【python】绘图,颜色,线型
颜色 最好用的:在网站上找到对应使用十六进制RGB/RGBA字符串表示颜色 可以看颜色及其对应色号名称:https://xkcd.com/color/rgb/ 参考:matplotlib指定绘图颜色的 ...
- SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated
错误提示: SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in ...
- IDEA移除Maven依赖的方法
参考地址:https://blog.csdn.net/weixin_45654405/article/details/124415010 方法一: 如果不行,则进行下一步: 尝试在project St ...
- python代码抛出异常
from traceback import format_exc except Exception: print(format_exc())