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 专栏的更多相关文章

  1. 迅为6818开发板-Cortex-A5架构丨支持4G全网通丨GPS丨WIFI丨另有丰富的扩展模块

    迅为6848开发板-S5P6818芯片采用Cortex-A53架构! Cortex-A53和其高端兄弟Cortex-A57一样都是64位架构,实目前ARM的主力,且二者的指令集是完全兼容的,可以组成新 ...

  2. 英特尔® 实感™ SDK 架构

    英特尔® 实感™ SDK在架构上完全不同于其前代系统 — 英特尔® 感知计算 SDK. 如果您使用英特尔感知计算 SDK 进行应用开发,会很快发现,全新的 SDK 可提供增强型编程模式,从而可通过几种 ...

  3. 环信ONE SDK架构介绍

    环信ONE SDK架构介绍 摘要 环信即时通讯SDK自2014年6月正式公布2.0版本号至今已走过一个年头.从主要的单聊功能,到群聊功能,再到聊天室的实现.SDK无论是功能.稳定性,还是易集成性都在一 ...

  4. 短视频 SDK 架构设计实践

    作者简介 孔维乐,七牛云客户端团队 Android 平台高级开发工程师,专注音视频,图形图像领域.OpenGL 专家,先后参与直播推流及连麦 SDK 的开发,主导短视频 SDK 的架构设计与实现, 对 ...

  5. 全球最低功耗蓝牙单芯片(DA14580)系统架构和应用开发框架分析

    DA14580是Dialog公司研制的蓝牙单芯片,号称全球功耗最低,是TI CC2541的四分之一,是运动手环等穿戴类电子产品的常用芯片.但是DA14580的开发门槛不低,适合有蓝牙开发经验的团队来开 ...

  6. 朱晔的互联网架构实践心得S2E4:小议微服务的各种玩法(古典、SOA、传统、K8S、ServiceMesh)

    十几年前就有一些公司开始践行服务拆分以及SOA,六年前有了微服务的概念,于是大家开始思考SOA和微服务的关系和区别.最近三年Spring Cloud的大火把微服务的实践推到了高潮,而近两年K8S在容器 ...

  7. [Android Pro] 开发一流Android SDK

    cp from : https://blog.csdn.net/dd864140130/article/details/53558011 本篇文章已授权微信公众号 guolin_blog (郭霖)独家 ...

  8. QQ视频直播架构及原理 流畅与低延迟之间做平衡 音画如何做同步?

    QQ视频直播架构及原理 - tianyu的专栏 - CSDN博客 https://blog.csdn.net/wishfly/article/details/53035342 作者:王宇(腾讯音视频高 ...

  9. ESP8266文档阅读2A-SDK-Espressif IoT SDK 使用手册v1.0.1.pdf

    2A-SDK-Espressif IoT SDK 使用手册v1.0.1.pdf 1.前言 本⽂文主要介绍基于ESP8266物联⺴⽹网模块的SDK相关使⽤用⽅方法,包括开发⼯工具使⽤用以及SDK软件包架 ...

  10. NDK编译不同架构的参数

    随着Android的蓬勃发展, CPU的架构也越来越多. 早期只支持ARMv5, 截至目前, 支持的架构已达三类七种: ARM(ARMv5,ARMv7 (从2010年起),ARMv8), x86(x8 ...

随机推荐

  1. React工程化实践之UI组件库

    分享日期: 2022-11-08 分享内容: 组件不是 React 特有的概念,但是 React 将组件化的思想发扬光大,可谓用到了极致.良好的组件设计会是良好的应用开发基础,这一讲就让我们谈一谈Re ...

  2. linux虚拟机,ifconfig无法获取静态ip地址

    之前一直显示这种ip地址,如下图(网图),查看了DHCP,是正常启动的,虚拟网络编辑器中设置的也正确.后来发现更改虚拟机的设置后就可以了,如下: 设置方法:VMware-虚拟机-设置-网络适配器,选择 ...

  3. Jetpack compose初尝试

    2021/07/29 Jetpack compose1.0正式发布,已经可以在生产环境中使用了. 下面的内容为根据官方教程尝试的总结,上手没难度,而且也不需要配置什么环境. Android 开发者   ...

  4. js小数相加精度不准确

    例: 0.1+0.1+0.1+0.7 != 1 0.1+0.2 != 0.3 解决办法: 相加 function addNum(num1, num2) {         let sq1, sq2; ...

  5. C++中,get getline gets 用法

    1.cin 2.cin.get() 3.cin.getline() 4.getline() 5.gets() 6.getchar() 1.cin>> 用法1:最基本,也是最常用的用法,输入 ...

  6. switch组件的使用

    正常情况下,path和component是一一对应的关系 switch可以提高路由匹配效率(单一匹配)

  7. 自学JavaDay01

    1.Java的特性和优势 简单性 面向对象 可移植性 高性能 分布式 动态性 多线程 安全性 健壮性 2.Java三大版本 JavaSE:标准版(桌面程序,控制台开发......) JavaME:嵌入 ...

  8. springmvc接口访问流程排查

    首先找到webapp下面的web.xml文件: 检查前端控制器: 并注意contextConfigLocation配置的springmvc的配置文件路径: 接着找到springmvc配置文件路径,如果 ...

  9. MFC的对话框使用Scintilla

    工作中需要做一个脚本编辑器的工具,用于代码补全.语法高亮.错误提示等功能,可以直接使用开源控件Scintilla, 网上有一些MFC的多文档使用Scintilla的例子,项目中使用的是对话框,自己实现 ...

  10. C# DataGridView 新增列 新增行 操作函数 - [ 自律相互分享,共促一起进步 - 社会的正常运维就这么简单,何以权,何以钱...- 张光荣2010年谈社会改正提出的正能量]

    功能: 一.列相关: 1.追加列,左插列,右插列, 2.删除列 二.行相关: 1.追加行,上插行,下插行 2.删除行,删除所有空行,清空所有数据... 原理:根据对鼠标于 DataGridView 点 ...