软件测试面试题

news2024/12/24 3:04:38

一、描述 TCP/IP 协议的层次结构,以及每一层中重要协议

TCP/IP(Transmission Control Protocol/Internet Protocol)是互联网的核心协议套件,它定义了在网络中进行通信的规则和标准。TCP/IP协议栈按照层次结构划分,每一层负责不同的功能,下面是TCP/IP协议的四个主要层次及其重要协议:

1. 网络接口层(Network Interface Layer)
   - 功能:负责处理网络物理接口和数据链路层的细节,将数据帧从一台主机传输到另一台主机。
   - 重要协议:Ethernet(以太网)、Wi-Fi、PPP(点对点协议)等。

2. 网络层(Internet Layer)
   - 功能:负责在不同的网络之间进行数据包的路由和转发,提供主机之间的逻辑通信。
   - 重要协议:IP(Internet Protocol,网络协议)、ICMP(Internet Control Message Protocol,Internet控制消息协议)、ARP(Address Resolution Protocol,地址解析协议)等。

3. 传输层(Transport Layer)
   - 功能:负责在网络中建立端到端的数据传输连接,确保数据的可靠传输和有序交付。
   - 重要协议:TCP(Transmission Control Protocol,传输控制协议)、UDP(User Datagram Protocol,用户数据报协议)等。

4. 应用层(Application Layer)
   - 功能:提供应用程序与网络之间的接口,支持特定的网络应用和服务。
   - 重要协议:HTTP(Hypertext Transfer Protocol,超文本传输协议)、FTP(File Transfer Protocol,文件传输协议)、SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)、DNS(Domain Name System,域名系统)等。

这些层次构成了TCP/IP协议栈,通过分层的结构,TCP/IP协议栈能够实现网络通信的灵活性、可扩展性和互操作性。不同层次上的协议相互配合,完成了数据在网络中的传输和处理。

二、测试的数据你放在哪?

测试数据存放总结:
1.对于账号密码,这种管全局的参数,可以用命令行参数,单独抽出来,写的配置文件里(如 ini)
2.对于一些一次性消耗的数据,比如注册,每次注册不一样的数,可以用随机函数生成
3.对于一个接口有多组测试的参数,可以参数化,数据放 yaml,text,json,excel 都可以
4.对于可以反复使用的数据,比如订单的各种状态需要造数据的情况,可以放到数据库,每次数据 初始化,用完后再清理
5.对于邮箱配置的一些参数,可以用 ini 配置文件
6.对于全部是独立的接口项目,可以用数据驱动方式,用 excel/csv 管理测试的接口数据
7.对于少量的静态数据,比如一个接口的测试数据,也就 2-3 组,可以写到 py 脚本的开头,十年 八年都不会变更的

总之不同的测试数据,可以用不同的文件管理

三、HTTP 有哪些请求方法,分别代表什么?

HTTP(Hypertext Transfer Protocol)定义了一组请求方法(也称为HTTP动词或HTTP谓词),用于指定客户端对服务器资源的操作。以下是常见的HTTP请求方法及其含义:

1. GET(获取):用于请求服务器上的资源,通常用于获取网页、图片、文件等数据。GET方法是最常见的HTTP请求方法。

2. POST(提交):用于向服务器提交数据,通常用于提交表单数据、上传文件等。POST方法将数据作为请求体发送到服务器。

3. PUT(更新):用于向服务器上传或更新资源。PUT方法要求在请求中指定要更新的资源的完整表示。

4. DELETE(删除):用于请求服务器删除指定的资源。

5. HEAD(获取头部信息):与GET方法类似,但只请求获取服务器响应的头部信息,不返回实际内容主体。HEAD方法常用于检查资源的元数据,如验证资源是否存在或获取资源的元数据信息。

6. PATCH(部分更新):用于对资源进行部分更新。PATCH方法类似于PUT方法,但只更新请求中指定的资源的部分内容。

7. OPTIONS(选项):用于请求服务器返回支持的HTTP方法列表,或者请求服务器返回与指定资源相关的通信选项。

