覆盖安装测试关注点


  • 产品总是不断的更新迭代,因此覆盖安装是重要的环节,移动应用升级安装中的覆盖安装测试需要关注哪些点?应用中功能很多,覆盖时不可能全部遍历。我们需要在“变化”中找寻“不变”的本质和规律。在覆盖安装过程中,我们也要找到“不变”的部分,那就是我们能够“减少工作量”的地方。
  • 覆盖安装应该是大部分用户选择的方式,排除特例是指在不清除用户数据,不清除应用本地缓存设置的情况下,对同一个应用进行功能特性的升级。
  • 新的版本出来时需要覆盖每一个已经上线的版本,特别去关注用户和系统数据是否能够正确迁移(eg:收藏、订阅),以及保障用户升级后的功能可用性。
  • 安装apk时,系统会将当前的apk重命名,并复制到data/app/路径下,并删除之前版本的apk
  • 覆盖安装常见问题引起的原因
    1 数据库表结构的变动(增加一个字段,减少一个字段,甚至是新表的建立)
    数据库结构修改必须升级数据库版本,并对相应版本进行处理。此外,任何在发版之前修改数据库表结构的行为都是不可取的,即使是很简单的逻辑。
    2 数据与当前版本的不匹配(数据超出上限或下限),会引发逻辑出错、数组越界等问题。有任何数组结构的修改,无论是增加还是减小了数组,都要进行容错处理。
  • 另外,在覆盖安装时会发现,部分手机在覆盖安装老版本的app时,出现“INSTALL_FAILED_VERSION_DOWNGRADE”错误,这个问题仅出现在Android 4.2及以上版本,经查阅Android源码,发现在4.2版本之后加入了验证,不允许覆盖安装versioncode比当前版本低的apk。如果想使用低版本,只能先卸载再安装(这对开发者来说是非常友好的)。
    [Lihuazhang](https://testerhome.com/Lihuazhang)
    上图是在testerhome中对覆盖安装关注点讨论的总结可作为实际工作中的参考。如有错误欢迎指正。

    参考

    https://testerhome.com/topics/10161
    http://blogs.360.cn/360qtest/2014/03/11/android%E8%A6%86%E7%9B%96%E5%AE%89%E8%A3%85%E5%8F%8A%E9%81%87%E5%88%B0%E7%9A%84%E9%97%AE%E9%A2%98/