dcsxlh

导航

 

接口

一、面试题

(一)、你做过接测试吗? 会

(二)、你做过哪些接口?

(1)金融项目接口:

接口接口、提现接口、还款接口、审批接口、绑卡接口、逾期接口、用户过滤接口、 现回调接口等

 

(2)电商项目接口:

短信验证码校验接口、短信验证码下发接口、获取用户令牌接口、会员注册接口、修改会员密码接口、

会员推荐列表查询接口、会员积分排名查询接口等

(3)保险项目接口:

投保确认接口、保单状态查询接口、保单注销接口、保单查询接口、保单打印接口、授权计划查询接口等

通用接口:登录接口、搜索接口、增、删、改、查  接口

(4)医疗接口

海蓓医疗接口:医院接口,科类接口,科室接口,医生接口,排班接口,号源接口,预约挂号接口,登录注册接口,门诊接口,就诊人接口,充值接口,支付接口,退款接口,药房接口,住院接口,病历接口,体检接口等

 

3、接口测试流程?

答:有两种情况:

第一种情况:有接口文档

步骤:

1、找开发要接口文档

2、分析接口文档

3、编写接口用例、评审接口用例

4、搭建环境、部署环境

5、使用接口测试工具或接代码执行接口测试

6、有接口bug就通过bug管理工具提交给开发修改,修改好bug,验证bug,关闭bug

7、输出测试报告

第二种情况:没有接口文档

步骤:

1、搭建环境、部署环境

1、通过抓包工具抓取接口

2、收集抓取到的参数,并编写接口测试用例

3使用接口测试工具或接代码执行接口测试

4、有接口bug就通过bug管理工具提交给开发修改,修改好bug,验证bug,关闭bug

5、输出测试报告

(三)接口测试你使用什么工具测试的?

1.postman

2.jmeter

3.python+requests

(四) 你能具体给我讲一个你做过的接口?

比如:我就讲下最近项目中借款接口,

(1)postman:我用的工具是postman,首先填写请求求方式post,get,在填写路径(ip+接口路径)、在填写入参 

{

    "code": "ABCDEF",

    "method": "loanCalculate",

    "data": {

        "loanAmount": 100000,

        "loanTerm": 15

    },

    "sign": "{签名规则参考 接口请求签名章节}",

    "timestamp": 1500693926

}

 返回参数:

    "code": "success",

    "message": "请求成功",

    "result": {

        "repayAmount":115000,

        "receiveAmount":100000,

        "interestFee":10000,

        "serviceFee":5000,

        "serviceFeeDesc":""

    }

(2)我用jmeter这个工具,具体流程

我讲下借款接口,使用jmeter工具做的,首先在测试计划中添加一个线程组,在线程组中的sample 中添加一个http请求,在htttp请求填写接口参数:协议http、服务器或ip,端口号、请求方式get或post、在填写接口路径、还有编码格式,在填写
入参有
“loanAmount”: 100000,
“loanTerm”: 15
在对接口进行断言:在断言中有一个相应断言,断言有包含,相对等;断言后要查看结果,右键监听器,查看结果树,在进行保存,在点击运行,运行成功后在点击查看结果树,红色表示错误,绿色表示通过,结果中有取样结果、请求参数、响应数据。这就是我做的一个接口。 还有一些关联接口、依赖接口、接口参数化 等

(3)python+requests,
我用的是python+requests做接口测试,先要导入requests库 impost request ,先将接口的请求url(url是什么)、请求数据data(data是什么)、请求类型定义(Content-Type’:‘application/x-www-form-urlencoded’)写好参数;在通过requset请求方式请求,请求方式有三种:
第一种:requets.post(url, data=None, json=None) 或requets.get(url, params=None)
第二种:requests.request(method=“post”,data=None, json=None)或requests.request(method=“get”,data=None, json=None)
第三:requests.Session() 保持接口会话关系
创建一个对象来接收请求结果,打印响应结果:
打印响应内容 :print (对象.text)
打印url内容 :print(dl_rep.url)
打印cookies:print(dl_rep.cookies)
打印请求头:print(dl_rep.headers)
打印json:print(dl_rep.json())
打印状态码:print(dl_rep.status_code)
接口请求到结果可以转换成json格式,在通过if语句或assert进行断言;这就是我做的接口

