如何进行SDK的测试
一、sdk是什么
SDK,全称:software development kit。客户端SDK是为第三方开发者提供的软件开发工具包,包括SDK接口、接入文档、以及demo等。
可以在任何第三方应用中集成,使用方便。
二、开发需要提供给测试人员什么
1.提供如下内容:
1). SDK包
2). 相关文档,如:使用文档,接口说明
3). 示例程序(demo)
2.一般来说,SDK包分为两种类型:
1). *.jar:不带UI界面的SDK,只包含class文件和清单文件,不包含资源文件。如图片等所有res中的文件。
2). *.aar:带UI界面的SDK,包含所有资源,class以及res资源文件全部包含,比如一些用于APP开发者方便开发分享界面的组件,会提供一些默认的UI界面(一般也会提供让用户自定义UI的功能)。
三、sdk测什么
1、客户端SDK测试的对象
客户端SDK测试,就是对提供给开发者工具包里面的内容进行测试,因此测试的主要内容有:
1) SDK接口和文档
SDK接口是测试的主要对象,也是核心的内容。
2)SDK日志打印
对开发者来说,SDK接口里面的具体实现是透明的,当上层调用时遇到问题,可以依赖SDK打印的日志来定位分析。所以SDK日志是否完备,有助于问题的顺利解决,对应用开发者、测试人员、SDK提供方来说都很重要。
3) 程序示例:demo
demo是SDK提供方用来展示如何调用接口实现具体的功能,也可以作为开发者直观感受SDK接入的效果。
2、客户端SDK接口测试的类型
客户端SDK根据需求和开发平台不同,可能需要选择不同的测试类型对SDK接口进行测试,常见的测试类型有:
1) 功能测试
需要保证SDK接口功能的正确性和完整性。客户端SDK接口测试和服务端接口测试类似,包括路径覆盖、场景覆盖、以及接口参数(入参/出参)覆盖。主要测试各种参数组合下的返回响应值,考虑数据是否缓存(一键登录的双卡双待手机出现过)与存储,是否有回调(电信一键登录出现的一个bug就是:网络请求中的系统方法没有给出回调导致的),对于请求成功或失败是否都能按预期进行处理。具体测试用例可根据需求设计,例如初始化接口
2) 兼容性测试
3) 性能测试
保证SDK接口满足特定的性能需要,比如CPU占用、内存使用率、移动设备耗电量等。例如客户端登录的场景,登录时后台可能收到大量同步数据包的请求,那么对这些数据包的解析验证以及本地储存的性能就要进行保证,否则可能出现登录响应很慢甚至卡住的问题,所以测试时就需要考虑这个场景的性能。
4) 稳定性测试
确保业务场景在一定压力下,持续运行一定时间,接口功能和设备资源占用有无异常。可用monkey来进行测试。
5) 单元测试
单元测试,是为了测试某一个类的某一个方法是否能正常工作,而写的测试代码。以我们登录模块为例,使用的单测框架有:Mockito、powermock等。使用jacoco进行代码覆盖率统计。
6) 有关网络的测试(例如网络切换、sim卡)
保证在不同网络类型,不同网络环境下,SDK接口都能较好的处理。sim卡的切换,sim卡欠费,sim卡损坏等。
7) 接口测试
接口要验证输入参数各种输入情况是否能正确处理,返回响应值的正确性。见上面功能测试。
8) 安全性测试
有的sdk还需要进行安全性测试,对隐私数据的保护,访问权限的控制,SDK接口的安全性问题也是如此。