8. TRACE(跟踪):用于让服务器返回其接收到的请求,主要用于诊断和调试。

除了上述常见的HTTP请求方法,还有一些不太常见的方法,如CONNECT、PROPFIND、PROPPATCH等,它们具有特定的用途,但在日常应用中使用较少。

需要注意的是,HTTP请求方法的使用应符合HTTP协议的规范,且服务器必须支持相应的方法才能正确处理请求。

四、接口自动化测试的流程?

基本的接口功能自动化测试流程为:需求分析-->用例设计-->脚本开发-->测试执行-->结果分析

五、接口测试用例的编写要点有哪些?

1)必填字段:请求参数必填项、可选项
2)合法性:输入输出合法、非法参数
3)边界:请求参数边界值等
4)容错能力:大容量数据、频繁请求、重复请求(如:订单)、异常网络等的处理
5)响应数据校验:断言、数据提取传递到下一级接口...
6)逻辑校验:如两个请求的接口有严格的先后顺序,需要测试调转顺序的情况
7)性能:对接口模拟并发测试,逐步加压,分析瓶颈点
8)安全性:构造恶意的字符请求,如:SQL 注入、XSS、敏感信息、业务逻辑(如:跳过某些关键步骤; 未经验证操纵敏感数据)
* 测试每个参数类型不合法的情况(类型不合法容易遗漏 NULL 型)
* 测试每个参数取值范围不合法的情况
* 测试参数为空的情况
* 测试参数前后台定义的一致性
* 测试每个参数的上下限(这里容易出致命的 BUG,如果程序处理不当,可能导致崩溃)
* 如果两个请求有严格的先后顺序,需要测试调转顺序的情况

六、使用ping命令后返回的是什么东西?

`ping`命令是一种网络诊断工具,用于测试主机之间的连接性和网络延迟。当你在命令行中执行`ping`命令时,它会发送网络控制协议(ICMP)回显请求消息到指定的目标主机,并等待该主机发送回相应的回显应答消息。

当`ping`命令成功地发送回显请求并接收到回显应答时,它会显示一条消息,指示成功发送和接收的回包数量,以及往返时间(往返时间是指从发送请求到接收到回应所经过的时间)。这些信息可以帮助你评估与目标主机之间的网络连接质量。

`ping`命令的输出通常包含以下信息:
- 目标主机的IP地址或主机名
- 每个回包的序列号
- 发送回包的时间戳
- 往返时间(通常以毫秒为单位)
- 回包丢失的情况(如果有的话)

`ping`命令会一直发送回显请求,直到你手动停止它,或通过设置计数或时间限制来控制发送回显请求的次数或持续时间。你可以根据输出信息来判断网络连接的稳定性和延迟情况。

当使用ping命令时,指定的目标主机可以是一个 IP 地址或一个域名(网址)。如果你提供的是域名(例如:www.example.com),ping命令会解析该域名并获取相应的 IP 地址,然后将回显请求发送到该 IP 地址所对应的服务器。

所以,当ping命令返回目标主机的 IP 地址时,它实际上是显示了你所提供的域名对应的服务器的 IP 地址。这可以帮助你验证域名解析是否正确,并与服务器建立网络连接。

七、POST 和 GET 有什么区别

POST和GET是HTTP协议中的两种常见的请求方法,它们有以下区别:

1. 数据传输位置:GET方法通过URL传输数据,将数据附加在URL的末尾,以查询字符串的形式发送。例如:http://example.com?param1=value1&param2=value2。而POST方法将数据作为请求的正文发送,不会显示在URL中。

2. 数据传输长度:GET方法对传输的数据长度有限制,不同的浏览器和服务器对URL长度的限制有不同的规定,通常在2KB到8KB之间。而POST方法没有对数据长度的限制。

3. 数据安全性:GET方法的数据在URL中可见,因此不适合传输敏感信息,如密码等。POST方法将数据放在请求的正文中,对数据的可见性有一定程度的保护,比GET方法更安全。

