融云为 2021 Qcon·北京站 分享终端 SDK 质量保障的最佳实践

融云为 2021 Qcon·北京站 分享终端 SDK 质量保障的最佳实践

2021 年 5 月 29-31 日,由极客邦科技旗下 InfoQ 中国主办的综合性技术盛会 QCon 全球软件开发大会于北京召开。大会设置了包括“人工智能驱动业务实践”、“云原生技术应用”、“大数据实时计算与分析”、“音视频体验提升实战”、“低代码实践与应用”、“弹性工程及运维体系”等在内的 35 个技术专题,邀请业界顶级的技术专家,面向技术团队负责人、架构师、工程总监、开发人员分享技术创新和实践。

图 1:2021 Qcon·北京站 

在音视频服务解决方案专场中,全球互联网通信云领先厂商融云作为受邀嘉宾,重点解析了融云音视频 SDK 的自动化测试链路探索与实践,让开发者了解了 SDK 打包集成测试过程中的难点痛点,以及多样性 SDK 自动化交互测试设计思路。 

测试的终极目标是保证 SDK 质量 

融云自 2014 年创立以来,专注于通信云赛道,以提供 SDK/API 的方式,为数百种应用场景赋予通信云能力。为了不断满足开发者对产品功能的需求,成立 7 年来,融云的 SDK 接口数量从 279 个增长到 597个,服务端的 API 接口数量从 36 个增长到 107 个,并且适配 Android、iOS、Web、Flutter、小程序、桌面版等全平台。 同时,融云还将众多的 SDK 集合成不同类型的 Demo,方便开发者调用,覆盖了直播模式 SealLive、即时通讯 SealTalk、融云课堂 SealClass、实时音视频 SealRTC、语音聊天室 SealMic、视频会议 SealMeeting 等众多场景。

这些场景化的 Demo 和 SDK 已累计服务超过 30 万款 App,SDK 触达 50 亿用户。 伴随着 SDK 数量增长,和场景 Demo 的多样化,开发者最关心的是融云如何保障终端 SDK 的质量。会上,融云自动化测试架构师陈沛杰发表了《融云 SDK 交付质量保障探索及应用》的主题演讲,从实战经验出发,为开发者答疑解惑。 

图 2:融云自动化测试架构师陈沛杰发表演讲 

目前,衡量音视频质量的指标众多,分为直接与音视频相关的和与网络相关的两大类。其中,直接与音视频相关的包括视频连通率、卡顿、清晰度、花屏、黑屏、首帧时间,以及音频啸叫抑制、回声抵消、噪声抑制等;而在网络传输中,弱网、丢包、延时、抖动和网络自适应调整,也会影响终端 SDK 质量。此外,CPU、内存、IO、流量、发热等性能指标,与安全、兼容相关的静态代码扫描、安全工具分析,以及版本兼容、设备碎片化等,也都是影响终端 SDK 质量的因素。

因此,为交付有质量保证的 SDK,融云做法就是两个字:测试。只有通过测试,才能掌握这些指标,进而针对薄弱环节加以优化,确保 SDK 稳定性。在测试环节,融云通过工具化、脚本化的方式,实现 Demo 业务测试的自动化,通过对业务测试、专项测试、SDK 接口测试的快速迭代,来跟进和掌握相关指标数据。 

基于业务的专项自动化测试实践 

融云对 Demo 业务自动化测试的思考基于两个维度:一个是如何实现业务自动化测试,保证终端 SDK 产品多样性以及多端交互的稳定性?另一个是音视频专项测试是如何进行的? 在业务自动化测试实践方面,融云通过对终端业务自动化测试工具的选型,制定出科学的终端业务自动化测试流程。

图 3:终端业务自动化测试流程 

通过这一流程,首先可以实现在大量的 Android 、Web、iOS 、Win、Mac 之间任意自由组合,进行多端交互、交叉测试。其次,利用插件重点关注连通率、稳定性、画面检测(黑屏、绿屏等)、性能数据、弱网和抓包数据等重要质量指标。第三,完整保存了终端过程数据。例如:日志、真实终端渲染后音频、视频画面录制等。 在音视频专项测试的实践方面,测试需要实现端到端的整体覆盖,包括采集、预处理、编码,到网络传输,再进行解码、后处理和渲染的整个传输过程。

图 4:音视频专项测试实践 

要完成这一过程,陈沛杰以音视频抗丢包自动化测试为例,介绍了主要步骤:

第一, 通过业务 UI 自动化平台链接到网损仪路由;

第二, 由接口调用网损仪的相关参数传输至终端设备,录制终端画面后,上传至平台。

第三, 自动或人工分析,完成音视频抗丢包自动化测。 此外,融云还可通过传统手工+测试工具结合的方式,进行自动化测试,完成端到端的延时测试,以及通过工具实现性能数据统计等。 通过这些测试,最终可以掌握诸如 CPU 占用率、内存占用值、耗电量、流量、FPS、卡顿等相关性能指标,以及视频、声音延迟;视频、声音质量;啸叫距离、啸叫抑制和音频、视频通话抗丢包的测试数据。 

融云 SDK 接口自动化测试探索 

所谓 SDK 接口自动化测试,就是要验证 SDK 接口字段校验覆盖率、SDK 接口复杂调用的可测试性以及系统版本及设备碎片化覆盖率。目前,普遍使用的 SDK 接口测试方案有三种:SDK 单元测试、UI 自动化方法和注册广播方法。

图 5:SDK 接口测试方案 

在实践中,融云认为 SDK 自动化测试工具应具备以下能力:

第一,大部分 SDK 接口做到脱离 UI 可以快速迭代;

第二,可以对 SDK 接口字段进行自由组合逻辑校验;第三,可以范围性的开展 SDK 打包集成测试。 基于此,融云对 SDK 自动化测试工具进行了两次探索与迭代,第一版采用的是终端设备微服务模式,SDK 接口绑定 URL 地址;第二版则通过 URL 动态反射接口,实现了参数动态反射序列化。 

最后,陈沛杰强调:自动化测试要尽可能在短的测试周期内达到更高的覆盖率,并且自动化测试尽量不以流程为中心,应适应场景快速变化的需要。

结语 

通过测试和优化,目前,融云音频最大抗丢包可达 80%,视频最大抗丢包 40%;语音延迟小于 120 ms,视频延迟小于 200 ms,语音直播延迟小于 350 ms,视频直播延迟小于 350 ms,可保障端到端之间延迟无感知的实时互动。从陈沛杰的分享中也能够看出,融云之所以拥有卓越的音视频能力,源于融云对于各项技术的严苛要求和不懈探索。过硬的指标,过硬的质量,永远是融云追求的方向。

       

标签: ,