2021 年 5 月 29-31 日,由极客邦科技旗下 InfoQ 中国主办的综合性技术盛会 QCon 寰球软件开发大会于北京召开。大会设置了包含“人工智能驱动业务实际”、“云原生技术利用”、“大数据实时计算与剖析”、“音视频体验晋升实战”、“低代码实际与利用”、“弹性工程及运维体系”等在内的 35 个技术专题,邀请业界顶级的技术专家,面向技术团队负责人、架构师、工程总监、开发人员分享技术创新和实际。
图 1:2021Qcon·北京站
在音视频服务解决方案专场中,寰球互联网通信云当先厂商融云作为受邀嘉宾,重点解析了融云音视频 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 动静反射接口,实现了参数动静反射序列化。
最初,陈沛杰强调:自动化测试要尽可能在短的测试周期内达到更高的覆盖率,并且自动化测试尽量不以流程为核心,应适应场景疾速变动的须要。
图 6:开发者凝听演讲
结语
通过测试和优化,目前,融云音频最大抗丢包可达 80%,视频最大抗丢包 40%;语音提早小于 120 ms,视频提早小于 200 ms,语音直播提早小于 350 ms,视频直播提早小于 350 ms,可保障端到端之间提早无感知的实时互动。从陈沛杰的分享中也可能看出,融云之所以领有卓越的音视频能力,源于融云对于各项技术的严苛要求和不懈摸索。过硬的指标,过硬的品质,永远是融云谋求的方向。