最近在做客户端测试的过程中,自己负责的功能模块涉及到了第三方SDK的接入、准入测试,期间自己也踩了不少坑,所以特此写一篇文章总结一下。
先说一下SDK的概念吧,sdk就是软件工具开发包(外语全称:Software Development Kit),一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。百度上的解释比较生硬,给大家举几个例子吧:
使用App登录的时候可以选用微信、微博、QQ等第三方进行登录,这实际上就是你的App接入了第三方的登录sdk;
App里面支持将内容分享到微信、微博、QQ空间等第三方平台,这实际上就是你的App接入了第三方的分享sdk;
电商类App里面支持微信、支付宝、百度钱包等支付方式,这实际上就是你的App接入了第三方的支付sdk;
……
类似于这样的例子有很多,我就不一一列举了,相信大家现在应该对sdk有了一个粗浅的了解。目前大部分的App依赖于第三方服务完成需求的情况较多,为了保证有效集成高质量第三方功能,不影响产品线的发版计划,提高集成效率,需要第三方服务的产品线提供相关文档、测试结果说明等材料,以证明第三方sdk是达到可发布状态的。这就好比你去买二手车,你肯定要了解车的使用时长、各项功能的状况、保险啊之类的等等,通俗一点儿说,你的二手车各项都达标,符合我的预期,没有问题了我才能跟你交易。
听起来可能有些乱,以Android平台为例,给大家来拆开分别说一下:
SDK接入方—提供sdk接入规范
1.第三方sdk需要提供的材料:
二进制接入材料(接入的模块包、需要新增的权限列表)
2.第三方sdk集成质量标准:
功能测试通过,无p0、p1级别bug,遗留bug需要列出
Monkey测试通过,持续运行时间大于8h,过程中无native crash,需要提供抽样的monkey日志
Crash率符合规定标准(线上第三方插件crash率不能超过一定比例,否则会立即下线处理)
服务稳定性(由于服务宕机或端的缺陷引发的服务不稳定,每月时长小于5分钟)
3.第三方sdk集成性能标准:
cpu损耗(CPU消耗曲线最终可以收敛为0%)
内存占用(带来内存升高平均不超过7-10mb,根据自身业务而定,并且内存消耗曲线最终可以收敛)
内存泄漏(sdk无内存泄漏存在)
流量使用(流量使用需要明确理由,后台流量无损耗)
慢操作(核心业务场景无慢操作出现)
sdk首次启动速度不超过1s,后续启动不超过200ms
FPS(平均值50fps左右,用户感知不到有卡顿)
耗电量(待机状态下的耗电量、核心业务场景下的耗电量)
sdk包大小(内置插件、外置插件包大小要达标)
静态代码检查FindBugs(等级为scariest(high confidence)&&scary(high confidence)问题100%修复)
静态代码检查Simian(高于60行+的重复代码100%解决)
4.第三方sdk兼容性集成标准:
系统版本兼容
第三方jar包,不能与接入方依赖的jar包有冲突
主流手机兼容(小米、三星、华为、魅族等)
分辨率兼容
网络兼容(2G\3G\4G\WIFI)
弱网络
安全软件兼容性(360手机卫士、安卓优化大师等)
5.第三方sdk安全性报告:
用户统计信息上传(用户统计上传需要加密,用户行为统计需要有开关控制)
敏感信息声明(如果使用(联系人||短信||通话记录)需要声明,不允许存储用户信息)
权限list(给出需要的权限list,及敏感权限的使用原因)
支持的android最低版本
不允许classloader注入
6.关键时间点:
sdk准入包提供时间点:最晚版本开发前一周提供
sdk包修改与替换时间点:灰度发布前一周禁止换包
SDK提供方—QA提供sdk准入报告
如果是首次接入新的SDK的时候,需要SDK方提供功能测试报告、性能报告等。
具体内容应该包括:
功能测试状况(功能点,准入case,bug数量,重点难点bug,遗留bug等)
兼容性测试状况(最低支持系统版本,最高支持系统版本,兼容屏幕尺寸、分辨率等)
性能测试状况(CPU,内存,数据流量等)
最终版本提供时间点(需要和我们测试时间match,最好能够在迭代启动前提供版本,这样有时间进行验收测试)
需要提供sdk的demo以及必要的说明文档
如果是曾经集成过的SDK,本次作为更新,需要SDK方提供更新功能点、功能测试报告、涉及到性能的需要性能报告。如果是官方更新,有其他产品线已经接入了同一个版本的SDK,准入流程可简略。
具体内容应该包括:
更新了哪些功能点(引入了多少bug,修复状况,遗留bug)
集成的sdk的demo以及sdk更新文档
如果涉及到性能方面的,需要提供性能测试报告
SDK接入方—QA进行准入验收测试
SDK接入方的QA根据提供的sdk demo、sdk说明文档、质量报告等,进行sdk准入验收测试,准入验收测试通过后,方可接入,有准入不达标的,直接打回。
我在测试的时候遇到踩过的坑就是对sdk的准入意识不够,没有严格执行sdk的准入测试,而是开发直接将sdk集成到我们App后才开始测试,导致很多问题出现,中途替换sdk包,又要执行准入测试,又要重新回归之前测试过的部分,rd这边还要与sdk提供方进行联调和对接,影响了项目的正常迭代。