点我进群领取基础资料、面试题、学习路线
☝☝☝
文章目录
- 前言
- 一、为什么要在一个团队中开展软件测试工作?
- 二、您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?
- 三、 您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试……)
- 四、您认为做好测试用例设计工作的关键是什么?
- 五、测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?
- 六、您认为做好测试计划工作的关键是什么?
- 七、当开发人员说不是BUG时,你如何应付?
- **==Web自动化面试题==**
- 1.Selenium 中 hidden 或者是 display = none 的元素是否可以定位到?
- 2.Selenium 中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?
- 3.如何提高 Selenium 脚本的执行速度?
- 4.自动化测试的时候是不是需要连接数据库做数据校验?
- 5.如何去定位属性动态变化的元素?
- 6.你觉得自动化测试最大的缺陷是什么?
- ==APPUI 自动化测试面试题==
- 1.Android APP 内存不足时, 系统如何结束进程获得内存?
- 2.APP 测试常见的严重问题有哪些? 分别引起的原因有哪些?
- 3.请简单介绍你曾使用过的一款 APP 自动化测试工具 ?
- 4.Android 测试与 web 测试有什么区别?
- 5.app 测试有哪几种环境?
- 6.APP 这么多主流机型如何测试 ?
- 7.App 崩溃(闪退),可能是什么原因导致的?
- 8.Appium 都有哪些启动方式
- 9.请简单介绍一下使用过的安卓 UI 自动化测试工具?
- 10.get 和 post 区别是什么?
- 11.常见的 POST 提交数据方式
- 12.什么是 Http 协议无状态协议?怎么解决 HTTP 协议无状态协议
- 13.cookie 和 session 的区别
- 14.当一个接口出现异常时候,你是如何分析异常的?
- 15.如何分析一个 bug 是前端还是后端的?
- 16.你们做接口测试自动化吗?
- 17.列出几个 JMeter 监听器?
- 18.在 python 中进行数据驱动测试
- 19.接口自动化中的关联怎么处理?
- 总结
前言
提示:这篇文章主要给大家整理了部分面试题,祝大家拿到心仪的offer:
提示:以下是本篇文章正文内容,仅供参考
一、为什么要在一个团队中开展软件测试工作?
因为没有经过测试的软件很难在发布之前知道该软件的质量,就好比ISO质量认证一样,测试同样也需要质量的保证,这个时候就需要在团队中开展软件测试的工作。在测试的过程发现软件中存在的问题,及时让开发人员得知并修改问题,在即将发布时,从测试报告中得出软件的质量情况。
二、您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?
我曾经做过web测试,后台测试,客户端软件,其中包括功能测试,性能测试,用户体验测试。最擅长的是功能测试
三、 您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试……)
测试类型有:功能测试,性能测试,界面测试。
功能测试在测试工作中占的比例最大,功能测试也叫黑盒测试。是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。
界面测试,界面是软件与用户交互的最直接的层,界面的好坏决定用户对软件的第一印象。而且设计良好的界面能够引导用户自己完成相应的操作,起到向导的作用。同时界面如同人的面孔,具有吸引用户的直接优势。设计合理的界面能给用户带来轻松愉悦的感受和成功的感觉,相反由于界面设计的失败,让用户有挫败感,再实用强大的功能都可能在用户的畏惧与放弃中付诸东流。
区别在于,功能测试关注产品的所有功能上,要考虑到每个细节功能,每个可能存在的功能问题。性能测试主要关注于产品整体的多用户并发下的稳定性和健壮性。界面测试更关注于用户体验上,用户使用该产品的时候是否易用,是否易懂,是否规范(快捷键之类的),是否美观(能否吸引用户的注意力),是否安全(尽量在前台避免用户无意输入无效的数据,当然考虑到体验性,不能太粗鲁的弹出警告)?做某个性能测试的时候,首先它可能是个功能点,首先要保证它的功能是没问题的,然后再考虑该功能点的性能测试
四、您认为做好测试用例设计工作的关键是什么?
白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果
黑盒测试用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。不可能做到完全测试,以最少的用例在合理的时间内发现最多的问题
五、测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?
软件测试计划是指导测试过程的纲领性文件,包含了产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流、风险分析等内容。借助软件测试计划,参与测试的项目成员,尤其是测试管理人员,可以明确测试任务和测试方法,保持测试实施过程的顺畅沟通,跟踪和控制测试进度,应对测试过程中的各种变更。
测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。所以其中最重要的是测试测试策略和测试方法(最好是能先评审)
六、您认为做好测试计划工作的关键是什么?
1. 明确测试的目标,增强测试计划的实用性
编写软件测试计划得重要目的就是使测试过程能够发现更多的软件缺陷,因此软件测试计划的价值取决于它对帮助管理测试项目,并且找出软件潜在的缺陷。因此,软件测试计划中的测试范围必须高度覆盖功能需求,测试方法必须切实可行,测试工具并且具有较高的实用性,便于使用,生成的测试结果直观、准确
2.坚持“5W”规则,明确内容与过程
“5W”规则指的是“What(做什么)”、“Why(为什么做)”、“When(何时做)”、“Where(在哪里)”、“How(如何做)”。利用“5W”规则创建软件测试计划,可以帮助测试团队理解测试的目的(Why),明确测试的范围和内容(What),确定测试的开始和结束日期(When),指出测试的方法和工具(How),给出测试文档和软件的存放位置(Where)。
3.采用评审和更新机制,保证测试计划满足实际需求
测试计划写作完成后,如果没有经过评审,直接发送给测试团队,测试计划内容的可能不准确或遗漏测试内容,或者软件需求变更引起测试范围的增减,而测试计划的内容没有及时更新,误导测试执行人员。
4. 分别创建测试计划与测试详细规格、测试用例
应把详细的测试技术指标包含到独立创建的测试详细规格文档,把用于指导测试小组执行测试过程的测试用例放到独立创建的测试用例文档或测试用例管理数据库中。测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。
七、当开发人员说不是BUG时,你如何应付?
开发人员说不是bug,有2种情况,一是需求没有确定,所以我可以这么做,这个时候可以找来产品经理进行确认,需不需要改动,3方商量确定好后再看要不要改。二是这种情况不可能发生,所以不需要修改,这个时候,我可以先尽可能的说出是BUG的依据是什么?如果被用户发现或出了问题,会有什么不良结果?程序员可能会给你很多理由,你可以对他的解释进行反驳。如果还是不行,那我可以给这个问题提出来,跟开发经理和测试经理进行确认,如果要修改就改,如果不要修改就不改。其实有些真的不是bug,我也只是建议的方式写进TD中,如果开发人员不修改也没有大问题。如果确定是bug的话,一定要坚持自己的立场,让问题得到最后的确认。
————————————————————————————————————————————————————
Web自动化面试题
1.Selenium 中 hidden 或者是 display = none 的元素是否可以定位到?
不能,可以写 JavaScript 将标签中的 hidden 先改为 0,再定位元素
2.Selenium 中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?
- 添加元素智能等待时间 driver.implicitly_wait(30)
- 添加强制等待时间(比如 python 中写 sleep)
- try 方式进行 id,name,clas,x path, css selector 不同方式进行定位,如
果第一种失败可以自动尝试第二种
3.如何提高 Selenium 脚本的执行速度?
代码优化,多任务,分布式部署都是可以提升脚本执行速度的。
4.自动化测试的时候是不是需要连接数据库做数据校验?
从数据库层面来进行数据校验可以更方便验证系统的数据处理方面是否正确,数
据处理逻辑正常后,UI 层面上的校验也是需要做的。
5.如何去定位属性动态变化的元素?
xpath 或者 css 通过同级、父级、子级进行定位
6.你觉得自动化测试最大的缺陷是什么?
- 不稳定
- 可靠性
- 不易维护
- 成本与收益
APPUI 自动化测试面试题
1.Android APP 内存不足时, 系统如何结束进程获得内存?
系统优先结束被挂起(暂停)的进程,释放内存
2.APP 测试常见的严重问题有哪些? 分别引起的原因有哪些?
常见的有 crash、ANR(应用无响应、卡死),一般由设备碎片化、网络波动大、内存泄
漏、代码编写错误
3.请简单介绍你曾使用过的一款 APP 自动化测试工具 ?
开放性问题,带点主观意见
1.对比其他熟悉的自动化工具的优缺点
2.自动化的简要方案(简要的同时关键内容请具体)。(提示: appnium 等)
4.Android 测试与 web 测试有什么区别?
相同点:
1.设计测试用例均依据等价类、边界值等方法,测试原理相同;
2.大多数都采用黑盒测试方法来验证业务功能;
3.需要检查界面布局、风格和按钮是否美观、统一等(UI 测试);
4.测试页面载入和翻页的速度、登录时长是否溢出等问题(性能测试)
5.测试应用系统的稳定性;
不同点:
1.手机作为通信工具,通信等一些行为会对 APP 产生(中断测试)
2.手机用户对 app 产品的安装卸载操作:从上一版本/上两个版本直接升级到最新
版本(安装卸载测试);
3.web 自动化测试使用的工具较常用的是 selenium,而 android 手机自动化测试比
较常用的自动化工具是 monkey、monkeyrunner、Appium(测试工具不一样)
5.app 测试有哪几种环境?
- 本地环境: app 安装的手机环境和电脑搭建的自动化测试环境(比如安卓 SDK 等
等) 。 - 服务器环境:war 包部署的服务器,服务器可以通过浏览器访问,也可以通过 app
去访问。(访问的是 web 程序的接口)
6.APP 这么多主流机型如何测试 ?
我们公司就买了,魅族,华为,小米,iphone7、iphone8 、iphone8plus 、iphone
x 测试兼容性,有些没有的机型,先借用同事的手机进行测试,同时申请公司购买,或者采
用云真机。
7.App 崩溃(闪退),可能是什么原因导致的?
缓存垃圾过多:由于安卓系统的特性,如果长时间不清理垃圾文件.会导致越来越卡.也
会出现闪退情况.
运行的程序过多,导致内存不足
应用版本兼容问题:如果应用版本太低,会导致不兼容,造成闪退。此外,有些新版本
在调试中,也会
造成应用闪退。解决方法:如果是版本太旧,更新为新版本即可;如果是新版本闪退,
可能是应用在改版调
试,可卸载后安装旧版。
检查 APP 中访问网络的地方,组件中的 ImageView 是否可以正常的下载并显示到 app
页面上。
检查 APP 的 sdk 和手机的系统是否兼容。
在一些特定情况下的闪退,比如播放视频,在 Android5.0 升级到 Android6.0 的时候,
有些系统 API 老版本
有,新版本没有,到时回去对象的时候失败,报空,系统就会出现闪退
8.Appium 都有哪些启动方式
1.客户端启动
2.命令行启动
9.请简单介绍一下使用过的安卓 UI 自动化测试工具?
参考答案:appium:是一个移动端的自动化框架,可用于测试原生应用,移动网页应用
和混合型应用,且是跨平台的。robotium:是一款国外的 Android 自动化测试框架,主要针
对 Android 平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击、长按、滑
动等)、查找和断言机制的 API,能够对各种控件进行操作。
10.get 和 post 区别是什么?
答:POST 和 GET 都是向服务器提交数据,并且都会从服务器获取数据。
区别:
1)传送方式:get 通过地址栏传输,post 通过报文传输
2)传送长度:get 参数有长度限制(受限于 url 长度),而 post 无限制
3)GET 产生一个 TCP 数据包(对于 GET 方式的请求,浏览器会把 http header 和 data 一并
发送出去,服务器响应 200 返回数据),POST 产生两个 TCP 数据包(对于 POST,浏览器先
发送 header,服务器响应 100 continue,浏览器再发送 data,服务器响应 200 ok 返回数
据)
4)get 请求参数会被完整保留在浏览历史记录里,而 post 中的参数不会被保留
5)在做数据查询时,建议用 GET 方式;而在做数据添加、修改或删除时,建议用 post 方式
11.常见的 POST 提交数据方式
答:
主要有四种方式:application/x-www-form-urlencoded、multipart/form-data、
application/json、text/xml 等。
12.什么是 Http 协议无状态协议?怎么解决 HTTP 协议无状态协议
答:
无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即我们给服
务器发送 HTTP 请求之后,服务器根据请求,会给我们发送数据过来,但是,发送完,不会
记录任何信息。HTTP 是一个无状态协议,这意味着每个请求都是独立的,Keep-Alive 没能
改变这个结果。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导
致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。HTTP
协议这种特性有优点也有缺点,优点在于解放了服务器,每一次请求“点到为止”不会造成
不必要连接占用,缺点在于每次请求会传输大量重复的内容信息。客户端与服务器进行动态
交互的 Web 应用程序出现之后,HTTP 无状态的特性严重阻碍了这些应用程序的实现,毕竟
交互是需要承前启后的,简单的购物车程序也要知道用户到底在之前选择了什么商品。于是,
两种用于保持 HTTP 连接状态的技术就应运而生了,一个是 Cookie,而另一个则是 Session。
13.cookie 和 session 的区别
答:
cookie 数据存放在客户的浏览器上,session 数据放在服务器上
cookie 不是很安全,别人可以分析存放在本地的 cookie 并进行 cookie 欺骗,考虑到安全
应当使用 session
session 会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑
到减轻服务器性能方面应当使用 cookie
单个 cookie 保存的数据不能超过 4K,很多浏览器都限制一个站点最多保存 20 个 cookie
可以将登陆信息等重要信息存放为 session;其他信息需要保存,可以放在 cookie
14.当一个接口出现异常时候,你是如何分析异常的?
答:
先抓包,用 fiddler(charles)工具抓包,或者浏览器上 F12 调试工具;APP 上的话,那就
用 Fiddler 做代理,通过手机设置代理去看请求和返回报文;
查看后端日志,如 Linux 系统通过 xhell 连上服务器,查看接口日志,查看是否有报错信息
(命令:tail -f 日志文件);
15.如何分析一个 bug 是前端还是后端的?
答:
平常提 bug 的时候,前端开发和后端开发总是扯皮,不承认是对方的 bug。
这种情况很容易判断,先抓包看请求报文,对着接口文档,看请求报文有没问题,有问题就
是前端发的数据不对;
请求报文没问题,那就看返回报文,返回的数据不对,那就是后端开发的问题咯。
16.你们做接口测试自动化吗?
答:现在针对大量应用,普遍推崇做接口测试自动化,维护成本低、收益高。常用的工具有
许多,如 Jmeter、Robot Framework、pytest 等。
17.列出几个 JMeter 监听器?
一些 JMeter 监听器是:
集合报告
汇总报告
查看结果树
用表格查看结果
图形结果
BeanShell Listener
摘要报告等
18.在 python 中进行数据驱动测试
在 unittest 中,没有自带的数据驱动,我们得借助 ddt 来实现,首先,我们得在 python
运行环境中安装 ddt,用下列命令安装
pip install ddt
另 外 一 个 测 试 框 架 pytest , 它 自 带 数 据 驱 动 实 现 , 是 通 过
@pytest.mark.parametrize(argnames,argvalues) 来实现参数化的。
也可以根据自己需求用 python 实现数据的读取和驱动。
19.接口自动化中的关联怎么处理?
把上一个请求返回的结果传入到下一个请求的参数中,将请求的结果反射到一个类属性(使
用 setattr()函数),下一个请求去调用这个类属性
总结
给大家整理的部分面试题,由于篇幅太长
完整版点我进群领取