APP 测试

1. 什么是 Android 四大组件?

Android 的四大组件包括:Activity、Service、BroadcasReceiver、ContentProvider

2. 当点击 APP 图标启动程序,说明将要发生那些过程?

  1. 点击桌面 app 图标,Launcher 进程采用 Binder IPC 向 system_server 进程发起 startActivity 请求;
  2. system_server 进程收到请求后,向 zygote 进程发送创建进程的请求(zygote 进程是 Android 系统的第一个进程,zygote 意为受精卵,所有进程都是由它孵化而来)
  3. zygote 进程 fork 出新的子进程, 即 App 进程;
  4. App 进程,通过 Binder IPC 向 system_server 进程发起 attachApplication 请求
  5. system_server 进程收到请求后, 进行一系列的准备工作, 通过 Binder IPC 向 App 进程发送 scheduleLaunchActivity 请求
  6. App 的 binder 线程( Application Thread ) 在收到请求后,通过 handler 向主线程发送 LAUNCH_ACTIVITY 消息
  7. 主线程收到 Message 后,通过发射机制创建目标 Activity,并回调 Activity.onCreate() 方法

3. APP 测试的内容主要包括哪些,如何开展?

功能测试:

  1. 业务逻辑正确性测试:依据:产品文档 ->测试用例编写

兼容性测试:

  1. 系统版本:Android: 官方版本,定制版本;IOS:官方提供版本

  2. 分辨率:720x1280、1080x1920

  3. 网络情况:2g 3g 4g 5g Wi-Fi

异常测试

  1. 热启动应用:应用在后台长时间待机;应用在后台待机过程中,手机重启

  2. 网络切换和中断恢复:网络切换;中断恢复:

  3. 电话信息中断恢复 升级,安装

卸载测试

  1. 升级测试:临近版本升级 (1.0->1.1); 跨版本 (1.0->....->2.2)

  2. 安装测试:首次安装;覆盖安装(同版本,不同版本覆盖); 卸载后安装

  3. 卸载测试:首次卸载;卸载安装后在卸载

健壮性测试

  1. 手机资源消耗:cpu,内存

  2. 流量消耗:图片,数据,视频

  3. 电量测试

  4. 崩溃恢复

4. Android 的兼容性测试都考虑哪些内容?

品牌机型兼容:根据市场占有率、发布时间等指标对主流、最新机型进行重点兼容

ROM 兼容:需兼容原生的 ROM(2.1、2.2、2.3、4.0、4.1、4.2);第三方 ROM(小米、百度易、点心、魅族、阿里云……) 屏幕兼容:需兼容 HVGA、VGA、WVGA、FWVGA、720p、1080p 屏幕分辨率,并考虑不同 PPI 的情况软件兼容:安全类软件(百度手机管家、360 优化大师、360 安全卫士、QQ 手机管家、安卓优化大师、网秦、LBE),输入法软件(系统自带、Sogou、百度) 版本兼容:服务器端需要兼容产品早期版本所需的 API 接口

网络兼容:WiFi、3 大运营商的 2G,3G,4G 网络,需区分 WAP 和 NET 接入

5. 针对 App 的安装功能,写出测试点?

安装

  1. 正常安装测试,检查是否安装成功。
  2. APP 版本覆盖测试。例如:先安装一个 1.0 版本的 APP, 再安装一个高版本 (1.1 版本)的 APP,检查是否被覆盖。
  3. 回退版本测试。例如:先装一个 2.0 版本的 APP, 再安装一个 1.0 版本的 APP, 正常情况下版本是可以回退的。
  4. 安装时内存不足,弹出提示。
  5. 根据安装手册操作,是否正确安装。
  6. 安装过程中的意外情况(强行断电、断网、来电话了、查看信息)等等,检查会发生的情况。
  7. 通过‘同步软件’,检查安装时是否同步安装了一些文件。
  8. 在不同型号、系统、屏幕大小、分辨率上的手机进行安装。
  9. 安装时是否识别有 SD 卡,并默认安装到 sd 卡中。
  10. 安装完成后,能否正常启动应用程序。
  11. 安装完成后,重启手机能否正常启动应用程序。
  12. 安装完成后,是否对其他应用程序造成影响。
  13. 安装完成后,能否添加快捷方式。
  14. 安装完成后,杀毒软件是否会对其当做病毒处理。
  15. 多进程进行安装,是否安装成功。
  16. 在安装过程中,所有的提示信息必须是英文或者中文,提示信息中不能出现代码、符号、乱码等。
  17. 安装之后,是否自动启动程序。
  18. 是否支持第三方安装。
  19. 在安装中点击取消。

