关于sdk:CODING-DevOps-线下沙龙回顾二SDK-测试最佳实践

25次阅读

共计 3051 个字符,预计需要花费 8 分钟才能阅读完成。

讲师:潘志刚
声网品质效力部门负责人,超过 14 年服务器、挪动终端、音视频编解码以及汽车电子等跨行业从业经验,负责建设测试基础架构和自动化测试计划,主持搭建继续集成测试生态体系。现任声网品质效力部门负责人,负责推动品质和效力继续优化,专一技术创新赋能团队软件保障,通过软件和硬件的高效联合,摸索产品交付的最优解决方案。

前言

SDK 测试不同于 APP 测试,不仅要站在终端用户角度思考问题,还须要站在 APP 开发者的角度思考问题。面对不同的行业需要,如何保证质量铜墙铁壁,这是一条摸索未知的赛道。本期推送将为大家带来声网研发效力负责人潘志刚的《SDK 测试最佳实际——打造质量保证的一体化利用平台》,分享一体化利用平台的演变以及如何整合根底能力,保障测试和交付的高效执行,晋升品质效力。

1.0 GUI Driven Test

SDK(软件开发工具包)是声网对外次要的产品交付,是用于为特定软件包、软件框架、硬件平台以及操作系统等创立应用软件的开发利用的汇合,跟传统意义上的 APP、外围利用或者最终客户感知到的产物是不一样的,对于最终端用户来说是有形的。

晚期为了保障 SDK 测试的品质,测试人员须要依据 SDK 交付的 API 设置 GUI demo。比方在一个实时的互联网通信界面,须要用户退出到对应频道进行相应的音频和视频通信,在这样的界面里会设计对应 Button、下拉列表,或者小的图标,每一个对应的元素体现对应接口实现能力。如下图所示,最上面 4 个 Button 别离是麦克风、摄像头、挂机按纽,对应 API 接口 enableLocalAudio、enableLocalVide、startScreenCapture 和 leaveChannel,右上角看到信号条图标是获取 onNetworkQuality 接口。通过这样简略的 Demo,测试人员设计相应的 test case,确保每一个接口能够失常调用,基于此来保障初期迭代里交付的质量标准。

然而随着交付平台越来越多,交付须要基于桌面端、挪动端、web 端,桌面端包含 Windows,macOS 和 Linux,挪动端包含安卓和 ios,越来越多平台设计相应的 demo 势必须要测试人员投入更多资源,同时 API 在一直增长。因而自动化是必然趋势。

2.0 GUI Demo Test Automation

2.0 阶段是 GUI Demo Test Automation,开发人员将平台进行了分层。

如上图,下面的 iOS、OSX、Android 等是对外交付的平台,上面是对应平台用到的第三方开源工具,如 Appium 和 Selenium,两头这一层做相应分装,其目标在于进步测试效力,用一套 case 笼罩到所有交付的平台。实现 70% 的自动化水平曾经可能让团队节约一半的工夫,极大地提高了测试效率。

3.0 API Demo Test

3.0 阶段进入到 API Demo Test。声网的测试主体是 SDK,SDK 关注点在于 API 性能实现、平台适配、面向开发者、性能功耗包体积,集成构建打包;而 APP 关注业务性能、用户交互、终端用户、界面操作和程序安装。针对 SDK、APP 两种齐全不同的测试重点,声网从新设计了一套针对 SDK 的自动化测试框架——Wayang Testframework。

Wayang 的原理来自印度尼西亚的一种木偶戏,前端是一个木偶,后盾表演者通过线和乖巧的手管制前端木偶去做相应的动作。在这样的一个体系里有三个不同的对象,右边的对象是 test client,两头是 test server,左边是对应的 test demo。Test client 相当于木偶戏幕后的表演者,须要明确本人的测试需要是什么,设计相应的 test case;test demo 相当于前端的木偶,会依据测试端收回继续申请做相应行为调用。所有的被动调用以及被动调用都是基于代码输入。在整个体系外面所有的接口调用和相应回调都是基于代码终端的输入,无需关怀界面的实现。和自动化 2.0 与手工 1.0 相比,目前每天能够实现一百个以上 API 测试,自动化测试覆盖率可能超过 80%。

