软件测试工程师 | 2022春招笔试/面试题整理

【校招】测试工程师知识点

  • 【计算机基础知识】
    • 1.ISO/OSI模型
    • 2.HTTP(超文本传输协议)
      • ①HTTP与HTTPS
      • ②HTTP是无状态的
      • ③HTTP的连接
      • ④HTTP请求
      • ⑤HTTP状态码
    • 3.UDP/TCP区别
    • 4.TCP协议深挖
    • 5.进程通信的方式
    • 6.C/S,B/S区别li>
    • 7.死锁产生的必要条件li>
    • 8.队列和栈的区别li>
    • 9.B树和B+树的区别
  • 【数据库】
    • 1.范式
    • 2.MySQL引擎
    • 3.灾备
    • 4.char和varchar的区别
    • 5.关系型数据库&非关系型数据库
    • 6.索引
    • 7.事务:原子性 隔离性 持久性 一致性
    • 8.drop,truncate,delete区别
  • 【Linux】
  • 【Python基础】
    • 1.python的数据类型
    • 2.list和tuple区别
  • 【测试理论】
    • 软件生命周期
    • 软件质量模型
    • 软件测试流程
    • 测试用例构成
    • 缺陷要素
    • 缺陷的等级
    • 你觉得测试和测开的区别是什么li>
    • postman的使用:接口依赖
    • 如果你提交的bug开发不认可li>
    • 如果没有接口文档li>
    • 综合题:如何测试一个杯子li>

面试感受:
一面:侧重计算机基础知识或侧重软件测试相关知识(取决于公司)
二面:几乎都会深挖项目(以及聊天)
HR面:学校参加的活动(非技术类)+解压方式+预期薪资+兴趣爱好+期望城市(旁敲侧击工作稳定性)

总结:
1.简历认真写,大部分面试官会围绕简历提问,不熟悉的课程和项目就直接删掉,把自己熟悉的表达清楚。
2.多看笔试面经,了解公司的提问侧重点。
3.面试前了解公司的主要业务,准备几个有针对性的反问。

【计算机基础知识】

主要涉及:《计算机 络》《数据结构》《计算机操作系统》
ps:没被问到过计组

1.ISO/OSI模型

ISO:国际标准化组织 (International Organization for Standardization)
OSI:开放系统互联(Open System Interconnection)

OSI七层 协议
7-应用层 FTPSMTPHTTPDNS
6-表示层 JPEG、ASCII
5-会话层 ADSP、ASP
4-传输层 TCPUDP
3- 络层 IP、IPX、ICMP、IGMP、ARP、RARP、OSPF
2-数据链路层 SDLC、HDLC、PPP、STP
1-物理层 Rj45、802.3

2.HTTP(超文本传输协议)

①HTTP与HTTPS

HTTP:明文传输,很容易被攻击者窃取重要信息。80端口。
HTTPS = HTTP + SSL,是以安全为目标的HTTP通道。443端口。可进行加密传输、身份认证。

②HTTP是无状态的

HTTP是一种无状态协议,即服务器不保留与客户交易时的任何状态。
服务器无法支持需要连续多个步骤的事务操作,于是出现了 Cookie 技术。

③HTTP的连接

HTTP:HTTP本身无连接,TCP作为运输层协议。

HTTP连接方式:短连接vs长连接

HTTP/1.0:短连接。
客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。

HTTP/1.1:长连接。在响应头加入Connection:keep-alive。
页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。

HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。

④HTTP请求

HTTP总共有8中请求方法,最常用:get和post。
GET传输数据的时候是在URL地址中的。对所有人都可见,因此不安全。
POST传输的时候是放在HTTP的请求体之中的,并且经过urlencode编码,相对安全。
GET只能传输ASCII字符,不能进行编码。
POST没有对数据类型的限制。
HTTP协议并没有对GET和POST的长度做限制,其实是浏览器限制了他们传输大小。
URL地址是有长度限制的,浏览器不同长度限制的具体数值也是不一样的。
理论上来说POST的长度是没有限制的,但是受服务器的配置限制或者内存大小的限制,实际开发中POST也是有数据长度的限制的。

⑤HTTP状态码

