客户端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白皮书介绍的方法、工具基本能满足测试需求,就不再重复了。

网易云大礼包:https://www.163yun.com/gift

本文来自网易云社区,经作者万春艳授权发布。

相关文章:
【推荐】 网易蜂巢(现已更名为网易云计算基础服务)用了什么技术?
【推荐】 大数据技术在金融行业的应用前景
【推荐】 微服务化不同阶段 Kubernetes 的不同玩法

原文地址:https://www.cnblogs.com/163yun/p/9565190.html

时间: 2024-09-30 14:50:19

客户端SDK测试思路的相关文章

户外物理渗透:终端机,客户端的web测试思路

现在的客户端界面越做越好看了,很多用到了web技术,轻便.界面炫.更新快,但是这样web的缺点也就出来了,就是不稳定,容易受用户等因素影响. 因为很多客户端web是内嵌的,内部通信,所以很多对安全的考虑就很少,漏洞亦较多.在此,我想跟大家分享一下客户端的web测试思路,让大家找到更多的高质量漏洞. 首先打开一个客户端界面,如腾讯的群介绍界面. 方法一:测试F5键.大家都知道F5是刷新键,按f5测试界面是否全部或部分刷新,如果刷新,很大的可能就是嵌入的web. 方法二:测试右键.网页自己特有的右键

客户端GUI测试技术和自动化测试架构设计简谈

客户端自动化特点 客户端的自动化,通常做过的人都不是很愿意深入讨论.因为除了功能和逻辑之外,不得不面对各种界面变化,各种和环境交互,各种兼容问题以及想不到灰色地带,就算这样,也找不到太多有效的bug.然而即便如此,客户端的自动化必须去做,尤其是GUI的.它的自动化特点是: 复杂 成本高 不容易发现问题 技术要求高 架构很难通用 下面,从一些基本的东西开始一点点的讨论客户端GUI测试的一些问题和处理办法,以及自动化架构设计的一些思路.事实上就像上面说的,GUI的测试并不是为了发现bug,而是回归的

多线程同步程序的测试思路

这里我有一个简单的思路,来源于去年应届生找工作做大量的名企笔试题里他人的技巧. 多线程的测试使用cout是不靠谱的,因为多个线程使用cout很容易产生混乱的输出,而且耗时. 多线程的测试往往需要知道多个线程同时运行的时候对某个共享区域的使用是否正确,为了检验正确性,比较好的测试用例就是:递增的整数序列 递增的整数序列中的每一个整数都对应一个线程的动作,最后我们将这些整数再当成另一个标记数组的下标,下标对应的值就是我们操作的动作执行的次数 只要用于标记的数组每一个元素都是1,即可. 比如: (1)

【Android类型SDK测试(二)】环境基础

(一)语言 Android使用的Java语言,所以要测试Android类型的SDK,Java的基础知识还是需要的. 另外,Android中有NDK类型的编程,需要知道C相关的知识. (二)环境准备 Android开发环境的搭建网上一搜就一大堆,看看就懂.这里我只是列举一下,请读者按需查找. 申明一点,作为Android类型SDK的测试,我们不能仅停留在设备上点击按钮,看看功能和展示,更多的时候,我们需要代码,需要日志,所以 Android开发环境对于我们来说,就是测试环境,必不可少. http:

上班啦,软件测试的测试思路总结

清晰的测试思路会让工作更加流畅,先来看看进行初步软件测试时,一些测试思路: 模块测试 模块功能点检查 功能操作检查 页面链接.相关性检查.特殊字符.系统数据检查.测试数据检查等,这部分可以自行搜索.同时检查对之前bug的修复是否会影响到其他功能模块. 页面布局是否规范 测试进阶 掌握测试模块需求,及时和系统工程师确认系统需求 详细记录测试的功能点 针对单个模块测试,主要是测试以下: 1.UI界面测试 界面设计.提示框是否正确等,用自动化测试工具进行UI界面的功能测试. 2.易用性操作测试 主要是

xfire实现webservice客户端之测试关注点

日前的工作接触到很多系统间的Webservice调用,这里想谈谈基于spring+xfire实现的webservice的客户端踩过的一些坑,需要测试关注的点. xFire的配置项 在spring中实现ws的client的客户端还是相对比较容易的,只需要编写一个和webservice接口一致的接口类即可.在xml的配置中需要关注下面几个参数: http.timeout : 响应超时,即服务端接收到ws请求,但在处理请求时,长时间没有返回,超时 http.connection.timeout : 连

python搭配selenium,htmltestrunner实现自动化测试 —— (测试思路和基础步骤)

1. 测试思路: 编写测试单例 编写测试套件,集合测试单例 集中测试测试套件 生成测试报告 补充,发送测试结果到E-mail 2. 示例 编写测试单例 编写测试套件 测试脚本程序 生成报告 发送邮件 ? 原文地址:https://www.cnblogs.com/yqmcu/p/10129838.html

APP测试思路

APP测试的时候,建议让开发打好包APK和IPA安装包,测试人员自己安装应用,进行测试.在测试过程中需要注意的测试点如下: 1.安装和卸载 ●应用是否可以在iOS不同系统版本或Android不同系统版本上安装(有的系统版本过低,应用不能适配) ●软件安装后是否可以正常运行,安装后的文件夹及文件是否可以写到指定的目录里. ●安装过程中是否可以取消 ●安装空间不足时是否有相应提示 ●如果应用需要通过网络验证之类的安装,需要测试一下断网情况下是否有相应提示 ●是否可以删除应用(可通过桌面删除,也可以通

使用微信开发报“请使用客户端进行测试”

当使用微信开发报“请使用客户端进行测试”错误时,说明在浏览器本地不支持微信环境,可以下载微信开发模拟器,错误如下: 解决办法: 进入https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html下载stable Build 安装,将生成的requestAddres的链接在该模拟器中运行 已微信网页授权为例,测试如下: 如果对以上有疑问的博友可关注或评论,转载请说明出处,本人博客地址为:https://www.cnbl