一键初始化软件测试环境的工具

发表于:2013-03-08来源:百度质量部作者:不详点击数: 标签:测试环境
一键初始化软件测试环境的工具!工具背景 对于测试人员来说,从用户角度进行测试无疑具有重要的意义。对手机行业来说,如何模拟真实的用户场景是摆在手机测试人员的一个难题。

  工具背景

  对于测试人员来说,从用户角度进行测试无疑具有重要的意义。对手机行业来说,如何模拟真实的用户场景是摆在手机测试人员的一个难题。

  众所周知,我们研究问题的时候,常常会从时间和空间两个角度去衡量和分析。回到手机的使用场景来看,使用了一段时间的手机,通常会具有以下两个特征:

  1) 应用数据多

  2) 应用使用时间长

  应用数据多是指手机里面的应用在经过用户长时间使用后,会产生很多的应用数据,比如通信录里面有上百条联系人,通话记录中有百十条记录,短信中有若干短信,图库中有若干图片等。应用使用时间长是指手机用户对一些关键的应用会持续使用,比如电话、短信、联系人。一般这些应用从拿到手机后,基本就不会被替换不会被卸载。当然少数酷爱刷机的用户除外。

  对于手机测试人员来说,刷机正是我们每天测试的第一件事。而“不巧”的是,从用户的角度来看,使用时间越长,产生使用数据越多的手机,出现问题的情况也越普遍,出现的问题也越难复现,而同时出现的问题也越会让用户感觉不可理解和接受,因此如何快速构造用户场景,如何最大限度的模拟用户的使用场景,对手机测试人员来说至关重要。

  工具简介

  从上文分析中我们看到,构造手机的用户场景,无非就是从空间(应用数据)和时间(应用使用时间)两个维度去努力:

  图1 手机用户场景

  就一般情况而言,在正常的用户使用场景下,应用数据和应用使用时间是直接相关的,即应用使用时间越长,应用的使用数据越多。但对于手机测试人员来说,在快速迭代的开发和测试模式驱动下,我们不可能有也不必要用很长的时间去准备使用数据,那么如何去模拟构造用户场景下的数据呢?

  再来看上面这两个维度,对于使用时间,我们可以让自动化脚本定向循环去执行,或者用Monkey Script不定向循环去操作手机,但这两种执行方式产生的数据都不符合用户场景下的应用数据预期。故而对于应用使用数据,开发相应的初始化工具就显得很有必要。

  一键初始化测试环境工具就是基于这样的考虑而开发,该工具从用户的角度出发,可以一键构造/清除真实用户场景,减少测试人员的测试环境准备时间,从而最大限度模拟用户角度对产品进行功能测试和压力测试。该工具可以

  ü 一键初始化测试环境。支持包括核心app在内的多种应用的一键测试初始化:联系人、短信、彩信、文件、文件夹、图片、视频、音乐、小说、电话、记事本、日历。

  ü 一键清除测试环境。对应初始化测试环境功能,提供一键清除功能。

  ü 从数据维度对手机进行压力和性能测试。支持百万数量级应用数据快速填充,为对手机进行压力和性能测试准备环境。

  ü 提供命令行方式运行支持。全面支持命令行方式运行,从而方便自动化测试、压力测试和Monkey测试。

  ü 提供工具实现层jar包,以便进行二次开发和集成开发。封装工具实现层,以供测试人员根据实际需要进行二次开发和集成开发。

  工具整体架构

  工具是经典的两层架构,如下图,实现层是负责各类应用具体数据初始化实现的,包含联系人的创建,短信/彩信的初始化等等,表现层是在实现层jar包(InitData类)的基础上,实现的和用户进行交互的界面。实现层与表现层的分离为后续实现层的复用提供了条件。

  图2 初始化工具整体框架

  具体到实现层来说,考虑到不同的应用数据结构不同、存储方式不同、数据的差异化等需求,数据的初始化可以分为以下两类:

  1) 利用Provider插入的数据。工具中这类应用主要包含联系人、短信、彩信、电话、记事本、日历。

  2) 利用文件流方式生成的数据。工具中这类应用主要是SD卡中的应用数据,包含文件、文件夹、图片、视频、音乐、小说。

  下面会分别对这两种插入方式做详细实现方式的介绍。

  工具具体实现

  初始化数据的第一步当然是准备数据源,然后跟进先前制定的数据生成规则,在一定的系统环境因素约束下,生成一系列个性化的初始化数据,最后利用系统Provider或文件流交互的方式把生成的数据放到应用中,下图给出工具实现的逻辑示意图:

  图3 初始化数据流程

  本节将在上一小节整体实现框架的基础上,具体分析下实现层两种数据初始化方式的实现细节。

  一、利用Provider方式的数据初始化

  Android系统架构为了使一些重要的公用数据能够方便地在各个应用之间进行交互,提供了Content Provider来封装数据访问和存储的具体实现。利用Content Provider进行数据初始化的方式可分为以下四个步骤:

  1) 获取要初始化应用资源唯一标识符。

  图4 资源唯一标识符

  初始化数据的第一步当然是找到被初始化的应用标识符,android系统中的每一个Content Provider都有一个唯一的名字,它是其它应用和该Provider交互的一种便捷途径。上图是一个Provider的通用表达,其中A表示标准前缀,B表示URI,C是具体路径,D是URI中的某个数据ID(如果存在的话)。

  2) 准备数据源,并制定数据生成规则。

  图5 准备初始化数据和制定数据生成规则

  在获取到被初始化应用的资源标识符后,根据应用数据结构的表间依赖和表内字段准备一定格式和数量的源数据,然后结合应用本身的表现制定数据的生成规则。

原文转自:http://qa.baidu.com/blog/?p=709