APP测试⾯试题分享(附带参考答案)
1、Android四⼤组件
Android四⼤基本组件:Activity、BroadcastReceiver⼴播接收器、ContentProvider内容提供者、Service服务。
Activity:应⽤程序中,⼀个Activity就相当于⼿机屏幕,它是⼀种可以包含⽤户界⾯的组件,主要⽤于和⽤户进⾏交互。⼀个应⽤程序可以包含许多活动,⽐如事件的点击,⼀般都会触发⼀个新的Activity。
BroadcastReceiver⼴播接收器:应⽤可以使⽤它对外部事件进⾏过滤只对感兴趣的外部事件(如当电话呼⼊时,或者数据⽹络可⽤时)进⾏接收并做出响应。⼴播接收器没有⽤户界⾯。然⽽,它们可以启动⼀个activity或serice 来响应它们收到的信息,或者⽤NotificationManager来通知⽤户。通知可以⽤很多种⽅式来吸引⽤户的注意⼒──闪动背灯、震动、播放声⾳等。⼀般来说是在状态栏上放⼀个持久的图标,⽤户可以打开它并获取消息。
ContentProvider内容提供者:内容提供者主要⽤于在不同应⽤程序之间实现数据共享的功能,它提供了⼀套完整的机制,允许⼀个程序访问另⼀个程序中的数据,同时还能保证被访问数据的安全性。只有需要在多个应⽤程序间共享数据时才需要内容提供者。例如:通讯录数据被多个应⽤程序使⽤,且必须存储在⼀个内容提供者中。它的好处:统⼀数据访问⽅式。
Service服务:是Android中实现程序后台运⾏的解决⽅案,它⾮常适合去执⾏那些不需要和⽤户交互⽽且还要长期运⾏的任务(⼀边打电话,后台挂着QQ)。服务的运⾏不依赖于任何⽤户界⾯,即使程序被切换到后台,或者⽤户打开了另⼀个应⽤程序,服务仍然能够保持正常运⾏,不过服务并不是运⾏在⼀个独⽴的进程当中,⽽是依赖于创建服务时所在的应⽤程序进程。当某个应⽤程序进程被杀掉后,所有依赖于该进程的服务也会停⽌运⾏(正在听⾳乐,然后把⾳乐程序退出)。
2、代码能⼒
1、请⽤⾃⼰最擅长的编程语⾔,将⼀个字符串反转并输出?
参考答案:
(1)python实现:
⽅法1、使⽤[::-1]:
s = 'python'print s[::-1]
⽅法2、使⽤reverse()⽅法:
l = list(verse()print''.join(l)
(2)java实现:
⽅法1、使⽤StringBuffer,⼀点技巧也没有:
public String reverse(String s){
return new StringBuffer(s).reverse().toString();
}
⽅法2、灵活运⽤了字符串功能:
public String reverse(String s){
char[] CharArray();
char temp;
int len=letters.length;
for(int i=len/2-1;i>=0;i--){
temp=letters[i];
letters[i]=letters[len-1-i];
letters[len-1-i]=temp;
}
return new String(letters);
}
2、针对数⼗个安卓应⽤市场渠道包,请问如何进⾏⼤体的功能验证,简单叙述⼀下思路?
参考答案:可以⾃动化遍历某个⽬录下⾯的所有渠道包apk,然后循环:安装——》登录——》**操作——》退出——卸载
3、测试思路
3、给你⼀个模块,⽐如注册模块,你会怎么样设计与执⾏测试?
参考答案:数据——》从哪⾥来(⼊⼝)——》到哪⾥去(出⼝)——》数据库(检验数据的正确性)
4、你认为app测试过程中,相对于web,要更多注意哪些测试点?或者说app测试和web测试有哪些不同之处?
参考答案:
他们的主要区别在于具体测试的细节和⽅法有区别,⽐如:性能测试,在WEB测试只需要测试响应时间这个要素,在App测试中还需要考虑流量测试和耗电量测试。
安装测试:WEB测试基本上没有客户端层⾯的安装测试,但是App测试是存在客户端层⾯的安装测试,那么就具备相关的测试点。
交叉事件测试:就是在操作某个软件的时候,来电话、来短信,电量不⾜提⽰等外部事件。
操作类型测试:如横屏测试,⼿势测试
⽹络测试:包含弱⽹和⽹络切换测试。需要测试弱⽹所造成的⽤户体验,重点要考虑回退和刷新是否会造成⼆次提交。弱⽹络的模拟,据说可以⽤360wifi实现设置。主要是针对2G、3G、4G、wifi三种⽹络环境进⾏测试 ;
兼容性测试:在WEB端是兼容浏览器,在App端兼容的是⼿机设备。⽽且相对应的兼容性测试⼯具也不
相同,WEB因为是测试兼容浏览器,所以需要使⽤不同的浏览器进⾏兼容性测试(常见的是兼容IE6,IE8,chrome,firefox)如果是⼿机端,那么就需要兼容不同品牌,不同分辨率,不同android版本甚⾄不同操作系统的兼容。(常见的兼容⽅式是兼容市场占⽤率前N位的⼿机即可),有时候也可以使⽤到兼容性测试⼯具,但WEB兼容性⼯具多⽤IETester等⼯具,⽽App兼容性测试会使⽤Testin这样的商业⼯具也可以做测试。
4、测试技术
5、说说会⽤哪些抓包⼯具?怎么⽤的?
参考答案:⽐如fiddler,主要⽤来做app抓包使⽤,先在fiddler客户端做好各项配置,端⼝设置为8888,然后在⼿机上设置代理,就可以抓包了,主要看的是服务器返回的值、还能够修改传⼊参数、传出的参数、模拟⽹络延时,去构造不同场景。
6、app的⽇志如何抓取?
adb logcat | find "ituan" >d:\
也可以⽤ddms抓取,⼿机连上电脑,打开ddms⼯具,或者在Android Studio开发⼯具中,打开DDMS
7、你平常会看⽇志吗, ⼀般会出现哪些异常(Exception)?
这个主要是⾯试官考察你会不会看⽇志,是不是看得懂java⾥⾯抛出的异常,Exception.⼀般⾯试中java Exception(runtimeException )是必会被问到的问题app崩溃的常见原因应该也是这些了。常见的异常列出四五种,是基本要求。常见的⼏种如下:
NullPointerException - 空指针引⽤异常
ClassCastException - 类型强制转换异常。
IllegalArgumentException - 传递⾮法参数异常。
ArithmeticException - 算术运算异常
ArrayStoreException - 向数组中存放与声明类型不兼容对象异常
IndexOutOfBoundsException - 下标越界异常
NegativeArraySizeException - 创建⼀个⼤⼩为负数的数组错误异常
NumberFormatException - 数字格式异常
SecurityException - 安全异常
UnsupportedOperationException - 不⽀持的操作异常
8、什么是alpha测试和beta测试?
alpha测试:在公司场地,由员⼯主导的测试⾏为;beta测试:在客户场地,由客户主导进⾏的测试。
9、请写出⼀个SQL来查询分数前五5的所有⼈?
mysql:select * from分数表order by分数desc limit5;oracle:select top 5 * from分数表order by分数desc;
10、linux常⽤命令有哪些?
cd命令:切换到某个⽬录
ls命令:列出当前⽬录的所有⽂件、⽂件夹
pwd命令:列出当前⽬录的路径
cp命令:复制
mv命令:剪切
grep命令:管道
find命令:查
rm命令:删除
ps命令:查看进程
kill命令:杀掉某个进程
wifi分享cat命令:查看某⽂件
tar命令:打包
chmod命令:赋权限
chown命令:改变⽂件的所有者
vim命令:⽂本编辑
11、请说明Android⼿机和IOS⼿机,系统有什么区别?
两者运⾏机制不同:IOS采⽤的是沙盒运⾏机制,安卓采⽤的是虚拟机运⾏机制。
两者后台制度不同:IOS中任何第三⽅程序都不能在后台运⾏;安卓中任何程序都能在后台运⾏,直到没有内存才会关闭。
IOS中⽤于UI指令权限最⾼,安卓中数据处理指令权限最⾼。
12、请简要介绍⼀下安卓系统四层架构?
从上到下,依次是:应⽤程序层——》应⽤程序框架层——》系统运⾏库层——》Linux核⼼层
13、简单介绍⼀下Android SDK中⾃带的⼏个⼯具/命令的功能?
参考答案:
ddms:Dalvik Debug Monitor Service,是 Android 开发环境中的Dalvik[虚拟机]调试监控服务。
monkey:Android中的⼀个命令⾏⼯具,可以运⾏在模拟器⾥或实际设备中。它向系统发送伪随机的⽤户事件流(如按键输⼊、触摸屏输⼊、⼿势输⼊等),实现对正在开发的应⽤程序进⾏压⼒测试。
uiautomator:UIAutomator是Eclipse⾃带的⽤于UI⾃动化测试⼯具,可仿真APP上的单击、滑动、输⼊
⽂本等操作。
monitor:同uiautomator
adb:ADB的全称为Android Debug Bridge,就是起到调试桥的作⽤。通过ADB我们可以在Eclipse中⽅⾯通过DDMS来调试Android程序,就是debug⼯具。
14、常⽤的adb命令有哪些?请随便写⼀个monkey脚本,并解释其中参数的含义?
参考答案:
adb devices、adb install、adb uninstall、adb shell pm 、adb shell am
adb shell monkey-p com.xiaoniu.finance -s 123 --throttle 500 --ignore-crashes--ignore-timeouts--ignore-security-exceptions-v-v-v 2000 > d:\
-p:app包名、
--throttle:每个操作的间隔时间,单位ms
--ignore-crashes:忽略崩溃
--ignore-timeouts:忽略超时
--ignore-security-exceptions:忽略安全异常
-v -v -v:⽇志详细等级,3个v代表最详细等级的⽇志
d:\:代表将产⽣的⽇志,放到本地PC的D盘,并命名为:
15、测试过程中遇到app出现crash或者ANR,你会怎么处理?
参考答案:可以先把⽇志过滤出来:adb logcat | findstr xxxxx(过滤⽇志信息) ,然后再搜索其中的关键字,⽐如:exception、crash,看看是那些⽅法或者异常导致了问题的发送,初步定位问题原因后,可以交给开发⼈员去具体查深层原因并修复。
16、请简单介绍⼀下使⽤过的安卓UI⾃动化测试⼯具?
参考答案:appium:是⼀个移动端的⾃动化框架,可⽤于测试原⽣应⽤,移动⽹页应⽤和混合型应⽤,且是跨平台的。robotium:是⼀款国外的Android⾃动化测试框架,主要针对Android平台的应⽤进⾏⿊盒⾃动化测试,它提供了模拟各种⼿势操作(点击、长按、滑动等)、查和断⾔机制的API,能够对各种控件进⾏操作。
17、你觉得app的性能测试,即专项测试,需要重点关注哪些⽅⾯?
参考答案:内存、cpu占⽤、耗电量、流量、流畅度等。
发布评论