点击
“搜狗测试”
可关注我们!
一、前言
Hello,小伙伴们,相信小伙伴们所在项目产品中都有涉及同步逻辑的相关模块,小编最近在进行某个同步需求的测试,包括设置项同步(全量)和历史记录同步(增量)。小编认为,优化我们的测试方案,可以很好的提高测试覆盖度,由此针对两种同步方式,总结了一些测试手段。
参照测试流程,需求评审->开发方案评审->测试方案制定->测试执行,今天,小编和大家聊一聊:“同步逻辑”测试方案的制定。
二、全量同步
全量同步,顾名思义,上传和下载都是全量,这样测试手段就明确了,上行和下行接口,需保证各个参数都有覆盖,且须保证数据同步后,本地和服务端是同一份一致数据。
1、测试方案制定
(1). 需了解同步选项的协议(客户端&服务端开发制定);
(2). 了解客户端、服务端的开发代码实现;
(3). 了解服务端接口协议、数据库相关表;
(4). 服务端接口测试用例&接口测试;
(5). 客户端&服务端集成测试测试用例&执行;
2、同步项协议
同步项的协议,是需要准确了解的。
示例:(设置项同步)
(1). 共7大类,40个设置项在本次测试范围内;
(2). 协议相关,每个设置项,5个字段,设置项的描述状态有2~12种;(有详细的定义说明)
3、同步时机
同步的上行、下行时机,需要准确理解;
结合产品需求,还可以在代码中,准确找到设置同步方法的调用时机。
示例:
同步策略,可以给出一定测试建议;
例如:未登录、登录两状态的常见问题处理:未登录->登录,用户服务端数据是否覆盖本地;登录->退出登录,本地数据是否清空等。
(1). 下行时机syncSettingDownload()
登录;(帐号、第三方等)
开启应用;
(2). 上行时机syncSettingUpload()
退出设置页面;
退出导航页面;
首页弹框消失;
退出登录会同步一次;
4、测试方案&手段
关于测试手段,小编暂时用到的可行、有效的手段如下:
(1). 抓取请求串,上行&下行;
Charles、Fiddler、Logcat工具结合使用。
例如登录发起请求
(2). 下行,观察比对客户端拉取vs服务端数据库数据;
(3). 上行,观察比对客户端本地vs服务端update后数据库数据;
(4). 上行&下行,比对version版本号;
(5). 添加日志,上行和下行发起时,相应的log以及对应位置;
示例
5、数据对比工具
同步测试,数据对比是一个大任务,为了能快速的测试并发现定位问题,可以使用工具。
例如本次测试任务:设置项有40项,对比json串:格式化json串(HiJson),利用beyond compare工具对比。逐步对比每个版本所修改的设置项的开关状态值、以及设置项的生效性。
Version1(默认)VS Version4(示例)
Version5 VS Version 6(示例)
三、增量同步
增量同步测试,相比全量同步,要复杂些。上行和下行,数据同步后,本地和服务端数据库中是同一数据。
a)新增数据同步
上行,需要保证新增数据上行成功,能准确区分需上传的数据,不遗漏;
下行,需保证本地已有的数据,无需再更新,下拉的数据全部是新数据,无冗余;
b)删除数据同步
上行,需要保证客户端本地和数据库该数据均被删除成功,不会有数据遗留;
下行,保证数据库下拉的数据均有效数据;
c)修改(更新)数据同步
上行,同步需要保证,本地修改后数据生效,且同步后可以覆盖数据库中的同一数据,数据库无数据重复;
下行,数据库下拉的增量数据中,本地数据可以更新,本地无数据重复;
d)全量数据下载
1、测试方案制定
(1). 需了解同步选项的协议(客户端、服务端开发协定);
(2). 了解客户端实现;(准确的了解开发实现,对测试发难的制定有很多帮助)
(3). 了解服务端接口协议、数据库相关表;
(4). 服务端接口测试用例&接口测试;
(5). 客户端&服务端集成测试测试用例&执行;
2、同步项协议
(1). 了解数据协议,示例:RecordSyncMessage.proto
(2). 理解同步数据类型,示例:common、line、subway、navi
(3). 客户端字段与数据库的对应等;
3、开发实现-同步时机
了解开发实现以及理解同步策略。
示例:小编测试任务,开发实现:对比版本号,增量同步(上传&下载),同一个Version的数据,指的同一批上传的;客户端根据数据是否具有cloudid,判断是否进行上行;
(1). 下行时机Download()
(2). 上行时机Upload()
4、测试方案&手段
(1). 抓取请求串,上行&下行;
Tips:连接android studio测试,查看logcat,是个不错的选择哦~~
示例:未登录,打开应用发起checkversion请求
(2). 下行,观察比对客户端拉取vs服务端数据库数据;
(3). 上行,观察比对客户端本地vs服务端update后数据库数据;
(4). 上行&下行,比对datatype、dataname、datadetail、dataorder、dataversion、create和updatetime;
(5). 开发代码相关log;
示例:
5、数据对比
数据对比,sql数据库查询,例如:按照某个datatype排序,便于对数据进行比对;
(1).新增数据同步
搜索历史记录common类型测试示例
客户端产生新增记录,发起upload,上行成功;(客户端抓请求串&logcat)
数据库中,应对应新增一条记录;
其他设备,可同步download,有新增数据下行成功;
(2).删除数据同步
上行,需要保证客户端本地和数据库该数据均被删除成功,不会有数据遗留;
下行,保证数据库下拉的数据均有效数据;
客户端删除历史记录,发起upload,上行成功;(客户端抓请求串&logcat)
数据库,同步删除该条数据;
其他设备同步download,可同步删除成功;
(3). 修改(更新)数据同步
客户端本地修改后,数据上行,并生效;
同步后,可以覆盖数据库中的同一数据,数据库无数据重复;
其他设备同步download,本地数据可以更新,本地无数据重复;
(4). 全量数据下载
数据下行,download,本地数据可全部下载,排序如有规则,须符合需求;
结束语
以上是小编在测试过程中累积了一些测试心得,分享给大家,希望对大家有所帮助。欢迎小伙伴留言,共同探讨测试手段。祝大家2018年,测试手段&技能up up up!
领取专属 10元无门槛券
私享最新 技术干货