无状态协议 HTTP 的优缺点及客户端与服务器动态交互

2024-07-14
来源:网络整理

无状态是指协议对于事务处理没有记忆,服务器不知道客户端处于什么状态。也就是说,我们向服务器发送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 居中?

分享