4.0 AIO

在实现 Wayang 实际后,声网仍在思考是否可能有进一步的优化实际。随着产品交付迭代周期越来越紧,以及更多的需要染指,从测试角度来说,光思考测试环节是不够的,须要把整个产品交付纳入思考范畴之内——包含后期构建、打包、测试、交付。因而,这里引入了 AIO 的理念。

AIO 是箱庭和沙盒的联合。那么,什么是箱庭和沙盒呢?箱庭可能提供基础设施,相当于游戏里提供相应的陷阱、敌人或者宝箱,如何去获取或者击败由本人决定。而沙盒意味着把最小的原子单位凋谢给用户,典型例子有我的世界、乐高,最小单位就是一个 cube。声网的测试单位是基于 API,那么在整个交付外面,箱庭对应着保障基础设施(e.g:网络、电源,测试环境)稳固运行,至于沙盒则会拆分构建、测试、上线公布三个版块。

在声网一体化 AIO 架构外面,蕴含了一系列相应的 module。

AIO 架构包含了设施集群。因为不同平台交付必然笼罩各种各样的状况,须要思考到不同设施的兼容性。调度核心确保所有设施在预期设定中如期交付,因而须要服务网关的存在。数据中心会剖析 SDK 产物明确的 log 输入;最初一块是构建公布,ACCS 平台包含编译、公布、解体上报、数据分析、自动化测试等功能模块。上面根底能力代表着更底层的元素,如链路模仿、物理连贯管制、人机交互等。

回到方才所说的 Wayang 的个性,须要有一个 client 对应一个 demo。Client 表演者晓得须要做什么,而后让 demo 去做相应的事件。基于这个状况,声网做了进一步的晋升。通过 API driven test,声网设立了一个独立的 soloWayang app,外面的 test iterator 生成器能够不停地把测试 API 继续调用。通过基于 test farm 并发测试,在所有设施上跑 soloWayang,所有相应的 API 都会被测试以确保发现和解决问题。

在测试环节外面,会有十分多数据产生,包含 SDK data、demo data、test data 和 server data。如何去将这些数据做正当无效的事后开掘?

传统模式下,数据的价值在于呈现问题后去剖析数据。逆转一下思维的话,如果可能对数据进行提前收集和预剖析,就能够在问题裸露之前被动地去发现和解决危险。声网数据分析平台通过 Beats、Logstash 对不同平台的数据进行荡涤,将有效信息剔除。Kibana 通过相应的过滤,可能把相应问题列举进去。举个例子,某个早晨跑了四百台设施,发现某台设施呈现对应的 log 异样,通过 Kibana 能够进行预警,及时发现这个问题是否真的只有一台设施存在,或者在数台机器里都存在共性。以前通过人工的形式去开掘几台设施的数据是否有相应的问题,很难联想到是不是与某一个零碎无关、与某一个芯片无关,还是跟某一个特定的网络场景无关。通过数据分析平台的正当过滤,可能帮忙咱们通过种种证据的汇总来无效发现问题,尽早解决问题。

Q:针对于手机 APP 去做测试,如果须要上百部手机同时连起来,做一个性能测试环境。但一台电脑的反对能力是无限的,可能同时连贯十几台手机就达到极限了,怎么去做横向扩大做性能环境?
A:如果是针对安卓手机的话,咱们有一台晚期的节点同时连贯了 30 台安卓设施证实是可行的,倡议再确定一下节点和外设的配置。更多的机器连贯能够通过采纳集群的形式来部署 test farm。另外,能够在相应的 test app 利用中设计独立的性能测试组件,有利于实现性能测试的横向扩大。

点击获取视频和 PPT 材料

正文完
 0