软件测试面试题总结(四)- 服务端知识

持续更新参加面试过程中,遇到的软件测试相关的面试题,包括:项目管理、测试理论、python基础、数据库、团队管理等等。 

1. 一些常用的Linux 指令

1. tail 从文件尾打印(head 从文件头开始打印)
-n 行数
-c 字节数
tail -n 100 xx.log | grep "xx"
tail -f xx.log
2. tar 解压缩文件
tar -zcvf xx 压缩文件
tar -zxvf xx 解压文件 
3. scp 服务器上传下载文件
scp 本地 服务器
scp 服务器 本地
4. ps 查找进程
ps aux | grep "java"
lsof -i: port --- 查找进程
5. kill
kill -9 pid (强制)
kill -15 pid (默认)
6. chmod 修改文件权限
r --- 100 ---- 4
w --- 010 ---- 2
x --- 001 ---- 1
chmod 777 xx(可读可写可执行)
7. grep
grep -E 同时匹配多个关键字–或关系
grep -E "word1|word2|word3" file.txt

同时匹配多个关键字–与关系
grep word1 file.txt | grep word2 |grep word3
必须同时满足三个条件(word1、word2和word3)才匹配。

显示该行数字加多50行
grep -A 50 431e932841f9486a96c930ccbc8ddd5d target-lps_err.log 

2. 一次完整的请求 

  1. 域名解析
  2. 建立tcp连接
  3. 发起http请求
  4. 服务器响应http请求,返回html代码
  5. 浏览器根据html代码构建dom树,并下载相应的资源
  6. 浏览器渲染页面,呈现给用户
HTTP                                                    ---- 请求头内容
GET /home.html HTTP/1.1                                 ---- 请求方式、HTTP版本(1.0/1.1)
Host                                                    ---- 服务器域名
User-Agent                                              ---- 浏览器身份字符串
Accept                                                  ---- 能够接受的回应内容类型
Accept-Language                                         ---- 
Accept-Encoding                                         ---- 
Content-Type                                            ---- 参数类型
Connection: keep-alive                                  ---- 长短连接

 3. HttpRunner

  1. debugtalk.py文件,用于存储自定义的python函数,在测试用例中调用的函数均在此文件中定义
  2. 函数引用:${debugtalk函数(函数入参)}
  3. 校验 validate
  4. 导出变量供全局使用(参数关联) export 

4. 长短连接

短连接:建立连接-数据传输-关闭连接…建立连接-数据传输-关闭连接

长连接:建立连接-数据传输…(保持连接)…数据传输-关闭连接

 长连接可以省去较多的tcp建立和关闭连接的操作,减少浪费,节约时间。但如果client和server的连接一直不关闭的话,也会存在问题:随着客户端连接越来越多,服务器早晚有扛不住的时候

connection: keep-alive

5. OSI 七层协议

应用层: HTTP

表示层

会话层

传输层:TCP、UDP

网络层:IP

数据链路层

物理层

6. TCP和UDP 

tcp和udp协议都是传输层协议,tcp(传输控制协议)、udp(用户数据报协议)。udp只需要发送两个报文:请求包和响应包;tcp需要握手三个包、请求包、响应包、挥手四个包,共9个包,相比之下udp效率更高,传输速度会更快。 

  • tcp基于连接提供的是可靠的传输,基于连接也说明需要的时间更长,应用于需要可靠性高的场所:http请求、文件传输等
  • udp不基于连接,但是传输速度快,应用于对网络通信要求快的场合:语音电话、视频、直播等

7. http和https的区别 

  1. https相对http更安全,数据在传输过程中是加密的,接受者接收到数据需要先解密
  2. 端口不一样,https端口443,http端口80
  3. 使用https 需要到ca申请证书,证书一般不免费
  4. https是基于http,额外增加了TLS/SSL连接加密,所以https相对http传输慢,http只需要传输tcp握手的三个包,https需要12个包(还需要ssl连接的9个包),会更耗浏览器的资源
  5. 用途不一样:http用于信息共享网站。比如博客;https用于保护性要求更高的网站,比如电商

