草帽路飞UU 发表于 2022-8-25 15:49:36

面试中经常提到的常见的接口测试问题分享!

接口测试 常见问题接口测试需要考虑的点/如何设计接口测试的用例?
接口测试用例编写除了使用功能测试中最基本的等价类,边界值,因果图,错误推测,场景设计等方法外,还要考虑一些其他方面,首先我们要先进行冒烟测试,说白了就是传递正确的参数查看是否返回正确的结果然后还要考虑参数组合:因为参数有必填和非必填,参数的格式、长度,以及数据传输的业务流程中的一些限制,我们要考虑不同的参数组合的情况,以保证能够覆盖到所有的情况以及绕过验证、权限验证、参数是否加密


最重要的是要考虑业务逻辑校验,请求的类型、格式,地址、参数,以及数据库的落地情况(比 如测试新增更新的接口时,要看数据的返回是否完整,与数据库进行对比)。


你做过接口测试吗,怎么进行测试的?
做过接口测试,一般我们都是使用jmeter工具来进行接口测试,首先在测试计划中添加一个线程组,然后在线程组中添加一个HTTP请求,然后通过抓包获取接口网址,然后将IP,端口号,路径,请求方式,以及相应的参数手动添加到HTTP请求中,然后在线程组里再建一个察看结果树来查看执行结果。也可以添加一些断言来判断返回结果。然后我们执行HTTP请求,在察看结果树里验证返回内容、格式等是否符合接口文档。


同时我们也可以使用CSV控件来实现小型的接口自动 化来提高接口测试效率。在CSV中添加本地Text的文件路径,TEXT文件中主要包含测试用例的内容及每条测试用例的预期结果,每行包含一条用例,我们需要给用例中的每项内容起一个变量名,配置完毕就可以使用变 量 名 来 调 用 了 , 然 后 添 加 响 应 断 言 , 也 是 使 用 {变量名}来调用了,然后添加响应断言,也是使用变量名来调用了,然后添加响应断言,也是使用{}来调用CSV中的预期结果,最后将线程组中的线程数改一下,这样就可以执行多条用例了,大概就这样。


如何测试相互依赖的两个接口?
首先我们在线程组中添加两个HTTP请求,然后在第一个接口下添加一个正则表达式提取器,然后把我们需要提取的参数使用(.+?)()代表封装了待返回的匹配字符.代表匹配任何字符,+代表匹配一次或多次?代表不要台贪婪,匹配到第一个符合的字符后停止


如何测一个需要登录的接口?
先在网页上登录,然后通过开发人员工具获取登录的cookie参数,然后在使用的时候在HTTP请求前添加HTTP cookie管理器,直接将cookie的参数手动添加到 HTTP cookie管理器中就可以了

结合工具说下你们怎么批量进行接口测试的?
批量进行接口测试我们是通过jmeter中的CSV控件来实现的,首先我们在本地建一个text文件,然后将用例及预期结果添加到文件中,然后在线程组中添加CSV控件,在控件中配置用例每项对应的变量名,然后再添加HTTP请求以及响应断言,通过${}来调用CSV中的变量,最后再把线程组中的线程数调为我们执行用例的数量就可以了。


如何处理cookie和session的?
一种是在录制脚本的时候添加HTTP cookie管理器获取cookie,还有一种就是手动添加cookie的参数到HTTP cookie管理器中


jmeter如何录制脚本?
首先,我们测试计划中添加一个线程组,线程组中添加cookie管理器(如果需要登录的话),然后将浏览器设置好代理,在jmeter控制台添加一个HTTP代理服务器,端口号设置为与浏览器代理端口号一致,把目标控制器选择测试计划线程组,启动HTTP代理服务器,我们在浏览器的操作就可以录制了。


get和post的区别?
get和post本质上都是TCP连接并无区别,由于HTTP协议规定以及浏览器的限制导致在应用过程中有一些不同。


get请求类型主要用于直接获取数据比如查询,搜索,读取。post请求类型需要逻辑处理比如支付、登录、注册。


get请求的参数是附在URL之后,post请求的参数是放在请求体中


get请求有长度限制,一般不超过4KB,post请求理论上没有限制,限制的是服务器处理数据的能力


get请求的数据在URL后可以通过浏览器的地址栏看到,不安全,post请求相对来说比较安全,但是如果post请求不对隐私数据进行加密也是不安全的


get请求的参数会保存在浏览器历史记录上,而post请求的参数不会保留。


对于get请求而言,浏览器会直接把HTTP、header和请求参数一起发送给服务器,而post是浏览器先发送header,服务器响应100后,浏览器再发送请求数据,然后服务器再返回结果。


