Android下的探索性测试

根据Android的特点,我们可以想到一些进行探索性测试时需要注意的地方:

1. 对于用户输入:

  • 使用实体键盘或者虚拟键盘?
  • 触摸点击输入还是手写输入?针对老年人的产品,比较好的方式是采用的是手写输入,易于让用户适应
  • 如何定位到输入字符串中的某个位置?手指粗,或者屏幕小,很难精确定位到特定位置

2. 对于软件状态的考虑:

  • 程序运行中接电话,是否会造成死机,或者程序锁死?
  • 中断后能否回复以前的状态?
  • 比如播放歌曲时接电话,歌曲能否自动暂停,挂机后能否继续播放?

3. 基于场景考虑:

  • 用户在使用程序时是否会同时使用别的程序?
  • 在用程序得到结果时,是否还需要用到别的程序?
  • 比如计算完财务状况,可能需要发邮件向银行确认错误的账单?

4.对于系统SDK的API和程序使用类库之间冲突的考虑:

  • 当前Android还处于高速的发展和改变的时期,很多功能甚至API还不完善很稳定,一些工具和类库的接口有时会和SDK的API不一致,例如Robotium

5.对于程序并行运行的考虑:

  • 是否允许多个程序进程同时执行?
  • 如果可以,资源:硬件和用户数据是否会死锁,是否会有竞争?
  • 是否允许本程序和其他应用程序一起运行?
  • 如何保证数据的安全性?

6.对于程序兼容性的考虑:

  • 对不同大小分辨率的兼容?不止是外观的改动,手机和平板的使用习惯也会有不同。手机大部分是简直是来快速的获取重要的内容,要点要突出明确,而平板大部分时间会用来获取详细的内容和报告;
  • 对不同的系统版本的支持?尤其是Android几个月就对版本进行升级的策略的应对;
  • 程序是否可以升级?
  • 如何保持向下兼容性?

7.对其他程序提供的接口的调用:

  • 不同与传统软件和系统,Android允许程序调用其他程序暴露、或者说提供的接口,来进行调用,如何处理这些调用,以及这些调用带来的稳定性和安全性问题?
    Android使用自己的Dalvik虚拟机,而Dalvik是基于沙盒的,每个程序都单独存在于自己的虚拟机之中,如何进行有效的数据交换和授权?

8.内存管理:

  • Android系统为每个应用分配的内存上限为24M。

很重要的一点,就是不能太依赖于模拟器进行测试:由于模拟器的限制,有很多测试(比如多点触摸和重力感应等传感器相关的)没有办法实现.

而更重要的一点:就是只有用实际的测试机器,真正地在生活中使用它们,才能更好地从用户的角度出发,达到进行探索性测试的目的。