一、问:app测试与web测试的区别
参考答案:
1)、系统架构:web端的服务器更新后,客户端会自动同步更新;如果是app下修改了服务端,意味着客户端用户所使用的核心版本都需要进行回归测试一遍;
2)、兼容性。Web端要考虑不同的浏览器内核进行测试(IE、chrome、Firefox),APP的兼容性要考虑选择主流的机型,不同的分辨率、尺寸, 以及不同的操作系统;
3)、性能:APP客户端的性能,要考虑电量,流量,GPU渲染(用GPU来在屏幕上显示图像);
4)、交叉事件测试,安装、卸载、更新,前后台切换;
5)、界面操作,如:横竖屏切换,多点触控,事件触发区域。
二、问:APP的兼容性怎么测试,测了哪些机型?哪些版本?那又怎么测Android的兼容性、怎么测手机的兼容
三、问:app测试点有哪些?
参考答案:功能,兼容性,用户体验,安全性,安装卸载升级测试,交叉事件,UI测试,性能测试。
四、问:app项目做了多久
参考答案:一直在做,现在app的主体需求已经完成了,后期都是一些零零散散的需求,测试工作量比较少。
五、问:你测了app哪些模块
参考答案:所有功能都测
面:你们都测试哪些机型?怎么确定的?
我:我们都是选择一些主流的机型来测试的,比如像想华为,oppo,小米这些,怎么确定的话都是从网上看销量来的,选销量好的机型来测就好了
面:那你们app是怎么分工的?
我:我们都是分手机类型的,不是说按功能来分的,基本上app所有的功能点都要测,因为app的功能不比web端的多,所以基本上所有功能都测的
六、问:你怎么做app测试的
参考答案:测试前,先熟悉app的原型图和业务需求,确定测试点,app开发好后,先做一个冒烟测试,看看软件的基本功能是否可用,如果正常,我们再做功能测试,UI测试,兼容性测试,交叉事件测试,安装卸载测试等。
七、问:App的性能测试怎么做的
参考答案:App的性能分为服务器端的性能和手机端的性能。我先说服务器端的性能,再说手机端的性能。
服务器端的性能,我们可以用LoadRunner或Jmeter工具进行测试,我以Jmeter工具为例子说一下App服务器端的性能测试,首先,确定app的性能测试功能点,比如,查询,提交数据,登陆这些用户常用的功能,一般会被选来做性能测试,然后,根据该功能点的接口测试需求,或使用fiddler抓包,在jmeter上构造向服务器发送的请求数据,配置好相关的设置,并做好服务器的监控(我们的App项目是搭建在linux上的,用的是nmon工具做监控),然后运行测试,测试完之后,收集CPU,内存等信息,集合聚合报告的内容,分析性能测试结果。
手机端的性能测试步骤是:
1、在服务器上安装监控工具(iTest/GT)
2、启动监控工具,监控被测应用
3、清空logcat日志:adb logcat -c
4、获取logcat日志:adb logcat -v time >要保存的文件路径
5、使用monkey运行被测应用:adb shell monkey -p 包名 -v 500 > 要保存的文件路径
6、根据监控图,检查CPU,内存,流量,电量是否符合性能指标。如果不符合,就把不符合指标的报表和对应的logcat发给开发定位。
八、问:adb命令有哪些?
九、问:你这个app测试人员有几个?怎么分工?
参考答案:2个。按测试的手机类型分工,每个人负责几种测试机型,每个人都要测试app的所有测试点。
十、你做APP用过monkey,能具体讲一下吗?
参考答案:我们用monkey模拟用户的伪随机操作(点、触摸、滑动等),对APP的稳定性进行测试。
一般我们会用到命令 adb shell monkey -p 包名 -v 次数
十一、那如果monkey测试过程中,出现crash你怎么定位?
参考答案:crash一般是空指针导致的,在logcat日志中输入“nullpoint”搜索到相关的日志,然后把日志给开发定位。
十二、那问题开发修复了你怎么验证?(意思就是,monkey怎样做回归测试)
参考答案:我们会进行回归测试,会按照之前的轨迹(seed)去跑monkey,命令是:adb shell monkey -p 包名 -s seed值 -v 次数
面:那如果monkey异常终止了,怎么去定位
答:我们用到命令ignot time out 和 ignot crash
十三、面试官:看你写有用MONKEY做APP测试,怎么做的?如果有问题的话怎么定位?
我:(1)用adb命令,adb logcat -c清空日志,再获取日志 adb logcat -v time 导到要保存日志的地方
(2)再使用monkey命令adb shell monkey -p 包名 -v 次数,不过次数的话我一般都是算时间来跑,比如说我跑个5分钟大概要多少次,然后直接跑个1小时的次数这样,然后跑完就看monkey日志,如果说它跑的次数跟我设的次数不一样.就说明monkey中途跑失败了。那我就要去看看logcat日志有没有null point,或anr in的关键字,如果有null point,就表示app在测试过程中crash了,然后把null point前后的日志截取下来,发给开发定位;如果有anr in,表示app在测试过程中出现了ANR(程序无响应),我们要把/data/anr/traces.txt文件取下下来,再把ANR进程号对应的日志发给开发定位问题。(日志具体的信息,我们看不懂)
APP出现ANR的原因:
1、线程阻塞的
2、内存不足
3、CPU满负荷
APP出现CRASH的原因:
1、空值指针
2、内存不足
3、CPU满负荷
十三、appium自动化环境是怎么搭建的呢?
参考答案:这个环境搭建起来,稍微复杂些,我自己总结了个文档,网上都找不到的。把这个环境搭建起来,最好先把selenium自动化环境搭建起来,然后安装JDK,配置环境变量,接下来安装nodejs,安装appium,安装SDK,配置好ANDROIR_HOME环境变量就可以了。
十四:appium你是用什么工具定位元素的?
参考答案:可以用uiautomatorviewer,但是这个工具不稳定,经常报错;我一般都用appium自带的inspector来定位。
十二:app自动化,你会用什么方式来定位元素?
参考答案:appium定位方式有id,classname,xpath,还有find_element_by_android_uiautomator,根据实际情况来灵活运用。
十三:H5元素怎么定位?
参考答案:要切换上下文,这个和selenium自动化里面的切换表单有点相似。首先,我们要查出H5页面的context名称,再用switch_to.context()方法切换过去,接下来,就可以进行正常的操作了。
十四、如何判断客户端还是后台的问题
一、客户端问题
1.文字、图片有误,
2.无法输入,按钮不可用
3、抓包信息显示客户端发送的信息有误
二、服务器端的问题
1.通过抓包检查服务器返回的信息,如果信息有误,就可以断定是服务器的问题
2.客户端向服务器发送信息后,服务器无响应
******************************************************************
APP项目介绍参考思路:
我负责的app项目叫“xxxxxx”
主要模块有xx,xx,xx,xx,xx,主要的业务流程是xxxxxx。
测试前,先熟悉app的原型图和业务需求,确定测试点,app开发好后,先做一个冒烟测试,看看软件的基本功能是否可用,如果正常,我们再做功能测试,UI测试,兼容性测试,交叉事件测试,安装卸载测试等。
如果面试官问具体某个测试类型怎么,就要举例子加以说明。
比如:
UI测试:检查app的UI是否和原型图一致。
功能测试:xxxx
兼容性测试:xxxx
用户体验测试:xxxx
(补上app的8大测试点,并举例子说明)
appium工作原理
我们的电脑(client)上运行自动化测试脚本,调用的是webdriver的接口,appium server接收到我们client上发送过来的命令后,他会将这些命令转换为UIautomator认识的命令,然后由UIautomator来在设备上执行自动化。
Appium的架构原理如上图所示,由客户端(Appium Client)和服务器(Appium Server)两部分组成,客户端与服务器端通过JSON Wire Protocol进行通信。