• 4、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.分辨率:720 * 1280 1080* 1920
    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. 了解的安卓自动化测试工具有哪些,使用测工具开展测试的步骤和方法?
    6. 针对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.强制更新,强制更新而用户没有更新时,退出客户端,下次启动,依然提示更新。
    吾爱程序猿(www.52programer.com)打造专业优质的IT教程分享社区
    感恩于心,回报于行。 面试宝典系列-软件测试
    2018测试学习路线图,内附完整自学路线+视频+工具经验+面试篇 http://bbs.itheima.com/thread-405757-1-1.html
    4.不卸载更新,检查是否可以更新。
    5.不卸载更新,检查资源同名文件如图片等是否更新成最新版本。
    6.非wifi网络下,提示是否更新,取消就加入待下载,wifi 下自动更新。
    7. 常用的ADB命令?
    adb --help / adb :看见帮助信息
    adb start-server:启动 adb服务
    adb kill-server:关闭adb服务
    adb devices:查看手机设备号
    adb shell getprop ro.build.version.release:获取系统版本
    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 启动时间
    8. 在查看logcat命令日志时候怎么内容保存到本地文件?
    输出重定向:logcat >> log_file_name
    9. App崩溃(闪退),可能是什么原因导致的?
    缓存垃圾过多:由于安卓系统的特性,如果长时间不清理垃圾文件.会导致越来越卡.也会出现闪退情况.
    运行的程序过多,导致内存不足
    应用版本兼容问题:如果应用版本太低,会导致不兼容,造成闪退。此外,有些新版本在调试中,也会造成应
    用闪退。解决方法:如果是版本太旧,更新为新版本即可;如果是新版本闪退,可能是应用在改版调试,可卸载后
    安装旧版。
    检查APP中访问网络的地方,组件中的ImageView是否可以正常的下载并显示到app 页面上。
    检查APP的sdk和手机的系统是否兼容。
    在一些特定情况下的闪退,比如播放视频,在Android5.0 升级到Android6.0的时候,有些系统API老版本有,新版
    本没有,到时回去对象的时候失败,报空,系统就会出现闪退问题.
    10. 如何测试监测app的内存使用、CPU消耗、流量使用情况?
    adb shell top
    Android应用性能测试通常包括:启动时间、内存、CPU、耗电量、流量、流畅度等
    根据手机的使用应用频度和强度不同,可将应用使用强度分为如下几种状态:
     空闲状态:指启动应用后,不做任何操作或切换到后台运行的情况称为空闲状态,该情况为应用对内存的
    消耗是最小的。
     中强度状态:该情况用户使用应用的强度和时间长短不确定,相对来说使用时长偏长。
     高强度状态:该种情况为应用内高频率的使用,用户很少达到,跑 monkey 时可认为高强度状态,该种情
    况常用来测试应用内存泄漏的情况测试时,可根据用户的操作习惯模拟应用使用频率和强度等级。
    使用adb命令,手机连接电脑开启 USB调试模式,进入 adbshell。
    (1)查看 CPU占用率
    使用命令top -m 10 -s cpu(-t 显示进程名称,-s 按指定行排序,-n 在退出前刷新几次,-d 刷新间隔,-m 显
    示最大数量),如下图:

     参数含义: 

     PID:progressidentification,应用程序ID
     S: 进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。
     #THR:程序当前所用的线程数
     VSS:VirtualSet Size虚拟耗用内存(包含共享库占用的内存)
     RSS: ResidentSet Size实际使用物理内存(包含共享库占用的内存)
     UID:UserIdentification,用户身份ID
     Name:应用程序名称
    在测试过程中,QA 需要关注对应包的 cpu 占用率,反复进行某个操作,cpu 占用过高且一直无法释放,此时
    可能存在风险。如果你想筛选出你自己的应用的话可以用下面命令top -d 3| grep packageName

     (2)查看内存使用情况 

    dumpsys meminfo <package_name>或dumpsys meminfo <package_id>

     参数含义: 

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

  • 相关阅读:
    Quick Find
    并查集
    树形问题和更多树
    二叉搜索树的局限性
    Oracle Auto Increment Column
    测试机器性能
    EXP/IMP version
    python getaddrinfo 函数
    open cursor too much error
    要看的一些链接
  • 原文地址:https://www.cnblogs.com/sycz/p/14251402.html
Copyright © 2020-2023  润新知