软件测试最常见的面试题了解一下

目录

app  测试和 b web  测试有什么区别?

兼容性测试:

网络测试:

App 测试中 ios 和 Android 有哪些区别呢?

分析bug是前端还是后端的

在手工接口测试或者自动化接口测试的过程中,上下游接口有数据依赖如何处理?

没有接口文档如何做接口测试

平常用什么工具测接口的

抓包

json  和字典 dict的区别?

 测试的数据你放在哪? ?

什么是数据驱动,如何参数化?

下个接口请求参数依赖上个接口的返回数据

依赖于登录的接口如何处理

一个订单的几种状态如何全部测到 ?


app  测试和 b web  测试有什么区别?

  WEB  测试和 p App  测试从流程上来说,没有区别。都需要经历测试计划方案,用例设计,测试执行,缺陷管理,测试报告等相关活动。从技术上来说,WEB 测试和 APP 测试其测试类型也基本相似,都需要进行功能测试、性能测试、安全性测试、GUI 测试等测试类型。他们的主要区别在于具体测试的细节和方法有区别,比如:性能测试,在 WEB测试只需要测试响应时间这个要素,在 App 测试中还需要考虑流量测试和耗电量测试。

兼容性测试:

  在 WEB 端是兼容浏览器,在 App 端兼容的是手机设备。而且相对应的兼容性测试工具也不相 同,WEB 因为是测试兼容浏览器,所以需要使用不同的浏览器进行兼容性测试(常见的是兼容 IE6,IE8,chrome,firefox)如果是手机端, 那么就需要兼容不同品牌,不同分辨率,不同 android 版本甚至不同操作系统的兼容。(常见的兼容方式是兼容市场占用率前 N 位的手机即可),有时候也可 以使用到兼容性测试工具,但 WEB 兼容性工具多用 IETester 等工具,而 App 兼容性测试会使用 Testin 这样的商业工具也可以做测试。安装测试:

  WEB 测试基本上没有客户端层面的安装测试,但是 App 测试是存在客户端层面的安装测试,那么就具备相关的测试点。还有,App 测试基于手机设备,还有一些手机设备的专项测试。如交叉事件测试,操作类型测试,网络测试(弱网测试,网络切换)交叉事件测试:就是在操作某个软件的时候,来电话、来短信,电量不足提示等外部事件。

操作类型测试:

如横屏测试,手势测试

网络测试:

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

还有升级测试:

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

App 测试中 ios 和 Android 有哪些区别呢?

  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 等

分析bug是前端还是后端的

如何分析一个 bug 是前端还是后端的?

  平常提 bug 的时候,前端开发和后端开发总是扯皮,不承认是对方的 bug这种情况很容易判断,先抓包看请求报文,对着接口文档,看请求报文有没问题,有问题就是前端发的数据不对

请求报文没问题,那就看返回报文,返回的数据不对,那就是后端开发的问题咯

在手工接口测试或者自动化接口测试的过程中,上下游接口有数据依赖如何处理?

  用一个全局变量来处理依赖的数据,比如登录后返回 token,其它接口都需要这

个 token,那就用全局变量来传 token 参数

没有接口文档如何做接口测试

没有接口文档,如果做接口测试?(这是个送命题)

  没有接口文档,那还能咋办,瞎测呗!一个公司的开发流程里面,如果接口文档都没有,是无法展开接口测试的,你都不知道这个接口干什么的,也不知道具体每个字段代表什么意思,那还测啥呢?

当然,你肯定不能回答面试官不测(心理 mmp,脸上笑嘻嘻),接下来就是扯犊子时间

  1.没有接口文档,那就需要先跟开发沟通,然后整理接口文档(本来是开发写的,没办法,为了唬住面试官,先说自己整理了)

  2.没有接口文档,可以抓包看接口请求参数,然后不懂的跟开发沟通本题主要靠情商,通俗来说就是忽悠能力,先唬住面试官了再说,进去了也是瞎测测,随时做好背锅的准备

平常用什么工具测接口的

接口测试工具很多,首先 postman,其次用jmeter,fiddler也可以测接口。

  webService  接口,webService 接口是如何测试的,webService 接口用 SoapUI

