八年测开经验面试28K公司后,吐血整理出高频面试题和答案!
如何测试纸杯呢?
❶
参考点
测试用例设计
❷
面试命中率
80%
❸
参考答案
- 功能性:用水杯装水看漏不漏;水能不能被喝到
- 安全性:杯子有没有毒或细菌
- 可靠性:杯子从不同高度落下的损坏程度
- 可移植性:杯子在不同的地方、温度等环境下是否都可以正常使用
- 兼容性:杯子是否能够容纳果汁、白水、酒精、汽油等
- 易用性:杯子是否烫手、是否有防滑措施、是否方便饮用
- 用户文档:使用手册是否对杯子的用法、限制、使用条件等有详细描述
- 疲劳测试:将杯子盛上水放24小时检查泄漏时间和情况;盛上汽油放24小时检查泄漏时间和情况等
- 压力测试:用根针并在针上面不断加重量,看压强多大时会穿透
遇到概率性BUG怎么办?
❶
参考点
1.对于偶现bug的规律总结
2.对于偶现bug的处理方式
❷
面试命中率
90%
❸
参考答案
概率性bug,又叫幽灵bug,首先需要明确的是,该类bug也是需要提单的,描述清楚当时操作环境、操作步骤、数据、并提供必要日志,可备注上可能产生原因。然后耐心一点,运用排除法、错误推测找规律,必要时找开发人员、项目经理一起定位分析讨论,如果最终仍未解决,那么需要在测试报告中体现,并分析可能造成的影响,大家一起权衡该bug是否可遗留。
一个身份证号码输入框,怎么设计测试用例?
❶
参考点
测试用例的设计
❷
面试命中率
80%
❸
参考答案
- 校验身份证号规则的有效性(包括地址码、生日期码、顺序码和校验码
- 校验 15 位身份证号和 18 位身份正好都是可用的
- 校验末位是 X 的情况
- 校验不足 15 位、16-17 位和大于 18 位的情况
- 如果是必输项,校验不输入的时候会不会有正确的提示
- 如果不是必输项,则要校验不输入的时候流程能否正常进行
- 校验输入非数字的情况,是否会有正确提示信息(包括大小写字母、汉字、特殊字符和标点符号)
- 校验输入全角的数字的时候,系统是否会识别(这个得根据需求确定是否可以使用全角的数字)
什么是回归测试,如何做回归测试?
❶
参考点
回归测试
❷
面试命中率
85 %
❸
参考答案
回归测试,即就是在软件生命周期中,只要软件发生了改变,就可能给该软件产生问题;所以,每当软件发生变化时我们就必须重新测试现有的功能,以便确定修改是否达到了预期的目的,检查修改是否破坏原有的正常功能。
回归测试可以发生在任何一个阶段,包括单元测试、集成测试和系统测试
那我们改如何做回归测试呢?总结为以下几点:
- 在测试策略制定阶段,制定回归测试策略
- 确定需要回归测试的版本
- 回归测试版本发布,按照回归测试策略执行回归测试
- 回归测试通过,关闭缺陷跟踪单(问题单)
- 回归测试不通过,缺陷跟踪单返回开发人员,开发人员重新修改问题,再次提交测试人员回归测试
如何提交一份高质量的缺陷跟踪单?
❶
参考点
缺陷跟踪单
❷
面试命中率
95%
❸
参考答案
首先要明确,缺陷跟踪单不仅仅是给自己看的,所以高质量的缺陷单,最主要的一条判断标准是,别人一看就懂,标题简洁明了,步骤条理清晰。还需考虑缺陷的完备性,比如缺陷等级、所属功能模块、版本、复现步骤、预期结果、实际结果、产生原因、日志截图等
接口测试用例的编写要点有哪些?
❶
参考点
接口测试用例设计
❷
面试命中率
88%
❸
参考答案
- 必填字段:请求参数必填项、可选项
- 合法性:输入输出合法、非法参数
- 边界:请求参数边界值等
- 容错能力:大容量数据、频繁请求、重复请求(如:订单)、异常网络等的处理
- 响应数据校验:断言、数据提取传递到下一级接口…
- 逻辑校验:
- 如两个请求的接口有严格的先后顺序,需要测试调转顺序的情况
- 性能:对接口模拟并发测试,逐步加压,分析瓶颈点
- 安全性:构造恶意的字符请求
- 如:SQL注入、XSS、敏感信息、业务逻辑(如:跳过某些关键步骤;未经验证操纵敏感数据)
你认为做好测试用例设计工作的关键是什么
❶
参考点
考察对于测试用例的认知
考察测试用例需要的方方面面
❷
面试命中率
95%
❸
参考答案
关键点就是熟悉需求,但是需求可以分为以下几个方面:
- 熟悉本次业务需求
- 熟悉其他系统和本次需求的关联
- 熟悉开发设计文档,了解开发实现逻辑
- 熟悉数据库设计文档,了解数据存储
- 熟悉项目架构,发现隐藏需求
你来说一下BUG的生命周期?
❶
参考点
bug处理流程
❷
面试命中率
99%
❸
参考答案
- New:发现bug,未经评审决定是否指派给开发人员进行修改。
- Open:确认bug,并且认为需要进行修改,指派给相应的开发人员。
- Fixed:开发人员进行修改后标识成修改状态,有待测试人员的回归测试验证。
- Rejected:如果认为不是Bug,则拒绝修改。
- Delay:如果认为暂时不需要修改或暂时不能修改,则延后修改。
- Closed:修改状态的Bug经测试人员的回归测斌验证通过,则关闭Bug。
- Reopen:如果经验证Bug仍然存在,则需要重新打开Bug,开发人员重新修改。
给你一个网站,你将如何开展测试?
❶
参考点
对于软件测试流程的理解
考察测试项目的计划安排能力
❷
面试命中率
90%
❸
参考答案
1、查找需求说明、网站设计等相关文档,分析测试需求。
2、制定测试计划,确定测试范围和测试策略。
3、设计测试用例,包括功能、兼容、性能、安全等方面
4、开展测试执行
5、回归测试及测试总结
说一下什么是事务?
❶
参考点
事务的基本概念
❷
面试命中率
90%
❸
参考答案
事务:是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操作集合(工作逻辑单元);
- 原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。
- 一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。
- 隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。
- 持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失
说一下主键,外键和索引的区别?
❶
参考点
对数据库常用索引的理解
❷
面试命中率
90%
❸
参考答案
定义
- 主键:唯一标识一条记录,不能有重复的,不允许为空
- 外键:表的外键是另一表的主键, 外键可以有重复的, 可以是空值
- 索引:该字段没有重复值,但可以有一个空值
作用
- 主键:用来保证数据完整性
- 外键:用来和其他表建立联系用的
- 索引:提高查询排序的速度
个数
- 主键:只能有一个
- 外键:一个表可以有多个外键
- 索引:一个表可以有多个索引
drop、delete、truncate三者的区别?
❶
参考点
对关系数 据库3个删除SQL了解程度
比较3个删除SQ L的差异
❷
面试命中率
85%
❸
参考答案
都表示删除,但是三者有一些差别:
- Delete用来删除表的全部或者一部分数据行,执行delete之后,用户需要提交(commmit)或者回滚(rollback)来执行删除或者撤销删除。会触发这个表上所有的delete触发器
- Truncate删除表中的所有数据,这个操作不能回滚,也不会触发这个表上的触发器,TRUNCATE比delete更快,占用的空间更小
- Drop命令从数据库中删除表,所有的数据行,索引和权限也会被删除,所有的DML触发器也不会被触发,这个命令也不能回滚。
列举几种表连接的方式,它们有什么区别?
❶
参考点
表连接方 式的列举
不同连 接方 式的区别
❷
面试命中率
90%
❸
参考答案
- 左连接: 左边为主表表数据全部显示, 匹配表的不匹配部分不显示
- 右连接: 右边为主表表数据全部显示, 匹配表的不匹配部分不显示
- 内连接: 只有两个元素表相匹配的才能在结果集中显示
- 全外连接: 连接中的不匹配的数据全部会显示出来
- 交叉连接: 笛卡尔乘积, 显示的结果是连接表数的乘积
说几个工作中常用的Linux命令
❶
参考点
考察是否有Linux使用经验
考察对Linux熟悉程度
❷
面试命中率
99%
❸
参考答案
- cd:切换目录
- ls:查看文件列表
- cp:拷贝文件
- mv:移动文件
- rm:删除文件
- chmod:设置文件权限
- cat:浏览文件内容
- vi:文件编辑
- find:搜索文件
- grep:过滤文件内容
在Linux中如何查找日志文件中的Error信息?
❶
参考点
考察工作中常用的Linux命令
考察对错 误 日志的查看方法
❷
面试命中率
85%
❸
参考答案
Linux中通过grep命令可以过滤文本文件中的指定信息,如
grep "Error" access.log
以上命令会将access.log中包含Error的行打印出来
Pytest 里如何进行 case 的组装?
❶
参考点
考察Pytest组织case的能力
❷
面试命中率
75%
❸
参考答案
- 默认使用检查以test_.py 或**test.py命名的文件名,在文件内部查找以test打头的方法或函数,并执行
- 可以使用自定义marker(标签),比如pytest运行的时就只运行带有该marker的测试用例,比如下面的@pytest.mark.P0
- 在命令行使用 指定文件
- 参数:-k args 模糊匹配case(关键字args:可以是py文件名,也可以是函数名)
如何保证自动化测试的稳定性?
❶
参考点
是否具 备自动化测试实际经验
是否碰到过 稳定性造成的问题
❷
面试命中率
95%
❸
参考答案
自动化测试稳定性主要表现在两个方面:
- 一个是元素定位的问题
- 一个是用例之间的依赖问题
元素定位问题可以采用智能等待的方式尽可能的避免;用例依赖可以解耦用例之间的关系,让每条用例都从一个共同的页面开始执行,比如首页,这就需要在测试框架中采用后置处理的方式使每条用例执行完成后都回到首页。
使用Jmeter如何做接口之间的关联?
❶
参考点
是否熟悉jmeter
是否熟悉关联的业务场景
是否熟练关联所用到的组件
❷
面试命中率
85%
❸
参考答案
接口关联指的就是一个接口要使用另一个接口的返回值作为参数,在jmeter中针对不同的响应数据格式都有不同的处理组件,json格式的采用json提取器,xml或者html格式的采用xpath提取器,其他格式的可以采用正则表达式提取器,BeanShell后置处理器也可以从响应结果中提取响应内容,通过这些组件提取所需内容后,在需要关联的接口中引用变量即可完成关联
针对App的安装功能,写出测试点
❶
参考点
经典业务场景用例设计
❷
面试命中率
80%
❸
参考答案
- 正常安装测试,检查是否安装成功
- APP版本覆盖测试
- 例如:先安装一个1.0版本的APP,再安装一个高版本(1.1版本)的APP,检查是否被覆盖。
- 回退版本测试
- 例如:先装一个2.0版本的APP,再安装一个1.0版本的APP,正常情况下版本是可以回退的
- 安装时内存不足,弹出提示
- 根据安装手册操作,是否正确安装
- 安装过程中的意外情况(强行断电、断网、来电话了、查看信息)等等,检查会发生的情况
- 通过‘同步软件’,检查安装时是否同步安装了一些文件
- 在不同型号、系统、屏幕大小、分辨率上的手机进行安装
- 安装时是否识别有SD卡,并默认安装到sd卡中
- 安装完成后,能否正常启动应用程序
- 安装完成后,重启手机能否正常启动应用程序
- 安装完成后,是否对其他应用程序造成影响
- 安装完成后,能否添加快捷方式
- 安装完成后,杀毒软件是否会对其当做病毒处理
- 多进程进行安装,是否安装成功
- 在安装过程中,所有的提示信息必须是英文或者中文,提示信息中不能出现代码、符号、乱码等
- 安装之后,是否自动启动程序
- 是否支持第三方安装
- 在安装中点击取消
持续集成的目的是什么?
❶
参考点
是否熟悉持续集成
是否具备参与持续集成的能力
是否理解持续集成的意义
❷
面试命中率
85%
❸
参考答案
它的好处主要有两个:
- 快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易
- 防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
持续集成的目的:
就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试,只要有一个测试用例失败,就不能集成。
黑盒(或功能)测试用例设计方法有哪些?
❶
参考点
考察测试用例设计基本功
考察对于用例设计的理解
❷
面试命中率
80%
❸
参考答案
- 等价类划分方法:等价类划分法将程序所有可能的输入数据(有效的和无效的)划分成若干个等价类。
- 边界值方法:边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。
- 错误推测方法:在测试程序时,人们可以根据经验或直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的测试用例的方法。
- 因果图方法:因果图法是一种适合于描述对于多种输入条件组合的测试方法,根据输入条件的组合、约束关系和输出条件的因果关系,分析输入条件的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件涉及的各种组合情况。
- 判定表驱动分析方法:判定表是黑盒测试的方法之一,判定表是把作为条件的所有输入的各种组合值以及对应输出值都罗列出来而形成的表格。
- 正交分解法:是研究多因素多水平的一种设计方法,它是根据正交性,由试验因素的全部水平组合中挑选出部分有代表性的点进行试验,通过对这部分试验结果的分析了解全面试验的情况,找出最优的水平组合。
- 场景分析法:分析软件应用的场景,从用户的角度出发,从场景的角度来设计测试用例,是一种面向用户的测试用例设计方法。关心用户做什么,而不是关心产品做什么。
- 全局探索式测试方法:测试人员根据应用程序所提供的信息自由发挥,不受限制,不受任何约束的探索程序的各种功能。
学习安排上!
如果文章对你有帮助,别忘记评论、点赞、Get!