软件测试面试题

一、描述 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边相等

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

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

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

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

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

 覆盖无效类的测试用例

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Internet普及的今天,作为Internet工作基础的TCP/IP协议及其编程已经成了IT人业人员所要具备的基本知识与技能。打开国内外各大知名网站的招聘页面,都可以看到类似于“熟悉TCP/IP协议、掌握socket通讯开发”等字样的要求。本书就是为了满足读者在这方面知识的需求而编写的一本TCP/IP协议与基于TCP/IP编程方面的书籍。 本书有以下几个方面的特点: (1)内容的组织上按照协议原理与协议编程分为上、下篇。上篇主要介绍TCP/IP协议簇中的常用协议,下篇专门介绍网络编程知识与技能。 (2)具体在编写每一节的内容时将原理知识与实用技能融为一体。以方便读者学习。 (3)考虑到TCP/IP协议比较抽象,学习起来有一定的难度,所以全书尽量避免使用晦涩难懂专业术语,而用浅显易懂的语言说明问,努力将书打造成一本人人都读懂书籍。 (4)初学网络程序设计的人员,往往感到网络程序设计内容多,学习进来比较复杂。针对这一问,本书在讲解网络程序设计时,根据网络程序固有的特点,先总结了网络程序设计的通用模式,然后再举例说明网络程序的设计,使读者易于入手。 (5)Winsock函数内容多,使用起来比较复杂,针对这一问,笔者在写作时将常用的Winsock函数分散到各种实例中去介绍,然后在最后一章将所有常用的Winsock函数一一作了较为详细说明,并在每个函数后面加入了其应用实例或使用说明。 本书分为上、下两篇内容,上篇内容包含6章,各章主要如下: 第1章:介绍了TCP/IP协议的产生、结构和工作原理,另外本章内容中还简要介绍一一下ISO/OSI RM。 第2章:介绍TCP/IP协议层次结构中网络接口层包含的内容,主要有物理层和数据链路的相关知识。 第3章:介绍TCP/IP协议层次结构中网络层及其相关知识。主要内容有IP数据报格式、IP层的功能、IP地址、ICMP协议、地址转换协议并介绍了IP的最新版本IP v6等。 第4章:介绍TCP/IP协议层次结构中传输层及其相关知识。主要内容有端口的概念、TCP协议和UDP协议的协议数据格式、协议原理和TCP协议与UDP协议的比较等内容。 第5章:介绍TCP/IP协议层次结构中应用层及其相关知识。主要内容有应用层常用协议DNS、FTP、Telnet、HTTP、POP和SMTP的格式、工作原理、协议实例等内容。 第6章:简要的介绍了一下TCP/IP协议在Windows和LINUX操作系统下的实现原理TCP/IP协议的二进制代码。 下篇包含以下6章内容: 第7章:介绍了网络程序设计有关的基础知识、一个网络程序入门实例和Winsock中编写网络程序常用的建立连接、传输数据、关闭连接等有关的函数。 第8章:介绍了TCP程序设计流程、基于C/C++的TCP程序设计实例和基于Java技术的TCP程序设计实例。 第9章:介绍了UDP程序设计流程、基于C/C++的UDP程序设计实例和基于Java技术的UDP程序设计实例。 第10章:介绍了使用MFC中提供的有关类进行网络程序设计知识。 第11章:介绍了Winsock API中各种函数的功能,并举例说明了些函数的使用方法。 本书在编写过程中得到了邮电出版和刘博等编辑的大力支持和帮助,在此表示感谢。由于作者水平有限,错漏之处在所难免,欢迎广大读者批评指正和提出宝贵的意见,可发邮件到。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蜗牛_Chenpangzi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值