专项测试--环境相关的测试

  • 干扰测试

  • 权限测试
  • Android定位测试

本次分享内容比较多,有兴趣的童鞋可以选择有5~8分钟的时间细看,比较实用的分享,特别是权限测试那一块,非常实用,小橙推荐有志于测试的童鞋阅读~

资料来源:《移动App测试实战》

一、干扰测试

在用户使用手机上APP的时候,会遇到一些打断的情况。例如正在浏览页面的时候收到一个电话等等。如果开发代码写的不够严密,会导致我们的APP在这些情况下发生一些异常的行为。 在测试过程中需要覆盖到这些干扰的情况,常见的场景有以下几种情况: (1)收到电话

(2)收到短信

(3)收到通知栏消息

(4)无电提示框弹出

(5)第三方安全软件告警框弹出

由于测试时间和测试资源有限,我们一般不推荐对每个界面甚至每个功能点都进行干扰测试。

在做此测试之前需要先评估一下功能本身跟干扰的关联性。

举个例子:

(1)如果我们的应用是一款游戏App,那么我们需要保证用户在游戏中收到电话后能正常中断游戏并在挂断电话后能正常恢复游戏。

(2)另外也需要考虑通知栏消息是否会覆盖掉界面上实时性高的游戏相关的文字等等。

(3)另外一个我们在实际中遇到的案例也很有参考性。

在某种特定的支付场景下,需要用户输入手机收到的短信验证码才能完成支付环境。App端开发在实现这一功能的时候,考虑支付的安全性,当用户按Home键将App切到后台后做了保护处理,不再显示输入验证码的界面。

而根据不同手机和用户的设置,收到短信验证码的时候不一定会在通知栏顶部显示,那么用户就需要切到读取短信的地方再切换回来,但是这时由于上面提到的保护措施,已经不可以再输入验证码了,这样用户就无法走完支付流程。这是一个典型的App手机上特有的场景,如果我们的测试人员开启了短信预览功能,或者使用两个手机,一个有SIM卡用于接收短信,另一个测试机用于执行App,以上情况就会被覆盖,等到真实用户遇到这类问题就会投诉。

这些细节问题产品和开发可能不会一开始在定义需求和开发阶段想到,作为而是,我们需要有这方面的意识和能力,在需求评审中提出这类问题并惊醒后续的测试

二、权限测试

一些用户在实际使用App的时候会有意识阻止某些功能。例如有的用户感觉然某个App访问电话本或者相册可能泄露隐私,就在手机的设置中禁止了该App访问相册的权限。 如下图:

图片

Android用户可以在系统中禁止某个App获得相关的权限。很多手机上的安全软件也提供了相关的功能。 在IOS中也有类似的设置,图4-77所示是IOS系统中列出的隐私权限。

图片

针对每个涉及隐私的权限类型,都可以针对性地设置各个App是否可以获取该权限。如下图所示是针对定位服务的例子:

图片

所以在IOS系统中,涉及到隐私相关的权限,用户可以比较精确地针对每一个App来设定

App代码如果处理不当,很可能产生UI不友好,进程奔溃等诸多问题。 这些情况也是在测试中需要覆盖到的。我们需要考虑每个功能是否用到了这些用户可控制的权限,如果用到,则要增加相应的测试用例。

在实践中,测试人员可能并不清楚具体功能实现所需要的权限。

对此一个可行的方法是开发在提测时提供一个需要的权限列表。这样测试人员就能有针对性地测试。

我们在测试人员关闭了定位服务权限后界面上的位置显示为错误的默认值“北京”而没有任何友好的提示信息。可见权限测试在实际工作中的确能帮助我们发现不少问题。

边界情况:

1、手机环境本身也有其边界情况需要在测试中覆盖。常见的场景有: 可用储存空间过少。如果程序有存储操作,建议覆盖此场景。通常来说,可接受的底线是如果进程被系统杀掉,在可用储存空间增多后能正常重启并使用App;

2、没有SD卡/双SD卡。如果程序使用了SD卡,需要覆盖此场景。

3、飞行模式。如果程序使用数据网络、蓝牙等与飞行模式相关的功能,建议覆盖此功能

4、系统时间有误(早于和晚于标准时间)。通过此场景的测试经常能发现一些设计和代码上的缺陷。建议对所有与系统时间有关的功能均手动调整系统时间进行测试。

