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,可保障端到端之间延迟无感知的实时互动。从陈沛杰的分享中也能够看出,融云之所以拥有卓越的音视频能力,源于融云对于各项技术的严苛要求和不懈探索。过硬的指标,过硬的质量,永远是融云追求的方向。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。