企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# app测试篇 [TOC] > ### app测试与web测试的区别 1. 系统架构:web端系统,更新服务器,不需要更新客户端;APP如果更新了服务端,客户端也要更新并测试; 2. 兼容性。Web端要考虑不同的浏览器内核进行测试(IE、chrome、Firefox),APP的兼容性要考虑选择主流的机型,不同的分辨率、尺寸, 以及不同的操作系统; 3. App要考虑交叉事件测试,安装,卸载,前后台切换测试; 4. App还要考虑界面操作,如:横竖屏切换,多点触控,事件触发区域。 > ### APP的兼容性怎么测试,测了哪些机型?哪些版本?那又怎么测Android的兼容性、怎么测手机的兼容 > ### app测试点有哪些? 功能,兼容性,用户体验,安全性,安装卸载升级测试,交叉事件,UI测试,性能测试。 > ### app项目做了多久 一直在做,现在app的主体需求已经完成了,后期都是一些零零散散的需求,测试工作量比较少。 > ### 你测了app哪些模块 所有功能都测 > ### App的性能测试怎么做的 App的性能分为服务器端的性能和手机端的性能。 服务器端的性能,我们用Jmeter工具进行测试的,和web的端性能测试方法一样的。 我们是用monkey做手机端App的稳定性测试的,使用monkey跑10万次,看它会不会出问题,如果出了问题,我们再定位原因,具体的做法是这样的: 1. 在跑monkey前,先使用`adb logcat -c`清空手机的logcat日志 2. 接下来,使用`adb logcat -v time`获取logcat日志并导入本地文件 3. 使用monkey运行被测应用:`adb shell monkey -p 包名 -v 10万次`并将执行结果导入到本地 4. 测试完成后查看monkey日志,如果说它跑的次数跟我设的次数不一样.就说明monkey中途跑失败了。那我就要去看看monkey日志中有没有crash或者anr的关键字,如果有还需定位到是什么原因导致的anr或者crash的问题。并且将相关日志和logcat日志与进程号提交给开发定位,如果是anr的问题,还需要从安卓中获取/data/anr/traces.txt文件提交给开发定位。 > ### adb命令有哪些? > ### 你这个app测试人员有几个?怎么分工? 2个。按测试的手机类型分工,每个人负责几种测试机型,每个人都要测试app的所有测试点。 > ### 你做APP用过monkey,能具体讲一下吗? 我们是用monkey对APP进行稳定性进行测试。 一般我们会用到命令 adb shell monkey -p 包名 -v 次数,我们项目每次测试都跑10万次。 > ### 那如果monkey测试过程中,出现crash你怎么定位? 参考答案:crash一般是空指针导致的,在monkey日志中输入“crash”搜索到相关的日志,然后把日志给开发定位。 > ### 那问题开发修复了你怎么验证?(意思就是,monkey怎样做回归测试) 参考答案:我们会进行回归测试,会按照之前的轨迹(seed)去跑monkey,命令是:adb shell monkey -p 包名 -s seed值 -v 次数 > ### 面试官:看你写有用MONKEY做APP测试,怎么做的?如果有问题的话怎么定位? 我:我们是使用monkey来做稳定性测试的, 1. 在跑monkey前,先使用`adb logcat -c`清空手机的logcat日志 2. 接下来,使用`adb logcat -v time`获取logcat日志并导入本地文件 3. 使用monkey运行被测应用:`adb shell monkey -p 包名 -v 10万次`并将执行结果导入到本地 4. 测试完成后查看monkey日志,如果说它跑的次数跟我设的次数不一样.就说明monkey中途跑失败了。那我就要去看看monkey日志中有没有crash或者anr的关键字,如果有还需定位到是什么原因导致的anr或者crash的问题。并且将相关日志和logcat日志与进程号提交给开发定位,如果是anr的问题,还需要从安卓中获取/data/anr/traces.txt文件提交给开发定位。 * * * > ### APP出现ANR的原因: 1. 线程阻塞的 2. 内存不足 3. CPU满负荷(由于现在的手机基本都是8核CPU,所以基本不会出现CPU满负荷的情况) > ### APP出现CRASH的原因: 1. 空值指针 2. 数组越界 3. 内存不足 4. CPU满负荷(由于现在的手机基本都是8核CPU,所以基本不会出现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()方法切换过去,接下来,就可以进行正常的操作了。 > ### web自动化和app自动化有什么区别? 测试的思路都是一样的,要用到元素定位,unittest框架这些,app自动化定位可以用appium的Inspector来定位。 > ### 如何判断客户端还是后台的问题 * 一、客户端问题 1. 文字,图片有误; 2. 无法输入,按钮不可用; 3. 抓包信息显示客户端发送的信息有误。 * 二、服务器端问题 1. 通过抓包检查服务器返回的信息,如果信息有误,就可以断定是服务器的问题; 2. 客户端向服务器发送信息后,服务器无响应。 > ### 问:你怎么做app测试的? 测试前,先熟悉app的原型图和业务需求,确定测试点,开发做完接口之后,先做接口测试,App开发好后,先做一个冒烟测试,看看软件的基本功能是否可用,如果正常,我们再做功能测试,UI测试,兼容性测试,交叉事件测试,安装卸载测试等。 如果面试官问具体某个测试类型怎么,就要举例子加以说明。 比如: UI测试:检查app的UI是否和原型图一致。 功能测试:xxxx 兼容性测试:xxxx 用户体验测试:xxxx (补上app的8大测试点,并举例子说明) > ### Appium的工作原理是什么? > ### 为什么要限速/模拟弱网? 主要是为了模拟app端(也包括pc端)在低网络速度的情况,是否有bug,对用户体验是否有影响 > ### appium如何远程调用其他机器? 参考答案:在上个项目中,一般我们只使用一台机器去跑appium脚本。 涉及到多台机器调用用的少一些,不过我自己业余时间有学过,大概说一下我的思路。 比如:A要使用B的服务为例: 1. 首先,修改B的服务主机 ip 2. 将A机器要执行的脚本中的ip替换为B的服务ip 3. 将测试机插到远程机B上 4. 在机器A上执行脚本,就可以调用远程机 > ### appium遇到系统弹窗是怎么处理的? 和selenium方法一样的。使用switch\_to.alert.accept()来接收弹窗,如果是拒绝就是switch\_to.alert.dismiss() > ### appium遇到有电话或者短信怎么处理? 这种情况一般会导致定位不到相关元素,我们就可以直接用try....except去捕捉异常处理,写一些处理逻辑,比如设置等待或者停止运行等。