5、第三方依赖。如果我们的App对其他的App有依赖关系。(例如QQ,微信联合登录等)那么我们还需要测试第三方App没有安装的情况以及版本过低的情况。

三、Android定位测试

在测试过程中,会遇到一些APP行为与地理位置互相关联的情况。例如我们需要给国内特定区域用户战士一种特殊样式的UI。我们在测试中不太可能拿着手机跑到这些地区去实际测试,而是会用下列的方式进行模拟测试:

1、白盒方式。

由于定位代码最终获取的是一个位置对象,我们只需要在获取到位置对象后手动设置经纬度即可进行测试。程序中使用的位置对象一般是android.location.Location对象。调用它额setLatitute和setLongitude方法就可以设置经纬度。

每次修改都需要手动设置并且重新编译会比较麻烦,对此我们可以进一步考虑使用文件的方式来进行设置。并且可以考虑加上开关,通过文件配置在测试代码和真实代码之间来回切换。这样能避免重新编译,提高效率。

2、模拟器模拟。

使用模拟器进行测试的时候,可以使用DDMS进行经纬度设置。Android Studio 和Eclipse等IDE都带有DDMS工具,如图所示:

图片

其底层是调用了adb shell的geo fix 命令。因此我们也可以手动使用:geo fix [经度][纬度]来设置模拟器的经纬度

自定义位置提供器。一些第三方APP提供了基于自定义位置定位器的位置修改功能。要使用此功能需要在手机的开发者选项中设置允许虚拟位置,如下图:

图片

通常这类APP会提供一个地图界面给用户选择坐标,点击后就能修改机器的位置信息。

我们也可以写代码实现此功能的APP,下面是核心代码,将GPS_PROVIEDER提供的位置设置为自定义的经纬度:

图片

除了上述代码外,还需要在manifest文件中设置: 

图片

获取位置的时候,将获取我们自定义的位置。

以上介绍了几种APP常见的环境相关的问题,实际项目中可以在每个功能的测试用例设计中加入相关场景考虑。

也可以系统化的针对某一个维度来进行多个模块的测试,比如权限测试,可以把所有需要用到隐私相关权限的功能点罗列出来,然后在测试上禁止对应的权限,逐个查看对应的功能,看其行为是否可以接受。

以上涉及到代码的内容,写的不是很详细,书中也没有介绍得特别详细,需要稍后完善,小橙也还在努力学习中,欢迎一起交流~

相关推荐

  1. 功能测试--APP专项测试

    2024-07-11 00:40:01       42 阅读
  2. 移动应用专项测试:确保用户体验全方位保障

    2024-07-11 00:40:01       47 阅读
  3. 测试:Selenium相关问题

    2024-07-11 00:40:01       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 00:40:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 00:40:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 00:40:01       58 阅读
  4. Python语言-面向对象

    2024-07-11 00:40:01       69 阅读

热门阅读

  1. 学习测试练习题

    2024-07-11 00:40:01       24 阅读
  2. QT log日志

    2024-07-11 00:40:01       29 阅读
  3. Angular页面项目以HTTPS方式启动调试

    2024-07-11 00:40:01       22 阅读
  4. ArduPilot开源飞控之AP_VisualOdom

    2024-07-11 00:40:01       20 阅读
  5. 如何实现跨域

    2024-07-11 00:40:01       19 阅读
  6. centos7yum-mysql-community-server安装流程步骤

    2024-07-11 00:40:01       24 阅读
  7. toFixed 四舍五入问题

    2024-07-11 00:40:01       21 阅读
  8. [C++][CMake][嵌套的CMake]详细讲解

    2024-07-11 00:40:01       19 阅读
  9. 65.指针函数和函数指针

    2024-07-11 00:40:01       24 阅读
  10. 网络安全测评技术与标准

    2024-07-11 00:40:01       25 阅读
  11. Qt之多线程编程(QThread)

    2024-07-11 00:40:01       25 阅读
  12. MySQL:left join 后用 on 还是 where?

    2024-07-11 00:40:01       21 阅读
  13. 最短路径算法(算法篇)

    2024-07-11 00:40:01       24 阅读
  14. 【数学建模】生产企业原材料的订购与运输

    2024-07-11 00:40:01       22 阅读
  15. Spring Boot与Traefik的集成

    2024-07-11 00:40:01       24 阅读