这些软件测试面试题竟然给7年工作经验的测试难住了!!!

120
15.6 App 稳定怎么做的? Monkey 怎么用(App 稳定测试)?
稳定性这块,我们当时用的是 SDK 自动的一个 Monkey 工具进行测试的,其实 Monkey 工具主要通过模
拟用户发送伪随机时间去操作软件,通过执行 Monkey 命令,它会自动出报告,执行测试大概在 10 万
次,每个动作的间隔时间 250ms,主要就是看软件长时间,随机乱操作的情况,是否会出现异常,闪
退,崩溃等现象。
一般我都是在下班的时间晚上时间执行 Monkey 命令,并把生成的报告导出到电脑端,大概需要 6、7
小时,第二天早上看报告,分析报告,如果出现问题,一般利用上次执行的那个种子值,再进行执行
命令进行复测一下,
像 monkey 命令:
adb shell monkey -p com.xy.android.junit -s 种 子 值 --throttle 250 --ignore -crashes
--ignore -timeouts -monitor-native-crashes -v -v 100000 > E:\monkey_log\monkey_log.txt
这里主要关注几个点,1、指定种子值 2、忽路一些异常,保证能正常执行完成
3、设置间隔时间 4、配置一些时间比例 5、然后就是执行的次数。
对于报告怎么分析这块,主要看有不有 CRASH(崩溃),ANR(超时无响应), Exception(异常)等的情况
像看有不有空指针异常( NullPointException)啊,0OM 等现象啊等等,
找到 CRASH 崩溃 ANR 超时无响应 Exception 异常的位置,看出现错误的上一个动作是什么,什么做了
什么动作导致错误出现。异常信息会详细的指出哪个 Activity 出现了问题,甚至于哪个函数出问题
了,具体哪个位置。然后把报告中出现的日志信息截图发给开发,开发修复完成之后,我们会根据种
子值在进行复测一下。
稳定性这块我们当时就是这么做的。
我在运行 monkey 发现过很多的问题我就简单的说几个问题,举个例子在查看 monkey 运行日志中
(1) com.androidserver.am.NativeCrashListener.run(NativeCrashListener.java:129)
属于本地监听代码导致的崩溃,手机监听代码导致的崩溃,他是手机产生的原因,不是代码的原因不
做处理。
(2) ∥Short Msg:java.lang.IllegalArgumentException 传参异常:需要一个 stng 类型,给我一个
int 类型
(3) ∥Short Msg:java.lang.NullPointerException 空指针异常
(4) ∥Short Msg:Native crash 本地代码导致的奔溃
(5) (com.koudaizhekou.tbk/com.uzmap.pkg.EntranceActivity) 超时无响应
等等等......