卸载

  1. 用自己的卸载程序进行卸载,检查是否卸载干净。
  2. 用第三方工具,检查是否卸载干净。
  3. 在卸载过程中,点击取消按钮,看是否正常退出卸载程序,检查软件是否还能继续正常使用。
  4. 卸载过程中,出现意外(比如手机关机,没电,查看信息,接打电话),程序是否还能运行。
  5. 在卸载过程中,突然重启设备,再次访问程序,是否还能运行。
  6. 在没用使用程序时,删除目录文件,看程序是否能运行。
  7. 在使用过程中,直接删除目录文件,程序是否还能运行。
  8. 不同系统、硬件环境、网络环境下进行卸载。
  9. 卸载成功后,是否对其他程序有影响。
  10. 卸载后再次安装,是否正常使用。
  11. 在卸载过程中,所有的提示信息必须是英文或者中文,提示信息中不能出现代码、符号、乱码等。

更新

  1. 当客户端有新版本时,提示更新。
  2. 非强制更新,可以取消更新,旧版本正常使用,下次使用软件时,仍然会出现更新提示。
  3. 强制更新,强制更新而用户没有更新时,退出客户端,下次启动,依然提示更新。
  4. 不卸载更新,检查是否可以更新。
  5. 不卸载更新,检查资源同名文件如图片等是否更新成最新版本。
  6. 非 wifi 网络下,提示是否更新,取消就加入待下载,wifi 下自动更新。

6. 常用的 ADB 命令?

  • adb --help / adb : 看见帮助信息
  • adb start-server: 启动 adb 服务
  • adb kill-server: 关闭 adb 服务
  • adb devices: 查看手机设备号
  • adb push 电脑手机
  • adb pull 手机电脑
  • adb logcat | grep(unix) 包 名
  • adb logcat | findstr(win) 包 名
  • adb shell : 进入 shell 命令行,可以操作 Linux 命令
  • adb shell dumpsys window windows | grep mFocusedApp: 获取包名 启动名 (win:adb shell dumpsys window windows | findstr mFocusedApp)
  • adb install 路径 /apk 文件:安装 apk 到手机上
  • adb uninstall 包名:卸载 app 从手机上
  • adb shell am start -W 包名 / 启动名:app 启动时间

7. 在查看 logcat 命令日志时候怎么内容保存到本地文件?

输出重定向:logcat >> log_file_name

8. App 崩溃(闪退),可能是什么原因导致的?

缓存垃圾过多:由于安卓系统的特性,如果长时间不清理垃圾文件。会导致越来越卡。也会出现闪退情况。

运行的程序过多,导致内存不足

应用版本兼容问题:如果应用版本太低,会导致不兼容,造成闪退。此外,有些新版本在调试中,也会造成应用闪退。解决方法:如果是版本太旧,更新为新版本即可;如果是新版本闪退,可能是应用 在改版调试,可卸载后安装旧版。

检查 APP 中访问网络的地方,组件中的 ImageView 是否可以正常的下载并显示到 app 页面上。检查 APP 的 sdk 和手机的系统是否兼容。