1xx 通知信息
2xx 成功 200OK 202Accepted
3xx 重定向 301/302 movedpermanently 永久移除
4xx 客户差错 400bad request 请求语法错误
5xx 服务期差错

3.UDP/TCP区别

UDP TCP
不可靠 可靠
无连接 面向连接
时延小 时延大
适用于小文件 适用于大文件

4.TCP协议深挖

为什么是三次握手p>

为什么四次挥手最后要等2MSLp>

5.进程通信的方式

6.C/S,B/S区别h2>

7.死锁产生的必要条件h2>

1.互斥条件
2.不可剥夺
3.请求与保持
4.循环等待

8.队列和栈的区别h2>

9.B树和B+树的区别

【数据库】

1.范式

R∈1NF:关系模式R中不包含多值属性;
R∈2NF:非主属性完全函数依赖于R任何一个候选码,R∈1NF(消除部分依赖)
R∈3NF:每一个非主属性都不传递依赖于任何候选码,R属于2NF
BCNF:每一个决定因素都包含候选码。

2.MySQL引擎

①InnoDB:支持事务处理,支持外键,支持崩溃修复能力和并发控制。
适合:对事物完整性要求高(银行),要求实现并发控制(售票),频繁更新、删除(因为支持事务的提交和回滚)
②Myisam:插入数据快,空间和内存使用比较低
适合:表主要用于插入新纪录和读出记录
③Memory:数据都存在内存中,处理速度快,安全性不高。
适合:很快的读写速度,安全性要求低

3.灾备

RTO,RPO

4.char和varchar的区别

5.关系型数据库&非关系型数据库

6.索引

帮助mysql高效获取数据的数据结构,存储在磁盘上的文件中【B+树】

7.事务:原子性 隔离性 持久性 一致性

8.drop,truncate,delete区别

【Linux】

#查看日志:
cat 文件名
more 文件名 #分页查看
less 文件名 #分页查看
head -n 10 文件名 #查看头几行
tail -n 10 文件名 #查看尾部几行

cat 文件名 | grep ‘关键字’ #过滤筛选

#查看进程
ps -ef
ps -ef | grep 进程PID/进程名称
ps aux | grep 进程PID/进程名称 #查看具体某个进程的详细信息,包括CPU,内存占用情况
top | grep 进程PID/进程名称 #动态实时查看进程的情况
Kill -9 进程PID #杀死进程

#修改文件权限
chmod -R 777 文件名 #讲某个文件修改为可读可写可执行

#查看端口
netstat -anp | grep 端口 #根据端口 查看被哪个进程占用了
netstat -anp | grep 进程名称/进程PID #根据PID或进程名称查看进程占用的端口

#解压命令
tar -xvf xxx.tar
tar -jxvf xxx.tar.gz
tar -zxvf xxx.tar.bz2

【Python基础】