4. 数据存储位置:GET方法请求的数据会被浏览器缓存,数据会保存在浏览器的历史记录中。POST方法请求的数据不会被缓存

5. 请求语义:GET方法是一种幂等的请求,即多次重复请求产生的结果与一次请求的结果相同。POST方法一般用于向服务器提交数据,可能会对服务器的状态进行修改,因此不是幂等的。

总体而言,GET方法适用于请求获取数据,而POST方法适用于向服务器提交数据。根据具体的应用场景和需求,选择合适的请求方法可以更好地实现功能和保护数据的安全性。

八、Session 与 Cookie 有什么区别?

Session和Cookie是两种用于在Web应用程序中管理用户状态和跟踪的技术。

Session是一种服务器端的状态管理机制,它用于在用户与服务器之间跟踪会话状态。当用户访问一个网站时,服务器会为该用户创建一个唯一的会话标识符,通常是一个会话ID。服务器使用这个会话ID来存储和检索与该用户相关的数据,例如用户的登录状态、购物车内容等。会话数据存储在服务器上,用户的浏览器只保存一个指向会话的标识符(通常是一个名为session ID的Cookie)。通过将会话数据存储在服务器端,可以确保用户的数据不容易被篡改,并且在用户关闭浏览器或会话超时时可以自动清除。

Cookie是一种客户端的状态管理机制,它用于在用户的浏览器中存储小段数据。服务器可以将Cookie发送给用户的浏览器,并要求浏览器将其存储起来。下次用户再次访问相同的网站时,浏览器会将相应的Cookie发送给服务器,以便服务器可以读取其中的数据并作出相应的响应。Cookie通常用于跟踪用户的身份认证状态、保存用户的偏好设置等。与会话不同,Cookie的数据是存储在用户的浏览器中的,因此可以在不同的会话和浏览器之间进行持久化。

总结一下,Session和Cookie的区别如下
- 存储位置:Session的数据存储在服务器端,Cookie的数据存储在客户端(浏览器)。
- 数据安全性:由于Session的数据存储在服务器端,相对来说更安全,Cookie的数据存储在客户端,可能容易被篡改。
- 存储能力:Session可以存储较大量的数据,而Cookie由于浏览器的限制,每个Cookie的存储容量有限制(通常为4KB)。
- 生命周期:Session的生命周期通常由服务器管理,可以设置会话的过期时间;Cookie可以设置一个特定的过期时间,或者在没有设置过期时间时作为会话Cookie,仅在用户关闭浏览器时过期。
- 跨会话和浏览器:Session可以跨不同的会话和浏览器进行访问,而Cookie只在特定的会话和浏览器中可用。

在实际应用中,Session和Cookie经常一起使用。服务器可以使用Cookie来存储会话ID,使得每次请求时可以根据会话ID来检索相应的会话数据。这样可以结合Session的安全性和服务器端存储能力,同时利用Cookie的持久化和跨浏览器特性来提供更好的用户体验。

九、启动app时出现闪退,是什么原因导致的?

闪退是指在启动应用程序时,应用程序突然关闭或崩溃的情况。闪退可能由多种原因导致,以下是一些可能的原因和解决方法:

  1. 资源问题:应用程序需要大量内存或处理器资源,但设备的资源不足以支持其正常运行。解决方法包括关闭其他后台运行的应用程序,清理设备上的缓存,或考虑在较新且配置更高的设备上运行应用程序。

  2. 兼容性问题:应用程序可能不与设备的操作系统版本或硬件规格兼容。确保应用程序与设备的操作系统版本兼容,并检查应用程序的硬件要求。

  3. 编程错误:应用程序可能存在编程错误,例如内存泄漏、无限循环或空指针引用等。这些错误可能会导致应用程序崩溃并闪退。在这种情况下,开发人员需要检查和修复代码中的错误。

  4. 第三方库或插件问题:如果应用程序使用了第三方库或插件,那么这些库或插件可能存在与设备或其他库的冲突,导致应用程序闪退。更新库或插件到最新版本,或与开发者社区联系以获取支持和解决方案。

  5. 数据问题:应用程序在启动时可能尝试加载损坏或无效的数据,导致应用程序崩溃。清除应用程序的缓存或数据,并尝试重新启动应用程序。