没有断言的接口是没有灵魂;
————————————————

 接口测试有哪些场景?(30条)

 

 

 

-----------------------------------------------

=========================================
(四)接口自动化如何做的?做过

讲解1:方式:python+request+unittest

一、结合python+requests+unittest框架做接口自动化测试
先import 导入 unittest这个模块,然后封装一个类class 定义为定义一个test去继承(unittest.testcase):
然后就是类的开始,类开始和结束前面需要加一个装饰器@classmethod,类开用def setupclass(cls)来表示,类的开始cls.session=requests.session()。类结束要用def teardownclass(cls)来表示。类开始结束在整个框架中只会运行一次。然后就是方法开始方法结束,方法开始与结束在每一条用例都会运行一次,方法开始用def setup(self)来表示,方法结束用def teardownclass(self)来表示。后面就写用例,书写用例用def test_开头将每个接口都写上顺序,按ascii码顺序排序1-9,A-Z,a-z,在编写接口的参数和接口请求方式等,或者在py文件中写好并导入调用,最后用main方法作为入口:if _ _name_ _==’_ _main_ _’:用来执行用执行偶三种方法:第一种:unittest.main()来调用上面的所有用例,第二种方法使用:unittest.TestSuite ()  套件添加部分用例,addTest(),在使用unittest.estrunner,在用run执行;第三种方法:就是执行一个路径下所有的用例:unittest.defaultTestLoader.discover(start_dir=路径,pattern="搜索的内容"),在使用unittest.TextTestRunner()运行用例,还可以导入报告模板HTMLTestRunner,在去open打开报告文件,写入执行内容、标题、执行情况、测试人员,生成接口测试报告。这就是我的接口自动化测试

讲解2:python+request+unittes 分层设计自动化框架

二、 python+requests+unittest 接口自动化框架设计分层如下:(正常场景)

首先我们需要在pycharm里新建一个项目名称,然后我们需要建6个包:cms_api、config、report、run、testcase、utils包。
cms_api:用来组建接口、发送接口请求
config:放入接口的入参信息
report:存储测试用例生成的报告
run:运行所有的测试用例
testcase:接口的测试用例
utils:工具类、创建报告和发送邮件模块
首先写好config的入参的相关信息,比如url,data,header,写好各个接口的相关入参信息
在cms_api包中组建接口的和发送接口请求,导入requests模块
创建一个全局的session对象、用来保持会话的状态和管理上下文,把各个接口的请求方式编写出来,同时用rep.json()来,全部封装在一个类里
在testcase包中组建测试用例导入unittest模块、cms_api里面的Cms类
定义一个类,且继承unittest中的TestCase,用匿名对象来调用实例方法,然后进行断言
用run模块来运行所有的测试用例导入unittest、time,mail3, HTMLTestRunner,定义项目的路径
定义用例的路径,定义测试报告的名称
定义自动搜索用例,执行测试用例并生成报告,这里要注意时间戳。
测试用例报告生成在report里面,用谷歌浏览器打开

最后就是把报告发送到邮件里,

创建report包,用来接收接口测试报告;

 

讲解3:python+request+unittes+ddt 实现接口自动化测试框架

先建立一个新的项目,然后建一些包,
定义一个confi包是用来组建接口请求的,
定义一个data包用来存放测试用例表格的,
定义一个library包存放外部导入的工具函数,
定义一个report包存放最终的测试报告,
定义一个run_allcase包执行所有的用例并生成报告用的,
定义一个testcase包在里面运行编写的测试用例,
定义一个utils包存放所有自己写的封装语句。
首先在utils包下新建一个head_path模块在里面编写项目与包的路径。
在conf包下建一个conf.ini文件里面写入要运行的系统基本信息和登陆账号密码。
在utils包下新建一个head_conf模块在里面编写处理ini文件的代码。
在utils包下新建一个head_requests模块在里面写入封装接口的工具类。
在utils包下新建一个head_excel模块在里面写入读取表格的代码,使用pip3 install openpyxl下载。
在testcase包下新建一个test_login模块在里面写入数据驱动的代码,需要拿到ddt这个工具函数。
在wandwos系统中新建一个表格,表格内写入id、接口名称、用例标题,、用例类型、url、要填写的信息、预期结果、是否通过空置。然后将表格导入项目包中的data包内。
在testcase包下新建一个test_login模块,用来写入运行表格用例的代码。
最后把HTML文件导入到项目包内的library包下,然后在run_allcase包下新建一个模块,里面写入运行所有用例的代码,和生成测试报告的代码。并将报告的存放路径放到report包下。

