客户端SDK测试思路+SDK如何进行自动化测试

客户端SDK测试思路+SDK如何进行自动化测试

2023年6月28日发(作者:)

客户端SDK测试思路+SDK如何进⾏⾃动化测试本⽂来⾃作者:万春艳

是什么客户端SDK是为第三⽅开发者提供的软件开发⼯具包,包括SDK接⼝、开发⽂档和Demo⽰例等。SDK和应⽤之间是什么关系呢?以云信即时消息服务为例,如下图所⽰,应⽤客户端通过调⽤云信SDK接⼝,进⾏消息等数据查询存储等操作,或通过协议与云信服务器间进⾏通信。

测什么1. 客户端SDK测试的对象客户端SDK测试,就是对提供给开发者的⼯具包⾥⾯的内容进⾏测试,因此测试的主要内容有:SDK接⼝和⽂档SDK接⼝是测试的主要对象,也是核⼼的内容。SDK⽇志对开发者来说,SDK接⼝⾥⾯的具体实现是透明的,当上层调⽤时遇到问题,只能依赖SDK打印的⽇志来定位分析。所以SDK⽇志是否完备,是否有助于解决问题,对应⽤开发者和SDK提供⽅来说都很重要。Demo或⾏业解决⽅案Demo是SDK提供⽅⽤来⽰例如何调⽤接⼝实现具体的功能,也可以作为开发者直观感受SDK接⼊效果。⾏业解决⽅案类似Demo,但是,⽐Demo更加像⼀个产品,具有⽐较完整和典型的⾏业应⽤场景。可以让⾏业开发者⽐较明确知道,接⼊这个SDK做出来的产品效果如何。其他周边⽐如UIkit等,可能只是在SDK开发中的附带输出,但对有的开发者来说能极⼤降低接⼊成本。

2. 客户端SDK接⼝测试类型客户端SDK根据需求和开发平台不同,可能需要选择不同的测试类型对SDK接⼝进⾏测试,常见的测试类型有:功能测试保证SDK接⼝功能正确性和完备性。客户端SDK接⼝测试跟服务端接⼝测试类似,包括场景覆盖和接⼝参数覆盖。主要测试各种参数组合下的返回值,考虑数据是否缓存与存储,是否有回调,对于请求成功或失败都能按预期进⾏处理。性能测试保证SDK接⼝满⾜特定的性能需求,⽐如资源占⽤、移动设备耗电量等。在云信IM登录的场景,登录时可能收到⼤量同步数据包和离线消息包,那么对这些数据包的解析以及本地储存的性能就要进⾏保证,否则可能出现登录响应很慢甚⾄卡住的问题,所以测试时就需要考虑这个场景的性能。兼容性测试保证SDK兼容特定的设备平台,并与其他软件兼容。兼容设备平台的⼯作量通常是⽐较⼤的,先根据产品需求和市场现状对需要适配的设备平台做分析,再根据需要覆盖的机型、系统版本、分辨率等进⾏优先覆盖排序。移动端SDK兼容性测试需要考虑下对模拟器的⽀持,因为很多开发者可能就是先在模拟器上开发。客户端SDK覆盖多平台设备的,还要考虑多端消息数据包的互通。稳定性测试考察业务场景在⼀定压⼒下,持续运⾏⼀段时间,接⼝功能和设备资源占⽤有⽆异常。⽐如云信实时⾳视频通话场景中,要保证多⼈长时间通话且不断有⼈进出时的接⼝功能和设备资源占⽤⽆异常。⽹络相关测试保证在不同⽹络类型,不同⽹络环境下,SDK接⼝都能较好的处理。在涉及到多媒体资源或⾳视频通信,弱⽹下测试的需求较多,并且弱⽹下的处理通常需要反复优化和对⽐,不仅是新⽼版本效果对⽐,还包括竞品的效果对⽐测试。安全性测试 对隐私数据保护,访问权限的控制,⽤户服务鉴权等,SDK接⼝的安全性问题也是⽐较突出。安全性很多是在架构设计和开发设计中就考虑进去,但是最好还是有专门的安全性测试。

功能怎么测上述诸多测试类型中,功能测试先⾏。在进⾏客户端SDK测试前,需要全⾯的了解测试对象的细节:了解业务流程,结合API接⼝⽂档和开发指南,理顺接⼝的使⽤场景和调⽤关系;了解SDK协议,理解协议中字段的意义以及服务器端的处理逻辑;了解各接⼝或协议返回码,分析对应的场景;了解开发实现细节,可以绘制成图,便于测试分析和分层验证。对客户端SDK进⾏测试,可以采⽤的分层测试⽅式由上⾄下依次有:基于Demo和解决⽅案->基于接⼝调⽤->基于代码。