十、通过输入a、 b、c的值来判断是否为等腰三角形,要求a、b、c为正整数且取值范围为(0,9999],请建立测试用例进行测试

等价类划分、边界值分析:

1.这道题的输入为a、b、c的值,值的要求数据类型满足正整数、长度满足(0,9999];

细分正整数、长度,得出输入值的要求(1)(0,9999] (2)整数 (3)数字 (4)3个数

2.三角形的要求,(5)任意2边之和大于第3边

3.等腰三角形的要求,(6)任意2边相等

满足以上要求,则正确输出等腰三角形

在设计测试用例数据的时候,遵循下面条件

先新增一条测试用例覆盖尽量多的有效类,再逐步补充用例,确保所有有效类覆盖完全

新增一条测试用例只覆盖一个无效类,继续新增,确保所有的无效类覆盖完全。

覆盖有效等价类的测试用例

 覆盖无效类的测试用例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/563775.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【DataTable.js】DataTable基础应用

一、简介 DataTables是一个功能强大的Javascript库,用于向HTML表中添加交互特性,虽然简单性是整个项目的核心设计原则,但一开始可能会让人望而生畏。然而,采取这些第一步,让DataTables在你的网站上运行实际上是相当直…

测试——四元数绕轴旋转

float angle 40;Vector3 v rotatePoint.transform.position;Debug.Log("旋转向量 " v "__自身 " cube.transform.rotation);v.Normalize();Debug.Log(v);float f angle * Mathf.Deg2Rad / 2;float sinHalfAngle Mathf.Sin(f);float cosHalfAngle M…

智慧梁场3D建模

智慧梁场3D建模:数字化革命下的新起点 ​ 随着科技的迅猛发展,数字化已经成为了现代工业生产的必然趋势。作为传统工业的核心产业,建筑行业也在不断地探索数字化变革的新路径。而“智慧梁场3D建模”便是其中的一项杰出实践。 ​ 梁场是建筑…

FreeRTOS:系统内核控制函数

目录 前言一、内核控制函数预览二、内核控制函数详解2.1强制上下文切换宏2.2临界区2.3可屏蔽中断2.4调度器2.5调整系统节拍 前言 FreeRTOS 中有一些函数只供系统内核使用,用户应用程序一般不允许使用,这些 API 函 数就是系统内核控制函数。内核控制的一…

【iOS】—— iOS中的相关锁

文章目录 自旋锁1.OSSpinLock2.os_unfair_lock3.atomic 互斥锁pthread_mutexsynchronizedobjc_sync_enterobjc_sync_exit注意事项 NSLockNSRecursiveLock信号量条件锁NSConditionNSConditionLock 读写锁总结 锁作为一种非强制的机制,被用来保证线程安全。每一个线程…

数字时代安全文件共享的重要性

数字时代彻底改变了工作、学习、交流和生活方式的方式。从在线协作到远程工作和电子学习,数字世界为全球各地的人们开辟了新的机遇。然而,伴随着这种便利性和可访问性而来的是对安全文件共享的需求。随着越来越多的机密信息在网上共享,窃取该…

常用数据可视化相关型图表大全

大数据时代,工作中我们可能经常会需要处理很多数据,需要在总结汇报中展示呈现,俗话说“字不如表,表不如图”,那么如何缩短数据与用户的距离?让用户一眼Get到重点? 在理解或分析大量数据时,数据可视化起着…

开始第一个vue项目,环境搭建+html项目运行

【用vue.js,通过script标签导入】 1. 搭建vue脚手架 安装node js安装cnpm(淘宝源) 【vue】在windows中搭建vue开发环境(全网最详细)_vue环境搭建_一起来学吧的博客-CSDN博客2a 2. 官网下载地址: 安装 …

