帝王之气,定是你和万里江山,我都护得周全
文章目录
- 前言
- 1. 网络原理
- 2. 测试题
- Java语法
-
- 手撕代码:快排(因为面试的太快了,所以进行了加试,又让多写一个代码),删除list链表的指定元素。
- 二分查找
- java多态的好处,和如何实现多态
- 哈希算法
- MD5
- SHA-256
- hashmap
- 1. 底层架构
- 2. 常用方法
- 3. 哈希函数设计
- 4. C语言实现
- 避免死锁
- 数组和链表的区别
- super与this的区别
- static的用法
- 抽象类和接口
- 你刚说的ConcurrentHashMap是如何保证线程安全的呢
- 深拷贝与浅拷贝
- 数据库的索引有哪些,都有什么区别
- 数据库的内、外链接的区别
- 如何在10000个数中查找一个数
- Thread和Runnbale的区别?
- hashmap线程安全,有哪些线程安全的集合
- git中commit和push的区别
- java的锁机制
- 数据库怎么提高查询效率
- Linux,head和显示文档的前10行
- 什么时候应该建索引,什么时候不应该建索引
- Linux用端口号查看进程
- Linux查找重复单词出现次数
- linux常用命令
- linux如何查看线程状态
- Linux查看进程和端口号
- Java多线程实现方式
- 线程池有几种
前言
秋招在即,测试开发岗的伙伴看过来啦~~
1. 网络原理
get与post的区别
获取数据:GET请求用于从服务器获取(读取)数据,而POST请求用于向服务器提交(发送)数据。
数据参数:GET请求将数据参数附加在URL上,以查询字符串的形式传输,例如:http://www.example.com?name=John&age=25。而POST请求将数据参数包含在请求体中,不会在URL中显示。
安全性:由于GET请求将数据参数暴露在URL上,因此相对不太安全,例如密码等敏感信息可以在URL中被看到,而POST请求将数据参数包含在请求体中,相对较安全。
请求长度限制:GET请求对URL的长度有限制,不同浏览器和服务器的限制长度不同(通常为2KB至32KB),而POST请求没有长度限制,可以发送较大的数据。
缓存处理:GET请求可以被浏览器缓存,下次在相同的请求下可以直接从缓存获取数据,而POST请求不会被缓存,每次都需要向服务器发送请求。
书签、历史记录:由于GET请求将数据暴露在URL上,可以在浏览器的历史记录中被看到,并可以添加到书签中,而POST请求不会暴露在URL中,不能被添加到书签和历史记录中。
总结:GET请求适用于获取数据、导航、查询等操作,数据传输较少,安全要求较低的情况下使用;POST请求适用于提交数据、修改数据、进行敏感操作,数据传输较多,安全要求较高的情况下使用。
TCP/IP各层是如何传输数据的
在TCP/IP协议栈中,数据从一个层传输到另一个层是通过封装和解封装的方式进行的。以下是数据从应用层到物理层的传输过程:
应用层(Application Layer):
应用层数据被封装为应用层协议数据单元(Application Layer Protocol Data Unit,简称APDU)。
应用层协议如HTTP、FTP等处理这些APDU,并在需要时添加协议头部信息。
传输层(Transport Layer):
应用层的数据被传递给传输层,传输层将数据封装为传输层协议数据单元(Transport Layer Protocol Data Unit,简称TPDU)。
传输层的协议如TCP、UDP负责提供端到端的可靠传输或不可靠传输。
网络层(Network Layer):
传输层的TPDU被传递给网络层,网络层将数据封装为网络层协议数据单元(Network Layer Protocol Data Unit,简称NPDU)。
网络层的协议如IP负责将数据包从源主机发送到目标主机。
数据链路层(Data Link Layer):
网络层的NPDU被传递给数据链路层,数据链路层将数据封装为数据链路层协议数据单元(Data Link Layer Protocol Data Unit,简称DPDU)。
数据链路层的协议如以太网、Wi-Fi等处理这些DPDU,并在需要时添加帧头部和帧尾部,以便在物理介质上传输。
物理层(Physical Layer):
数据链路层的DPDU被传递给物理层,物理层负责将数据转化为比特流,并通过物理介质进行传输。这可以涉及电气、光学或无线信号的传输。
IP头部包含哪些内容
IP(Internet Protocol)头部包含以下内容:
1️⃣ 版本(Version):指示IP协议的版本,通常为IPv4或IPv6。
2️⃣ 首部长度(Header Length):指示IP首部的长度,以32位字(4字节)为单位。由于IP首部长度可变,这个字段用于确定首部的结束位置。
3️⃣ 服务类型(Type of Service):用于指定IP包的优先级、QoS(Quality of Service)和流量管理。
4️⃣ 总长度(Total Length):指示整个IP包(包括首部和数据)的长度,以字节为单位。
5️⃣ 标识(Identification):用于分片和重新组装IP包。当一个IP数据包太大无法一次传输时,它会被分割成多个片段,并使用相同的标识进行标记。
6️⃣ 标志(Flags):包含3个位字段,用于控制IP包的分片和重新组装。其中包括"DF"(Don’t Fragment)位和"MF"(More Fragments)位。
7️⃣ 片偏移(Fragment Offset):指示当前片段相对于原始IP包起始位置的偏移量,以8字节为单位。
8️⃣ 生存时间(Time to Live):指定IP包在网络上可以经过的最大跃点数(通常是路由器)。每经过一个路由器,生存时间减1,直到生存时间为0时包会被丢弃。
9️⃣ 协议(Protocol):指示IP包中承载的上层协议,如TCP(6)、UDP(17)或ICMP(1)。
🔟 首部校验和(Header Checksum):用于检测IP首部在传输过程中是否出现错误。
1️⃣1️⃣ 源IP地址(Source IP Address):标识IP包的发送者的IP地址。
1️⃣2️⃣ 目标IP地址(Destination IP Address):标识IP包的接收者的IP地址。
TCP头部为什么有浮动
TCP报文头部的长度是可变的,即它可以根据需要动态调整大小。这种可变长度的设计主要是为了支持TCP的选项(Options)功能。
TCP报文头部最小长度是20个字节(不包括选项部分),其中包括源端口号、目标端口号、序列号、确认号以及其他必需的字段。如果没有使用任何选项,TCP头部就只有20个字节。
然而,TCP允许在头部中包含一些可选的扩展功能,这些功能被称为TCP选项。选项可以用于提供额外的功能或向通信的对等方发送特定的控制信息。常见的TCP选项包括窗口大小调节、时间戳、选择确认等。
由于选项部分的长度可变,当TCP报文头部中包含了选项时,头部的总长度就会增加。因此,TCP头部的长度可以根据选项内容的增减而浮动。
在TCP头部的最后,有一个字段称为"选项长度(Options Length)",它指示了选项部分的长度。通过这个字段,接收方可以确定TCP头部的总长度和如何解析选项部分的内容。
总的来说,TCP头部的浮动长度是为了支持选项部分的可变性,从而使TCP协议能够根据不同的需求和功能进行灵活的配置和扩展。
网络层协议
1. 路由协议
路由协议是用于在计算机网络中确定数据包传输路径的一组规则和算法。它们定义了网络中的路由器如何交换路由信息、如何选择最佳路径以及如何更新和维护路由表。
当数据包从源主机发送到目标主机时,它必须经过多个路由器才能到达目标。路由协议的作用是帮助路由器决定数据包应该从哪个接口发送,并确定下一跳的路由器。这样,在整个网络中,数据包会沿着一条或多条路径被正确地转发,最终到达目标主机。
常见的路由协议包括:
链路状态路由协议(Link State Routing Protocol):如OSPF(开放最短路径优先)、IS-IS(中间系统到中间系统),它们基于每个路由器相互通告的链路状态信息来计算最优路径。
距离矢量路由协议(Distance Vector Routing Protocol):如RIP(距离矢量路由信息协议)、EIGRP(增强的内部网关路由协议),它们基于每个路由器从邻居路由器收到的距离矢量来计算最优路径。
路径矢量路由协议(Path Vector Routing Protocol):如BGP(边界网关协议),它是一种互联网络间的路由协议,用于在不同自治系统(AS)之间交换路由信息。
这些路由协议根据不同的网络需求和拓扑结构选择最佳路径,优化数据包的传输效率和网络性能。
2. 路由信息
路由信息是指在计算机网络中路由器用来确定数据包传输路径的相关信息。它包括了网络中各个路由器之间相互交换的路由表、网络拓扑结构、地址信息和路由策略等。
路由器通过路由信息来判断数据包的下一跳和最佳路径。这些信息告诉路由器如何将数据包从源主机转发到目标主机。
常见的路由信息包括:
路由表(Routing Table):它是路由器中存储的一张表格,记录了目的网络地址和下一跳路由器的关系。路由表中的每一项称为路由条目,它包含了目的网络地址、子网掩码、下一跳路由器的地址和接口等信息。
网络拓扑(Network Topology):它描述了网络中各个节点(路由器、主机)之间的连接关系。网络拓扑可以是物理拓扑(如链式、星型、网状)或逻辑拓扑(如树型、网状)。
路由协议的交换信息:路由器通过路由协议相互交换路由信息。这些信息可以包括链路状态、距离矢量、路径矢量等,用于计算最佳路径并更新路由表。
地址信息:路由信息也涉及到网络中设备的地址,如IP地址、MAC地址等。这些地址用于标识网络上的不同主机和路由器,以便路由器可以根据这些地址进行转发和路由选择。
3. OSPF与RIP的区别
OSPF(开放最短路径优先)和 RIP(距离矢量路由协议)是两种常见的路由协议,它们有一些区别和特点:
算法类型:
OSPF是一种链路状态路由协议,它通过交换链路状态数据库(在链路状态路由协议中,每个路由器维护自己的链路状态数据库,其中包含了该路由器所连接的链路以及邻居节点的状态。这些状态信息可以包括链路的可用性、带宽、延迟、拓扑结构等)来计算最短路径。
RIP是一种距离矢量路由协议,它根据跳数(hop count)来选择路径。
路由更新:
OSPF只在网络状态发生变化时进行路由更新,这种响应式的方式可以减少路由更新的频率,降低网络开销。
RIP则定期广播整个路由表,无论网络状态是否发生变化,这会导致在大型网络中产生较高的网络开销。
收敛速度:
OSPF收敛速度较快,当网络状态发生变化时,仅需更新受影响区域的路由表。此外,在OSPF中,每个路由器都维护了一个完整的网络拓扑图,这样可以更快地计算出最短路径。
RIP的收敛速度相对较慢,因为它需要等待定时更新或收到广播消息才能进行路由表更新,并且无法快速适应网络的变化。
在OSPF中,有以下几种类型的链路状态广告(Link State Advertisement,LSA):
类型1 LSA(路由器LSA):用于广播每个OSPF路由器的链接状态和连接到的网络。
类型2 LSA(网络LSA):用于表示通过DR(Designated Router)连接到的网络。
类型3 LSA(网络汇总LSA):用于表示区域间的路由信息。
类型4 LSA(ASBR汇入LSA):用于表示ASBR(AS边界路由器)引入的外部路由。
类型5 LSA(外部LSA):用于表示外部网络。
Cookie与Session,Token的区别
Cookie(Cookie):
Cookie 是服务器在客户端(通常是浏览器)存储的小型文本文件。它由服务器发送到客户端,并由客户端存储在本地。每当客户端与同一服务器进行通信时,它会将 Cookie 附加到请求中发送回服务器。 Cookie 通常用于在不同请求之间跟踪用户会话状态,存储用户喜好设置以及身份验证凭证等信息。
会话(Session):
会话是服务器上存储的用户会话信息。当用户首次访问服务器时,服务器会为该用户创建一个唯一的会话 ID。该会话 ID 存储在客户端的 Cookie 中或通过 URL 重写传递给客户端。用户在访问应用程序的不同页面时,会将该会话 ID 作为输入发送回服务器,服务器使用该会话 ID 来查找和恢复与用户相关的会话数据。会话通常用于存储敏感数据和验证用户身份。
令牌(Token):
令牌是一种代表用户身份验证信息的加密字符串。令牌通常由服务器生成,并在用户成功进行身份验证后提供给客户端。客户端在后续请求中将令牌包含在请求中,服务器使用令牌来验证用户的身份和权限。令牌能够独立于会话存储用户状态,因此可以在分布式系统中使用,并具有高度的安全性。
当涉及到 Cookie、会话(Session)和令牌(Token)时,下面是它们的几个主要区别点:
存储位置:
Cookie 存储在用户的浏览器中,以文本文件的形式。
会话信息存储在服务器端的内存或数据库中。
令牌通常在客户端(如浏览器)中存储,可以是在内存中或本地存储中。
安全性:
Cookie 可以设置为仅通过安全的 HTTPS 连接传输,并且可以设置为仅在特定的域和路径下被访问。它们可以被浏览器篡改或盗用。
会话信息存储在服务器端,客户端只有会话 ID,相对较安全,但仍然有可能被劫持。
令牌可以使用加密算法生成,并通过 HTTPS 进行传输,具有较高的安全性。令牌通常使用 JSON Web Token(JWT)标准来包含用户身份信息和其他相关数据。
生命周期和持久性:
Cookie 可以设置过期时间,可以是永久的(持久性 Cookie)或在浏览器关闭后被删除(会话 Cookie)。
会话 ID 存储在服务器端,其有效期由服务器管理,通常在用户注销或一段时间不活动后失效。
令牌可以设置有效期,并且可以灵活地进行管理。客户端存储的令牌不会在浏览器关闭后被删除,除非显式删除或令牌过期。
无状态/有状态:
Cookie 和会话都是有状态的机制,服务器需要在其存储状态以跟踪用户会话。
令牌是无状态的机制,服务器不需要在其存储任何信息,令牌自包含身份验证信息,因此可以在分布式系统中更容易地扩展和处理。
这些是 Cookie、会话和令牌的一些主要区别,具体使用哪种技术取决于你的应用程序需求和安全性要求。
http与https的区别
端口号:HTTP默认使用80端口,而HTTPS默认使用443端口。
安全性:HTTP是一种不加密的明文协议,数据可以被第三方窃听和篡改;而HTTPS通过使用在HTTP的基础上, 采用SSL或TLS协议加密传输数据,确保数据在传输过程中不会被窃听和篡改。
数据传输速度:由于HTTPS需要进行加密解密操作,导致其传输速度比HTTP要慢一些。
端口号:默认情况下,HTTP使用80端口,HTTPS使用443端口。
证书:为了使用HTTPS,网站需要购买数字证书并安装到服务器上,以保障通信的安全性。而HTTP不需要证书。
认证方式:通过HTTPS连接访问的网站,在建立连接时会进行双向认证,即浏览器验证服务器证书的真实性,同时服务器也会验证浏览器的身份。而HTTP没有认证机制。
http的状态码
HTTP(Hypertext Transfer Protocol)协议定义了一系列状态码,用于表示服务器对请求的处理结果。以下是一些常见的HTTP状态码及其含义:
1xx(信息类状态码):表示服务器已接收到请求,正在处理。
100 Continue:服务器已收到请求的初始部分,并且客户端应继续发送其余部分。
2xx(成功类状态码):表示服务器成功接收、理解并处理请求。
200 OK:请求已成功,正常返回结果。
201 Created:请求已成功,并在服务器上创建了新的资源。
204 No Content:服务器成功处理了请求,但未返回任何内容。
3xx(重定向类状态码):表示需要进行进一步操作才能完成请求。
301 Moved Permanently:请求的资源已永久移动到新的URI。
302 Found:请求的资源已暂时移动到新的URI。
304 Not Modified:请求的资源未改变,可使用缓存的版本。
4xx(客户端错误类状态码):表示客户端发送的请求有错误。
400 Bad Request:请求无效,服务器无法理解。
401 Unauthorized:请求要求身份验证。
403 Forbidden:禁止访问,意味着服务器理解请求,但拒绝执行。
404 Not Found:请求的资源不存在。
5xx(服务器错误类状态码):表示服务器在处理请求时发生错误。
500 Internal Server Error:服务器遇到了意外情况,无法完成请求。
503 Service Unavailable:服务器当前无法处理请求,一段时间后可能恢复正常。
401与403区别
500表示服务器内部错误,通常是指在处理请求时发生了未知的错误或异常。
401表示未授权,意味着客户端没有提供有效的身份验证凭据。这意味着客户端需要提供有效的凭据(如用户名和密码)才能访问受限资源。
403表示禁止访问,意味着服务器理解请求,但拒绝执行。它表明请求者有权限访问所请求的资源,但服务器拒绝执行该请求。这可以是由于对该资源的访问权限被明确拒绝,或者由于请求者没有足够的权限执行该操作。
http1.0与1.1,2的区别
当然!以下是HTTP 1.0、HTTP 1.1和HTTP 2之间的区别:
HTTP 1.0:
💡 HTTP 1.0是最早发布的HTTP协议版本之一。
💡 它是一个简单的请求-响应协议,每个请求都需要建立一个新的TCP连接。
💡 不支持持久连接,每次请求完成后都会断开连接。
💡 不支持请求头部的压缩,因此在请求中可能会有大量重复的信息。
💡 不支持流水线处理,即客户端必须等待服务器响应后才能发送下一个请求。
HTTP 1.1:
💡 HTTP 1.1是HTTP协议的一个重要更新版本,目前仍然广泛使用。
💡 支持持久连接,在单个TCP连接上可以发送和接收多个请求和响应,减少了连接建立的开销。
💡 引入了HTTP头部的压缩,通过使用gzip或deflate等压缩算法来减少请求和响应的大小。
💡 支持流水线处理,允许客户端同时发送多个请求而无需等待响应。
💡 引入了一些新特性,如虚拟主机、分块传输编码等。
HTTP 2:
💡 HTTP 2是HTTP协议的最新版本,于2015年发布。
💡 采用二进制协议而不是文本协议,通过对头部和主体数据进行二进制编码来提高效率。
💡 支持多路复用,通过在同一个连接上同时传输多个请求和响应,提高并发性能。
💡 头部压缩得到了进一步优化,减少了数据传输的大小。
💡 引入服务器推送,服务器可以在客户端请求之前主动推送相关的资源。
💡 支持优先级和流控制,允许客户端指定请求的优先级并避免拥塞。
http协议有哪些方法
GET:从服务器获取指定资源的表示。GET方法是幂等的,即多次调用不应产生副作用。
POST:向服务器提交数据,用于创建新资源。POST方法不是幂等的,每次调用可能会产生不同的结果。
PUT:向服务器发送数据,用于更新指定资源。PUT方法通常用于完整替换资源。
DELETE:从服务器删除指定资源。
HEAD:与GET方法类似,但只返回响应头部,不返回实际数据主体。用于获取资源的元数据或检查资源是否存在。
PATCH:对资源进行部分更新。与PUT方法类似,但只更新指定的字段或属性。
OPTIONS:用于获取服务器支持的HTTP方法和资源的通信选项。
网络延时体现在哪些方面呢
网页加载速度:网络延时会导致网页加载缓慢,用户需要等待较长时间才能完全加载页面内容。
数据传输速度:网络延时会使数据传输速度减慢,导致文件上传、下载、视频流媒体等过程变得缓慢,需要更多的时间才能完成。
实时通信延迟:在实时通信应用程序中,如在线游戏、视频通话或语音聊天,网络延时会导致传输的音频和视频信号有延迟,影响参与者之间的互动体验。
云服务和远程访问:对于使用云服务的用户或需要远程访问服务器或远程办公的用户,网络延时会导致连接变慢,降低工作效率和响应速度。
物联网设备和智能家居:网络延时会影响物联网设备和智能家居的响应速度,如智能灯泡、智能音响等的操作延迟增加。
输入url到显示的全过程( DNS域名解析,三次握手,浏览器是如何渲染的)
-
DNS域名解析:当用户在浏览器中输入URL时,浏览器首先进行DNS域名解析。它会向本地DNS服务器发送一个查询请求,该请求包含要访问的域名。本地DNS服务器会查找域名对应的IP地址并将其返回给浏览器。
-
建立TCP连接:一旦浏览器获得目标服务器的IP地址,它会使用TCP/IP协议的三次握手来建立与服务器的连接。这个过程中,浏览器会发送一个连接请求给服务器,服务器接受请求并回复一个确认,最后,浏览器再发送一个确认给服务器,建立了TCP连接。
-
发送HTTP请求:建立了TCP连接后,浏览器会向服务器发送HTTP请求。这个请求中包含了用户想要获取的资源的信息,例如请求的方法(GET、POST等)、请求头、请求体等。
-
服务器处理请求并返回响应:服务器接收到浏览器发送的HTTP请求后,会根据请求的内容进行相应的处理。处理完毕后,服务器会生成HTTP响应,并将其发送回浏览器。
-
浏览器渲染页面:一旦浏览器收到服务器返回的HTTP响应,它会解析响应的内容。如果响应中包含HTML、CSS、JavaScript等资源,浏览器会根据这些资源开始渲染页面。具体的渲染过程包括解析HTML结构、加载和解析CSS样式,构建DOM树和CSSOM树,执行JavaScript脚本等。
-
显示页面:浏览器根据渲染得到的页面布局和样式信息,将页面内容显示在用户的屏幕上。这包括将文本、图片、视频等内容进行布局排版,并应用相应的样式使其可见。
常用的端口号有哪些
以下是一些常见的端口号及其对应的应用:
21:FTP(文件传输协议)
22:SSH(安全外壳协议)
23:Telnet(远程登录服务)
25:SMTP(简单邮件传输协议)
80:HTTP(超文本传输协议)
443:HTTPS(安全超文本传输协议)
110:POP3(邮局协议版本3)
143:IMAP(互联网消息访问协议)
53:DNS(域名系统服务)
67/68:DHCP(动态主机配置协议)
3306:MySQL数据库服务
3389:远程桌面协议
8080:备用HTTP端口
弱网测试
介绍下tcp的滑动窗口和拥塞控制
2. 测试题
测开和研发的区别,为什么选择测开
测开(测试开发)和研发(开发工程师)是软件开发团队中的两个不同角色,分别负责不同的任务和职责。
职责不同:
测开主要负责编写自动化测试脚本、执行测试用例、分析测试结果等,以确保软件质量。
研发主要负责编写项目功能代码、解决技术问题、开发新功能等。
技能需求不同:
测开需要具备良好的软件测试基础知识,如黑盒测试、白盒测试、性能测试等,以及相关测试工具和技术的熟练掌握。
研发需要具备扎实的编程能力和开发经验,熟悉项目所使用的编程语言、框架和相关技术。
工作重点不同:
测开的主要目标是发现软件中的缺陷和问题,并通过自动化测试减少人工测试的工作量,提高效率。
研发的主要目标是根据项目需求、设计文档等开发出符合要求的功能模块或系统,并保证代码的质量和可维护性。
提前介入阶段不同:
测开在项目开发之初就参与,关注需求文档和设计文档的编写,提出测试建议,并编写测试用例和测试计划。
研发则在需求和设计确定后参与,负责具体的模块或功能的开发,实现项目的具体需求。
需要注意的是,测开和研发在某些情况下可能需要共同合作,例如在开发过程中,测开可以与研发一起制定自动化测试策略和测试框架,研发也可以与测开一起分析测试结果和修复错误。
测试开发的职责
测试开发在质量保障中扮演着重要的角色,对项目开发和项目迭代过程有以下帮助:
自动化测试:测试开发人员可以使用脚本和工具来自动执行各种测试,包括单元测试、集成测试、系统测试等。自动化测试可以提高测试效率和覆盖范围,并减少人为错误和测试漏测的可能性。
提前介入:测试开发人员可以在开发早期参与项目,帮助识别潜在的问题和风险,并在需求定义和设计阶段提供测试的角度和建议。这有助于确保项目在实施之前就考虑到质量要求和规范,减少后期修复的成本和风险。
持续集成与持续交付:测试开发人员可以与开发人员紧密合作,构建持续集成和持续交付的流程。他们可以编写自动化测试脚本,并将其整合到持续集成框架中,以确保每次代码提交后自动运行测试。这有助于尽早发现和解决问题,加快交付速度,同时提供更稳定和可靠的软件版本。
性能和负载测试:测试开发人员可以使用专业工具和技术进行性能测试和负载测试,以模拟和评估系统在不同负载条件下的表现和性能。这可以帮助检测潜在的性能瓶颈,优化系统设计,并确保系统在真实环境中正常运行。
缺陷跟踪和管理:测试开发人员可以使用缺陷跟踪系统,记录和追踪项目中的问题和缺陷。他们可以协助开发人员定位和修复问题,并与团队合作确保问题得到妥善解决。此外,他们还可以进行缺陷分析,检测和报告常见的缺陷模式和趋势,以改进软件质量。
测试的分类,白盒测试和黑盒测试的介绍。
白盒测试(White Box Testing)是一种测试方法,旨在检查软件的内部结构和实现细节。测试人员了解软件的内部逻辑、代码和架构,以设计测试用例和验证程序的正确性。白盒测试通常由开发人员或具有编程经验的测试人员执行。这种测试方法的目标是覆盖尽可能多的代码路径,以发现潜在的错误或漏洞。
黑盒测试(Black Box Testing)是一种测试方法,主要关注软件的功能和行为,而不涉及内部实现细节。测试人员在不了解软件内部设计的情况下,基于预期的输入和输出,设计测试用例并运行测试。黑盒测试侧重于验证软件是否符合规格说明、业务需求和用户期望。这种方法的目标是对软件的外部行为进行全面和独立的测试。
总结起来,白盒测试强调软件的内部结构和覆盖率,侧重点在于代码级别的准确性和优化。而黑盒测试则侧重于功能和用户需求的验证,关注的是软件在用户视角下的行为表现。
水杯的测试用例。
倾倒测试:检查水杯的倾倒性能,包括倾倒角度和流出速度。
承重测试:测试水杯的最大承重能力,以确定其耐久性。
渗漏测试:将水杯充满液体,放置一段时间后检查是否有渗漏。
耐热测试:将热水倒入水杯中,测试其耐高温能力。
耐寒测试:将冷水倒入水杯中,将其放置在低温环境下,测试其耐寒能力。
摔落测试:从不同高度将水杯摔落,检查其是否会破裂或损坏。
清洁测试:测试水杯的清洁性,包括手洗和洗碗机洗涤后的外观和质量是否有变化。
味道测试:倒入水后,测试水杯是否会影响水的味道或产生异味。
安全测试:检查水杯是否有尖锐的边缘或易碎的部分,以确保使用时不会导致伤害。
材料测试:对水杯的材料进行分析和测试,确保符合相关的安全和质量标准。
视频播放器的测试用例
朋友圈评论的测试用例
正常情况下,发表评论:
😄 输入有效的评论内容,并确认评论成功。
空评论:
😕 不输入任何评论内容,确认系统会拒绝发表空评论。
包含敏感词的评论:
😱 输入包含敏感词的评论内容,确认系统会拒绝发表评论或对敏感词进行过滤和处理。
多行评论:
😊 输入多行评论内容,确认系统能够正确处理和显示多行文本。
长评论:
😅 输入超过评论字数限制的内容,确认系统会限制字数或以省略号表示超出字数的部分。
回复评论:
😉 对他人的评论进行回复,确认回复评论的功能正常。
删除评论:
😏 删除自己发表的评论,确认评论被成功删除。
点赞评论:
👍 对他人的评论点赞,确认点赞功能正常。
错误输入:
🤔 输入特殊字符、表情符号或其他非法字符,确认系统能够正确处理并防止错误输入。
并发测试:
😱 在同一时间段内多用户对同一评论进行操作(发表、回复、删除、点赞),确认系统在并发情况下能够正确处理。
抖音评论设计测试用例
发布评论如果页面没有显示会是什么问题
软件测试的流程是什么
测试流程
1、评审版本(版本需要增加的需求评估),软件需求和规格说明书。根据需求定义测试目标和范围。
2、测试计划(分配qa测试需求),制定测试计划,包括测试策略、资源规划和时间安排。
3、编写case(分配给qa测试的需求,进行编写测试方案、测试用例case)
4、case评审(方案评审),case评审通过,把case给开发进行自测,
4.1 case评审时间,开发提测前3天(为什么提前3天,如果产品改需求,或者改方案,)
4.2 如果case没有评审通过,或者出现其他问题(重新编写case,评估评审时间)
4.3 评审通过就可以把case发给开发让他进行自测。
5、提测(提测产品的需求,他们开发5天或者xxxx几天预期多长时间交付提测),提测要求p0-p1的case自测通过(相当于冒烟测试)
5.1 qa进行打包,开始冒烟测试
6、冒烟测试,开发提测后qa进行冒烟测试,测试p0-p2的case
6.1 如果冒烟测试不通过,打回(从新自测,从新提测)
6.2 重新提测后,按照6开始,第二轮测试以此类推、3轮、四轮xxxxx轮
7、进行提交bug,发现bug提交,bug的生命周期、bug的优先级,
7.1 直至当前的需求功能,没有bug为止,进行验收
7.2 编写测试报告
8、验收(UI(设计) 、pm(产品)、运营)验收包含(需求功能、埋点、版本的功能)
8.1 验收通过,发测试报告测试通过
8.2 验收不通过,重新测试,把验收不通过的bugfix,让开发解决,重新验证,关闭后,
重新让产品、UI、运营验收产品需求
9、回归测试(staging、pre、prod)
9.1 回归自己负责的需求