2026最新软件测试面试题(接口测试篇)

📅 发布时间:2026/7/16 1:09:25 👁️ 浏览次数:
2026最新软件测试面试题(接口测试篇)
点击文末小卡片免费获取软件测试全套资料资料在手涨薪更快1、什么是接口接口就是API意思是应用程序编程接口 接口本质上是程序开发的函数和方法提供参数和返回值2、接口组成的要素是什么接口访问的地址、请求的方法、参数、返回值 接口访问的地址协议://IP地址或域名:端口号/应用名/功能名 请求的方法 get、post等参数用户使用接口时需要向接口提供的数据 返回值接口给用户的反馈结果3、你对requests了解多少requests是请求作用是发送请求获得响应往往使用在网络爬虫接口自动化测试4、如何使用requests安装python安装requests模块创建.py文件编写python代码导入requests模块 调用requests方法5、requests.get作用用于实现使用get方法发送http请求get方法主要是用来获取资源的根据接口的需求文档来确定是不是使用get方法6、requests.get语法形式requests.get(url,params,headers,auth,cookies) 参数url是必须写其他根据实际情况选择是否使用7、requests.get的返回值返回Response对象 常使用Response对象的status_code来获取相应状态码使用Response对象的text属性获取相应正文8、接口测试的优势是什么规范性与扩展性好9、什么是接口测试接口测试是测试系统组件间接口的一种测试接口测试主要用于检测外部系统和内部系统之间以及各个子系统之间的交互点。测试的重点是检查数据的交换、传递和控制管理的过程以及系统间的相互逻辑依赖关系等10、为什么要写用例理清思路避免漏测和重复测试 提高测试效率 跟进测试进度 告诉领导做过 跟进重复性工作 更好的记录问题、发现问题、复现问题 同时这也是接口测试流程中的一个产物11、接口测试用例设计主要考虑哪些功能是否正常 功能是否按照接口文档实现是否依赖业务 异常情况(参数异常、数据异常) 安全测试用例(cookieheader)12、做接口测试运用过哪些测试工具postman JMeter python-requests13、抓包工具用过哪些fiddler14、接口功能测试用例包含哪些内容用例名称、接口地址、请求方式、前置条件、描述、请求头部、请求参数、状态码、预期返回结果15、接口测试报告包含哪些内容系统接口概况、测试目的与范围、测试工具与资源、测试记录及结果分析(单场景接口、混合场景结构)、测试结论16、测试指标范围包含哪些被测接口接收请求和返回报文 被测接口返回状态 被测接口对应业务逻辑处理 涉及数据沉淀的处理 复杂场景下多个接口串联交互17、response返回内容有哪些status_code #响应状态码 content #字节方式的响应体会自动为你解码gzip和deflate压缩 headers 以字典对象存储服务器响应头 json()返回以json格式内容 url 获取url encoding 编码格式 cookies 获取cookie raw 返回原始响应体 text 以字符串形式返回响应体18、TCP/IP参考模型有哪几层应用层、传输层、互联网层、网络接口层19、常用协议的端口号21/tcp FTP 文件传输协议 22/tcp SSH 安全登录、文件传送(SCP)和端口重定向 23/tcp Telnet 不安全的文本传送 25/tcp SMTP Simple Mail Transfer Protocol (E-mail) 69/udp TFTP Trivial File Transfer Protocol(微型文件传输协议) 80/tcp HTTP 超文本传送协议(WWW) 110/tcp POP3 Post Office Protocol (E-mail) 443/tcp HTTPS used for securely transferring web pages 3389/tcp 远程访问5631/tcp 5632/udppcanywhere端口号 1433 SqlServer服务端口号 1521 Oracle服务端口号 3306 Mysql服务端口号 8080 Tomcat默认服务端口号20、常见的状态码有哪些1XX 信息提示用于指定客户端相应的某些动作 2 XX 成功用于表示请求成功 3XX 重定向用于移动的文件并且常被包含在定位头信息中制定的新的地址信息 4XX 客户端错误用于指出客户端的错误 5XX 服务器错误用于指出服务器的错误 200 301 404 50121、post请求四种传送正文的方式有哪些appliction/x-www-form-urlencoded multipart/form-data Raw binary22、你们公司的接口测试流程是怎样的接口测试是我们~~~项目中做的主要有~~接口、~~接口等1、从开发中取得接口文档了解接口业务主要包括接口地址、请求方式、入参、出参、返回格式等信息2、使用JMeter进行接口测试 创建一个线程组 然后建立一个http请求默认值 再新建很多http请求一个请求时一个用例输入相应接口路径、访问方式、参数等 创建断言和察看结果树3、最后调用并执行测试用例编写测试报告4、在做接口测试的时候遇到过很多问题都是自己独立解决的比如返回值乱码(修改JMeter的配置文件UTF-8)23、请简述一下cookie、session以及token的区别cookie数据存放在客户的浏览器上、session数据放在服务器上、token是接口测试时鉴权码一般情况下登陆后才可以获取到token然后在每次请求接口时需要带上token参数cookie不安全别人可以分析存在本地的cookie并进行cookie欺骗考虑到安全应当使用session 可以将登录信息等重要信息存放为session其他信息可以保存在cookie24、接口测试如何设计用例接口测试一般考虑入参形式的变化和接口的业务逻辑 一般设计接口测试用例采用等价类边界值场景法居多 接口测试用例设计思路1.接口业务逻辑测试 接口逻辑测试是指根据业务逻辑输入参数输出值的描述对正常输入情况下所得输出值是否正确的测试 也就是测试对外提供的接口服务是否正常2.模块接口测试 模块接口测试是为了保证数据的安全及程序在异常情况下的逻辑正确性而进行的测试模块接口测试主要包括以下几个方面1)鉴权码token异常(为空没有错误过期)2)其他参数的异常 必填项的检查 参数的长度、类型、格式异常 常规的参数有数字、字符串、日期 参数长度位数、身份证、电话的长度 参数的类型数字精度字母中文带空格的参数特殊字符 日期格式:日期年月日年月日时分秒日期格式(包含/-:等)3错误码异常覆盖25、通用接口用例设计通过性验证首先肯定要保证这个接口功能是好使的也就是正常的通过性测试按照接口文档上的参数正常传入是否可以返回正确的结果。参数组合现在有一个操作商品的接口有个字段type传1的时候代表修改商品商品id、商品名称、价格 有一个是必传的type传2的时候是删除商品商品id是必传的这样就要测参数组合了type传1的时候 只传商品名称能不能修改成功id、名称、价格都传的时候能不能修改成功。接口安全 绕过验证比如说购买了一个商品它的价格是300元那我在提交订单时候我把这个商品的价格改成3元后端有没有做验证更狠点我把钱改成-3是不是我的余额还要增加 绕过身份授权比如说修改商品信息接口那必须得是卖家才能修改那我传一个普通用户能不能修改成功我传一个其他的卖家能不能修改成功 参数是否加密比如说我登陆的接口用户名和密码是不是加密如果不加密的话别人拦截到你的请求就能获取到你的信息了加密规则是否容易破解。 密码安全规则密码的复杂程度校验 异常验证 所谓异常验证也就是我不按照你接口文档上的要求输入参数来验证接口对异常情况的校验。比如说必填的参数不填输入整数类型的传入字符串类型长度是10的传11总之就是你说怎么来我就不怎么来其实也就这三种必传非必传、参数类型、入参长度。26、根据业务逻辑来设计用例根据业务逻辑来设计的话就是根据自己系统的业务来设计用例这个每个公司的业务不一样就得具体的看自己公司的业务了其实这也和功能测试设计用例是一样的。 举个例子拿bbs来说bbs的需求是这样的1、登录失败5次就需要等待15分钟之后再登录2、新注册的用户需要过了实习期才能发帖3、删除帖子扣除积分4、......像这样的你就要把这些测试点列出来然后再去造数据测试对应的测试点。27、接口测试注意事项测试的时候这几个方面: 改变请求参数看响应结果是否和接口文档一致 查看参数是否有敏感信息比如个人账户信息资金信息 查看是否对关键参数进行加密处理(密码信息) 所有列表页接口必须考虑排序值 接口返回的图片地址能否打开图片尺寸是否符合需求 接口有翻页时页码与页数的异常值测试 当输出参数有联动性时需要校验返回两参数的实际结果是否都符合需求每个接口入参的默认值、异常类型、非空校验 入参支持多个值时要考虑传的值的个数多的情况下接口会不会报错28、接口测试执行中对比数据库吗肯定要对比因为接口返回值的数据来源于数据库接口对数据的操作还要进行深层次的数据库检查29、谈谈你对HTTP协议的了解超文本传输协议端口为80 是由请求和响应两部分组成的请求头请求行请求正文组成响应是由响应 头、响应行、响应正文组成 面向安全的话使用https30、get和post请求有什么区别GET在浏览器回退时是无害的而POST会再次提交请求。GET产生的URL地址可以被Bookmark而POST不可以。 GET请求会被浏览器主动cache而POST不会除非手动设置。GET请求只能进行url编码而POST支持多种编码方式。GET请求参数会被完整保留在浏览器历史记录里而POST中的参数不会被保留。GET请求在URL中传送的参数是有长度限制的而POST没有。对参数的数据类型GET只接受ASCII字符而POST没有限制。GET比POST更不安全因为参数直接暴露在URL上所以不能用来传递敏感信息。GET参数通过URL传递POST放在Request body中31、在接口测试过程中发现的bug多不多请举例 提前准备好项目中的缺陷输入一个负数系统假设服务端没有做提现金额的判断当前余额为100提现金额-100那么提现-100余额就变为200越体现余额就越大 余额 当前余额-提现金额32、接口测试中有哪些要注意的测试点接口中返回了图片地址要手工去进行图片测试(大小内容) 接口完成查询功能的时候数据返回的排序显示 接口测试的时候关注参数的默认值必填项33、接口执行测试后返回结果做对比一般对比那一部分内容一般对比就是返回状态码其次在对比返回其他的关键内容34、为什么开展接口测试接口测试属于集成测试、测试接入越早就越能在项目早期发现问题修复问题成本降低 接口测试非常快速ui自动化执行一个测试用例10s左右接口用例执行一般毫秒级35、之前使用过抓包工具吗?如何使用的之前在项目中使用过fiddler抓包工具进行HTTP协议请求的抓取 打开fiddler之后默认浏览器配置127.0.0.1 8888端口的代理在fiddler设置好过滤策略打开需要 进行抓包的网站进行操作就可以抓包36、 json数据是什么你平时如何解析json数据json是一种开发常用的数据报文格式由键值对和数组两种格式构成可以通过工具bejson网站等37、postman在你工作中使用的流程是什么样的1编写测试用例2)在postman中先建好url环境变量3)根据接口用例所属的模块新建集合管理4)在集合中不同模块下录入测试用例5)录入测试用例的时候根据预期结果在tests页签中增加断言6)导出通过newman去运行38、在接口测试中关联是什么含义?如何使用postman设置关联关联就是把上一个接口返回值的部分截取出来作为下一个接口的参数能让接口串联运行 在postman中设置关联的步骤如下1通过正则表达式提取的方式或json取值的方式把下一个接口需要的信息从上一个接口截取出来 2)使用设置全局变量的代码把取出来的值保存到全局变量3)在下一个接口中使用(全局变量)代替要替换的静态值39、postman支持什么类型的协议测试http和https协议40、postman参数化由哪几种方式内建变量、pre-scripts编写js脚本、批量运行时导入csv或json格式的文件41、Newman如何执行postman脚本newman run 脚本名称可以添加参数生成html报表等42、你对http请求跟webservice请求的了解webService接口是走soap协议通过http传输请求报文和返回报文都是xml格式的我们在测试的时候都 用通过工具才能进行调用测试。可以使用的工具有SoapUI、jmeter、loadrunner等 http api接口是走http协议通过路径来区分调用的方法请求报文都是key-value形式的返回报文一 般都是json串有get和post等方法这也是最常用的两种请求方式。可以使用的工具有postman、 RESTClient、jmeter、loadrunner等43、接口测试你为什么要做参数化举个例子,例如购物车接口请求数据需要登录接口里面返回的token值,这个存在接口之间依赖关系的时候,我们需要把依赖字段值进行参数化再比如接口中会有一些公共参数,每个接口里面都存在,如果值是固定的,那我们可以把这些进行参数化记录,减 少在每个接口里面书写出错的问题 再比如手机号我传131开头的、133开头的、135开头的如果不会参数化就要写三个http请求分别传 这三种参数学会了参数化只写一个http请求就够了,以此来减少重复的工作44、请详细阐述接口测试和UI测试在测试活动中是如何协同测试的接口测试和UI测试这两块其实是有一部分是重叠的UI测试是通过前端写的界面来调用接口而接口测试是直接调接口。所以排除前端的处理的逻辑和调用的正确性在理论上接口测试是可以覆盖所有的UI测试。但实际过程中如果只是在接口层覆盖所有的业务流在UI上只测试前端的逻辑最终的结果可能会是忽视很多原有 的功能点导致了UI测试的不充分。所以存在多人分工且时间充分的时候可以尝试接口去做业务流的全覆盖否则不要轻易尝试45、系统间的接口联调测试两个系统之间的部分数据是相互读取的1.在一个甲系统增加修改A数据后乙系统也会相应的呈现这个改动的数据在乙系统增加修改B数据后 甲系统也会相应的呈现这个改动的数据 即A部分的数据是由甲系统来维护的乙系统读入数据并同步B部分的数据是由乙系统来维护的甲系统 读取数据并同步2.在具体的操作过程中在甲系统增加修改A数据后然后在乙系统查看对应的数据是否同步一致反之亦 然 在乙系统查看对应的数据是否同步一致分为三个层面1甲系统传输过来的数据和乙系统接收到的数据是否一致2乙系统接收到数据后会存入到自己的数据库这个存储过程是否成功主要是考虑到甲系统传过来的 数据格式是否和乙系统的格式一致且数据存储成功与否乙系统会返回一条信息例如返回1表示数据正确 传输并存储到数据库了返回0及错误信息表示数据传输或存储出了问题3然后在乙系统的界面查看新增或修改的数据是否和接收到的数据一致46、你们公司接口中常见的错误码及含义,及返回信息参数有哪些等,举例说明编码 名称 说明 1 操作成功 2 操作失败 33 参数解析失败 一般指json格式错误 44 订单重复提交 (会返回提交成功时的承运信息) 401 身份安全验证失败 500 系统错误 999 需要登录 返回值为json格式,如下: { status: 1, message: 处理成功, result: 请求结果, totalRow: 100, totalPage: 5 } status 1表示成功,具体参考2.1返回状态码 message 提示信息 (必有,字符串型) result 详细结果 (可选,类型各接口不同,相见接口内定义) totalRow 总记录条数,用于分页使用 (可选,整型) totalPage 总页数 (可选,整型)47、为什么进行抓包测试有些时候公司没有标准的接口文档测试人员只能抓包来获取接口信息 抓包可以迅速找到请求通过抓包可以查看整个请求过程以及响应过程可以通过抓包来分辨前台还是后台 bug 通过抓包可以查看是否有敏感信息泄露比如用户密码和个人账号信息等数据。 可以通过抓包进行测试拦截请求修改请求数据查看对应响应结果抓包本身就是接口测试的一部分。48、怎么进行抓包工具上使用Fiddler或者charles 这两个工具 Fiddler设置http代理设置端口号在手机上设置和fiddler在同一网段设置代理ip设置代理端口 手机上的请求就能被获取到了。 抓取请求查看可以过滤找到自己域名下的请求通过分析请求地址请求参数响应结果来查找问题。49、 https包怎么抓https和http协议区别在于https多了一个ssl协议更加安全默认端口是443而http协议默认端口是80 抓取https需要申请证书在fiddler或者charles中可以模拟下载证书下载之后在手机上访问代理 服务器的ip和端口下载证书就可以抓取到https的请求了。50、接口自动化测试框架分为几层自动化测试框架分为5层配置层脚本层数据层测试报告层驱动层接口项目工程规划大致可分为几类首先是测试结果类比如说叫test_rusult里面存放一些比如说日志文件测试报告。然后是测试用 例testcase里面分模块存放测试用例。接下来是公共方法类比如说叫public或者是tools。里面比如 说存放一些读取excel数据的方法发送http请求的方法收集log日志的方法发送邮件操作数据库等 方法。还有就是配置文件类比如说叫config里面存放一些比如说指定运行部分用例的配置文件连接数据库的配置文件。最后是写一个run方法运行所有的用例。51、如何解决接口数据依赖问题请举例说明第一种global全部变量的方式解决将你需要用到的依赖数据提取出来升他为全局变量。比如说在APP接 口测试里面常用到token做鉴权效验用一个全局变量来处理依赖的数据比如登录后返回token,其它接口都 需要这个token,那就用全局变量来传token参数。全局变量有其局限性不能夸.py文件调用。第二种放setUp里面将接口有依赖的数据提取出来放到setUp里面每次运行用例前都会首先自动运 行setUp函数。第三种反射实现。首先定义一个类比如说获取cookie定义一个GetCookie里面的类属性给他一个初 始值比如说cookieNone。然后用python里面的setattr函数给刚才定义cookie值为空的属性赋值。最 后再用getattr函数取出里面的cookie。个人感觉这种方式实现比较好也不用担心cookie有效期的问题。52、如何做到数据和代码分离第一种写在excel表格里像这种主要是读取excel数据有点麻烦常用的用来读取excel的第三方库有openpyxlxlrd等。当然读取excel数据最好用的还是用来做数据分析的pandas模块不用写那么多for循 环。第二种数据存放到yaml文件里一个模块或者是一个功能写一个yaml文件最后写个读取yaml文件的公共 方法就行了。yaml格式的文件比较简单大家可以学下。第三种存放在数据库里面。听同事说的具体以哪种形式存还没了解过。第四种数据存放在json文件里。53、如何实现用例可配置可配置指的是实现运行全部用例和只运行部分用例先为什么要做用例可配置举个场景你要吧你写的脚本给你同事运行假设你同事不懂代码或者是刚来没多久还没看懂你的代码。这个时候你要叫人家帮你执行下用例人家肯定两眼一懵逼啊这个时候配置文件 的作用就来了你只需要将你的配置文件简单说下人家就能执行比如说你的配置文件是这样写的写了一 个按钮的变量给的默认参数是all执行全部但是还可以传列表假设你设计时是根据你的用例编号或者 模块名判断用例编号或者模块名是否在这传的列表里面从而执行选定的用例。达到用例可配置的效果在接口自动化中有遇到过什么样的问题问题一 我在接口测试中遇到最多的问题就是,接口测试数据类型变化的问题首先我最开始写在pycharm里面的数据 是字典格式写好之后把他copy拿到excel里面去读取出来就变成字符串了刚开始还没发现这个问题还 以为是我数据没写对后面type了一下才发现是字符串。最后解决主要是用eval函数给他进行强转一下就 好了。这里在补一个读取excel数据遇到的奇葩问题吧最开始用的是xlrd模块读取int整数到pycharm里 面变成float小数了后面百度了一下发现是这个模块的问题记得当时解决是在整数的前面加上一个英文引 号就好了。问题二 接口测试中断言精确度的问题这个问题我认为很重要关系到用例是否正确与否是否出现BUG。断言我主 要是用的unittest里面的assertEqual判断预期和实际是否相等assertIn判断返回数据是否包含。但 是有时候返回数据并没有一个太精确的唯一值像这种就不好用assertEqual判断是否相等。只能用 assertIn,判断返回数据是否包含像这种只能是多写几个断言断言响应文本里面的值。如果要举例可以 举个搜索商品的例子返回的商品数据比较多而且商品本身也会有上架下架之类的变动确实不好做断言。问题三 有一次开发人员那边改了某个接口字段没通知到测试这边导致用例报错。这里要举个实际的例子54、如何实现参数化请举一些实例测试每天测试东西除开页面而言其本质就是数据驱动测试无论是正常的场景也好异常的场景也好其 实就是数据在发生变化。众所周之使用unittest框架编写测试用例不能定义形参在方法里面在我使用 unittest做接口测试过程中参数化主要是用的ddt这个模块实现的。ddt模块最常用的有3个常用函数 ddtdataunpack。ddt用来装饰类data用来接收数据uppack用来拆包。调用公共方法读取到 excel数据将数据赋值给一个变量给data装饰器使用在方法里面用一个参数接收装饰器里面的数据 data装饰器会自动对这个函数进行拆包比如说从excel里面读取是一个列表嵌套字典的数据类型经过 data拆解后就会变成字典最后根据key取值发起http请求。55、requests中传递参数params、data、json的区别是在get请求中使用params参数会自动把参数添加到url后面 data传递的是content-type:application/x-www-from-urlencoded表单形式的数据 json传递的是content-type:application/jsonjson格式的数据56、项目中有没有加入日志信息怎么实现的给用例添加加日志信息主要是用的logging这个python自带模块根据日志的不同级别info,debug,warning,error,critical针对性的写了一个日志类设置好日志输出格式将日志指定保 存到.txt结尾的文本文件里面像一些常见的打印信息就用info收集在可能会出现错误的try-except 结构中就用error收集错误信息方便定位问题。57、什么时候需要对数据库进行效验比如说充值提现金额有无相应的增加和减少都需要对数据库进行效验58、接口测试发现哪些bug用了一个淘宝授权过期的账号去请求购买商品的接口通过接口正常购买成功但是订单归属却丢失了说明接口未对淘宝授权过期的过期的用户做效验59、接口用例运行多长时间7条用例的运行时间约为1.79秒70条就是18秒490条就是2分06秒依此类推60、能够大致讲一下你们接口自动化框架是怎么搭建的吗好的我们采用unittest和ddt数据驱动思想搭建测试框架对数据excel读取、yaml配置、Requests接口请求、Re参数化、Pymysql数据库效验、日志等模块实现封装其中用 Openpyxl来处理excel存储测试数据用例数据 pyyaml来配置文件configparse,pyyaml Pymysql来连接mysql数据库执行sql数据进行数据效验 Requests请求库来向接口发起请求 使用logging模块来创建日志器记录项目中的日志信息 使用HttpTestRunner来生成HTML测试报告 使用re模块来实现参数化正则匹配 使用动态创建属性类属性的机制来实现接口之间的依赖 (setattr getattr)61、你的项目中接口用例有多少每次大概执行多长时间我们项目有65个接口大概1200条用例执行时间大概半个小时62、在接口自动化中如何让token不失效1.调用登录接口拿到获取的token2.将拿到的token放在header中调用确认登录接口 3.确认登录接口调用成功接口返回信息正常63、下个接口请求参数依赖上个接口的返回数据不同的接口封装不同的函数或方法需要的数据return出来用一个中间变量a去接收后面的接口传a就可以了64、接口测试中依赖登录状态下的接口如何测试本质是在每次发送请求时需要带上session或cookie才能发送成功在构建post请求时添加必要的session或者cookie65、依赖于登录的接口如何处理登录接口依赖token的可以先登录后token存到一个yaml或者json或者ini的配置文件里面 后面所有的请求去拿这个数据就可以全局使用了 如果是cookies的参数可以用session自动关联66、依赖第三方的接口如何处理这个需要自己去搭建一个Mock服务、模拟接口返回数据 mock可以用在单元测试过程中还有一个用途当前端开发在开发页面的时候需要服务端提供API接口此时服务端还没开发完成或者说没搭建测试环境这时候前端开发会自己mock一个api服务端自己给自己提 供调用接口的返回数据。67、接口产生的垃圾数据如何清理造数据的数据清理需要python连接数据库做增删改查操作 测试用例前置setUp做数据准备 后置操作tearDown做数据清理68、不可逆操作如何处理比如删除一个订单这种接口如何测试主要靠手工测试造数据直接在数据库改字段状态。自动化也一样造数据可以用python连接数据库做增删改查的操作 测试用例前置setUp做数据准备 后置操作tearDown做数据清理。69、接口自动化的参数你是如何实现的?说说你的想法我会用python中Re模块中的sub方法去替换70、如何使你的接口自动化测试用例直接跳过前面几条直接执行第7 条可以在 Excel 创建一列指定是否跳过然后在用例时过滤掉这些用例 使用条件判断通过 case_id7 来决定是否执行71、如何使你的接口自动化脚本对于同一个请求让同一个用户请求多次在 Excel 中设置相关执行次数的字段在ddt数据驱动时使用代码来控制执行次数。72、params和data区别由于get请求无请求体post请求有请求体 使用params参数时默认会把参数附加到url后面所以发送get请求时应使用params参数 使用data参数时参数会存放到请求体中所以发送post请求时不能使用params应使用data除非 接口及支持get又支持post同样get请求也不能使用data参数。73、为什么要对requests进行封装通过封装我可以直接把所有的请求参数统一使用字典来传递 比如我们接口需要的数据也就是测试数据往往会保存在excel表里面那么我们取到后是字符串类型字符 串类型是无法作为请求参数传递的所有我每次都要做数据转换再传递给接口为了节省这个过程我只需 要把这个过程封装到我的requests里即可每次取数据后会自动给我处理 第二当我想保持某个状态时不想每次都初始化一个session对象那么我可以把它封装到我的reuqests 里面以后直接调用即可74、如何使用Seesion解决接口保持状态初始化Session实例通过这个实例调用request()方法发送请求75、requests分层设计cases测试执行逻辑层用于存放所有的测试用例类 configs配置层用于存放当前框架中的所有配置信息使用不频繁修改不频繁的数据 datas测试数据层用于存放所有的测试数据测试参数可以使用excel,json,yaml,数据库来存储 libs自定义库文件层用于存放自定义或者二次开发的库文件 logs 日志层用于保存运行框架过程中产生的所有有效日志信息 reports报告层用于保存所有的测试报告文件一般为html报告 scripts 脚本封装层用于保存所有的操作封装模块yaml,excel,log.mysql,requests,参数化等 run.py用例启动文件使用套件加载用例批量执行并生成报告76、接口的加密测试中对称加密与非对称加密有什么区别? 如何开展测试? 请详解对称加密是最快速、最简单的一种加密方式加密encryption与解密decryption用的是同样的密 钥secret key,这种方法在密码学中叫做对称加密算法。 对称加密的一大缺点是密钥的管理与分配换句话说如何把密钥发送到需要解密你的消息的人的手里是一个 问题。在发送密钥的过程中密钥有很大的风险会被黑客们拦截。现实中通常的做法是将对称加密的密钥进行 非对称加密然后传送给需要它的人。 非对称加密为数据的加密与解密提供了一个非常安全的方法它使用了一对密钥公钥public key和私 钥private key。私钥只能由一方安全保管不能外泄而公钥则可以发给任何请求它的人。非对称加密 使用这对密钥中的一个进行加密而解密则需要另一个密钥。比如你向银行请求公钥银行将公钥发给你 你使用公钥对消息加密那么只有私钥的持有人--银行才能对你的消息解密。与对称加密不同的是银行不需 要将私钥通过网络发送出去因此安全性大大提高。目前最常用的非对称加密算法是RSA算法. 开展测试-TBD77、请详细阐述接口测试和UI测试在测试活动中是如何协同测试的接口测试和UI测试这两块其实是有一部分是重叠的UI测试是通过前端写的界面来调用接口而接口测试是直接调接口。所以排除前端的处理的逻辑和调用的正确性在理论上接口测试是可以覆盖所有的UI测试。但实 际过程中如果只是在接口层覆盖所有的业务流在UI上只测试前端的逻辑最终的结果可能会是忽视很多原 有的功能点导致了UI测试的不充分。所以存在多人分工且时间充分的时候可以尝试接口去做业务流的全覆盖否则不要轻易尝试。78、在手工接口测试或者自动化接口测试的过程中上下游接口有数据依赖如何处理在工具中可以使用全局变量等方式将需要的数据进行传送79、http接口测试和web Service接口测试区别是什么区别是有的。主要是传统ws有一套完整的协议标准。其中有soap协议用来进行消息的传递。以传统工业标准的ws返回数据为例返回结果需要包装在一个soap协议指定的语法格式中。即使你只需要简单的返回字符1 也需要包装在协议种返回协议描述了成功失败否结果值等。而普通的get你输出1在调用端得到字符1。web service和http接口的区别在于1.接口中实现的方法和要求参数一目了然。2.不用担心大小写问题。3.不用担心中文 urlencode 问题。4.代码中不用多次声明认证账号密码参数。5.传递参数可以为数组对象等。80、设计接口测试用例例时涉及的是电商系统其中包括很多修改如商品、商家、店铺等等针对这些数据的修改会涉及到很多参数。如商品的名称商品的尺码商品的颜色等等。那在设计实现“修改”接⼝口时如何确定要传哪些参数是只需要传我要修改的参数还是全部参数都要传关键还是看后台逻辑实现。 举例User有两个属性username,password 后台逻辑实现update User set username? where idxxx; 那如果你只想更新username的时候可以不传password其值是保持不变的。后台逻辑实现udpate User set username?,password? where idxxx; 这种情况下即使你只想更新username,也需要传password的值给后台不然password就会被更新为空。 此外还有一些数据如id等如果sql中没有写那即使传递了本字段的参数数据库也不会更新。因此在 写关于“修改”的接口时需要考虑一下后台的逻辑是怎么实现的然后确认要传递哪些参数。81、目前接口文档是由word格式管理理因迭代快产生很多文档分不不清哪些是不用的接口哪些是正在用的接口哪些是更新后的接口文档杂乱另外因是word格式管理不方便查询如何管理每次查看接口文档需要下载多个word不能避免下载操作查看效率不高如何提高工作效率如果是webservice使用WSDL的格式来进行查看接口的文档以前的接口必要的时候使用一些配置管理的工 具比如wiki之类的系统来实时更新现有的接口状态82、HttpRequest 和 HttpResponse 是什么?干嘛用的HttpRequest 是 django 接受用户发送多来的请求报文后将报文封装到 HttpRequest 对象中去。 HttpResponse 返回的是一个应答的数据报文。render 内部已经封装好了 HttpResponse 类。视图的 第一个参数必须是 HttpRequest 对象两点原因表面上说他是处理 web 请求的所以 必须是请求对 象根本上说他是基于请求的一种 web 框架所以必须是请求对象。因为 view 处理的是一个 request 对象请求的所有属性我们都可以根据对象属性的查看方法来获 取具体的信息格式request. 属性 request.path 请求页面的路径不包含域名 request.get_full_path 获取带参数的路径 request.method 页面的请求方式 equest.GET GET 请求方式的数据 request.POST POST 请求方式的数据 request.COOKIES 获取 cookie request.session 获取 session request.FILES 上传图片请求页面有 enctypemultipart/form-data属性时 FILES 才有数据。a10 的键和值时怎么产生的键是开发人员在编写代码时确定下来的值时根据数据生成或者用户 填写 的总之是不确定的。403 错误表示资源不可用服务器理解客户的请求但是拒绝处理它通常由于服务器上文件和目录 的权 限设置导致的 web 访问错误。如何解决1、把中间件注释。2、在表单内部添加{% scrf_token %} request.GET.get()取值时如果一键多值情况get 是覆盖的方式获取的。getlist可以获取多个 值。在一个有键无值的情况下该键名 c 的值返回空。有键无值c: getlist 返回的是列表空列表 在 无键无值也没有默认值的情况下返回的是 None 无键无值e:None HttpResponse常见属性content 表示返回的内容charset: 表示 response 采用的编码字符集默认是 utf-8 status_code:返回的 HTTP 响应状态码 3XX 是对请求继续进一步处理常见的是重定向。常见方法 init:创建 httpResponse 对象完成返回内容的初始化 set_cookie设置 Cookie 信息格式 set_cookies(key,value,max_ageNone,expiresNone) max_age 是一个整数表示指定秒数 后过期expires 指定过期时间默认两个星期后过期。write 向响应体中写数据 应答对象方式一render(request,index.html) 返回一个模板 render(request,index.html, context) 返回一个携带动态数据的页面方式二render_to_response(index.html) 返回一个模板页面方式三redirect(/) 重定向方式四HttpResponseRdeirect(/) 实现页面跳转功能方式五HttpResponseitcast1.0)在返回到额页面中添加字符串内容方式六HttpResponseJson() 返回的页面中添加字符串内容。JsonResponse 创建对象时候接收字典作为参数返回的对象是一个 json 对象。 能接收 Json 格式数据的场景都需要使用 view 的 JsonResponse 对象返回一个 json 格式数据 ajax 的使用场景页面局部刷新功能。ajax 接收 Json 格式的数据。在返回的应答报文中可以看到JsonResponse 应答的 content-Type 内容是 application/json ajax 实现网页局部刷新功能 ajax 的 get()方法获取请求数据 ajax 的 each()方法遍历输出这些数据83、Post和Get请求的区别GET请求请求的数据会附加在URL之后以?分割URL和传输数据多个参数用连接。URL的编码格式采用的 是ASCII编码而不是uniclde即是说所有的非ASCII字符都要编码之后再传输POST请求POST请求会把 请求的数据放置在HTTP请求包的包体中。上面的itembandsaw就是实际的传输数据。因此GET请求的数据 会暴露在地址栏中而POST请求则不会传输数据的大小在HTTP规范中没有对URL的长度和传输的数据大小 进行限制。但是在实际开发过程中对于GET特定的浏览器和服务器对URL的长度有限制。因此在使用GET 请求时传输数据会受到URL长度的限制。对于POST由于不是URL传值理论上是不会受限制的但是实际 上各个服务器会规定对POST提交数据大小进行限制Apache、IIS都有各自的配置POST的安全性比GET的 高。这里的安全是指真正的安全而不同于上面GET提到的安全方法的安全上面提到的安全仅仅是不修改服 务器的数据。比如在进行登录操作通过GET请求用户名和密码都会暴露再URL上因为登录页面有可能被 浏览器缓存以及其他人查看浏览器的历史记录的原因此时的用户名和密码就很容易被他人拿到了。除此之 外GET请求提交的数据还可能会造成Cross-siterequestfrogery攻击。84、cookie和session的区别1、cookie数据存放在客户的浏览器上session数据放在服务器上。2、cookie不是很安全别人可以分析 存放在本地的cookie并进行cookie欺骗考虑到安全应当使用session。3、session会在一定时间内保存在 服务器上。当访问增多会比较占用服务器的性能考虑到减轻服务器性能方面应当使用cookie。4、单个 cookie保存的数据不能超过4K很多浏览器都限制一个站点最多保存20个cookie。5、建议将登陆信息等 重要信息存放为SESSION其他信息如果需要保留可以放在cookie中85、HTTP协议状态码有什么用列出你知道的HTTP协议的状态码然后讲出他们都表示什么意思通过状态码告诉客户端服务器的执行状态以判断下一步该执行什么操作100-199表示服务器成功接收部分 请求要求客户端继续提交其余请求才能完成整个处理过程。200-299表示服务器成功接收请求并已完成处 理过程常用200OK请求成功。300-399为完成请求客户需要进一步细化请求。302所有请求页面 已经临时转移到新的url。304、307使用缓存资源。400-499客户端请求有错误常用404服务器 无法找到被请求页面403服务器拒绝访问权限不够。500-599服务器端出现错误常用500请 求未完成服务器遇到不可预知的情况86、请简单说一下三次握手和四次挥手三次握手过程1、首先客户端向服务端发送一个带有SYN标志以及随机生成的序号100(0字节)的报文2服务端 收到报文后返回一个报文(SYN200(0字节)ACk1001(字节1))给客户端3客户端再次发送带有ACk标志 201(字节)序号的报文给服务端至此三次握手过程结束客户端开始向服务端发送数据1客户端向服务端发起 请求我想给你通信你准备好了么2、服务端收到请求后回应客户端Iok你准备好了么3客户端礼貌的再 次回一下客户端准备就绪咱们开始通信吧整个过程跟打电话的过程一模一样:1喂你在吗2在我说的你 听得到不3恩听得到(接下来请开始你的表演)补充SYN请求询问ACk回复回应四次挥手过程由于 TCP连接是可以双向通信的全双工因此每个方向都必须单独进行关闭这句话才是精辟后面四个挥手 过程都是其具体实现的语言描述四次挥手过程客户端和服务端都可以先开始断开连接1客户端发送带有fin 标识的报文给服务端请求通信关闭2服务端收到信息后回复ACK答应关闭客户端通信(连接)请求3服务端发 送带有fin标识的报文给客户端也请求关闭通信4客户端回应ack给服务端答应关闭服务端的通信(连接)请求87、说说HTTP和HTTPS区别HTTPS和HTTP的区别主要如下1、https协议需要到ca申请证书 一般免费证书较少因而需要一定费用。2、http是超文本传输协议信息是明文传输https则是具有安全 性的ssl加密传输协议。3、http和https使用的是完全不同的连接方式用的端口也不一样前者是80后 者是443。4、http的连接很简单是无状态的HTTPS协议是由SSLHTTP协议构建的可进行加密传输、身份 认证的网络协议比http协议安全。88、HTTP常见请求头1.Host(主机和端口号)2.Connection(链接类型)3.Upgrade-Insecure-Requests(升级为HTTPS请求)4.User-Agent(浏览器名称)5.Accept(传输文件类型)6.Referer(页面跳转处)7.Accept- Encoding文件编解码格式8.CookieCookie9.x-requested-with:XMLHttpRequest(是Ajax 异步请求)89、七层模型IPTCP/UDPHTTPRTSPFTP分别在哪层IP网络层TCP/UDP传输层HTTP、RTSP、FTP应用层协议url的形式形式scheme://host[:port#]/path/…/[?query-string][#anchor]scheme协议(例如http httpsftp)host服务器的IP地址或者域名port服务器的端口如果是走协议默认端口80or443 path访问资源的路径query-string参数发送给http服务器的数据anchor锚跳转到网页的指定锚 点位置http://localhost:4000/file/part01/1.2.html最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走这些资料对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你凡事要趁早特别是技术行业一定要提升技术功底。