APP测试面试题

什么是activity?

activity是Android的四大组件之一,也是平时用的最多的一个组件,可以用来实现view。
官方说法是activity是一个应用程序的组件,它提供一个屏幕来与用户进行交换,以便做一些打电话、发邮件、和看地图的事
activity是一个andriod的应用组件,他提供屏幕进行交互。每个activity都会获得一个用于绘制其用户界面的窗口,窗口可以充满屏幕也可以小于屏幕并浮动在其他窗口之上。
一个应用通常由多个彼此松散联系的activity组成,一般会指定应用中的某个activity为主活动,也就是说首次启动应用时给用户呈现的activity。
activity之间可以相互跳转,以便执行不同的操作。每当新的activity启动时,旧的activity就会停止,但是系统会在返回栈保留改activity
当新activity启动时,系统也会将其推送到返回栈上,并取得用户的操作焦点。当用户完成当前的activity并按返回按钮时,系统就会从堆栈将其销毁,然后恢复之前的activity。
当一个activity因某个新activity启动而停止时,系统会通过该activity的生命周期回调方法去通知这一状态的变化。
activity因状态变化,每个变化可能有若干种,每种回调都会提供执行与该状态相应的待定操作的机会

activity的生命周期

1、运行:activity处于活动状态,此时activity处于栈顶,是可见状态,可与用户进行交互。
2、暂停:当activity失去焦点时,或被一个新的非全面屏的activity,或者被一个透明的activity放置在栈顶时,activity就转化为暂停状态。此刻并不会被销毁,只是失去了与用户交互的能力,其所有的状态信息及成员变量都还在,只有在系统内存紧张的情况下,才有可能被系统回收掉。
3、停止:当activity被系统完全覆盖时,被覆盖的activity就会进入停止状态,此时已不在可见,但是资源还是没有被回收。
4、系统回收:如果一个活动处于停止或者暂停状态下,系统内存缺乏时会将其结束。在这种非正常情况下,系统活在结束前调用onSaveInstance()方法来保存信息,同时,当activity被移动到前台时,重新启动该activity并调onRestoreInstance()方法加载保留的信息,以保持原有的状态。

安卓四大组件

Activity:应用程序中,一个activity就相当于手机屏幕,它是一种包含用户界面的组件、主要用于和用户进行交互。一个应用程序可以包含许多活动,比如事件的点击,一般都会触发一个新的activity。

BroadcastReceiver广播接收器:应用可以使用它对外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activity或者色rice来响应他们收到的信息,或者用NotificationManager来通知用户。通知可以用很多方式来吸引用户的注意力——闪动背灯、震动、播放声音等。一般来说是在状态栏放一个持久的图标 ,用户可以打开它并获取信息。

ContentProvider内容提供者:内容提供者主要用于在不同应用程序之间实现数据共享功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访问数据的安全性。只有需要在多个程序间共享数据才需要内容提供者。列入通讯录数据被多个程序使用,且必须存储在一个内容提供者中。它的好处:统一数据访问方式。

Service服务:是android中实现程序后台运行的解决方案,它非常适合去执行那些不需要和用户交互而且还要长期运行的任务(如:一边打电话,一边挂着QQ)。服务的运行不依赖与任何用户姐买呢,即使程序被切换到后台,或者用户打开了另一个程序,服务任然能够保持正常运行,不过服务并不是运行在一个独立的进程中,而是依赖于创建服务时所在的应用程序进程。当某个应用程序被杀掉后,所有依赖于该进程的服务也会停止运行(正在听音乐,然后把音乐程序退出)。

APP测试和web测试有什么区别

兼容性测试:在web端是兼容浏览器,在APP端兼容的是手机设备。并且兼容性测试的工具也不同,web因为是测试兼容浏览器,所以要使用不同的浏览器进行兼容性测试(常见的是兼容IE6,IE8,chrome、Firefox),如果是手机端,那就需要兼容不同品牌,不同分辨率,不同andriod版本甚至不同操作系统的兼容。(常见的方式是兼容市场占用率前N位的手机),有时候也使用到兼容性测试工具,web端兼容性工具多用ietest等工具,而APP兼容性测试会使用testing这样的商业工具做测试

安装测试:web测试基本没有用户端层面的安装测试,但是APP测试是存在客户端层面的安装测试,操作类型测试,网络测试(弱网测试,网络切换)

交叉事件测试:就是在操作某个软件的时候,来电话、来短信、电量不足提示等外部事件

操作类型测试:如横屏测试,手势测试

网络测试:包括弱网和网络切换测试。需要测试弱网所造成的用户体验,重点要考虑回退和刷新是否造成二次提交。
从系统架构的层面,web测试只要更新了服务器端,客服端就会同步更新。而且客户端是可以保证每个用户的客户端完全一致的。但是APP端是不能保证完全一致的,除非用户更新客户端。如果是APP修改了服务器端,意味着客户端用户所使用的核心版本都需要回归测试一遍。

升级测试:升级测试是提醒机制,升级取消是否会影响原有功能的使用,升级后用户数据是否被清除。

APP测试中andriod和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等

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.其它线程终止或崩溃导致主线程一直等待。

App出现crash原因有哪些

1、内存管理错误​:可能是可用内存过低,app所需的内存超过设备的限制,app跑不起来导致App crash。
或是内存泄露,程序运行的时间越长,所占用的内存越大,最终用尽全部内存,导致整个系统崩溃。
亦或非授权的内存位置的使用也可能会导致App crash。
2、程序逻辑错误:​数组越界、堆栈溢出、并发操作、逻辑错误。
e.g. app新添加一个未经测试的新功能,调用了一个已释放的指针,运行的时候就会crash。
3、​设备兼容:由于设备多样性,app在不同的设备上可能会有不同的表现。
​4、网络因素:可能是网速欠佳,无法达到app所需的快速响应时间,导致app crash。或者是不同网络的切换也可能会影响app的稳定性。

错误日志中常见的异常有哪些

NullPointerException - 空指针引用异常
ClassCastException - 类型强制转换异常。
IllegalArgumentException - 传递非法参数异常。
ArithmeticException - 算术运算异常
ArrayStoreException - 向数组中存放与声明类型不兼容对象异常
IndexOutOfBoundsException - 下标越界异常
NegativeArraySizeException - 创建一个大小为负数的数组错误异常
NumberFormatException - 数字格式异常
SecurityException - 安全异常
UnsupportedOperationException - 不支持的操作异常

原文:https://www.cnblogs.com/yoyoketang/p/10233933.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容