Python实现ACO蚁群优化算法优化随机森林分类模型(RandomForestClassifier算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蚁群优化算法(Ant Colony Optimization, ACO)是一种源于大自然生物世界的新的仿生进化算法&#xff0c…

伟大的公司只需要十一人

在生成式AI、云计算等技术逐渐抹平大企业与中小企业之间的技术、成本差距后,各企业真正比拼的,只剩下人才、创意与执行力。 目前,随着AI技术的快速迭代,各种基于AIGC(人工智能内容生成)技术的产品不断涌向…

pytest自动化测试框架和unittest自动化测试框架的区别

目录 Unittest vs Pytest 用例编写规则 用例前置与后置条件 断言 测试报告 失败重跑机制 参数化 用例分类执行 实例演示 前后置区别 参数化区别 总结 python的单元测试框架经常使用的是unittest,因为它比较基础,并且可以进行二次开发&#xf…

分布式事务的21种武器 - 3

在分布式系统中,事务的处理分布在不同组件、服务中,因此分布式事务的ACID保障面临着一些特殊难点。本系列文章介绍了21种分布式事务设计模式,并分析其实现原理和优缺点,在面对具体分布式事务问题时,可以选择合适的模式…

时间序列预测 | Matlab基于最小二乘支持向量机LSSVM时间序列预测,LSSVM时间序列预测

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 基于最小二乘支持向量机LSSVM多维时间序列预测LSSVM多变量时间序列预测,matlab代码 评价指标包括:MAPE、MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码 %----------------…

如何落地中台架构

大家好,我是易安!今天我分享下如何落地中台架构。 前台和后台 讲中台之前,我们先来理解下前台和后台,这样,你才能更清楚中台的定位。 前台 比较好理解,指的是 面向C端的应用,比如像微信、淘宝这…

数字音频接口I2S-PDM-TDM-PCM

主要分类:模拟、数字(I2S、PCM、PDM、TDM) 模拟音频,就是功放输出的,驱动音箱和喇叭的音频。模拟麦克风采样回来的数据也是模拟音频。通常会有单端或差分两种信号。 数字音频,不能直接驱动喇叭&#xff0…

混剪功能开发——抖音账号矩阵系统源码解析

抖音是目前国内非常流行的短视频平台之一,用户数量庞大,更是吸引了许多企业和个人在上面开设账号,通过发布内容来进行流量变现。但是,在一个账号发布内容的同时,管理员又需要同时关注多个账号,对账号的管理…

vs code 配置net 开发环境.并搭配vs相似的解决方案面板

由于在本人在Linux22.04下安装Rider 一直处于卡死系统状态.不得不使用该方式 以下为安装步骤 安装 VS code https://code.visualstudio.com/Download 安装 mono https://www.mono-project.com/download/stable/#download-lin 安装 NET SDK https://learn.microsoft.com/zh…

目录层次结构中区分不同功能的RPM包,同时只有一份共享的repodata

使用本地的yum源有几个潜在的好处: 更快的下载速度: 本地yum源通常位于本地网络上,因此可以通过局域网快速获取软件包,而不需要依赖互联网连接。这样可以提供更快的下载速度,节省时间和带宽消耗。 离线访问&#xff1…

实验12 卷积神经网络

1. 实验目的 ①掌握深度学习的基本原理; ②能够使用TensorFlow实现卷积神经网络,完成图像识别任务。 2. 实验内容 ①设计卷积神经网络模型,实现对Mnist手写数字数据集的识别,并以可视化的形式输出模型训练的过程和结果&#xf…

Qt--事件过滤器

写在前面 Qt中的事件过滤器(Event Filter)是一种机制,用于拦截并处理特定类型的事件。但和Qt–事件分发器一文中提到的事件分发器有些区别。 事件过滤器的工作原理 这里同样使用一个简单的示例图帮助理解: 这里假设有一个Widget父窗口,该…