3) 清理已有杂乱数据。
在初始化数据之前,为了避免“脏数据”带来的被测应用数据场景和实际用户数据场景之间的偏差,在开始初始化数据之前,工具会首先清理已有杂乱数据。
4) 生成数据,并利用Content Provider初始化应用数据。
图6 初始化应用数据
获取被初始化应用的资源标识符后,利用该资源标识符提供的函数直接将生成的用户个性化数据插入到应用中去,即完成了本应用的数据初始化工作。
其中利用Content Provider后,插入的源数据的格式不用过分关注,因为Content Provider是利用表的方式来组织数据的,下表用一张联系人的电话表单举例:
表1 电话联系人Content Provider表
_ID | NUMBER | NUMBER_KEY | LABEL | NAME | TYPE |
… | … | … | … | … | … |
… | … | … | … | … | … |
该表形象描述了联系人的结构,当工具初始化联系人应用数据时,只需重点关注以上字段(举例)就可以了。
以上介绍了第一类数据初始化的方式,该类方式利用系统公用数据提供的Provider,间接操作应用数据存储等相关操作,从而完成应用数据的初始化工作。
二、利用文件流方式的数据初始化
对于文件、文件夹、图片等存储在SD卡中的应用数据的初始化方式,系统并未提供标准的存储方式供应用使用,故对于此类应用数据的初始化,工具采用文件流交互的方式完成。这类应用的数据初始化方式和第一类大致相同,具体如下:
1) 获取要存储文件的路径。
第一类应用数据因为要存储在应用的数据库中,而数据库是用唯一的资源标识符区分,故其第一步就是获取该应用特定的标识符。第二类应用数据的初始化是存储在SD卡中,故初始化的第一步就是确定要存储数据文件的路径。
2) 准备源文件。参考上文。
3) 清除已有杂乱数据。参考上文。
4) 利用文件流交互方式初始化应用数据。
图7 文件流交互方式初始化应用数据
利用准备的源文件,开启多个文件流交互线程并行完成应用数据的初始化工作。并行文件流读取也大大提高了此类应用数据初始化的效率。
以上介绍了利用文件流交互方式进行的数据初始化工作,该工具中的文件、文件夹、图片等应用数据的初始化工作就是利用此种方式完成的。两种数据初始化方式的过程基本一致,只是在对象的获取和数据的写入方式上有些许的差别。
应用效果
该工具很好的从数据角度解决了用户数据模拟填充的问题,从而使手机测试人员能够更加方便地模拟用户场景,站在用户的角度对产品进行测试。具体来说,该工具的应用效果可以从以下三个方面来看:
1) 全面支持命令行方式执行。支持完全自动化方式运行该工具,大幅缩短测试人员测试环境准备的时间30%以上。
2) 为Monkey测试提供初始化环境支持。目前该工具已经运行在Lab、EP,为其提供运行Monkey测试之前的环境初始支持。
3) 封装实现类支持其他工具的二次开发。该工具的实现类Jar包,已经在Stress Test等工具中,应用于其初始压力数据模块。
原文转自:http://qa.baidu.com/blog/?p=709