抓包

面试题 8:当一个接口出现异常时候,你是如何分析异常的?

  1.抓包,用 fiddler 工具抓包,或者浏览器上 f12,app 上的话,那就用 fiddler设置代理,去看请求报文和返回报文了

  2.查看后端日志,xhell 连上服务器,查看日志

json  和字典 dict的区别?

  现在自动化培训线上线下到处都是,是个人都能说的上几个框架,面试如果问框架相关问题,会吹的让你怀疑人生!所以面试官为了更清楚的知道你是停留在表面上的花拳绣腿还是有扎实的基础,就不会问框架这种东西了。基本上问几个数据类型的基础就知道有没货了。

那么 json 和字典到底有什么区别呢?初学者连 python 的基础数据类型都没搞清楚,直接撸框架,有的人学了几个月可能都迷迷糊糊的,以为 json 就是字典。这个是肯定不对的。

重点:json 本质上还是字符串,只是按 key:value 这种键值对的格式来的字符串

备注:注意True变成了true

 测试的数据你放在哪? ?

  测试数据到底该怎么放,这个是面试官最喜欢问的一个题了,似乎仁者见仁智者见智,没有标准的答案,有的人说放 excel,也有的说放.py 脚本,也有的说放ini 配置文件,还有放到 json,yaml 文件,txt 文件,甚至有的放数据库,五花八门,一百个做自动化的小伙伴有 100 个放的地方。这里总结下测试的数据到底该怎么放?

首先测试的数据是分很多种的,有登录的账户数据,也有注册的账户数据,还有接口的参数,还有邮箱配置的数据等等等等,所以这个题不能一概而论给答死了。要不然就是给自己挖坑。

以下两个大忌不能回答:

·    测试的数据是不能写死到代码里面的,这个是原则问题,也是写代码的大忌(你要是回答写在代码里面,估计就是回去等通知了)

·    测试数据放到.py 的开头,这种其实很方便,对于少量的,固定不变的数据其实是可以放的,但是面试时候,千万不能这样说,面试官喜欢装逼的方法

测试数据存放总结:

  1.对于账号密码,这种管全局的参数,可以用命令行参数,单独抽出来,写的配置文件里(如 ini)

  2.对于一些一次性消耗的数据,比如注册,每次注册不一样的数,可以用随机函数生成

  3.对于一个接口有多组测试的参数,可以参数化,数据放 yaml,text,json,excel都可以

  4.对于可以反复使用的数据,比如订单的各种状态需要造数据的情况,可以放到数据库,每次数据初始化,用完后再清理

  5.对于邮箱配置的一些参数,可以用 ini 配置文件

  6.对于全部是独立的接口项目,可以用数据驱动方式,用 excel/csv 管理测试的接口数据

  7.对于少量的静态数据,比如一个接口的测试数据,也就 2-3 组,可以写到 py脚本的开头,十年八年都不会变更的

总之不同的测试数据,可以用不同的文件管理

什么是数据驱动,如何参数化?

参数化和数据驱动的概念这个肯定要知道的,参数化的思想是代码用例写好了后,不需要改代码,只需维护测试数据就可以了,并且根据不同的测试数据生成多个用例

下个接口请求参数依赖上个接口的返回数据

不同的接口封装成不同的函数或方法,需要的数据 return 出来,用一个中间变量 a 去接受,后面的接口传 a 就可以了

依赖于登录的接口如何处理

登录接口依赖 token 的,可以先登录后,token 存到一个 yaml 或者 json,或者ini 的配置文件里面,后面所有的请求去拿这个数据就可以全局使用了

一个订单的几种状态如何全部测到 ?

如:未处理,处理中,处理失败,处理成功

跟上面一样,也是考察造数据,修改数据的状态


衷心感谢每一个认真阅读我文章的人       如果文章对你有帮助,麻烦点个赞,谢谢你的支持

以下是笔者推荐的软件测试学习群:32125541备注(777)即可,群里除了各种免费学习资料和视频外还有大神不定时的解决问题哦!个人觉得还是蛮好的!欢迎大家加入一起一起探讨软件测试技术!

好好学习,天天向上! 学习不刻苦,不如卖红薯!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值