无状态是指协议对于事务处理没有记忆,服务器不知道客户端处于什么状态。也就是说,我们向服务器发送HTTP请求后,服务器会根据请求给我们发送数据,但发送之后,就不会再记录任何信息。HTTP是无状态协议,这意味着每个请求都是独立的,Keep-无法改变这个结果。没有状态就意味着如果后续处理需要前面的信息,就必须重新传输,这可能会增加每个连接传输的数据量。另一方面,当服务器不需要前面的信息时,它的响应速度更快。HTTP协议的这个特性有利有弊,优点是解放了服务器,每次请求“停在一点”,不会造成不必要的连接占用,缺点是每次请求都会传输大量重复的内容信息。在客户端与服务器动态交互的Web应用出现之后,HTTP的无状态特性严重阻碍了这些应用的实现。 毕竟交互是需要连续性的,一个简单的购物车程序也需要知道用户之前选过什么商品,于是就诞生了两种维持HTTP连接状态的技术,一个是,一个是。
7. 和 的区别8. 什么是DNS?
DNS是 Name (Name),DNS是用于域名解析的。你在网上输入网址之后,它会把它转换成IP,然后访问对方的服务器。没有它,你想上百度就得记住百度的IP,但是有了DNS处理,你只需要记住对应网站的域名,也就是网址就可以了。
9、你们公司是如何进行接口测试的?
接口测试与一般测试的实际区别在于测试用例的设计部分。
10.如何设计接口测试用例?
一般在设计接口测试用例时需要考虑以下几个方面:
①是否满足前置条件
有些接口需要满足前提条件才能成功获取数据,常见的需要登录
逆向用例:根据前提条件是否满足设计0~n个用例(假设n个条件)
②是否携带默认值参数
正用例:有默认值的参数不填写或传递,必填参数填写正确且现有的“正常”值,其他不填写,设计1用例
③业务规则及功能需求
这里根据时间情况和接口参数描述,可能需要设计N个正向用例和反向用例。
④该参数是否必填?
反向用例:对于每个必需参数,设计一个具有空参数值的反向用例
⑤各参数之间是否存在相关性?
有些参数之间存在着互相制约的关系。
⑥参数数据类型限制
反向用例:针对每个参数,设计一个参数值类型不匹配的反向用例
⑦ 参数数据类型本身的数据范围值限制
正用例:对于所有参数,设计一个正用例,其中每个参数的参数值都是数据范围内的最大值。
11.你通常使用什么工具来测试接口?
常用的http协议接口测试工具,如:、、;接口测试等
12、没有接口文档,如何做接口测试?
这道题主要考情商,或者通俗点说就是忽悠人的能力。你得先忽悠住面试官,进去之后直接盲测就可以了,随时做好背锅的准备。当然你肯定不能回答面试官说没考过(心理mmp,脸上带着笑)。接下来就是扯淡的时间了。
使用抓包工具对接口进行抓取处理,然后进行针对性的测试;如果接口中的字段信息不清楚,找时间重点寻求开发解决方案。(常用抓包工具等)
13. 手工接口测试或者自动化接口测试的时候,如何处理上下游接口之间的数据依赖关系?
使用全局变量来处理依赖的数据。比如登录后返回的数据,其他接口需要这个数据。那么就使用全局变量来传递参数。
14.依赖第三方数据的接口如何测试?
嘲笑
然后面试官就会问你是不是mock,然后你就继续沿着坑挖,建一个mock服务。
15.接口测试的时候,如何测试依赖登录态的接口?
依赖登录态的接口本质是每次请求都需要带上或者发送成功,在构建POST请求时,添加必要的或者
16.如何模拟弱网络进行测试?
两者都可以模拟弱网测试,我们平时说的模拟丢包,也是一种模拟弱网测试。
17.接口测试的时候你发现了什么bug?
面试官问这个问题主要想知道你是否真的做过接口测试,毕竟现在很多年轻人都包装简历(不包装的话连面试机会都没有,没别的办法,想要生存,我理解)。
一般错误:接口未实现、结果未按约定返回、边界值处理错误等。
当输入异常值(空值、特殊字符、超出约定长度等)时,接口抛出错误,不进行封装;
输入参数错误,输入参数过多或过少,界面可能出现错误;
安全问题,如明文传输、返回结果包含敏感信息、不验证用户身份信息、不拦截恶意请求等。
性能问题,如接口中并发插入多个相同操作,响应时间过长,接口压力测试存在瓶颈;
18.当接口出现异常时,如何分析异常?
首先使用()工具抓包,或者在浏览器上使用F12调试工具;如果是APP的话,就用代理,在手机上设置代理,查看请求和返回消息;
检查后端日志,如连接服务器,检查接口日志是否有错误信息(命令:tail -f log file);
19.如何分析bug是前端还是后端?
通常在报告bug的时候,前端和后端开发人员总会争论不休,不肯承认是对方的bug。
这种情况比较容易判断,首先抓包看看请求报文,然后查看接口文档看看请求报文有没有问题,如果有问题就是前端发送的数据有误。
如果请求信息没有问题,那就看返回信息,如果返回的数据有误,那么就是后端开发的问题了。
20.你们进行自动化接口测试吗?
现在对于大量的应用来说,一般都建议做接口测试自动化,维护成本低,收益高,常用的工具有很多,比如,,等等。
21. 列出了多少位听众? 22. 在
在 中,没有内置数据驱动,我们必须使用 DDT 来实现。首先,我们必须在运行环境中安装 DDT。使用以下命令安装
pip ddt
另一个测试框架自带数据驱动实现,通过@.mark.(,)进行参数化。
您还可以根据需要使用它来读取和驱动数据。
23. 如何处理界面自动化中的关联?
将上一次请求返回的结果传递到下一次请求的参数中,将请求的结果反映到类属性中(使用()函数),下一次请求调用这个类属性
24.如何验证自动化测试的结果?
断言,将预期结果与实际结果进行比较
数据库验证:根据测试场景查询数据库中的数据,并与请求前的数据进行对比
25. 用于自动化的测试框架是什么?简述自动化框架的设计和维护。
测试框架:+++ddt+++
:易于上手,语法简洁
:定义一个测试用例类,维护测试用例生命周期的具体方法,测试场景行为,测试用例前置场景、行为,预期结果,实际结果,断言方法,方法
:接口调用,支持http请求的库,简洁的API,提供不同的http请求方式,支持,
ddt:数据驱动,ddt 类装饰器,数据测试方法装饰器解包可迭代数据类型
普通用户、数据库、配置文件—(基础数据)
:数据管理管理数据,使用模块读写数据(csv,json,yaML,txt都可以管理测试数据)
:数据库交互、数据验证
eval、json:数据格式转换eval将支持的格式转换成对应的格式
:日志处理,统一日志输出格式、通道、级别、执行结果记录,方便问题定位
: 持续集成
2/框架设计思想:数据驱动+结构分层(可读性、可维护性、可扩展性)
数据驱动:将维护数据与代码分离,保证接口调用行为一致,针对不同的参数组合驱动不同的测试场景,减少代码冗余
结构分层:数据层+用例层+逻辑层
数据层:测试数据支持data.xls
用例层:用例执行.py .py
逻辑层:对py.py.py等模块的公共方法进行封装和提取
3/框架设计步骤:
准备测试数据:表准备测试用例-数据读取-参数值替换
发起请求:请求方法(get/post方法封装-URL拼接(不同-参数转化为字典)
获取请求的返回值:解析返回值code、msg信息
断言
益处:
26. 自动化在该项目中如何实际应用?
完成所有自动化测试框架的设计和实现后,进行接口测试然后集成到系统中,配置定时执行,生成HTML报告,检查测试通过率,检查接口功能。
每次发布版本时都会进行回归测试,并且开发新功能之前都会进行测试。
还想从事软件测试行业的朋友,想要自己想要的工作,就得更加努力学习。我为大家整理了800多道软件测试面试真题的PDF文档。带走高清打印版,横扫软件测试面试中的高频题,涵盖测试基础、操作系统、数据库、Web功能测试、接口测试、移动端测试、知识、自动化测试相关、性能测试、性能测试、计算机网络知识、HR面试,命中率超高。(大家刷刷吧……)
1. 解释软件生命周期的各个阶段?常见的软件生命周期模型有哪些?
2.什么是版本控制?常用的版本控制系统有哪些?
3. 三大数据库范式是什么?
4.中和权限相关的表有哪些?
5. 输入格式有几种?它们之间有什么区别?
6.存储引擎选择?
7. 什么是指数?
8. 索引的优点和缺点是什么?
…
1.切换目录用什么命令?
2.如何查看进程信息?
3.如何查看当前路径?
4.哪个命令用于删除文件?
5.统计文件内容?(行数、字数、字节数)
6.grep命令有什么用?
…
1. 请写出标签下会包含哪些标签要素?
2.很多网站不经常使用这两个元素,你知道为什么吗?
3.jpg和png图像有什么区别?
4、常用的浏览器有哪些,其内核是什么?
5. form标签上的哪个属性定义请求类型?哪个属性定义请求地址?
6.简述src与href的区别?
7.:: 之间有什么区别?
8. 如何使 div 居中?
…