软件测试-2

关于软件测试相关的知识点(基础+重要)

7. 如何划分缺陷和错误的严重性和优先级别

划分的通用原则是:1)表示软件缺陷所造成的危害和恶劣程度 2)优先级表示修复缺陷的重要程度和次序

严重性:
严重:系统崩溃、数据丢失、数据毁坏
较严重:操作性错误、结果错误、遗漏功能
一般:小问题,错别字、UI布局、罕见故障
建议:不影响使用的瑕疵或者更好的实现
优先级:
最高优先级:立即修复,停止进一步检测
次高优先级:在产品发布前必须修复
中等优先级:如果时间允许应该修复
最低优先级:可能会修复,但也可能发布

8. 简述缺陷的生命周期

打开:问题被提交等待有人处理
重新指派:问题被重新指派给某个人处理
处理:处理ing,尚未完成
固定:问题存在,但暂不进行处理
回归:对已经修复额问题进行回归确认
关闭:问题的最后一个状态

9. 怎么测试一个搜索引擎的功能

从功能测试和性能测试两方面入手:

10. TCP的三次握手和四次挥手

TCP 建立连接全过程解释:
1.客户端发生SYN给服务器,表示客户端向服务器请求建立连接;
2.服务端收到客户端的SYN,并回复SYN+ACK给客户端(同意建立连接);
3.客户端收到来自服务器的SYN+ACK后,回复ACK给服务端(表示客户端收到了服务端发的同意报文);
(服务端收到客户端的ACK,连接已建立,可以进行数据传输)

Q1:TCP为什么要进行三次握手?
1)因为信道不可靠,而 TCP 想在不可靠信道上建立可靠地传输,那么三次通信是理论上的最小值。(UDP 则不需建立可靠传输,因此不需要三次握手)
2)因为双方都需要确认对方收到了自己发送的序列号,确认过程最少要进行三次通信
3)为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误

TCP 断开连接全过程解释:
1.客户端发送 FIN 给服务器,说明客户端不必发送数据给服务器了(请求释放从客户端到服务器的连接);
2.服务器接收到客户端发的 FIN,并回复 ACK 给客户端(同意释放从客户端到服务器的连接);
客户端收到服务端回复的 ACK,此时从客户端到服务器的连接已释放(但服务端到客户端的连接还未释放,并且客户端还可以接收数据);服务端继续发送之前没发完的数据给客户端;

3.服务端发送 FIN+ACK 给客户端,说明服务端发送完了数据(请求释放从服务端到客户端的连接,就算没收到客户端的回复,过段时间也会自动释放);
4.服务端收到客户端的 ACK 后,断开从服务端到客户端的连接

Q2:TCP 为什么要进行四次挥手?
因为 TCP 是全双工模式,客户端请求关闭连接后,客户端向服务端的连接关闭(一二次挥手),服务端继续传输之前没传完的数据给客户端(数据传输),服务端向客户端的连接关闭(三四次挥手)。
所以 TCP 释放连接时服务器的 ACK 和 FIN 是分开发送的(中间隔着数据传输),而 TCP 建立连接时服务器的 ACK 和 SYN 是一起发送的(第二次握手),所以 TCP 建立连接需要三次,而释放连接则需要四次。

Q3:为什么 TCP 建立连接时可以 ACK 和 SYN 一起发送,而断开连接时则 ACK 和 FIN 分开发送呢?(ACK 和 FIN 分开是指第二次和第三次挥手)
因为客户端请求释放时,服务器可能还有数据需要传输给客户端,因此服务端要先响应客户端 FIN 请求(服务端发送 ACK),然后数据传输,传输完成后,服务端再提出 FIN 请求(服务端发送 FIN);而连接时则没有中间的数据传输,因此连接时可以 ACK 和 SYN 一起发送。

Q4:为什么客户端断开连接时,最后需要 TIME-WAIT 等待 2MSL 呢?
1.为了保证客户端发送的最后一个 ACK 报文能够到达服务端。若未成功到达,则服务端超时重传 FIN+ACK 报文段,客户端再重传 ACK,并重新计时。
2.防止已失效的连接请求报文段出现在本连接中。TIME-WAIT 持续 2MSL 可使本连接持续的时间内所产生的所有报文段都从网络中消失,这样可使下次连接中不会出现旧的连接报文段。

11. 进程和线程的区别

进程是系统进行资源调度和分配的基本单位;线程是CPU调度的基本单位。
进程 = 资源 (包括寄存器值,PCB,内存映射表)+ TCB(栈结构);线程 = TCB(栈结构)
线程的资源是共享的;进程间的资源是分隔独立的,内存映射表不同,占用物理内存地址是分隔的
线程的切换只是切换PC,切换了TCB(栈结构);进程的切换不仅要切换PC,还包括切换资源,即切换内存映射表

12. 进程有哪些状态