jmeter用户自定义变量和HTTP请求默认值的作用?
对于一些经常变动又频繁调用的数据,我们一般存放在用户自定义变量中,使用的时候直接使用${变量名}进行调用,而对于一些默认的参数如网址,端口路径等,我们存放在HTTP请求默认值中,如果需要使用,在HTTP请求中那项置空就可以了

如何测试上传图片的接口?
首先我们需要先将上传图片的接口通过jmeter抓到,然后在HTTP请求中输入相关的参数,在下方的files upload中添加图片的本地完整路径及图片的格式就可以上传图片了。


如何测试https的接口?
测试HTTPS的接口我们将HTTP请求中的端口改为443,协议为HTTPS就可以了


jmeter如何过滤?
Jmeter中的HTTP代理服务器中有jmeter的过滤模块,我们把需要过滤的参数放在过滤模式里面就可以了。


13.什么样的接口是get,什么样的是post?
Get接口比如查询,搜索,读取。post请求比如订单,交易,登录等


你都用过什么断言?
我用过jmeter的响应断言


jmeter你都用过哪些控制器?
循环控制器,计数器


什么是http协议?
HTTP是超文本传输协议,是浏览器在数据传输时必须遵循的协议。它可以将超文本标记语言文档从客户端传输到服务器。


jmeter如何连接数据库?
首先我们需要在测试计划中添加MySQL的配置jar包,然后在测试计划中添加线程组,线程组中添加JDBC connection configration去进行数据库的配置,有数据库连接池,mysql驱动,以及MySQL的账号密码。然后再添加一个JDBC request 输入查询语句进行查询添加一个察看结果树查看结果就可以了。


jmeter如何获取数据库中的数据?
首先我们先将MySQL的连接配置好,然后在JDBCrequest中输入查询语句查询出相应的字段名及字段值,然后给查询的内容重命名,调用的时候使用${变量名_第几行的数据}就可以了。


如何进行参数化?
使用${变量名}进行参数化


什么是接口测试?
接口测试是测试系统组件之间数据传输的一种测试,主要检测系统与系统之间或系统与 内部组件之间的数据正确性。


接口测试的原理是什么?
接口测试的原理就是模拟客户端向服务器发出请求,服务器接收请求之后,对请求做出 处理并把响应结果返回给客户端。


接口文档包含哪些内容?
(1)请求地址


(2)请求方式


(3)请求参数


(4)参数详解(每个参数代表什么意思,如果没有详解就去问开发)


(5)响应结果


(6)结果详解(响应结果中每个参数所代表的意思)


常见的接口协议类型有什么?
最常见的是http接口和https接口,除此之外还有webservice接口、dubbo接口等


常见的接口测试工具
Jmeter(开源的,接口/性能)、postman、soap UI、load runner(接口/性能)


典型接口的例子:
(1)物流订单信息,一般物流信息都是通过各大物流公司的接口获取到的


(2)通过携程等APP订不同航空公司的机票,机票信息一般都是通过各大航空公司的接获取到的。


(3)12306订票支付的时候,使用微信、支付宝、银行卡支付都是调用的接口


(4)软件实名认证时验证姓名身份证号是否匹配就是调用公安系统的接口


(5)绑卡时需要输入姓名身份证号银行卡号也是调用的银行系统的接口。


什么时候开始接口测试?
一般情况下在单元测试之后,进行集成测试的时候我们进行接口测试,或者在功能测试之前我们会进行接口测试。


一般问有没有做过集成测试,可以理解为有没有做过接口测试















草帽路飞UU 发表于 2022-8-25 15:50:46

为什么要进行接口测试
(1)现在很多系统都是前后端分离的,从安全层面上来说,只依赖前端进行限制已经完全 不能满足安全需求,因为绕前端太容易了,这种情况下我们需要去测试接口。

(2)因为接口中传输的是数据,所以我们要测试数据的正确性

(3)接口测试能够覆盖功能测试覆盖不到的点,而且接口测试效率更快,覆盖相对更全面, 结合功能测试能够更好的提高测试覆盖率。

接口测试的流程:
(1)首先我们要了解需求,熟悉业务场景

(2)然后根据需求文档,接口文档以及业务场景来编写测试用例。

(3)再进行测试用例的评审,征求开发、测试、产品的意见对用例进行完善

(4)再然后准备测试数据,测试工具以及测试用例

(5)最后执行接口测试,提交bug并验证bug测试完毕后发送测试报告并确定是否能上线

如果没有接口文档我们如何去测试接口?
我们会通过抓包,先把这个接口的信息抓到然后再去测试这个接口


页: [1]
查看完整版本: 面试中经常提到的常见的接口测试问题分享!