admin 管理员组文章数量: 1184232
2024年3月22日发(作者:发的同音数字)
一、接口测试问题
1、接口测试用例的设计要点有哪些?
对于这个问题我们可以从接口的组成来进行分析,一个接口主要有请求地
址、请求方法、请求参数,其中请求地址和方法都是固定的,
所以我们主要应该从请求参数入手,主要可以从以下几个方面考虑:
1、参数字段个数:必填字段和可选填
2、参数合法性:输入输出合法、非法参数
3、边界:请求参数边界值等
4、容错能力:大容量数据、频繁请求、重复请求(如:订单)、异常网络
等的处理
5、响应数据校验:断言、数据提取传递到下一级接口
6、逻辑校验:如两个请求的接口有严格的先后顺序,需要测试调转顺序的
情况
7、性能:对接口模拟并发测试,逐步加压,分析瓶颈点,即响应时间,吞
吐量,并发数,cpu,内存,io的占用情况。
8、安全性:构造恶意的字符请求,如:SQL注入、XSS、敏感信息、业务逻
辑(如:跳过某些关键步骤;未经验证操纵敏感数据)
2、post和get有什么区别?
这个问题应该是每一个做接口测试人员都能回答的问题,但是要注意说到重
点:
1、get方法的参数是在URL中,post的参数是在body中(本质区别)
2、get方法的安全性没post的高
3、get方法能被缓存而post不可以
4、GET请求在URL中传送的参数是有长度限制的,而POST没有。
当然还有其他的很多区别,但是回答这几个主要的就差不多了。
3、你会使用哪些抓包工具?
抓包工具有很多种,但是我们技术人员最常用的不外乎就是Fiddler、F12
这几种,所以选一个你自己最常用的就可以了。
当然面试官接下来的问题多半会问你为什么会用抓包工具?公司不是有接
口文档吗?
4、使用抓包工具做什么?
对于中大型公司里面的开发人员都会编写好有完整的接口文档,那我们做接
口测试的时候对照接口文档不就可以了吗?
所以对于还没有真正接口项目经验的小伙伴就不知所措了。那么我们测试人
员抓包其实一般都是为了验证我们测试的数据在接口传递过程中是否正常
或者为了判断某个问题是前端问题还是后端问题。
5、怎么判断一个bug是前端问题还是后端问题?
我们可以先抓包看请求报文,对着接口文档,看请求报文有没问题,有问题
就是前端发的数据不对,请求报文没问题,那就看返回报文,返回的数据不对,
那就是后端开发的问题,这样我们测试人员才能有自己的判断,而不是任由开发
相互扯皮。
6、你们公司是用什么做接口测试的?
每个公司做接口测试所使用的工具都是不一样的,有的会使用postman来做
一些简单的单接口测试,但是对于一定数量的接口测试postman就很难胜任了,
所以这时候不少公司就会选择开源的jmeter来做,因为脚本也相对比较好管理
维护也方便。
但是对于不少公司来说jmeter也满足不了自己的要求,这时候就会有测试
人员自己编写测试框架(也就是测试开发),然后通过编码自己设计完成自己公
司需要的功能。
7、接口测试框架你会吗?
会使用unittest,我们的框架是在unittest框架之上进行二次封装集成了
邮件系统和测试报告以及日志、重跑等功能,然后再说这样设计的优势,这样就
会让人觉得这人是懂具体的框架实现过程的。
8、你们接口测试用例是在哪里?
这
要看你们公司是用的什么工具来做接口测试的了,假如是postman和jmeter那
么用例就是直接在它们的请求文件里面,但是假如是有自己的框架那么用例一般都在表
格或者表里面的。
9、什么是API?
API
是(Application Programming Interface)首字母缩略词,即应用程序编程接口。
API是一组用于构建软件应用程序的规程,协议和工具。API充当软件应用程序之间的接
口,并允许两个软件应用程序相互通信。API是一组软件功能,可以由其他软件执行。
10、什么是API测试?
API
测试是一种软件测试,涉及直接测试API,也是集成测试的一部分,用于检查
API是否满足应用程序的功能,可靠性,性能和安全性方面的期望。在API测试中,我
们主要关注软件架构的业务逻辑层。可以在包含多个API的任何软件系统上执行API测
试。
11、常见的API测试类型有哪些?
API测试通常涉及以下实践:
单元测试
功能测试
负载测试
运行时/错误检测
安全测试
UI测试
互操作性和WS一致性测试
渗透测试
模糊测试
12.你们公司的接口测试流程是怎样的?(有没有感觉熟悉,貌似在
哪里听过)
答:接口测试实际跟一般测试不同就是测试用例的设计部分。
①获取接口规范。
②设计接口测试功能用例(主要从用户角度出发看接口能否实现业务需求,
用例设计就是黑盒用例那一套)。
③各种入参验证(正常情况,异常情况包括输入参数个数不对,类型不对,
可选/必选,还有考虑参数有互斥或关联的情况)。
④接口返回值各种验证(符合接口文档需求)
⑤了解接口实现逻辑,实现逻辑覆盖(语句/条件/分支/判定/…)
⑥接口能并发执行吗、安全吗,性能满足要求吗?
⑦采用工具或者自写代码来验证。
⑧发现问题跟功能测试一样,该报bug报bug,该跟踪状态的跟踪状态。
13、请简述一下cookie、session以及token的区别(万年不变的面
试题)
(1)cookie数据存放在客户的浏览器上,session数据放在服务器上。而
token是接口测试时的鉴权码,一般情况下登陆后才可以获取到token,然后在
每次请求接口时需要带上token参数。
(2)cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie
欺骗,考虑到安全应当使用session,session会在一定时间内保存在服务器上。
当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面应当使用
cookie
(3)可以将登陆信息等重要信息存放为session;其他信息需要保存,可
以放在cookie
14、接口测试如何设计测试用例?(必问,有没有感觉答得整个人都
不好了?)
接口测试设计测试用例的思路如下:
1.接口业务逻辑测试?(正例)
接口逻辑测试是指根据业务逻辑、输入参数、输出值的描述,对正常输入情
况下所得的输出值是否正确的测试,也就是测试对外提供的接口服务是否正常工
作。
2.模块接口测试?(反例)
模块接口测试是为了保证数据的安全及程序在异常情况下的逻辑的正确性
而进行的测试。
模块接口测试的主要包括以下几个方面:
1)鉴权码token异常(鉴权码为空〈没有鉴权码〉错误的鉴权码,过期的
鉴权码)。
2)其他参数异常。
1、必填项检查
2、参数的长度、类型、格式异常:
常规参数:(数字、字符串、日期)
参数长度:6-18位。或身份证、电话的长度。
参数类型:数字(精度),字母,中文,带空格的参数,特殊字符。
日期格式:日期:年月日,年月日时分秒,日期格式(包括/-,等)。
3)错误码异常覆盖。
4)接口测试其他的关注点
接口有翻页时,页码与页数的异常值测试
数据库的增删改查,比如一个post接口操作完成后,通过列表页接口看下
新的数据是否和刚才的post一致
接口返回的图片地址能否打开,图片尺寸是否符合需求
当输出参数有联动性时,需要校验返回两参数的实际结果是否都符合需求。
所有列表页接口必须考虑排序值
所有功能都要考虑兼容旧版
15、接口测试执行中比对数据库吗?
肯定啊,因为接口返回值的数据来源于数据库,接口对数据的操作还要进行
深层次的数据库检查!
16、谈谈你对HTTP协议的了解?
超文本传输协议,端口为80,特点(无记忆功能、快速)是由请求和响应
两部分组成请求由请求头、请求行、请求正文组成;响应是由响应头、响应行、
响应正文组成,之前我们公司的接口是采用https协议的。
https http+ssl协议 端口443 面向安全的超文本传输协议
17、get和post请求有什么区别?
get和post请求都是客户端向服务器提交的一种请求方式
get是明文传输参数、倾向于请求服务器资源。比如打开网站
post传输数据不可见,安全性高,倾向于向服务器提交数据,比如注册等
18、响应状态码有哪些?
1xx:指示信息--表示请求已接受,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
19、接口测试中有哪些要注意的测试点?
1)接口中返回了图片地址,要手工去进行图片的测试(大小、内容)
2)接口完成查询功能的时候,数据返回的排序显示
3)接口测试的时候,关注参数的默认值、必填项
20、接口执行测试后返回结果做对比,一般比对哪部分内容?
之前必须要对比的就是返回状态码,其次再去对比返回其它关键内容
21、为什么开展接口测试?
1)接口测试属于集成测试、测试介入越早、就越能在项目早期发现问题,
其修复问题的成本越低
2)接口测试非常快速、UI自动化执行一个测试用例10S左右、接口测试用
例执行的话,
3)需要的时间是毫秒级的
4)系统数量多、复杂度增高,同时保持各自独立性。
5)系统间调用存在数据交互,发现页面操作发现不了的Bug。
6)接口之间访问时,对接口数据的准确性要求很高。
7)检查系统的异常处理
8)检查系统的安全性,稳定性
9)前端变了,接口测好了,后端不要变
22、之前在接口测试过程中,使用的工具是什么?
postman或jmeter
23、之前用过抓包工具没有?如何使用的?
之前在项目中用过fiddler抓包工具进行HTTP协议请求的抓取
打开fiddler之后,默认浏览器配置了127.0.0.1 8888端口的代理,在
fiddler设置好过滤策略后,打开需要进行抓包的网站进行操作,就可以进行抓
包
24、json数据是什么,你平时如何解析json数据?
一种开发常用的数据报文格式,由键值对和数组两种格式构成。可以通过工
具bejson网站等
25、postman你在工作中使用流程是什么样的?
1) 编写好用例
2) 在postman先建好url环境变量
3) 根据接口用例所属的模块新建集合管理
4) 在集合中不同模块下录入测试用例
5) 录入测试用例的时候根据预期结果在tests页签中增加断言
6) 导出通过Newman去运行
26、postman中设置环境变量有什么用?
在之前项目中,接口测试测试的环境有开发环境,测试环境等,为了测试的
时候方便,就在postman设置环境变量,到时所有接口都引用该环境变量,这样
就不用为了切换环境导致每次都去修改被测系统接口的主机地址;点击右上角环
境变量管理按钮-新建环境变量,在脚本中使用{{变量名}}去调用
27、在接口测试中关联是什么含义?如何用postman设置关联?
关联就是把上一个接口返回值的部分截取出来,作为下一个接口的参数,能
让接口串联运行
在postman中设置关联的步骤如下:
1) 先通过正则表达式提取的方式或json取值的方式把下一个接口需要的
信息从上一个接口截取出来
2) 使用设置全局变量的代码把取出来的值保存到全局变量
3) 在下一个接口中,使用{{全局变量}}代替要替换的静态值
28、postman支持什么类型的协议测试?
http和https协议的
29、postman参数化有哪几种方式?
内建变量、pre-scripts编写js脚本、批量运行时导入csv或json格式的
文件
30、Newman如何执行postman脚本?
Newman run 脚本名称 也可以添加参数生成html报表等
31、jmeter之前用的是什么版本?如何安装的?
jmeter用的是5.0版本,安装如下:
先在电脑上安装jdk1.8或以上的版本,然后从官网下载最新的安装包,解
压后,进行环境变量的配置,配置好后即安装完成
32、在项目中如何用jmeter进行接口测试?
1) 把线程组数量设置为1,循环次数设置为1
2) 配置好全局变量URL通过配置元件---用户自定义的变量添加
3) 增加配置元件http请求默认值,放置在用户定义的变量之后
4) 添加事务控制器管理和组织测试用例
5) 在事务控制中添加http请求添加测试用例中的接口请求信息
6) 添加对应的断言元件进行断言
33、jmeter中如何设置断言?
右击请求---断言---响应断言---响应断言界面输入要检查比对的
项,设置好断言后,执行接口测试如果是通过的,查看结果树不会有任何提示,
如果断言失败,就会有红色报错。如果接口返回的数据是json数据,也可以添
加json断言
34、jmeter中如何实现关联?
先从上一个接口中通过正则表达式提取器或jsonpath解析器截取下一个接
口需要的参数值保存到变量,然后在写一个接口中通过${变量名}去获取
35、jmeter添加http请求默认值元件有什么作用?
添加并设置好后,相当于给所有的http请求取样器都设置了默认值,既不
用填写取样器中的比如主机地址、端口、代理等,都可以使用http请求默认值
设置的
36、jmeter参数化的方式有哪几种可以实现?
1) 配置元件---用户定义的变量元件可以设置全局变量
2) 函数助手对话框中可以选择比如随机字符串、随机日期、随机数字作为
参数化
3) 可以使用csv文件作为参数化,通过配置元件中的csv data set config
元件进行设置即可
37、没有接口文档,如何做接口测试
答:1.没有接口文档,那就需要先跟开发沟通,然后整理接口文档
2.没有接口文档,可以抓包看接口请求参数,然后不懂的跟开发沟通
38、当一个接口出现异常时候,你是如何分析异常的?
答:抓包,查看后端日志
按你的理解,软件接口是什么?
答:就是指程序中具体负责在不同模块之间传输或接受数据的并做处理的类
或者函数。
和HTTPS协议区别?
答:https协议需要到CA(Certificate Authority,证书颁发机构)申请
证书,一般免费证书较少,因而需要一定费用;
http是超文本传输协议,信息是明文传输,Https协议是由SSL+Http协议
构建的可进行加密传输、身份认证的网络协议,比http协议安全;
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是
80,后者是443;
40你会使用fiddler吗?一般用来干什么?
答:会使用,一般用作抓包。
41
、
HTTPS在哪一层?
答:HTTPS在应用层。
42.常见的POST提交数据方式
答:主要有四种方式:application/x-www-form-urlencoded、
multipart/form-data、application/json、text/xml等。
43.什么是Http协议无状态协议?怎么解决HTTP协议无状态协议
答:无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什
么状态。即我们给服务器发送 HTTP 请求之后,服务器根据请求,会给我们发送
数据过来,但是,发送完,不会记录任何信息。HTTP 是一个无状态协议,这意
味着每个请求都是独立的,Keep-Alive 没能改变这个结果。缺少状态意味着如
果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据
量增大。另一方面,在服务器不需要先前信息时它的应答就较快。HTTP 协议这
种特性有优点也有缺点,优点在于解放了服务器,每一次请求“点到为止”不会
造成不必要连接占用,缺点在于每次请求会传输大量重复的内容信息。客户端与
服务器进行动态交互的 Web 应用程序出现之后,HTTP 无状态的特性严重阻碍了
这些应用程序的实现,毕竟交互是需要承前启后的,简单的购物车程序也要知道
用户到底在之前选择了什么商品。于是,两种用于保持 HTTP 连接状态的技术就
应运而生了,一个是 Cookie,而另一个则是 Session。
44、什么是DNS?
答:DNS 是域名系统 (Domain Name System),DNS是用来做域名解析的,
它会在你上网输入网址后,把它转换成IP,然后去访问对方服务器;没有它,
你想上百度就要记住百度的IP,但有了DNS的处理,你只需要记住对应网站的
域名,即网址就可以了。
45、接口性能测试怎么做的
响应时间
吞吐量
并发数
服务器资源使用率(CPU,内存,io, network)
46、如何模拟弱网测试?
两台机器链接同一WiFi,使用电脑对其限流
47、如何分析一个bug是前端的还是后端的?
通过抓包查看报文,请求报文有误即为前端的bug,返回报文有误即为
二、Web测试问题
1.
get
请求和post的区别?
(1)get是从服务器上获取的数据,post则是向服务器传送数据
(2)get的参数在URL中可以看到,post的参数用户看不到
(3)get传送的数据量较小,不能大于2KB,post传送的数据量较大,一
般被默认为不受限制
(4)get安全性比较低,post安全性较高
2./s和c/s架构有什么区别和联系?
(1)B/S最大的优点就是可以在任何地方进行操作而不用安装任何专门的
软件。只要有一台能上网的电脑就能使用,客户端零维护。系统的扩展非常容易
(2)C/S可以充分利用两端硬件环境的优势,将任务合理分配到Client端
和Server端来实现。
(3)C/S结构的软件需要针对不同的操作系统开发不同版本的软件,加之
产品的更新换代十分快,更新的代价高,效率低。
(4)C/S和B/S并没有本质的区别:B/S是基于特定通信协议(HTTP)的
C/S架构,也就是说B/S包含在C/S中,是特殊的C/S架构
3.session和cookie的区别有哪些?
(1)session存放在服务器端,cookie存放在客户端
(2)cookie不是很安全,别人可以分析存放在本地的cookie,session会
在一定时间内保存在服务器上,当访问增多,会比较占服务器性能
(3)单个cookie在客户端的限制是3k
4.web功能测试的关注点有哪些?
(1)链接测试
(2)表单测试
(3)Cookie&Session测试
(4)文件上传测试
(5)数据库测试
5.https和http的区别
明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数
据传输过程是加密的,安全性较好。
2.使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机
构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:
Symantec、Comodo、GoDaddy 和 GlobalSign 等。
页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手
建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,
还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
和 https 使用的是完全不同的连接方式,用的端口也不一样,前者
是 80,后者是 443。
其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS
比 HTTP 要更耗费服务器资源。
6.web测试中,如何判断是前端的bug还是后端的bug呢?
1.请求接口url是否正确,如果请求的接口url错误,为前端的bug
2.传参是否正确,如果传参不正确,为前端的bug
3.请求接口url和传参都正确,查看响应是否正确,如果响应内容不正确,
为后端bug
4.也可以在浏览器控制台输入js代码调试进行分析.
7.界面是怎么测试的?
我们主要测试的是UI,功能,网络,兼容性,易用性,安全性测试
UI测试 :一般检查界面的布局展示是不是和需求说明一致。 还有测试不
同的屏幕大小,不同的分辨率对界面展示的影响。
功能测试:和web的功能测试差不多,主要是考虑操作的权限,模块功能,
用户场景等方面
兼容性测试:主要考虑的是浏览器不同版本的兼容,屏幕大小跟分辨率
网络测试:一般是考虑在不同网络情况下,h5界面能否正常运行,比如说
网络之间的切换,和网络之间组合,外景和弱网环境下的使用情况
版权声明:本文标题:软件测试面试题大汇总(附答案) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1711093108a588088.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。