121
15.7 App 弱网测试怎么做的 ?
弱网测试这块我用的 fiddler 工具做的,通过 fiddler 实现延迟发送数据或接收的数据的时间来限制
网络的下载速度和上传速度,从而达到模拟 2G\3G\4G 的移动网络的弱网场景,还有设置随机数来模
拟网络不稳定的情况。
操作:首先保证手机与电脑在同一个网络,然后在手机上,设置代理服务器,指定服务器为装了
fiddler 的电脑的 ip 地址,端口为 8888 然后就是在 fiddler 上设置上行,下行速率,实现对发送,
接受数据的进行网络延迟具体在 fiddler 的菜单上有一个 Rules -> CustomizeRules,打开 Fiddler
的 ScriptEditor 文件,在其中找到 m_SimulateMode 标志位,然后修改上行,下载的网络延迟时间即
可,具体设置参数的值 SE 那边有给到一个参考文档
2G 上行 440,下行 400, 3G 上行 100,下行 100
模拟网络不稳定的情况
生活当中,网络并不是固定不变,一般处于不稳定的状态,我们这个时候编写随机数来模拟网络
不稳定的情况
1,在 Customize Rules 文件中,写一个随机的数
static function randlnt(min,max){
return Math.round(Math,random()*(max-min)+min);
}
2,在 Customize Rules 文件中,限制网络的参数修改成随机数
if (m_Simulate Modem){
// Delay sends by 300ms per KB uploaded.2kb/s
oSession["request-trickle-delay"]=""+randlnt(1,20000);
// Delay receives by 150ms per KB downloaded.2.5kb/s
oSession["response-trickle-delay"]=""+randlnt(1,20000);
3,重新勾选
Rues-> Performance->勾选 Simulate Modem Speeds
弱网测试,看我们软件在弱网场景下是否会有丢包的现象,丢包率是否严重,页面是否能正
常展示,是否有空白页,数据是否有丢失,页面加载速度是否会严重影响用户体验。
15.8 App 的性能测试
内容要点:
指标:cpu,内存,电量,流量,FPS,
怎么测? cpu,内存,流量 android studio

122
cpu 不能超过 10-20% 普通业务要求在 10%左右,核心的业务,尤其是一些绘图的业务,
要求在 20%左右。指标:SE 给到,竞品分析
内存主要看有内存泄露的情况,怎么看?
流量:一刷新使用软件,流量会逐渐增加
具体操作:
1,对于 cpu 内存,流量这 3 个指标,我们用的 android studio 来检测的,结合 sdk 里面的一个插件
android Monitor,它可以帮我们试试检测 cpu,内存,流量的曲线图
2,这里我们需要开启手机端的开发者模式,还有 usb 调试模式,例外,开发给我们提供的 apk 包,
必须需要开启 debug 模式,开发开启之后打包给测试人员就可以了
3,主要就是对我们需要测的功能进行操作,然后实时查看图表,看他是否有内存 oom 内存泄漏,cpu
是否使用过高,是否有内存抖动,造成的卡顿等现象,是否有图片过大造成流量使用过大这些问题等,
是否有频繁使用流量,没有使用缓存等问题
4,像 fps 帧率是通过 adb 命令来测的,还有电量我们当时用的是手机自带的一个第三方软件测的?
15.9 对于内存具体怎么测呢?
对于内存其实主要看有没有内存泄漏的问题
具体我们是这样做的:
1、首先我会频繁操作同一个业务,看他的内存和 cpu 是否逐步增长,最后稳定在一个固定大小的范
围,如果在频繁操作同一个业务,内存一直在增长,可能存在有内存泄漏问题,尝试手动 GC(手动回
收内存,因为内存泄漏,系统已经回收不了,所以尝试下手动回收内存),内存明显或者断崖式的下
降,基本就可以判断有内存泄漏的现象
再通过 damp java 这个去分析,分析结果如果出现 leaked,就说明有了,里面可以找到是哪个对象,
截图提 bug,
2、使用 app 过程中,内存一直在增长,那基本可以判断有内存泄漏的情况,还有看是否有内存抖动
的现象:这里主要原因还是有因为大量小的对象频繁创建,频繁的回收内存,会导数 cpu 频繁使用,
造成 cpu 使用过大,造成 app 卡顿,导致内存碎片,内存泄漏等问题
15.10 对于 CPU 具体怎么测呢?
cpu 主要就是看有没有过高,有没有超过我们的指标范围
具体是这样做的:
首先频繁使用某一个业务,cpu 是否逐步增长,最后稳定在一个固定大小的范围,对于一把基础
业务,对 cpu 要求不高的业务,cpu 不能超过 10%,对于 cpu 要求比较高的,比如某个业务需要加载
地图,大量的图片,视频等的业务,或者需要做大量的数据统计分析的业务,

123
我们要求 cpu 不能超过 20%
15.11 对于流量具体怎么测?
a,首先看在没有操作功能业务的情况下,没操作流量不应该有,或者是流量使用不是很大,就几 KB
因为 app 肯能实时刷新消息,比如如果一个登陆,你就使用 1M 的流量,查询个图片使用 3-4M 的流量
图片,这个肯定流量使用过大
b,频繁操作同一个业务,流量一直在刷,说明没有使用缓存
如何处理:图片过大处理方法:图片压缩传输,要么降低图片分辨率,
15.12 对于 FPS 具体怎么测?
对于 Fps 帧率的问题,我们当时用的 adb 命令来测的
知识点拓展: Android 设备的屏幕刷新率为 60 帧/s,要保持画面流畅不卡顿,要求每一帧的时间不
超过 1000/60=16.6ms,这就是 16ms 的黄金准则,
a. 打开手机:开发者选项-> profile GPU rendering ->
in adb shell dumpsys gfxinfo(开启 GPU 渲染模式)
b. 操作要测试的 apk
C. cmd 窗口输入命令: adb shell dumpsys gfxinfo 包名
d. 得到一个矩阵数据,计算矩阵中帧率大于 16 的点所占比例,即为卡顿比
e. 通过 execl 进行表格处理可以直观的查看软件的流畅度
15.14 对于电量具体怎么测?
电量这一块,我们当时用的手机自带的第三方软件测的
15.15 App 交互性怎么做的?
交互性这块,主要从以下几个方面去考虑测试的是:
1. 看我们软件与其他应用软件的同时运行来回切换是否有问题
2. 看软件切换到后台一段时间,再切换到前端,或者前后台来回切换,
软件是否会有异常,比如:进程被杀死,或者切换到前端页面出现问题,或者页面数据丢失等等。
3. 看软件被在使用过程中被其他应用中断,或者其他意外情况中断,比如:来电,来短信,闹铃,
低电量测试等,还要注意手机端硬件上,如:待机,锁屏,插拔数据线,耳机等操作不会影响客户端。
15.16 App 的安装,卸载,更新测试具体从哪些方面考虑?
安装测试:
1. 正常安装测试,检查是否安装成功安装完成后,能否正常启动应用程序
2. 是否支持第三方安装,比如豌豆荚及 91 助手等工具可以正常安装及卸载程序
3. 检测在各大手机市场上下载,并直接安装,看是否能正常安装,安装完成之后,能否能正常启动。

124
4. 检测 APP 版本覆盖测试(先安装一个低版本,不卸载。然后再直接安装一个高版本,看是否会覆盖
低版本。(直接覆盖是否成功,卸载之后,再下载新版本,看是否能安装成功)
5. 检测版本回退(先装高版本,不卸载,直接再重新安装一个低版本,是否会覆盖高版本。
6. 检测在内存不足的情况下,去安装软件,系统应该会有提示
7. 在安装过程中,所有的提示信息必须是英文或者中文,提示信息中不能出现代码符号、乱码等。
8. 检测在未允许外来程序的安装的情况下,安装软件是否会有提示信息
9. 如果软件需要用到网络,GPS 定位,联系人等其他系统应用程序的时候,安装 App 会有相应的提
示。在不允许的情况,软件是否能正常使用。
10. 安装完成后,是否对其他应用程序造成影响。
11. 多进程进行安装,是否安装成功。(同时安装多个软件,是否能正常安装)
12. 在不同型号、系统的手机进行安装。(兼容性)
13. 安装过程中,取消安装,再次重新安装,是否能正常安装。
14. 安装完成后,检查手机桌面能否添加快捷方式。(是否有快捷图标生成。)
卸载测试:
1. 正常卸载,软件是否能正常被卸载,相应的桌面图标是否会删除
2. 卸载之后,对应的文件是否删除干净,进入安装位置,去看下是否有残留的文件
3. 程序正在运行的时候,卸载程序,是否能正常卸载
4. 卸载过程中,取消卸载,看是否正常退出卸载程序,检查软件是否还能继续正常使
5. 在没用使用程序时,删除目录文件,看程序是否能运行。
6. 不同系统、硬件环境下进行卸载
7. 卸载成功后,是否对其他程序有影响
8. 卸载后再次安装,是否正常使用
9. 在卸载过程中,所有的提示信息必须是英文或者中文,
提示信息中不能出现代码是否有相关的提示信息
10. 卸载过程中,出现意外(比如手机关机,没电,查看信息,接打电话),程序是否还能运行
11. 在卸载过程中,突然重启设备,再次访问程序,是否还能运行。
更新测试:
1. 当客户端有新版本时,提示更新
2. 非强制更新,可以取消更新,旧版本正常使用,下次使用软件时,仍然会出现更新提示
3. 强制更新,强制更新而用户没有更新时,退出客户端,下次启动,依然提示更新
4. 不卸载,更新,检查是否可以更新

125
5. 不卸载更新,检查资源同名文件如图片等是否更新成最新版本。
6. 非 wifi 网络下,提示是否更新,取消就加入待下载,wifi 下自动更新。
15.17 H5 界面怎么测试
基本功能测试:(浏览器、微信内置浏览器)
登陆
目前 H5 与 native 各个客户端都做了互通,所以大家在测试的时候要注意两点:
A、若客户端已登录,那么进入 H5 后仍然是登录状态
B、若客户端未登录,进入 H5,点击对应按钮 OR 链接,如果需要登录,须拉起 native 登录。若取消
登录,是否可再次拉起登录,或者停留在的页面是否有对应的登录提示.。
ps:本次测试过程中就发现,第一次点击链接,可以拉起登录,第二次却不能
翻页
遇到翻页加载的页面,需要注意内容为 1 页或者多页的情况。
A、数据分页加载时,注意后续页面请求数据的正确。
ps:这个需要注意在快速操作场景中,请求页数是不是依次递增,快速操作(如第 1 页尚未 loading
出来的时候仍然继续上拉操作)时是否发出去对应的请求了。
刷新与返回
A、下拉刷新是否仍然处于当前页面。
B、用户主动点击刷新按钮是否仍然处于当前页面
C、点击返回与 back 键,回退页面是否是期望页面
ps:本次测试过程中就发现,mtop 接口请求成功,但是 data 内无数据时,返回到的就是个空白页面,
无法正常发送请求。
H5 适配相关
H5 的适配其实比客户端的相对来说,要少一些,手机品牌之间的差异不大,所以不用太多关注,最
容易出现问题的是 android2.3 系统,这个要特别关注下:
A. 大屏(如 720*1280,重点关注页面背景是否完全撑开页面,刷新是否有抖动)
小屏手机(如 320*480,重点关注下弹框样式和文案折行)
B. android2.3、android4.X 随机找一个即可
C. ios5、ios6、ios7
体验相关
资源相关
A、页面中有图片的话,淘宝那边建议图片一般不大于 50kb,本着一个原则,尽量缩小图片

126
B、资源是否压缩、是否通过 CDN 加载
C、如何保证二次发布后有效更新。
流量
A、对于一些不会变化的图片,如游戏动画效果相关图片,不需要每次都请求的东西,做本地缓存
B、数据较多时是否做了分页加载。
页面展现时间
A、关注页面首屏加载时间
页面提示
A、弱网络下,数据加载较慢,是否有对应的 loading 提示
B、接口获取异常时,提示是否友好
C、刷新页面或者加载新内容时页面是否有抖动
手机操作相关
A、锁屏之后展示页面
B.回退到后台之后,重新呼出在前端展示
15.18 你们之前是用什么手机什么版本做兼容性测试的?
有用到三星 note5 Android 6.0.1 三星 s6 Android 6.0.1
红米 1s Android 5.1 小米 5 Android 7.0
华为 mate9 Android 6.0 乐视 2 Android 6.0
华为 mate20 Android 9.0 三星 s8 Android 8.0
iphoneos ios 10.3.2 iphone ios 10.0.2
iphone ios 8.4.1 iPhone X ios 11.0
15.19 Android 跟 ios 测试有什么区别?
Android 和 ios 测试的共同点都需要进行界面测试、功能测试、兼容性测试、网络测试、交互性测试、
易用性专项测试、异常测试、安全专项测试以及权限测试。不同的是 Android 测试除了以上的测试之
外还要用 monkey 进行稳定性专项测试以及用 emmagee 或者 gt 进行性能专项测试。los 是用 itools
工具对功能进行测试:安装、传输文件以及查看日志。
从操作系统,安装卸载,按键操作,开发语言这几个方面去区分操作系统: android 操作系统较
多,iOS 较少只能升级不能降级,并目新的版本的资源库不能完全兼容旧版中系统中的应用,如果低
版本应用调用了高版本的资源库,可能会导致系统崩溃。
安装卸载测试,应用发布后:下载安卓包的平台和渠道很多:豌豆英、应用宝、360 手机助手等;
iOS 主要有 App store、 iTunes,安全性会更高点

127
本地测试:安卓手机可以通过扫码或者直接安卓 APK 包安装测试包;iOS 要安装测试包必须绑定手机
的 id(证书)才可以安装 ipa 测试包
按键操作测试:安卓手机针对每一款手机有不一样的操作;苹果手机操作习惯单一
开发语言:虽然同样的业务安卓和 iOS 的展示形式和业务一致,但是底层全完不一样,安卓的应用是
有 java 语言实现的,iOS 用 OC 实现。
15.20 小程序怎么测试
1,小程序测试(多用第一人称,口语化表达,多讲一些,讲细一些,先宏观,在微观)参考面试问题 STAR
法则:
我们原来主要测试,几个方面,界面测试,功能测试,交互性测试,兼容性测试,安全测试,
易用性测试,异常测试,权限测试
界面测试:主要是测试跟界面的原型图是否一致,同时我也要考虑不同屏幕大小跟分辨率
功能测试:跟所有的功能测试都是一样的,还有小程序有位置功能,检查下,微信小程序,附近中是
否能找到对应小程序,使用小程序是否记录,
交互性测试:要考虑跟微信的功能交互使用,比如说一些,卡包,支付等功,考虑跟手机固有功能交
互,比如说来电,短信等
兼容性测试:考虑跟微信不同版本的兼容,还有同时还要考虑不同手机厂商跟手机型号兼容,还要考
虑当微信清除缓存后,小程序还能否继续使用
安全测试:测试数据加密,包括 sql 与 xss 脚本攻击这块
易用性测试:考虑功能是否方便还用
异常测试:考虑断网,手机重启,关机的情况
权限测试:小程序继承微信权限,测试手机对微信权限,还要考虑微信对小程序授权,是否允许操作
原来我们测试阶段,上传小程序到微信小程序平台,上传到开发版本里面,通过扫描二维码去下载小
程序进行测试,
上线后,我们也要测试下,微信搜索小程序中能否搜索的到
15.21 公众号,小程序比 app 更火,你怎么看
小程序有安装包,一般控制在 1M 以内
1,基于微信大的平台,有流量的入口
2,不需要安装,操作更加方便
15.22 微信开发者工具如何使用
原来我们的下载一个微信开发者工具,导入开发给的小程序代码包,在输入开发给予的
appid,调试与测试小程序代码包,

  自动化测试相关教程推荐:

2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_bilibili

2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibili

测试开发相关教程推荐

2023全网最牛,字节测试开发大佬现场教学,从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibili

postman/jmeter/fiddler测试工具类教程推荐

讲的最详细JMeter接口测试/接口自动化测试项目实战合集教程,学jmeter接口测试一套教程就够了!!_哔哩哔哩_bilibili

2023自学fiddler抓包,请一定要看完【如何1天学会fiddler抓包】的全网最详细视频教程!!_哔哩哔哩_bilibili

2023全网封神,B站讲的最详细的Postman接口测试实战教学,小白都能学会_哔哩哔哩_bilibili

  总结:

 光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/266079.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

day3_qt

完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 如果账号和密码不匹配&#xf…

Playground v2:a new leap in creativity

https://huggingface.co/playgroundai/playground-v2-1024px-aesthetichttps://huggingface.co/playgroundai/playground-v2-1024px-aestheticPlayground v2:超越SDXL的模型来了 - 知乎Playground团队刚刚发布了新的文生图模型Playground v2,它是基于SDX…

【Unity】Addressable包资源加载失败:CRC Mismatch.

Error while downloading Asset Bundle: CRC Mismatch. 是资源下载校验失败,但是资源和上次打包的资源是一样的。没有排查到原因,在谷歌搜索后看到 大概就是指Unity版本修改后打包,会破坏原来的CRC信息,导致导报出来的资源无法通…

吃到“政务大模型”的第一口螃蟹,大湾区实现改革破题

文|刘雨琦 编|王一粟 生活垃圾分类标准实施之后,如何有效提升垃圾分类的成效成为摆在众多城市管理者的“老大难”问题。广州白云区城市管理和综合执法局党组书记、局长郑柏生有一个“小妙招”:“我们运用科技手段首创云站桶值守模式&#xf…

软件测试BUG管理神器——禅道

背景与用途 使用背景 针对开发的产品进行BUG质量管理,通过需求、任务、bug来进行交相互动,终通过项目拿到合格的产品! 场景介绍 测试人员提出bug -> 开发人员解决bug -> 测试人员验证关闭 下载安装 一、搜索禅道官网 1.1在浏览器搜索…

sql事务

事务 事务是并发控制的单位,是用户定义的一个操作序列。 MySQL 事务主要用于处理操作量大,复杂度高的数据。 在 MySQL 中,事务是一组SQL语句的执行,它们被视为一个单独的工作单元。 但是在 MySQL 中只有使用了 Innodb 数据库引擎…

基于Jedis来探讨池化技术

为什么需要池化技术 系统运行时必然是需要数据库连接、线程等一些重量级对象,频繁的创建这种对象对性能有着不小的开销,所以为了减少没必要的创建和开销,我们就用到了池化技术。 通过创建一个资源池来保存这些资源便于后续的复用&#xff0c…

qt 使用百度在线地图 方法2

使用百度在线地图两个关键点&#xff0c;一是html页面准备&#xff1b;二是qt 与js 语言的交互。 1&#xff0c;html页面的准备&#xff0c;双击页面就可以出现如下效果。 主要代码&#xff1a; <!DOCTYPE html> <html> <head><meta http-equiv"C…

Python常见面试知识总结(一):迭代器、拷贝、线程及底层结构

前言&#xff1a; Hello大家好&#xff0c;我是Dream。 今天来总结一下Python和C语言中常见的面试知识&#xff0c;欢迎大家一起前来探讨学习~ 【一】Python中迭代器的概念&#xff1f; 可迭代对象是迭代器、生成器和装饰器的基础。简单来说&#xff0c;可以使用for来循环遍历…

vector类

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大二&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;熟悉vector库 > 毒鸡汤&#xff1a;从人生低谷…

物料分类帐概览

原文地址&#xff1a;Overview: What is SAP Material Ledger? | SAP Blogs 物料分类账是收集物料主数据存储在物料主数据中的物料交易数据的工具。 物料分类帐使用此数据来计算价格以评估这些物料。 物料台账是实际成本核算的基础。它允许以多种货币对材料库存进行评估&am…

Java程序编写(下)

Scanner对象 通过java.util.Scanner来获得Scanner类 基本语法&#xff1a; Scanner s new Scanner(System.in)通过next()和nextLine()方法获取输入的字符串。 通过hasNext()和hasNextLine()判断是否还有输入的数据。 next(): 1、一定要读取到有效字符后才可以结束输入 2、…