1.1、了解业务流程,确定开放给开发者都有哪些接口
- 列出所有安卓和ios 的调用接口
1.2、了解SDK用到的所有协议,每个协议中字段的意义和作用以及server端处理逻辑
- 详细了解安卓sdk和ios sdk 采用的是什么协议及协议版本。
1.3、接口要校验输入参数各种输入情况是否能正确处理,返回值的正确性,是否有数据缓存到本地,检查是否有回调,如果有对于请求成功、请求失败(包括无网络、服务器返回非200错误代码)是否都有调用
- 对于安卓和ios的采集字段,进行分析,包括每个字段的长度、特殊字符。数据缓存到本地后,对缓存的处理机制(何时使用缓存数据,缓存数据的有效期,缓存位置、缓存是否容易被清理)回掉函数的回掉情况。
请求成功的流程、请求失败的处理机制。
1.4、测试中对每个请求都应该抓包测试,查看请求的字段、参数值、返回值是否正确 - 对每个接口发起的请求进行抓包测试,查看请求字段、参数值、返回值是否正确。
1.5、对于协议中必传字段,SDK中是否校验为空的情况
- 对于协议中必传字段,sdk是否进行了为空的校验。
1.6、查看是否存在多发、少发请求的情况
- 请求发送数量,是否有多发少发的情况,请求数据的大小,对服务端的压力
1.7、对于异步请求的结果在其他地方(A类中)会用到的情况,检查是否存在网络较慢情况下,未完成请求数据为空时A类就用到数据
- 对于异步请求的结果,检查在网络较慢或者极端的网络条件下,未完成请求,数据为空时,调用数据的地方是否有相应的处理机制。
SDK更新
- 对于新增接口,需要确定新增的接口对应的协议和相应字段的意义。以及新增接口对于其他模块或者接口的影响。
- 新增的接口进行抓包,确定发送的请求参数、返回值与协议一致并且不影响。
- sdk更新时,对于有用户数据的情况,需要考虑旧sdk没有数据,更新新sdk后,新sdk是否可用;旧sdk有数据时,更新sdk后,数据是否存在以及对旧数据的处理机制。
现状:
从开发提供demo转变为测试编写demo,从功能级别对sdk进行测试,可以更好的理解sdk的使用方式,但是本质上没有进行更深入的测试。
-
建议:
1 测试需要结合一些单元测试框架,从方法层面,对sdk进行更深入的解剖测试。同时尽量实现自动化测试。
基本从底部->上层->模拟业务方调用的顺序进行测试。利用分层测试的策略。
要更多的思考业务场景,尽可能的模拟业务的使用场景,构造复杂的条件(比如多线程、弱网、网络切换)
2 开发进行单元测试,提高代码覆盖率。
js测试,目前暂未想到更好的办法, 需要集体讨论下更好的测试方法。