例4:
第1层的话是config配置层,这个里面主要是封装了一些我们测试环境的url地址和一些连接数据库的IP地址,用户名密码等等
第2层是data数据层,这个里面主要放的是接口的用例,把接口的入参,接口的路径,接口的编号,请求方法都放在这个里面了,一个接口放在一个sheet页面里面,然后一个sheet页面里面有多个接口测试用例,有正常场景的也有多个异常场景的
第3层是一个library第三方的公共库层,里面主要是放了发邮件的工具类,生成测试报告的工具类还有做数据驱动的ddt模块
第4层就是utils工具类层,主要封装了读取Excel表格,读取ini配置文件和发送接口请求的工具类
第5层就是testcase用例层,这个里面首先会创建一个类,然后在里面创建以test开头的方法,然后定义一个data装饰器主要是用来接受Excel表格里面的接口入参,第一步先做数据的处理,然后第二步再通过封装好的发接口请求的工具类发送接口请求得到response返回值,第三步再对接口进行断言,一般会对接口返回的状态码和返回的比较具有唯一性的文本信息进行断言
第6层就是run运行层,首先会通过把所有的用例加载到一个suite套件里面,然后再通过调用run方法运行这个套件,并且通过HTMLtestrunner模块生成测试报告放
第7层报告层里面,然后最后通过Jenkins做可持续集成,在回归测试阶段,每天晚上都会运行一下我们的接口自动化用例,大致的一个框架结构就是这样的。
---------------------------------------------------------------------
案例5:
API自动化框架
API自动化框架分为conf、data、utils、api、testcase、runner、report、log8个模块。
conf是用来储存系统环境、数据库、邮件等的配置参数、项目的绝对路径、各个模块的绝对路径、各个接口的参数url、data、headers、json、verify(关掉https),其中有ini、yaml、xlsx文件等,通过响应的方法来处理相应的文件。ini文件是section、option、value的形式,一般通过继承configparse模块进行处理,yaml文件的读取是以字典的形式,一般是用@unitest.skip@file_data@unpack装饰器进行读取,xlsx文件主要是通过openxlsx、xlrd、xlwt、xlutils模块进行读取。
data是用来封装进行的是用例的数据,一般是通过xlsx进行读取。
utils模块封装了处理文件、读取数据库内容、发送报告、处理日志等模块。调用数据库用到pymysql模块、控制日志输出用到了logging模块、邮件发送用到了smtp模块和Email模块、处理ini文件用到了configparse模块、读取xlsx用到了openxlsx、xlrd、xlwt、xlutils等模块。
api模块封装了各个接口的发送api请求的方法。通过调用request模块来进行请求的发送。
testcase模块用来封装测试用例。通过unitest测试框架,继承unitest.TestCase类、api模块封装的接口连接方法、使用ddt数据驱动进行测试。
runner模块用来封装要运行的测试用例,可以通过unitest.TestSuite来封装要运行的测试用例,而大部分都是通过unitest.defaultTestLoad.discover()方法来批量指定要运行的测试用例文件、可以通过unitest.TestRunner来运行测试用例,可以通过HTMLTestRunner运行测试用例和生成测试报告。
report是用来储存运行测试用例后的测试报告。
log是用来存储运行测试用例的日志,用到logging模块,设置输出到控制台的日志文件,设置输出到文件的日志等级等。

 ================================================================

接口测试面试题:

https://www.cnblogs.com/xiaolehua/p/17115685.html 

  ================================================================

接口测试中遇到什么问题?如何接口?

 

posted on 2023-02-13 11:35  多测师_肖sir  阅读(116)  评论(0编辑  收藏  举报