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,可保障端到端之间延迟无感知的实时互动。从陈沛杰的分享中也能够看出,融云之所以拥有卓越的音视频能力,源于融云对于各项技术的严苛要求和不懈探索。过硬的指标,过硬的质量,永远是融云追求的方向。
(免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。 )