目录:导读
前言
1、你们1个接口可以写多少条自动化测试用例?
我们之前1个接口主要是看接口的复杂程度,如果入参和出参1个接口写个10多条自动化用例,参数少的也有写2-3条用例的
面试题:你认为接口测试和功能测试的区别在哪里?接口测试和接口自动化测试的区别?
1)接口测试更加关注的是前后端的交互和接口之间的逻辑,比如通过调用接口是否可以把数据库里面的数据返回给到前端
2)功能测试更加关注页面功能的实现
3)接口测试只是做了正常和异常的校验,但是我们每个版本的接口如果都通过接口功能测试去测的话工作量太大了,所以通过把接口串联起来写成接口自动化测试脚本,在回归测试阶段运行,有利于提高我们的工作效率和节省时间。
你测过多少个接口?
1)1个版本迭代差不多会新增10个接口左右
2)项目做了1年半=18个月*1个月一个迭代*10个接口 = 180个接口
总共有多少条接口自动化用例 180*5条 = 800-1000多条
每次运行时间要多久?
1000*1秒= 1000秒 = 7-8分钟差不多就跑完
你们自动化和功能测试的占比是怎样的?
功能测试占比70%左右,自动化和性能测试占比差不多30%左右
面试题:那你们平时是什么时间段去写自动化测试用例的呢?
当前版本的sit系统集成阶段后会写对应的自动化测试用例,然后放在下个版本去运行
2、要求学员结合项目讲解项目中实战接口操作(postman和jmeter挑一个)
有做过接口测试吗?用的什么工具,怎么做的?
postman版本答案一:
我用的postman工具做的 接口测试的过程:首先我会问开发拿到接口文档,编写对应的接口测试用例,然后把对应的url地址,data信息,headers都放入到postman里面,然后设置断言,然后发送接口的请求,看一下接口是否断言成功。
对于一些关联接口的测试,我会首先把登录接口调通,然后拿到登录接口返回的token值,通过在后置处理器tests里面把token设置为环境变量,然后在下一个接口的请求头里面通过{{token}} 俩个大括号进行引用,达到关联接口的测试。
如果是有参数化的接口测试,我首先会在本地创建一个CSV文件然后造对应的测试数据,在postman左侧栏有一个run点击一下,然后选择本地对应的CSV文件,然后批量运行接口,看一下接口是否运行成功和是否断言成功,完成参数化接口的测试。
postman版本答案二:
我用的postman工具做的,如果有接口文档,我会问开发拿到接口文档,如果没有的话我会自己用fiddler抓包,编写对应的接口测试用例,然后把对应的url地址,还有入参都放入到postman里面,然后设置断言,然后发送接口的请求,看一下接口是否调通并且断言成功。
对于一些关联接口的测试,我会首先把上一个接口调通,然后拿到上一个接口的返回值,通过在tests里面把拿到的值,设置为环境变量,然后在下一个接口的请求头里面通过俩个大括号进行引用,达到关联接口的测试,如果要批量运行接口的话,我会在左侧栏集合里面点击运行,然后设置迭代次数和选择参数化文件进行运行,达到批量运行的目的。
jmeter版本:
首先我会问开发同事拿到接口文档并且设计对应的测试用例,然后打开jmeter,创建一个测试计划和线程组,添加http请求,把对应的URL地址,入参和端口都填写进去,然后添加断言和断言结果,添加察看结果树,发送请求。
如果是对于关联接口的话我首先会把登录接口调通然后设置一个jsonpath提取器或者正则表达式提取器,拿到登录接口返回的token值,并且在http信息头管理器里面通过${token}进行引用,完成关联接口的测试。
对于需要做参数化的接口,首先我会在本地准备csv文件,然后在jmeter里面添加csv data set config,然后把本地的csv文件加载进来,点击运行,查看接口通过的情况。
3、接口当中遇到了哪些问题以及哪些bug?最后是怎么处理的?(准备2个接口bug)
4、flask框架启服务+json入参接口
1)flask是python的后台开发框架(其他的后台开发框架比如Django)
2)对于测试来讲flask主要是用来开发接口服务
3)后端接口的本质就是函数
5、接口的覆盖率怎么样?
答:我之前有负责过100多个接口的测试,覆盖我自己测的业务95%以上的功能场景,然后我在做接口自动化测试的时候通过率主要还是看环境是否稳定,还有就是数据参数化没有问题,接口也没有改动的话,脏数据能不能合理的清理,如果这些都是没有问题的话,一般可以达到100%的通过率
面试题:你的接口通过率有多少》 环境好的100%通过,但是有的时候只有90%多
6、什么原因导致接口自动化跑不通过?
1)我们跑接口自动化的时候后端经常在部署环境导致用例通不过
2)老接口的字段有改动,开发没有及时和我们讲,导致断言会出现失败的情况
3)老接口的逻辑有改动需要重新去维护之前的关联接口,重新调整yaml数据的入参
4)因为有的接口的返回值是动态的,需要做断言,但是后端数据库有时候会timeout连接超时和connection refused连接拒绝是因为数据库未开启和没权限导致的
5)还有就是之前我在数据库里面造了一些测试数据为了支持跑接口自动化但是有时候会被其他同事给删除了,这种情况我一般会提前在群里艾特其他同事和他们说一下我需要跑自动化了,让他们不要删我的数据
7、你做过接口自动化测试吗?用什么做的?
==》做过,用的python+requests+unittest/pytest单元测试框架+ddt数据驱动来做的,那我大概和您讲一下我做接口自动化的流程吧
答:首先的话就是我需要打开pycharm然后新建一个py模块,然后导入requests库和time模块等等,然后再通过定义一个方法,把url接口地址,data入参和headers都定义好,然后通过调用requests.post方法把url地址,data入参,headers都传入进去,发送接口请求,得到response返回值,最后通过assert方法进行断言,然后再调用方法,这是我们最开始做接口自动化写的一些线性脚本,但是后面因为做的时间也比较久,用例也比较多,所以我们后续用了一些数据驱动和框架对我们的代码进行了分层封装。
8、面试官如果问:那你们后面是怎么封装的呢?
==》我们大概分了6-7层,来对我们的接口自动化进行了封装,要和您讲一下具体的代码吗?【超级重点】
答案一:
我们这个接口自动化框架大致分了6-7层,首先
第1层的话是config配置层,这个里面主要是封装了一些我们测试环境的url地址和一些连接数据库的IP地址,用户名密码等等
第2层是data数据层,这个里面主要放的是接口的用例,把接口的入参,接口的路径,接口的编号,请求方法都放在Excel表格里面了,有正常场景的也有异常场景的
第3层是一个library第三方的公共库层,里面主要是放了发邮件,生成测试报告的工具类,还有做数据驱动的ddt模块
第4层就是utils工具类层,主要封装了读取Excel表格,读取ini配置文件和发送接口请求的工具类
第5层就是testcase用例层,这里面会创建一个类,然后在里面创建以test开头的方法,然后用data装饰器用来接受Excel表格里面的接口入参,先把数据处理,然后发送接口请求拿到response响应信息进行断言
第6层就是run运行层,首先会通过把所有的用例加载到一个suite套件里面,然后再通过调用run方法运行这个套件,并且通过HTMLtestrunner模块生成测试报告放到第7层报告层里面,然后最后通过Jenkins做可持续集成,在回归测试阶段,每天晚上都会运行一下我们的接口自动化用例,大致的一个框架结构就是这样的。

