App 测试

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 接入
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.强制更新,强制更新而用户没有更新时,退出客户端,下次启动,依然提示更新。
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 ,ddms
9 app 测试和 web 测试有什么区别?
系统架构方面:
web项目,一般都是b/s架构,基于浏览器的
app项目,则是c/s的,必须要有客户端,用户需要安装客户端。
web测试只要更新了服务器端,客户端就会同步会更新。App项目则需要客户端和服务器都更新。
性能方面:
web页面主要会关注响应时间
而app则还需要关心流量、电量、CPU、GPU、Memory这些。
它们服务端的性能没区别,都是一台服务器。
兼容方面:
web是基于浏览器的,所以更倾向于浏览器和电脑硬件,电脑系统的方向的兼容
app测试则要看分辨率,屏幕尺寸,还要看设备系统。
web测试是基于浏览器的所以不必考虑安装卸载。
而app是客户端的,则必须测试安装、更新、卸载。除了常规的安装、更新、卸载还要考虑到异常场景。包括安装时的中断、弱网、安装后删除安装文件 。
此外APP还有一些专项测试:如网络、适配性。
WEB 测试和 App 测试从流程上来说,没有区别。
都需要经历测试计划方案,用例设计,测试执行,缺陷管理,测试报告等相关活动。从技术上来说,WEB 测试和 APP 测试其测试类型也基本相似,都需要进行功能测试、性能测试、安全性测试、GUI 测试等测试类型。
他们的主要区别在于具体测试的细节和方法有区别,比如:性能测试,在 WEB测试只需要测试响应时间这个要素,在 App 测试中还需要考虑流量测试和耗电量测试。
兼容性测试:在 WEB 端是兼容浏览器,在 App 端兼容的是手机设备。而且相对应的兼容性测试工具也不相 同,WEB 因为是测试兼容浏览器,所以需要使用不同的浏览器进行兼容性测试(常见的是兼容 IE6,IE8,chrome,firefox)如果是手机端, 那么就需要兼容不同品牌,不同分辨率,不同 android 版本甚至不同操作系统的兼容。(常见的兼容方式是兼容市场占用率前 N 位的手机即可),有时候也可 以使用到兼容性测试工具,但 WEB 兼容性工具多用 IETester 等工具,而 App 兼容性测试会使用 Testin 这样的商业工具也可以做测试。
安装测试:WEB 测试基本上没有客户端层面的安装测试,但是 App 测试是存在客户端层面的安装测试,那么就具备相关的测试点。
操作类型测试,网络测试(弱网测试,网络切换)
交叉事件测试:就是在操作某个软件的时候,来电话、来短信,电量不足提示等外部事件。
操作类型测试:如横屏测试,手势测试
网络测试:包含弱网和网络切换测试。需要测试弱网所造成的用户体验,重点要考虑回退和刷新是否会造成二次提交。弱网络的模拟,据说可以用 360wifi 实现设置。
从系统架构的层面,WEB 测试只要更新了服务器端,客户端就会同步会更新。而且客户端是可以保证每一个用户的客户端完全一致的。但是 APP 端是不能 够保证完全一致的,除非用户更新客户端。如果是 APP 下修改了服务器端,意味着客户端用户所使用的核心版本都需要进行回归测试一遍
还有升级测试:升级测试的提醒机制,升级取消是否会影响原有功能的使用,升级后用户数据是否被清除了。
10 android 和 ios 测试区别?
1 . Android长按home键呼出应用列表和切换应用,然后右滑则终止应用;
2. 多分辨率测试,Android端20多种,ios较少;
3. 手机操作系统,Android较多,ios较少且不能降级,只能单向升级;新的ios系统中的资源库不能完全兼容低版本中的ios系统中的应用,低版本ios系统中的应用调用了新的资源库,会直接导致闪退(Crash);
4. 操作习惯:Android,Back键是否被重写,测试点击Back键后的反馈是否正确;应用数据从内存移动到SD卡后能否正常运行等;
5. push测试:Android:点击home键,程序后台运行时,此时接收到push,点击后唤醒应用,此时是否可以正确跳转;ios,点击home键关闭程序和屏幕锁屏的情况(红点的显示);
6. 安装卸载测试:Android的下载和安装的平台和工具和渠道比较多,ios主要有app store,iTunes和testflight下载;
7. 升级测试:可以被升级的必要条件:新旧版本具有相同的签名;新旧版本具有相同的包名;有一个标示符区分新旧版本(如版本号),对于Android若有内置的应用需检查升级之后内置文件是否匹配(如内置的输入法)
另外:对于测试还需要注意一下几点:
1. 并发(中断)测试:闹铃弹出框提示,另一个应用的启动、视频音频的播放,来电、用户正在输入等,语音、录音等的播放时强制其他正在播放的要暂停;
2. 数据来源的测试:输入,选择、复制、语音输入,安装不同输入法输入等;
3. push(推送)测试:在开关机、待机状态下执行推送,消息先死及其推送跳转的正确性;应用在开发、未打开状态、应用启动且在后台运行的情况下是push显示和跳转否正确;推送消息阅读前后数字的变化是否正确;多条推送的合集的显示和跳转是否正确;
4. 分享跳转:分享后的文案是否正确;分享后跳转是否正确,显示的消息来源是否正确;
5. 触屏测试:同时触摸不同的位置或者同时进行不同操作,查看客户端的处理情况,是否会crash等
1、两者运行机制不同:IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制。
2、两者后台制度不同:IOS中任何第三方程序都不能在后台运行;安卓中任何程序都能在后台运行,直到没有内存才会关闭。
3、IOS中用于UI指令权限最高,安卓中数据处理指令权限最
10android 系统和ios系统的区别
1. 应用的设备不同:
IOS和安卓最大的区别在于本身所应用的设备不同。IOS系统主要是应用在iPhone、IPad、iPod 、itouch设备上的操作系统,属于苹果独家御用,定位中高端;安卓系统主要是应用在安卓智能手机上的操作系统,应用的手机品牌众多繁杂,定位低端、终端、高端都有,中低端为主打;
2. 系统的开放性区别:
安卓拥有自己的开源计划AOSP(Android Open Source Project),可以使用安卓源代码进行二次开发;此外,安卓比iOS开放了更多的应用接口API,软件安装更加开发便捷;
3. 系统的安全性区别:
IOS系统是一款比较强大的操作系统,在IOS系统运行的程序不管程序多大都不会造成死机,使用相对流畅很多,而且系统的安全性比较高。
安卓系统是属于代码系统,系统用久之后会经常出现卡机或者是死机的现象,而且安卓系统还存在恶意的插件在系统上自动运行,系统漏洞多,导致个人资料被盗、系统耗电大,流量消耗大等,系统安全性相对来说比较低。
总结:所以经常安卓系统的3G的RAM(运行内存)的高端手机性能被2G的RAM苹果手机轻轻松松打败,安卓手机3000mA(毫安)的电池待机也和2000 mA的苹果手机半斤八两;简单的说安卓手机各门派武艺精通,但是内功不够深厚,不懂得如何融合运用,苹果手机是各方都平平,但是很懂得互相配合。
11.app 出现 ANR,是什么原因导致的?
1.主线程执行了耗时操作,比如数据库操作或网络编程
2.其他进程(就是其他程序)占用 CPU 导致本进程得不到 CPU 时间片,比如其他进程的频繁读写操作可能会导致这个问题。
细分的话,导致 ANR 的原因有如下几点:
1.耗时的网络访问
2.大量的数据读写
3.数据库操作
4.硬件操作(比如 camera)
5.调用 thread 的 join()方法、sleep()方法、wait()方法或者等待线程锁的时
6.service binder 的数量达到上限
7.system server 中发生 WatchDog ANR
8.service 忙导致超时无响应
9.其他线程持有锁,导致主线程等待超时
10.其它线程终止或崩溃导致主线程一直等待。
12 App 出现 crash 原因有哪些?
为什么 App 会出现崩溃呢?百度了一下,查到和 App 崩溃相关的几个因素:内存管理错误,程序逻辑错误,设备兼容,网络因素等,如下:
1.内存管理错误:可能是可用内存过低,app 所需的内存超过设备的限制,app跑不起来导致 App crash。或是内存泄漏,程序运行的时间越长,所占用的内存越大,最终用尽全部内存,导致整个系统崩溃。亦或非授权的内存位置的使用也可能会导致 App crash。
2.程序逻辑错误:数组越界、堆栈溢出、并发操作、逻辑错误。e.g. app 新添加一个未经测试的新功能,调用了一个已释放的指针,运行的时候就会 crash。
3.设备兼容:由于设备多样性,app 在不同的设备上可能会有不同的表现。
4.网络因素:可能是网速欠佳,无法达到 app 所需的快速响应时间,导致 app crash。或者是不同网络的切换也可能会影响 app 的稳定性。
13 monkey
14 app 性能测试关注点,及如何实施,常见app性能测试工具
关注点:
启动时长
移动应用的启动时间是用户体验的一个重要方面,IOS一直建议尽可能的缩短启动时间,防止用户不愿意使用它们。对于浏览器而言,由于程序启动时还会有教育页和闪屏的下发,因此启动时间的获取显得尤为重要。
启动时间分为冷启动时间和热启动时间,所谓的“冷启动”,就是一个完全没有运行的应用的启动时间,与热启动(应用已经在后台运行,某个事件将其带至前台)相比,由于此时系统尚未建立缓存,因此冷启动往往要较平时(热启动)耗费更长的时间。
内存使用
在Android系统中,每个APP进程除了同其他进程共享(shared dirty)外,还独用私有内存(private dirty),通常我们使用PSS(=私有内存+比例分配共享内存)来衡量一个APP的内存开销。移动设备的内存资源是非常有限,为每个APP进程分配的私有内存也是有限制。一方面我们要合理的申请内存使用,以免导致频繁的GC(垃圾回收机制)影响性能和大对象申请发生内存溢出;另一方面,我们要及时释放内存,以免发生内存泄漏。
CPU占用率
一般情况下,用主流手机使用APP20%-40%的CPU占用率算是合理的,当然这个数值随着近年来手机硬件配置的提高,会略微下降,如果CPU占用率超过80%就非常值得我们去关注了。
图片处理器每秒刷新的帧数(FPS)
可用来指示页面是否平滑的渲染。手机APP帧率FPS,30-60都可接受,上了60对于人眼主观感受差别就不大了。对于移动应用开发而言,并不是FPS越高就一定越好,FPS取决于显卡,其次是内存、CPU,然后是网络。故综合APP其他性能指标,选择一个适合的FPS即可。
电量
相对于PC来说,移动设备的电池电量是非常有限的,保持持久的续航能力尤为重要。另外,android的很多特性都比较耗电(如屏幕,GPS,sensor传感器,唤醒机制,CPU,连网等的使用),我们必须要慎重检查APP的电量使用,以免导致用户手机耗电发热,带来不良体验。
流量
目前的网络类型包含2G\3G\4G\wifi,其中还有不同运营商的区分,我们在APP的使用中经常遇到大资源,重复请求,调用响应慢,调用失败等各种情况。在不同的网络类型之下,我们不仅要控制流量使用,还需要加快请求的响应。另外,对于需要联网的手游来说,部分游戏对不同联网方式的网络类型采用了不同的流量消耗策略,主要分为wifi环境和蜂窝网络环境。所以针对不同的游戏,我们统计流量消耗时,可能要连接不同的网络进行测试
如何实施
1 分析需求
2 确定性能目标
3 环境搭建和选择工具
4 执行
5 报告
app性能测试工具
GT和iTest,Emmagee APT ,DDMS ,手机自带开发者选项中的工具,也可以通过adb命令来查看 等。
15 获取app包名和首次activity
获取apk包名方式
1 可以通过adb shell pm list packages -3
2 可以通过源代码中清单文件去查看包名
3 打开android sdk中 D:\tool\android-sdk_r24.4.1-windows\android-sdk-windows\build-tools\25.0.3
在命令行窗口中切换盘符,再切换当前目录,执行命令 aapt dump badging E:\360Downloads\Apk\jsj.apk > e:/logs.txt
4 通过adb 命令 logcat来查看包名,也可以通过android sdk
D:\tool\android-sdk_r24.4.1-windows\android-sdk-windows\tools monitor.bat工具来过滤日志查看 报名
16 如何对app进行弱网测试。
一款APP针对不同网络情况下都需要保证不会崩溃,同时尽可能做到在弱网情况下也能达到功能正常使用,或者使用体验达到最佳。弱网测试可以测试APP的加载时间、可用性、稳定性和健壮性。这时我们就可以借助工具来模拟不同的网络状况,模拟2G、3G或弱网情况进行测试。工具可以选择Filder也可以选择Charles也可以选择其他工具。
17 Android UI压力测试(maxim)
© 版权声明
THE END
喜欢就支持以下吧
点赞14
分享
评论 抢沙发