就绪状态:进程已获得除处理机以外的所需资源,等待分配处理机资源
运行状态:占用处理机资源运行,处于此状态的进程数小于等于CPU数
阻塞状态: 进程等待某种条件,在条件满足之前无法执行

13. 线程之间的通信方式

14. 进程间的通信方式

主要分为:管道、系统IPC(包括消息队列、信号量、共享存储)、SOCKET
管道主要分为:普通管道PIPE 、流管道(spipe)、命名管道(name_pipe)
管道是一种半双工的通信方式,数据只能单项流动,并且只能在具有亲缘关系的进程间流动,进程的亲缘关系通常是父子进程
命名管道也是半双工的通信方式,它允许无亲缘关系的进程间进行通信
信号量是一个计数器,用来控制多个进程对资源的访问,它通常作为一种锁机制。
消息队列是消息的链表,存放在内核中并由消息队列标识符标识。
信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
共享内存就是映射一段能被其它进程访问的内存,这段共享内存由一个进程创建,但是多个进程可以访问。(进程间的几种通信方式)

15. 什么是缓存溢出?

缓冲区溢出是指当计算机向缓冲区填充数据时超出了缓冲区本身的容量,溢出的数据覆盖在合法数据上。
危害有以下两点:
1)程序崩溃,导致拒绝额服务
2)跳转并且执行一段恶意代码
造成缓冲区溢出的主要原因是程序中没有仔细检查用户输入。

16. 什么是死锁?死锁产生的条件

通俗的讲就是两个或多个进程无限期的阻塞、相互等待的一种状态。
死锁产生的四个条件(有一个条件不成立,则不会产生死锁)
1)互斥条件:一个资源一次只能被一个进程使用
2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得资源保持不放
3)不剥夺条件:进程获得的资源,在未完全使用完之前,不能强行剥夺
4)循环等待条件:若干进程之间形成一种头尾相接的环形等待资源关系

17、TCP UDP的区别

(1) TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
(2) TCP提供可靠的服务、也就是说,通过TCP连接传输的数据是无差错、不丢失、不重复且按序到达;UDP尽最大努力交付,即不保证可靠交付
(3) TCP的逻辑通信信息是全双工的可靠信息;UDP则是不可靠信息
(4) 每一条TCP连接只能是点对点的;UDP支持一对多、多对一、多对多通信
(5) TCP面向字节流(可能会出现黏包问题),实际上是TCP白数据看成一连串无结构的字节流;UDP是面向报文的(不会出现黏包问题)
(6) UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
(7) TCP首部开销20字节;UDP的首部开销小,只有8字节

18、get 和 post的区别

1)get重点在从服务器上获取资源,post重点在向服务器发送数据;
2)get传输数据是通过URL请求,以field(字段)= value的形式,置于URL后,并用"?“连接,多个请求数据间用”&"连接;post传输数据通过Http的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的;
3)get传输的数据量小,因为受URL长度限制,但效率较高;Post可以传输大量数据,所以上传文件时只能用Post方式;
4)get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等;post较get安全性较高;
5)get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。post支持标准字符集,可以正确传递中文字符。

19、http 和 https 的区别

 https协议需要到CA(Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。
 http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
 http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
 http的连接很简单,是无状态的。Https协议是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)

20、http 和 https 输入一个url的过程

http
(1) 浏览器获取输入的域名www.baidu.com
(2) 根据dns解析得到 域名对应的ip地址
(3) 得到ip地址之后,根据http协议,将ip地址封装成报文,进行http请求【应用层】
(4)到了传输层,选择tcp/udp连接方式:tcp对http请求进行封装,加入端口号信息【传输层】
(5)到了网络层,根据协议将ip地址封装成ip报文,然后根据arp协议得到目的地的mac地址【网络层】
(6)到了链路层,将网络中传下来的ip报文加上首部/尾部,封装成mac帧,mac地址进行tcp三次握手连接【链路层】
(7)建立连接,传送字节流,接收端收到物理层上交的比特流,根据首尾标记,识别帧的开始和结束,将中间的数据部分上交到网络层,然后层层向上传递到应用层【物理层】
(8)服务器接收到请求,处理之后传回客户端
https
(1) 浏览器获取输入的域名www.baidu.com
(2) 浏览器向域名系统DNS请求www.baidu.com的IP地址
(3) DNS解析出百度服务器的IP地址
(4) 浏览器发起往服务器的443端口发送请求,请求携带了浏览器支持的加密算法和哈希算法(第一次请求)
(5) 服务器收到请求,选择浏览器支持的加密算法和哈希算法
(6) 服务器将数字证书返回给浏览器
(7) 浏览器进入数字证书认证环节
(8) 随机生成密钥R
(9) 用公钥加密密钥R发送给服务器 (第二次请求)
(10) 服务器用私钥解密,获取密钥R
(11) 使用R加密网页发送给浏览器
(12) 浏览器解密R获取网页内容

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值