软件测试面试题汇总
1.基础题
1.1请自我介绍一下‘
【主要考察 个人沟通能力,个人技能,工作经验】
【自我介绍参考】
1.2请介绍一下你的项目
项目介绍大致可以分为这及部分:
1、对项目的基本进行介绍1).什么类型的项目(比如电商、金融、保险)
- 项目运用了那些技术
- 项目模块
2、自己负责的模块 - 对自己所负责的模块进行详细介绍,面试前一定好好准备,因为后续有些问题可能就出自于这些模块
- 进行了哪些测试(功能、接口、性能等)
- .每一类型的测试都是使用了那些技术与测试工具(如果能够将步骤详细描述出来更好)
- 注意一定要描述的清晰有条理
总结:介绍项目的目的是让面试官对你之前的项目有一定的了解,同时展现一下自己的逻辑和表达能力,如果想要在进一步丰富的话,可以简述一下自己公司的测试流程,及测试中使用到的工具和技术,例如:postman、jmeter、数据库、fillder,charels、等等根据自己的能力来描述!
1.3说一下你们项目测试流程
项目流程,结合实际的工作内容。
1.4印象最深刻的Bug
BUG的发现,解决办法。
1.5你觉得作为软件测试人员需要具备什么职业素养
技能+产品业务分析能力+沟通能力,耐心,责任心,总结能力
首先需要掌握一定的技能,比如做接口测试,你肯定需要掌握Jmeter,postman,fiddler这样的工具,然后,我觉得逻辑也是一个测试需要具备的,它能够让你更好的进行业务分析,其次,沟通能力,耐心,责任心,总结能力都是软件测试人员需要具备的一些素养吧。
1.6你能说说你的优缺点嘛?
1.7你为什么从上家公司离职
1.8你为什么转行做测试?
1.9提了一个bug,但是开发不认为是一个Bug
1.10你还有什么问题吗
2.掌握测试理论及各种黑盒测试方法
2.1测试计划的内容
- 测试范围【明确测试的业务,有哪些测试】
- 测试策略
- 资源安排【人力,工具,环境】
- 进度安排
- 发布标准
- 风险评估
1.测试范围风险:需求评估不准确,导致的漏测;需求变更,导致的测试内容变更;
2.进度风险:测试工作量评估不准确;测试工作耦合性严重;测试工作中人员的变更;
3.产品质量风险:测试人员能力或者对业务不熟练;代码质量低;
2.2测试用例的内容
功能测试用例:编号,用例描述,模块,优先级,前置步骤,步骤,预期结果,实际结果,备注
接口测试用例:编号,用例描述,模块,优先级,url,方法,参数,预期结果,实际结果,备注
2.3缺陷报告的内容
编号,标题,模块,版本,发现人,发现时间,状态,指派给,重现步骤;
2.4测试报告的内容
测试概要:测试范围、环境、工具
测试结果及缺陷分析
测试总结与建议
2.5你们公司的缺陷等级是怎么划分的
- 重要级:
1:致命的:主流程不通,导致系统功能缺失、用户数据被破坏、系统崩溃、死机
2:严重的:影响流程的 比较严重的,比如系统主要功能部分未实现
3:一般:系统的次要功能没有完全实现,但不影响用户的正常使用
4:较小:操作不方便或遇到麻烦,但不影响功能的使用,如字体不美观、按钮大小不 - 优先级:
1:立即解决:缺陷导致系统几乎不能运行使用 或 严重妨碍测试的执行
2:高优先级:缺陷严重,影响到测试了
3:正常:一般错误
4:低优先级:可以在开发有时间的时候处理,如页面文本框对齐显示
2.8黑盒测试的方法
- 边界值;等价类;场景法;错误推测;判定表;正交分解实验法;因果图;
2.7软件测试流程
- 测试需求分析阶段:阅读需求,理解需求,主要就是对业务的学习,分析需求点,参与需求评审会议。
- 测试计划阶段:主要任务就是编写测试计划,参考软件需求规格说明书,项目总体计划,内容包括测试范围(来自需求文档),进度安排,人力物力的分配,整体测试策略的制定。风险评估与规避措施有一个制定。
- 测试设计:主要是编写测试用例,会参考需求文档(原型图),概要设计,详细设计等文档,用例编写完成之后会进行评审。
- 测试执行:搭建环境,执行冒烟测试(预测试)-然后进入正式测试,bug管理直到测试结束。
- 测试评估:出测试报告,确认是否可以上线。
2.8生命周期及各开发模型
【生命周期及各开发模型】
【生命周期及各开发模型】
【生命周期及各开发模型】
3.熟练掌握Fiddler
4.熟练掌握Jmeter
4.1如何开展性能测试的,关注什么?
5.熟练掌握Postman
6.熟练掌握MySql
6.1MySql联表查询都有哪些类型?
6.2左连接和右连接有什么区别?
6.3group by与having的区别?
6.4MySQL经典50道练习题
7.熟练掌握Linux命令
【我的另一篇文章】
【linux下通过进程名查看其占用端口】
8.掌握接口测试
8.1什么是接口?
接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。
程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如bbs系统,有登录模块、发帖模块等等,那你要发帖就必须先登录,要发帖就得登录,那么这两个模块就得有交互,它就会抛出一个接口,供内部系统进行调用。
系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的,比如说咱们用的app、网址这些它在进行数据处理的时候都是通过接口来进行调用的。
8.2什么是接口测试?
所谓接口测试就是通过测试不同情况下的入参与之相应的出参信息来判断接口是否符合或满足相应的功能性、安全性要求。
8.3接口组成
协议,IP/域名,端口,地址,锚点,参数
8.4接口文档的内容
1、接口说明
2、调用url
3、请求方法(get\post)
4、请求头header
5、请求参数、参数类型、请求参数说明
6、返回参数说明
8.4为什么要做接口测试?
大家都知道,接口其实就是前端页面或APP等调用与后端做交互用的,所以好多人都会问,我功能测试都测好了,为什么还要测接口呢?OK,在回答这个问题之前,先举个栗子:
比如测试用户注册功能,规定用户名为6~18个字符,包含字母(区分大小写)、数字、下划线。首先功能测试时肯定会对用户名规则进行测试时,比如输入20个字符、输入特殊字符等,但这些可能只是在前端做了校验,后端可能没做校验,如果有人通过抓包绕过前端校验直接发送到后端怎么办呢?试想一下,如果用户名和密码未在后端做校验,而有人又绕过前端校验的话,那用户名和密码不就可以随便输了吗?如果是登录可能会通过SQL注入等手段来随意登录,甚至可以获取管理员权限,那这样不是很恐怖?
所以,接口测试的必要性就体现出来了:
①、可以发现很多在页面上操作发现不了的bug
②、检查系统的异常处理能力
③、检查系统的安全性、稳定性
④、前端随便变,接口测好了,后端不用变
8.5接口测试怎么测?
在进行接口测试前,还需要了解:
1)、GET和POST请求:
如果是get请求的话,直接在浏览器里输入就行了,只要在浏览器里面直接能请求到的,都是get请求,如果是post的请求的话,就不行了,就得借助工具来发送。
GET请求和POST请求的区别:
1、GET使用URL或Cookie传参。而POST将数据放在BODY中。
2、GET的URL会有长度上的限制,则POST的数据则可以非常大。
3、POST比GET安全,因为数据在地址栏上不可见。
4、一般get请求用来获取数据,post请求用来发送数据。
其实上面这几点,只有最后一点说的是比较靠谱的,第一点post请求也可以把数据放到url里面,get请求其实也没长度限制,post请求看起来参数是隐式的,稍微安全那么一些些,但是那只是对于小白用户来说的,就算post请求,你通过抓包也是可以抓到参数的。所以上面这些面试的时候你说出来就行了。
2)、http状态码
每发出一个http请求之后,都会有一个响应,http本身会有一个状态码,来标示这个请求是否成功,常见的状态码有以下几种:
1、200 2开头的都表示这个请求发送成功,最常见的就是200,就代表这个请求是ok的,服务器也返回了。
2、300 3开头的代表重定向,最常见的是302,把这个请求重定向到别的地方了,
3、400 400代表客户端发送的请求有语法错误,401代表访问的页面没有授权,403表示没有权限访问这个页面,404代表没有这个页面
4、500 5开头的代表服务器有异常,500代表服务器内部异常,504代表服务器端超时,没返回结果
3)、cookie与session的区别:
(1).cookie数据存放在客户的浏览器上,session数据放在服务器上。
(2).cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗考虑到安全应当使用session。
(3).session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用cookie。
(4).单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
接下来再说接口测试怎么测:
1)、通用接口用例设计
①、通过性验证:首先肯定要保证这个接口功能是好使的,也就是正常的通过性测试,按照接口文档上的参数,正常传入,是否可以返回正确的结果。
②、参数组合:现在有一个操作商品的接口,有个字段type,传1的时候代表修改商品,商品id、商品名称、价格有一个是必传的,type传2的时候是删除商品,商品id 是必传的,这样的,就要测参数组合了,type传1的时候,只传商品名称能不能修改成功,id、名称、价格都传的时候能不能修改成功。
③、接口安全:
1、绕过验证,比如说购买了一个商品,它的价格是300元,那我在提交订单时候,我把这个商品的价格改成3元,后端有没有做验证,更狠点,我把钱改成-3,是不是我的余额还要增加?
2、绕过身份授权,比如说修改商品信息接口,那必须得是卖家才能修改,那我传一个普通用户,能不能修改成功,我传一个其他的卖家能不能修改成功
3、参数是否加密,比如说我登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解。
4、密码安全规则,密码的复杂程度校验
④、异常验证:
所谓异常验证,也就是我不按照你接口文档上的要求输入参数,来验证接口对异常情况的校验。比如说必填的参数不填,输入整数类型的,传入字符串类型,长度是10的,传11,总之就是你说怎么来,我就不怎么来,其实也就这三种,必传非必传、参数类型、入参长度。
2)、根据业务逻辑来设计用例
根据业务逻辑来设计的话,就是根据自己系统的业务来设计用例,这个每个公司的业务不一样,就得具体的看自己公司的业务了,其实这也和功能测试设计用例是一样的。
举个例子,拿bbs来说,bbs的需求是这样的:
1、登录失败5次,就需要等待15分钟之后再登录
2、新注册的用户需要过了实习期才能发帖
3、删除帖子扣除积分
4、…
像这样的你就要把这些测试点列出来,然后再去造数据测试对应的测试点。
8.6什么时候进行接口测试呢?
接口开发出来后,我们就可以介入测试了
依据什么进行测试?------一般开发会提供接口文档
项目一次迭代要测试多少个接口啊?
9.测试点提取面试题
- 如何测试一支笔
- 如何测试一个杯子
- 如何测试一个杯子
- 如何测试一个Web网站
- 如何测试一个行李箱
- FTP服务器上的一个下载功能,功能测试点
- 文件复制的功能测试
鼠标点击,空文件夹进行复制
鼠标点击,含有文件的文件夹复制
鼠标点击,含有文件并且文件被占用的文件夹复制
通过切换用户,不同权限,复制文件夹
未选中文件夹,点击 复制到
选中文件夹,点击 复制到
快捷键复制
对超级大的文件夹,在复制的时候暂停
对超级大的文件夹,在复制的时候取消 - 【百度页面的功能测试】
- 【聊天界面功能测试点】【2】【3】
- 【登录测试用例】
- 功能:
账号密码正确下登录
账号密码长度
账号密码特殊字符串
账号为空/密码为空
账号正确,密码错误
密码正确,账号未注册或错误
未输入信息点击登录
大小写敏感 - 界面:界面简洁,风格统一,布局整齐,无错别字。
- 兼容:
- 性能:
- 安全:
密码是否隐藏显示
抓包是否会抓到明文显示的密码
重复点击登录
用户名和密码输入框分别输入典型的“SQL注入攻击”字符串,验证系统的返回页面
用户名和密码输入框分别输入典型的“XSS跨站脚本攻击”字符串,验证系统行为是否被篡改
易用:是否支持快捷键;语音,视频,表情包按钮是否明显;