基于Demo和解决⽅案的测试⼤多客户端SDK在提测时,都会有对应的Demo或者解决⽅案提交给测试,因此可以覆盖到该Demo或解决⽅案对应的接⼝或业务场景。⽽且测试⼈员可以⽐较直观的看到界⾯表现,上⼿快,所以在客户端SDK测试中⽐较常⽤,也是⽐较有效的。但这种测试⽅式的缺点也很多,Demo对接⼝和业务场景覆盖⽐较有限,对接⼝的输⼊输出参数不能全覆盖,发现问题时定位复杂度增加。精⼼设计的Demo以及多解决⽅案的形式或许可以最⼤程度满⾜测试需要,但是需要较⼤的Demo开发测试投⼊,也使得问题暴露的时间⼤⼤滞后。 基于Demo和解决⽅案的测试,可以是⼿⼯的也可以是UI层⾃动化测试。

基于接⼝调⽤的⾃动化测试基于接⼝调⽤的测试,包括对单个接⼝的测试,也包括业务场景的覆盖。这种测试⽅式直接有效,需要⼀定开发基础,可以参考下KS上之前其他同学关于AOS和iOS SDK接⼝⾃动化测试实践的经验总结。⽬前,我所在项⽬组的同事也有⼀些实践,以云信iOS SDK测试为例,最⼩回归测试对应接⼝也已经⾃动化,测试⼯程基本结构如下: 基于接⼝调⽤的⾃动化测试,需要有有产品的思路、开发的知识和测试的思维,做起来有难度。但是因为SDK接⼝通常⽐较稳定,所以⼀旦实现并投⼊使⽤,测试效率和质量的收益都很⼤,值得拥有。

基于代码的单元测试单元测试是为开发代码质量保驾护航的⼀个重要环节,在测试左移推进的道路上,⼤家越来越意识到单元测试的重要价值。特别是在⼀些核⼼业务上,值得开发同学投⼊精⼒去做。

其他测试类型的展开,跟应⽤层测试类似,杭研QA⽩⽪书介绍的⽅法、⼯具基本能满⾜测试需求,就不再重复了。

本⽂来⾃⽹易云社区,经作者万春艳授权发布。

===============================完=============================================

SDK如何进⾏⾃动化测试相对 App 的测试⽅案,市⾯上已经有⾮常多且成熟的 UI 级别的⾃动化测试框架,却鲜有针对 SDK 提供的⾃动化测试⽅案,原因是 SDK属于为 App 提供服务的“插件”。⼀个 App 可接⼊⼀到多个 SDK 在内,⽽在项⽬中模块化是⾮常普遍的架构,所以 SDK 是针对细分功能提供服务的组件,有的提供数据服务、地图服务或节省开发成本的组件等等,这只能 SDK 开发者根据功能⾃⾏完成测试。本篇说明的 SDK 测试⽅案是针对数据服务的 SDK 功能覆盖,皆包含 SDK 的 API、⽹络数据及缓存相关的逻辑测试,即⾮ UI 的纯数据逻辑的覆盖。本篇是⾃动化测试基础上的延伸,相对安卓系统可以便利的通过 adb 指令控制如 App 安装、卸载、退出应⽤等“系统”级操作,iOS 在控制 App 层⾯上只能通过⼀些间接的⼿段完成上⾯⼏点需求,为了易于维护,在控制器中以有限状态机模式进⾏了构造,以便于后续增加更多的操作状态和测试⽤例。⼀、测试框架概览1、测试框架整个测试流程就如下⾯描述的有向图,以 Pytest 驱动客户端执⾏任务,然后将客户端输出的请求数据进⾏截取处理,⽽后验证是否通过测试⽤例。2、Android 端测试框架Android 可以使⽤ adb 命令与 app 进⾏数据上的通信,如发送⼴播,启动 Activity 等。同时也可以使⽤ shell 命令对配置⽂件进⾏修改,再进⾏ gradle 编译,实现对 app 级别参数的修改,从⽽完成不同参数对 app 程序影响的验证。3、iOS 端测试框架iOS 由于系统特性,⽆法如安卓系统灵活运⽤系统命令来操作 App 或 SDK,所以以⼀个 Socket 连接 Server 端进⾏通信。另外在 iOS系统上⼜可利⽤ Runtime 的特性,将传输的字符串转化为 API 调⽤,这样做的好处是将 Socket 模块和 Runtime 解析模块编⼊应⽤中就⽆需再次打包,只需 Python 端编好代码和测试 case,所有的功能调⽤都由两端约定的协议解析执⾏即可。⼆、Android1、SDK 接⼝的验证对于集成 SDK 的 app,如果需要在 App 运⾏时,触发⼀个⾏为,可以通过⼴播来实现。可以根据 action name 完成对⾏为类型的分类,根据 caseid 完成对⾏为的区分。如下图所⽰:根据上图⽰例如下:

发布者:admin,转转请注明出处:http://www.yc00.com/web/1687931854a58370.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信