8. post和get请求方式的区别 

 💡 http的底层是tcp/ip,get和post只是http请求的两种方式

  1. 设计用途不一样:get用于数据查询;post用于数据提交或更新
  2. 是否缓存不一样:get可以缓存;post仅当包含新信息时可以缓存
  3. 传参方式不一样:get可以通过url传参,参数长度有限制,只能传递字符串类型(当然也可以通过request body传参);post通过request body传参,参数类型多样,长度无限制
  4. http请求就是不安全的,这里讨论的安全性指get请求,参数在url直接暴露,post的传惨在request body里,抓包也可以看到
  5. 传递的数据包不一样(至关重要):get产生1个tcp数据包,post产生2个数据包
  • 对于get请求,浏览器会把http header和data一并发送出去,服务器响应200
  • 对于post请求,浏览器先发送header,服务器响应100(continue),浏览器再发送data,服务器响应200(ok)返回数据 

9. http状态码

1xx信息,表示临时响应并需要请求者继续执行操作
2xx成功,操作被成功接收并处理
3xx表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向
4xx客户端错误,请求包含语法错误或无法完成请求
5xx这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错

301:永久重定向

302:临时重定向

400: 请求错误

401: 未授权

403: 禁止访问

404: 服务器找不到请求的网页

500: 服务器内部错误

502: 错误网关

503: 服务不可用

504: 网关超时 

10. session和cookie的区别 

session的工作原理

  1. 用户第一次请求服务器时,服务器会生成一个seesionid
  2. 服务器将生成的seesionid返回给客户端
  3. 客户端收到sessionid并将它保存在cookie中,当客户端再次访问服务器会带上这个sessionid
  4. 当服务端再次收到来自客户端的请求,会先去检查是否存在这个sessionid,如果不存在重复1、2流程,如果存在就去遍历服务端的session文件,找到这个sessionid相对应的文件,文件里的键值便是sessionid和用户的一些信息
  5. 此后的请求都会交换这个sessionid,进行有状态的会话

session和cookie的区别

  • 数据存放位置不同
    • session 存放在服务器上
    • cookie 存放在客户浏览器上
  • 安全性不同
    • cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺诈,考虑到安全性应该使用session
  • 性能使用程度不同
    • session会在一定时间保存在服务器上。当访问增多,会比较占服务器的性能,考虑到减轻服务器性能,应该使用cookie
  • 数据存放大小不同
    • 单个cookie保存的数据不能超过4K,而且很多浏览器都限制了单个站点最多保存20个cookie
    • session并没有上限,但从服务器的性能来说,session内不要存放过多的东西,并且设置session删除机制
  • 会话机制不同
    • session会话机制是一种服务器端机制,他使用类似哈希表的结构来保存信息
    • cookie是服务器存储在本地计算机上的小块文本,并随每个请求发送给同一服务器

11. 服务器性能 

1. 响应时间
2. 并发数
最佳并发数 随着并发数的增加,TPS不再相应增加,并且响应时间持续增加
3. 系统处理能力
TPS(系统吞吐率):在服务器性能没有达到瓶颈的情况下,TPS=并发数/响应时间
QPS:每秒查询率
4. 错误率
5. 资源使用率 CPU占用率、内存使用、负载、网络IO
总结:在并发数达到一定的数之后,系统的吞吐量不再上升,反而随着压力增加,系统吞吐下降,
原因是系统超负载工作,上下文切换、内存等其他消耗导致性能下降

CPU
4核8G
8核16G

2000万日活

使用jmeter测试服务器性能,将jmx脚本上传到服务器执行生成jtl脚本,本地查看性能结果,使用本地jmeter压测容易达到本地主机的瓶颈,数据不可靠。jmeter -n -t xx.jmx -l xx/xx.jtl

持续更新...... 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值