在一些特定情况下的闪退,比如播放视频,在 Android5.0 升级到 Android 6.0 的时候,有些系统 API 老版本有,新版本没有,到时回去对象的时候失败,报空,系统就会出现闪退问题。

9. 如何测试监测 app 的内存使用、CPU 消耗、流量使用情况?

adb shell top

Android 应用性能测试通常包括:启动时间、内存、CPU、耗电量、流量、流畅度等根据手机的使用应用频度和强度不同,可将应用使用强度分为如下几种状态:

  • 空闲状态:指启动应用后,不做任何操作或切换到后台运行的情况称为空闲状态,该情况为应用对 内存的消耗是最小的。
  • 中强度状态:该情况用户使用应用的强度和时间长短不确定,相对来说使用时长偏长。
  • 高强度状态:该种情况为应用内高频率的使用,用户很少达到,跑 monkey 时可认为高强度状态, 该种情况常用来测试应用内存泄漏的情况测试时,可根据用户的操作习惯模拟应用使用频率和强度等级。 使用 adb 命令,手机连接电脑开启 USB 调试模式,进入 adbshell。
  1. 查看 CPU 占用率

    top -m 10 -s cpu

    在测试过程中,QA 需要关注对应包的 cpu 占用率,反复进行某个操作,cpu 占用过高且一直无法释放,此时可能存在风险。

    如果你想筛选出你自己的应用的话可以用下面命令 top -d 3| grep packageName

  2. 查看内存使用情况

    dumpsys meminfo <package_name>

    dumpsys meminfo <package_id>

参数含义:

  1. Naitve Heap Size: 从 mallinfo usmblks 获得,代表最大总共分配空间
  2. Native Heap Alloc: 从 mallinfo uorblks 获得,总共分配空间
  3. Native Heap Free: 从 mallinfo fordblks 获得,代表总共剩余空间
  4. Native Heap Size 约等于 Native Heap Alloc + Native Heap Free
  5. mallinfo 是一个 C 库, mallinfo 函数提供了各种各样的通过 C 的 malloc()函数分配的内存的统计信息。
  6. Dalvik Heap Size: 从 Runtime totalMemory() 获得,Dalvik Heap 总共的内存大小。
  7. Dalvik Heap Alloc: Runtime totalMemory()-freeMemory() ,Dalvik Heap 分配的内存大小。
  8. Dalvik Heap Free: 从 Runtime freeMemory() 获得,Dalvik Heap 剩余的内存大小。
  9. Dalvik Heap Size 约等于 Dalvik HeapAlloc + Dalvik Heap Free 重点关注如下几个字段:
  10. Native/Dalvik 的 Heap 信息中的 alloc :具体在上面的第一行和第二行,它分别给出的是 JNI 层和 Java 层的内存分配情况,如果发现这个值一直增长,则代表程序可能出现了内存泄漏。 Total 的 PSS 信息:这个值就是你的应用真正占据的内存大小,通过这个信息,你可以轻松判别手机中哪些程序占内存比较大了。

10. 弱网测试怎么测

弱网环境测试主要依赖于弱网环境的模拟。环境搭建方式一般有两种:软件方式和硬件方式。软件方 式的成本低,主要就是通过模拟网络参数来配置弱网环境,通常来讲可以达到测试目的。一般可通过热 点共享设置。在各类网络软件中,主要就是对带宽、丢包、延时等进行模拟弱网环境。如果要求更接 近弱网环境, 比如现在很多的专项测试,会更倾向于通过硬件方式来协助测试,但这种方式相对会麻烦很多,一般会由网维协助搭建。当然,对于有些无法模拟的情况,只能靠人工移动到例如电梯、地 铁等信号比较弱的地方。

11. //*[contains(@text,"登录")]是什么意思

定位第一个元素 text 属性包含登录的元素

12. Appium 都有哪些启动方式

  1. 客户端启动
  2. 命令行启动
© 2022 刘士. All rights reserved.

结果匹配 ""

    没有匹配的结果 ""