移动APP测试 -- 专项测试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了移动APP测试 -- 专项测试相关的知识,希望对你有一定的参考价值。

 

如下问题:

  Crash 

  设备兼容

  流量使用过多

  APP 导致用户手机电量消耗过快

  在不同网络情况下不稳定,比如 卡死 和 白屏的问题

  针对某个特殊方面或者问题的,称之为 专项测试

    如 兼容性测试,流量测试, 电量测试, 弱网络测试, 稳定性测试, 安全性测试 和 环境相关的测试

 

一  兼容性测试

    也是功能性测试,只不过侧重在不同的软硬件环境

  1  环境准备

    针对APP通常会考虑:

      OS version , 屏幕分辨率 , 不同厂家的ROM,网络类型

  2  基于 UI 自动化脚本的云测试方案

      如 Testin

 

二  流量测试

   流量的消耗: 用户的操作, 后台【即 用户没有直接使用情况下的流量消耗】

  1  android App 特有的流量测试方法

    a) 基于 系统自带的 统计功能

      proc/uid_stat/[UID] /tcp_snd

      proc/uid_stat/[UID]/tcp_rcv

  2  ios APP 特有的流量测试方法

    a) 通过 Instruments 自带的 Network 来查看网络流量

    

  3  通用的流量测试方法

    手机上抓包

      windows 【 Wireshark】 , Linux 【 tcpdump 】 , Android 【tcpdump 】

      tcpdump -s 0 -w t1.pcap -v 

    基于 WiFi 代理的方式,获取流量数据

    自动化流量统计方案:

      通常会使用 Fidder 工具 进行HTTP 抓包,并进行手动分析

 

  4  常见的流量节省的办法

    数据的压缩, 不同数据格式的采用, 控制访问的频次, 只获取必要的数据

    缓存 【需要,控制缓存的有效期和更新策略】,针对不同的网络类型设计不同的访问策略

  

三  电量测试

  1  Android 电量测试方法

    1)  基于 硬件的测试方案, 可以较为 精确的测试手机的电量消耗情况

      GSam Battery Monitor Pro 查看 电量消耗

    2)  借助一个第3方APP 来 评估手机上 各个APP的电量消耗

  2  IOS 电量测试方法

    

四  弱网络测试

  当 网络环境复杂的时候,App 才暴露的一些 问题

  1  借助手机自带的网络状况模拟工具

    主要针对 ios , 对 android 的 支持不好

  2  基于代理的弱网络的模拟

    Windows 下的 Network Delay Simulator

    Mac 下的 Network Link Conditioner

   

五   稳定性测试

  1  基于 Monkey 的稳定性测试

      Monkey  是 Android 系统自带的 , 由 Java 编写的,在 Android 中的 路径 /system/framework.monkey.har

      shell 程序的位置 /system/bin/monkey

      monkey -p APP_NAME -v  显示 执行时的信息 COUNT 发送的 事件数目

      monkey 可以 模拟: APP click , 滑动,key-input, 还模拟了各种手机系统的操作, 调整音量,打开通知栏,改变网络状态,锁屏

      monkey 测试停止条件,主要有

        1)  执行次数到了

        2)  如果限定了 Monkey 运动在一个 或者几个 特定的包上,当监测到试图转到 其他的包的操作, 会对其进行终止

        3)  Application 崩溃或者接收到任何失控的异常, Monkey 将 停止并且报错

        4)  Application 发生了 ANR 【 应用程序不响应】的错误, Monkey 将停止 并且报错

        【NOTE】 MonkeyRunner 和 Monkey 并无任何关联

            MonkeyRunner 是一个 工具包,提供了 一些API,可以在 Android 代码之外,控制 Android 设备和模拟器,相比 Monkey 不可控的模拟事件, MonkeyRunner 可以通过自己的代码,来启动APP,控制发送模拟的击键操作

        Android  ANR 是一个比较容易 遇到的 稳定性问题, 当 APP 遇到以下两种情况之一时,会发生 Application Not Responding 

          a)  输入事件 5 秒内未响应完成, 如 点击屏幕,按键等操作

          b)  BroadcastReceiver 10 秒内 未 执行完毕

          常见的造成 ANR 的原因之一,就是 在 主线程执行了 耗时过长的操作

          Android ANR 的日志 存放在 /data/anr/traces.txt 

              包括了 App 每个线程的 堆栈信息, developers 可以通过 这个文件,进行排查

     3  基于 模糊测试 思路的 稳定性测试方法的探索

         借鉴了 模糊测试 Fuzzing Test 的 思想,模糊测试 常常用户 做 安全性测试,发掘安全漏洞

 

六  安全测试

  1  安装包测试

    1)   能否反编译代码 ,

          使用 dex2jar 工具 结合 jd-gui 工具查看 源代码

    2)  安装包是否签名

          ios 无需考虑

          Android  没有此类检查, 需要在发布前 校验一下 签名使用的 key 是否正确, 以防被恶意的第三方应用覆盖安装等问题

            check : jarsigner -verify -verbose -certs apk包路径

    3)  完整性校验

        check 安装包的 md5 值,可以自动化

    4)  权限设置检查

        Android 平台上,我们可以 直接检查manifest 文件来 读取 应用所需的全部权限

        IOS 则是在 APP 使用到其他权限的时候,才会提示

  2  敏感信息测试

    1)  数据库是否存储 敏感信息

        比如 cookie 保存到 数据库中, 别人 捡到手机,信息将会丢失

        一般, 敏感信息 需要在 用户注销操作后 删除,如 , cookie 类数据,建议设置合理的 过期时间

    2)  日志中是否存在 敏感信息

    3)  配置文件是否存在敏感信息

  3  软键盘劫持

    比如金融 APP, 不能使用 第三方软键盘, 而应该使用,应用中 自带的 软键盘

  4  账户安全

    对于账户的安全性,我们一般需要 关注一下几点

    1) password 

    2) policy

    3) session

    4) logout

  5  数据通信安全

  6  组件安全测试

      Android 平台的各个组件 是否能被 外部应用 恶意 调用,从而带来一些安全问题 , 包括  Activity , Service , ContentProvider , Broadcase 等等,  采用的测试方法,是通过 使用 drozer 工具 + code 

    1)  服务端接口测试

        SQL, XSS , CSRF , 越权

  7  环境相关的测试

    比如 有些APP 会用到 摄像头,加速感应等硬件

    1)  干扰测试

        收到 电话,短信,通知栏信息,无电提示框弹出,第三方软件告警框弹出

    2)  权限测试

        用户禁止了某些 权限,会导致 UI不友好 ,程序 崩溃

    3)  边界情况

        手机 本身的环境

          可用 存储空间减少, 没有SD卡/双 SD卡,飞行模式,系统时间有误,第三方依赖

    4)  Android 定位测试

        白盒方式  由于定位代码 最终获取的是一个位置对象,我们只需要在 获取到位置对象后,手动设置 经度纬度进行测试

        模拟器 模拟

 

 

  

 

 

 

            

        

  

      

 

以上是关于移动APP测试 -- 专项测试的主要内容,如果未能解决你的问题,请参考以下文章

移动APP测试 -- 专项测试

移动端APP专项测试-准备工作

移动app传统测试流程优化

App专项测试之弱网测试

Android APP性能及专项测试(个人整理)

读 移动APP测试