1.python的数据类型

  • Number(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Set(集合)
  • Dictionary(字典)

2.list和tuple区别

  1. 列表可以修改,元组不可以修改;列表就相当于一个动态数组,而元组是一个静态数组。
  2. 从设计上说,列表是用来保存多个相互独立对象的数据集合,而元组设计的初衷就是为了描述一个不会改变的事物的多个属性。
  3. 列表的声明用[ ],元组的声明用( ),并且元组只有一个元素的时候需要在后面加逗 。

【测试理论】

软件生命周期

  • 软件计划与可行性研究阶段(问题定义、可行性研究)
  • 需求分析阶段
  • 软件设计阶段(概要设计和详细设计)
  • 软件编码阶段
  • 软件测试阶段
  • 软件运行与维护阶段

软件质量模型

软件测试工程师 | 2022春招笔试/面试题整理

软件测试流程

①需求澄清
②测试准备(需求分析,提炼测试点,编写测试用例)
③测试执行(搭建测试环境,项目部署,冒烟测试,执行用例)
④BUG基本修完,写测试 告,上线

测试用例构成

  • 用例编 (唯一)
  • 所属模块(表明测试的需求属于哪个模块)
  • 用例标题(简明扼要的描述测试的内容)
  • 优先级(为了应对风险 ,高:基本流和部分备选流,中:部分备选流,低:测试数据为覆盖无效等价类的测试用例)
  • 前置条件(正常执行测试时所必备的条件 )
  • 操作步骤(详尽完成的操作步骤)
  • 测试数据
  • 预期结果
  • 测试用例执行的结果:
    notest 未执行
    pass 通过
    fail 失败(提交缺陷)
    block 阻塞

缺陷要素

  • 标题
  • 所属模块
  • 严重等级
  • 发现版本
  • 测试环境
  • 重现步骤(详细)
  • 预期结果
  • 实际结果
  • 附件(截图,日志文件)
  • 状态
  • 测试人员

缺陷的等级

  • 致命:程序无法运行,程序异常中断,主要功能缺失或异常;
  • 严重: 软件的次要功能丧失,或者主要功能在一些特定情况下会出错;
  • 一般: 软件在某些情况下会出错,但是造成的后果影响不大;
  • 轻微:在某些情况下会出错,但是造成的后果影响很小。

你觉得测试和测开的区别是什么h2>

测试:传统的产品需求验证
测试开发:开发工具,写脚本,做平台来辅助支撑测试工作,优化测试路径。

postman的使用:接口依赖

(结合自己的项目经历)
接口间的依赖,通常是某个接口调用时的参数来自之前其它接口调用的返回结果。
在前面接口的Tests里面通过js脚本,首先将返回结果转换成json对象,提取所有需要的字段值,将其设置为环境变量,在后续接口当中需要用到该变量的地方通过两对{{}}来引入环境变量的值。

如果你提交的bug开发不认可h2>
  1. 先找开发沟通,了解不认可原因是什么,根据原因去具体的处理;
  2. 如果需求方面的问题,先沟通,沟通不了由产品确认。
  3. 如果是测试数据、测试环境等导致的,根据开发的建议,换测试环境,测试数据再复测,如果还有问题,再与开发沟通
  4. 如果是开发不能重现,检查提交的Bug步骤是否清晰,自己先复测,确保还有问题,重新提交把步骤写详细。

如果没有接口文档h2>

通过抓包工具,来捕获接口调用的 络数据,分析接口的地址,请求方法,参数,返回值。
和开发进行确认,然后整理接口文档,编写接口测试用例,对接口进行测试。

综合题:如何测试一个杯子h2>

我认为可以从以下几个方面进行测试:

  • 功能测试:关注水杯基本功能
    水杯是否可以正常装水
    水杯是否可以正常喝水
    水杯是否有盖子,盖子是否可以正常盖住
    水杯是否有保温功能,保温功能是否正常保温
    水杯是否会漏水,盖住盖子拧紧后是否会漏水

  • 界面测试:关注水杯外观、颜色、设计等
    外观是否完整
    外观是否舒适
    颜色搭配及使用是否让人感到舒适
    杯子外观大小是否适中
    杯子是否有图案,图案是否易磨损

  • 易用性测试:关注水杯使用是否方便
    水杯喝水时否方便
    水杯装水是否方便
    水杯携带是否方方便
    水杯是否有防滑功能
    水杯装有低温或者高温水时,是否会让手感到不适

  • 性能测试:
    水杯装满水时,是否会露出来
    水杯最大使用次数
    水杯的保温性是否达到要求
    水杯的耐寒性是否达到要求
    水杯的耐热性是否达到要求
    水杯掉落时时,是否可以正常使用
    水杯长时间放置时,是否会发生泄露

  • 兼容性测试:
    水杯是否可以装其他液体,如果汁、汽油、酒精等

  • 可移植性测试:关注水杯放置环境等
    将水杯放在常温环境中,使用是否正常
    将水杯放在零下的环境中,使用是否正常
    将水杯放在高于正常温度的环境中,使用是否正常

  • 安全性测试:关注水杯外观和各种异常条件下是否释放有毒物质等
    当水杯装满热水时,水杯是否会烫手
    当水杯装上水后,是否会产生有毒物质
    把水杯放在零下环境时,是否会产生有毒物质
    把水杯放在高温环境时,是否会产生有毒物质

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年3月8日
下一篇 2022年3月8日

相关推荐