答案二:
我们是使用 python+requests+unittest 来搭建我们的做接口自动化测试框架,使用 python,组建接口,把url接口地址,data入参和headers都定义好
调用第三方的库 requests 来根据我们接口方法 get 或者 post 来发送接口请求,并接收响应回来的数据转换为字典,再通过 unittest 框架提供的断言来判断响应结果是否符合我们预期,通过 HTMLTextRunner 的类库来输出 html 格式的测试报告。
在这个过程中,为了方便用例与数据的使用,做了分级处理。用例里面主要是编写发送接口请求的流程以及接口校验的流程,里面的测试数据不会直接写死在用例里面,而我们的用例会单独剥离出来放在其他的地方。这个过程我们采用分层封装的形式进行处理,那我们这个框架里面大概分了7层
比如说就是我的这个用例层也就是testcase层,主要是存放接口的用例,一般一个接口封装在一个类里面,一个类放在一个模块(.py)里面,以接口的形式去写的。
采取了ddt数据驱动的形式去编写数据用例,这样可以让我达到一条用例执行我所有场景接口的情况,然后接口运行完会进行断言,断言的话一般会在用例里面加一些try except捕获异常语句,因为后续这个用例执行通不过的话,在报告里面直接可以看到报错信息直接进行修改
然后在用例里面获取的数据我们一般都会保存在data层里面。然后我需要去封装一些操作这些数据的工具方法出来,我们会把它集中封装在util工具层。
还有一个就是配置信息层,这个里面就是保存项目的配置文件,比如环境的信息,数据库的信息。
然后run层,可以保存不同的运行对象,在指定目录下用discover方法寻找以test开头的用例,形成一个套件对象,然后用run,运行不同组合下的用例。
然后还有一个library层存放我需要用到的一些公共库,比如htmltestrunner 或ddt驱动工具模块,在用例层直接导入即可,后续还用其他工具模块也可以直接放这里面。
在report层把生成报告指定保存在这个层里面,展示成功或者失败的用例,方便我查找问题,对用例进行一个管理和输出,整个接口自动化框架的分层处理就是这样的
接口测试项目实战
| 下面是我整理的2025年最全的软件测试工程师学习知识架构体系图 |
一、Python编程入门到精通

二、接口自动化项目实战

三、Web自动化项目实战

四、App自动化项目实战

五、一线大厂简历

六、测试开发DevOps体系

七、常用自动化测试工具

八、JMeter性能测试

九、总结(尾部小惊喜)
人生最动人的篇章,往往写在最艰难的转折之后。当你觉得力不从心时,请记住:每一个"不可能"的突破,都始于"再试一次"的勇气。你的坚持,正在为世界书写新的可能!
别让他人的质疑成为你的枷锁!你体内蕴藏着改变命运的力量,每个微小的进步都在为辉煌铺路。当别人停下脚步时,你的坚持就是最有力的回应。向前走,属于你的舞台正等待绽放!

2万+

被折叠的 条评论
为什么被折叠?



