2024年软件测试常见面试题100%问必背全套教程_应届软件测试面试

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
img

正文

1. 原理:迅速搭建一个可以运行的软件原型,以便理解和澄清问题,使开发人员与用户达成共识,最后在确定需求基础上开发客户满意的软件产品
2. 特点:`适合预先不能确切定义需求的软件系统的开发`
3. 优点: ` 克服瀑布模型缺点,减少由于软件需求不明确带来的开发风险 `

  1. 增量模型(最常用开发模型之一)

在这里插入图片描述

分批次地分析、设计、编码和测试这些增量组件。

  1. 迭代模型 开发进度快

在这里插入图片描述

1. 原理
	`强调开发的深入 ---优化过程
	`开发迭代是一次完整地经过所有工作流程的过程:需求分析、设计、实施和测试工作流程
2. 优点
	降低在一个增量上的开支风险
	降低产品无法按照既定进度进入市场的风险
	加快开发工作进度`
	适应需求变化快的场景`

6. 螺旋模型

在这里插入图片描述

1. 原理:
   兼顾了快速模型的迭代的特征以及瀑布模型的系统化与严格监控
2. 优点
	最大特点:引入其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减少损失
	适合大型昂贵的系统级的软件应用

1.3 软件测试模型

  1. v模型

在这里插入图片描述

1. 原理:揭示开发过程和测试过程中各阶段的对应关系
2. 缺点与不足:
	仅把测试过程作为需求分析、系统设计及编码之后的一个阶段,忽略了测试对需求分析、系统设计的验证
	需求的满足情况一直到后期验收测试才被验证
	没有体现出“尽早和不断地进行软件测试”原则

2. w模型

在这里插入图片描述

1. 由两个 v 字模型组成,分别代表测试与开发过程,明确表示了测试与开发并行关系
2. 优点:
	测试活动与软件开发同步进行
	测试对象不仅是程序,包括需求与设计
	尽早发现软件缺陷可降低软件开发成本
3. 局限性:无法支持迭代开发模型(没有循环过程)

  1. h模型

在这里插入图片描述

1. 将测试活动完全独立出来,形成一个完全独立的流程
2. 只要测试条件成熟了,测试准备活动完成了,测试执行活动就可以进行了
3. 软件测试要尽早准备,尽早执行,不同测试活动可按某个次序先后进行,也可反复进行(迭代)

4. x模型

在这里插入图片描述

1. 针对单独的程序片段进行相互分离的编码和测试;
2. 定位了探索性测试,这是不进行事先计划的特殊类型的测试;

  1. 软件测试生命周期
    获取测试需求
    编写测试计划
    制定测试方案
    开发与设计测试用例
    执行测试
    提交缺陷报告
    测试分析与评审
    提交测试总结
    准备下一版本测试

  2. 简述缺陷的生命周期? 面试重点

软件测试人员提交缺陷报告;
测试负责人审核后将缺陷分配给相关开发人员修复
缺陷被修改后有测试人员根据缺陷报告中修改记录进行返测
返测通过的缺陷由负责人关闭;
返测未通过的缺陷直接返回给开发人员重新修改,然后再由测试人员返测,直到测试和开发达成一致处理意见。
1.4设计用例方法

  1. 黑盒测试

等价类划分法
将系统的输入域划分为若干部分,然后从每个部分选取少量代表性数据进行测试。等价类可以划分为有效等价类和无效等价类
边界值分析法
是通过优先选择不同等价类间的边界值覆盖有效等价类和无效等价类来更有效的进行测试,因此该方法要和等价类划分法结合使用。
正交试验法
正交是从大量的试验点中挑选出适量的、有代表性的点
状态迁移法
是对一个状态在给定的条件内能够产生需要的状态变化,有没有出现不可达的状态和非法的状态
判定表分析法
判定表是分析和表达多种输入条件下系统执行不同动作的工具,
因果图法
因果图是用于描述系统输入输出之间的因果关系、约束关系。
2. 白盒测试

静态:
动态:逻辑覆盖法,程序插桩技术,基本路径法,符号测试,错误驱动测试
1.5 测试分类
1.按开发阶段划分
单元测试(模块测试)
针对软件设计的最小单位—程序模块进行正确性校验的测试工作。
目的:检查每个程序单元能否正确实现详细设计说明中的模块功能、性能、接口和设计约束等要求,发现各模块内部可能存在的各种错误。
单元测试需要从程序内部结构出发设计测试用例
多个模块平行独立地进行单元测试
集成测试(组装测试): 有序、递增的测试,持续不断的过程,持续时间比较长
在单元测试基础上,将所有程序模块进行有序、递增的测试。
基础测试是检验程序单元或部件的接口关系,逐步成为符合概要设计要求的程序部件或整个系统
确认测试(有效性测试)----时间短
在模拟环境下,验证软件所有功能和性能及其他特性是否与用户预期要求一致。
系统测试:
在真实系统运行环境下,检查完整的程序系统能否和系统(硬件、外设、网络和系统软件、支持平台)正确配置、连接,最终满足用户的所有需求
验收测试
按项目任务书或合同、供需双方约定的验收依据文档进行的对整个系统的测试与评审,决定是否接收或拒收系统;
2.按测试技术划分
黑盒测试(80%)
通过软件外部表现来发现其缺陷和错误。黑盒测试把测试对象看出一个黑盒子,完全不考虑程序内部结构和处理过程。在程序界面处进行测试,只是检查程序是否按照需求规格说明书的规定正常实现
白盒测试(结构测试):不管黑盒测试做得有多完全,白盒测试也有必要做
通过对程序内部结构和分析、检测来寻找问题。
把测试看成一个透明的盒子里,检测是否所有结构及路径都是正确的,检查软件内部动作是否按照设计说明的规定正常进行
灰盒测试(接口测试)
关注输出对输入的正确性
3. 按代码运行划分
静态测试:不实际运行被测对象,而是静态检查程序代码、界面或文档中可能存在错误的过程
代码测试:主要测试代码是否符合相应的标准和规范
界面测试:主要测试软件的实际界面与需求中的说明是否相符
文档测试:主要测试用户手册和需求说明是否真正符合用户的实际需求
动态测试: 实际运行被测对象,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程,所以我们判断一个测试属于动态还是静态测试,唯一标准就是看是否运行程序
4. 按软件特性
功能测试(黑盒测试):黑盒测试一方面,检查实际软件功能是否符合用户需求
性能测试:关注软件中某一功能在指定的时间、空间条件下,是否使用正常
主要有时间性能和空间性能
安全性测试:验证按在系统内的包含机制能否在实际应用中对系统进行保护使之不被非法入侵,不受各种因素干扰
5. 其他测试
回归测试:对软件新版本测试时,重复执行之前某一个重要版本的测试用例(测试过程)
目的:验证之前版本产生所有缺陷是否已被修复;确认修复这些缺陷没后引发新的缺陷
冒烟测试(可行性测试):先验证一下软件基本功能是否实现,在对一个新版本进行系统大规模测试
02shell编程和命令部分
2.1shell常用命令

  1. 怎么用shell命令查看行号

获取文本对应文本的行号,可以用grep,也可以用sed
grep -n “xxx” a.txt | cut -d “:” -f 1
sed -n -e ‘/xxx/=’ a.txt
2. 怎么查进程id

shell获取进程ID的方法有三种:
1、ps -A |grep “cmdname”| awk ‘{print $1}’
2、pidof “cmdname”
3、pgrep “cmdname”
3. 网络相关常用命令

ifconnfig:查看网卡配置信息
route显示路由表
netstat:查看本地计算机所使用的网络服务状况
ping:测试本地计算机与目标主机是否连接 如ping 127.0.0.1
4. linux查看进程

ps a 显示现行终端机下的所有程序,包括其他用户的程序。
ps u 以用户为主的格式来显示程序状况。
ps x 显示所有程序,不以终端机来区分。
最常用的方法是ps -aux
5. top

用于实时显示 process 的动态。
语法:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
6. 查看磁盘

df命令参数功能:检查文件系统的磁盘空间占用情况
du:检查磁盘空间使用量
fdisk:用于磁盘分区
7. 查看端口号、进程的指令是?动态查看日志的指令?怎么判断一个端口存不存在,磁盘满了怎么处理,删除一个目录下的txt文件,你还熟悉其他什么linux指令?

查看端口号命令:
netstat –tunlp|grep 端口号
lsof -i:端口号
查看进程指令
ps -ef |grep 进程
-e  显示所有程序。
-f   显示UID,PPIP,C与STIME栏位。
动态查看日志
1、先切换到:cd usr/local/tomcat5/logs
2、tail -f catalina.out
2.2 linux三剑客:grep、sed、awk 、[find]
grep:指定文件中搜索特定的内容,并将含有这些内容的行标准输出
格式:grep [options] 文件名
[options]主要参数:
-c:只输出匹配行的计数
-i:不区分大小写(只适用于单字符)
-h:查询多文件时不显示文件名
-l:查询多文件时只输出包含匹配字符的文件名
-n:显示匹配行及行号
-s:不显示不存在或无匹配文本的错误信息
-v:显示不包含匹配文本的所有行
-e:使用正则匹配
-E:使用扩展正则
–color=auto:将
sed 流文本编辑器
awk 文本和数据处理,
find作用是在目录中搜索文件,它的使用权限是所有用户。
格式:find [path][options][expression]
path指定目录路径。它是一个路径列表,相互用空格分离,如果不写path,那么默认为当前目录。
03 数据库部分
3.1概念

  1. 主键: 主关键字primary key
    针对一个表来说的,主键修饰的列:唯一,不能重复,不能为空;一个表中只能只有一个主键

  2. 外键:
    针对两个表来说,加强表与表之间联系

  3. 关系模型的规范化: 关系模式要满足的条件称为规范化形式,范式(NF)

目的:消除储存异常,减少数据冗余,保证数据完整性和存储效率
如果关系 R 的所有属性均为简单属性,每个属性是不可再分的(无重复的列),则 R 满足第一范式
第二范式(2NF):关系 R 满足第一范式,每一个非主键关键字段完全依赖于主键,则称 R 满足第二范式
第三范式(3NF):关系 R 满足第二范式,且非关键字段之间不存在依赖关系,则称满足第三范式。(从表只能引用主表中一个列)
总结:一个基本的关系型数据库,需要满足第一范式;一个完整的关系型数据库要满足第三范式
4. 唯一约束

特征:
不允许出现重复的值,但是可以为多个 null
同一个表中可以有多个唯一约束
如果不给唯一约束名称,就默认和列名相同
5. 非空约束

格式: 列名 数据类型 not null
一个表里面也可以有多个非空约束
6. 默认约束 default 一个表中可以有多个默认约束

  1. 外键约束

表的外键值必须在主表中能找到
当主表记录被从表参照时,主表的记录将不允许删除
如果要删除数据,需要先删除表中依赖该记录的数据(删从表记录)
主表:被引用的表(被参照的表) zhu
从表:应用的表 外键约束建立在表里面 cong
被引用的列,要么主键约束,要么唯一约束
注意:在引用过程中,主表和从表的来个两个列的数据必须保持一致。(内容也要保持一致)
8. 检查约束
描述:限制某个列的取值范围 年龄 18-25 性别:要么男或女

  1. 主键、外键作用,索引的优点与不足

主键
表中的唯一标示键
作用:保证实体的完整性,加快数据库的操作速度。
外键:主键的从属,表示两个表之间的联系
作用:作用外键可以建立数据之间的关联,避免冗余
索引:
优点
通过创建唯一性的索引,保证表中数据唯一性
加速数据的检索速度
加快表与表之间的连接
使用优化隐藏器,提供系统性能
缺点:
创建索引需要时间,
索引需要占用物理空间
当对表中数据进行修改时,索引也要动态维护,减低数据的维护速度。
3.2表结构操作

  1. 表的创建语法
   create table 表名(
   属性名1 数据类型 [约束条件],
   属性名2 数据类型 [约束条件],
   属性名3 数据类型 [约束条件]
   );

  1. 删除表
    drop table 表名;

  2. 删除多个表
    drop table 表名 1,表名 2 …

1.修改表结构

  1. 添加列(属性)
    alter table 表名 add 属性名 数据类型;

  2. 删除表(属性)
    alter table 表名 drop 属性名;

  3. 修改属性:数据类型
    alter table 表名 modify 属性名 数据类型;

  4. 修改字段名
    alter table 表名 change 旧字段名 新字段名 数据类型;

3.3数据库增删改查
create alter drop desc主要针对表结构来说的
insert delete update select 主要针对表中的数据来进行操作的
3.1.1 DML-INSERT
insert 插入 值和列一一对应关系

格式 1:
insert into 表名(列名 1,列名 2 …) values(值 1,值 2 …);
格式 2:
insert into 表名 values(值 1,值 2 …);
格式 3:
insert into 表名 values(值 1,值 2,值 3 …),(值 1,值 2,值 3 …);
3.1.2. 删除 delete
格式 1:代表清空表内的数据
delete from 表名;
格式 2:
有条件的进行删除:delete from 表名 where 条件;
3.3.3 DML–UPDATE 更新
格式 1
update table_name set 字段=值;
格式 2
update table_name set 字段=值,字段=值;
格式 3
update table_name set 字段=值,字段=值 where 条件;
3.3.4. select 查询
1.基本格式:

select 列名 from 表名;
select 列名 1,列名 2,列名 3 … form 表名;

  1. 使用关键字 distinct 查询

在查询返回结果中删除重复行
语法:select distinct 列名称 from 表名称;
只针对一个列去重
2. 使用别名查询

根据需要对数据显示的标题进行修改
格式:select 列名1 ‘别名’,列名2 ‘别名’,… from 表名;
AS 关键字连接列表达式和指定的别名
select 列名 as ‘别名’ from 表名;
3. 条件查询

格式:select 列名 from 表名 where 条件;
如果在查询过程中,有多个条件,可以使用 and 或 or 进行连接
and 连接 —》同时满足; or 连接 ------只满足其一
4. 范围搜索范围

在范围之内
select 列名 from where 列名 between 开始值 and 结束值
不在范围之内
select 列名 from 表名 where 列名 not between 开始值 and 结束值;
5. 列表搜索条件

in: 只要匹配到括号里任意一个值就会有查询结果;
格式:select 列名 from 表名 where 列名 in (值 1,值 2,值 3 …)
not in:
格式: select 列名 from 表名 where 列名 not in(值 1,值 2,值 3);
3.4 数据库表连接查询:子查询、内连接、外连接

  1. 多表查询

去重
显式

	 select [distinct] A.列名,B.列名,C.列名,... from C 
	 join A on A.key=C.FKeyA 
	 join B on B.key=C.FKeyA and B.key=A.key
	 [GROUP BY 字段名]

隐式

	select [distinct] A.列名,B.列名,C.列名,... from 表A,
	表B,
	表C
	 where 表A.字段1 = 表B.字段1 and
	 表B.字段2 = 表C.字段2 and ....
	 [GROUP BY 表名.字段名]

排序

select  A.列名,B.列名,C.列名,... from C 
 join A on A.key=C.FKeyA 
 join B on B.key=C.FKeyA and B.key=A.key
[ORDER BY 表名.字段名]

  1. 子查询

子查询只返回一个值
子查询首选使用in做匹配
子查询在其他查询结果的基础上提供了一种有效的方式来表示where字句的条件 。
子查询的selec查询总是使用圆括号括起来。
对于子查询来说,外查询条件要什么,子查询就查什么。 一一对应的关系。
子查询结果分类:
标量子查询(子查询结果为单个值):
子查询返回的结果是单个值〔数字、字符串、日期等)
常用操作符:= <> > >= <= <
列子查询(子查询结果为一列):子查询返回的结果是一列
常用操作符:in、not in、any、some、all

	select 列表名 from 表名 where 字段名 > all (子查询语句);
	select 列表名 from 表名 where 字段名 > any (子查询语句);

行子查询(子查询结果为一行):
常用操作符:=、<>、 in、not in
select 字段名,… from 表名A where (字段名1,字段名2,…) = (select 字段名1值,字段名2值,… from 表名B where 条件)
表子查询(子查询结果为多行多列):in
select 字段名,… from 表名A where (字段名1,字段名2,…) in (select 字段名1值,字段名2值,… from 表名B where 条件)
3. 内连接:只有匹配到的情况下才会返回结果值

格式一(隐式):

from 表名1.列名1,表名1.列名2,表名2.列名1,表名2.列名2... 
form 表名1,表名2
where 表名1.列=表名2.列; //列为相同的列

格式二(显式):

select 表名1.列名1,表名1.列名2,表名2.列名1,表名2.列名2... 
from 表名1 inner join 表名2
on 表名1.列=表名2.列

4. 外连接

  • 外部连接会返回from字句中提到的至少一个表或视图中的所有行
  • 左连接:显示左边所有行。如果左表的某行在右表中没有找到匹配的行,则结果集中的右表相对应位置为null。

select 表名1.列名1,表名1.列名2,表名2.列名1,表名2.列名2
from 表名1 left outer join 表名2
on 表名1.列=表名2.列; //列为大家共有的列

 右连接:`显示右边所有行`
* ```
right outer join
select 表名1.列名1,表名1.列名2,表名2.列名1,表名2.列名2
from 表名1 right outer join 表名2
on 表名1.列=表名2.列; 

区分是左连接还是右连接:左连接以坐标为参考,左表没有则返回null,右连接以右表为参考,右表没有则返回null
5.联合查询

把多次查询的结果合并起来,形成一个新的查询结果集
对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。
union all会将全部的数据直接合并在一起,union 会对合并之后的数据去重。

select 字段名 from 表A ....
UNION [ALL]
select 字段名 from 表B ...;

3.4数据库视图、索引、事务
3.4.1 事务处理
事务:一组操作的集合,由一系列语句构成的逻辑工作单元。是一个不可分割的工作单元,事务把所有操作作为一个整体一起向系统提交或撤销操作请求,这些请求要么同时成功,要么同时失败

  1. 事务的四个属性

原子性:对数据库所做操作要么全部执行,要么全部取消
一致性:事务完成时候,必须使所有数据保持一致状态
隔离性:事务所作的修改必须和其他事务所作修改隔离
持久性:事务提交后,对数据库所做操作永久保存
2. 事务操作

查看事务提交方式:SELECT @@autocommit ;
设置事务提交方式:SET @@autocommit = 0 ;
开启事务:START TRANSACTION或BEGIN
提交事务: commit:
撤销语句:rollback:
3. 并发事务引发的问题

脏读:一个事务可以读到另一个事务未提交的数据
不可重复读:一个事务先后读取同一条记录,但读取的数据不一样
幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据
已经存在,好像出现了 “幻影”
3.4.2 索引

  1. 定义: 索引(index)是帮助MySQL高效获取数据的数据结构(有序)

  2. 创建索引主要作用

加快数据索引
保证数据唯一性
表与表之间参照完整性
在使用group by、order by子句进行查询时,利用索引可以减少排序和分组时间。
3. 索引不足之处

建立索引,系统要占用大约为表的1.2倍的硬盘和内存空间来保存索引。
更新数据的时候,系统必须要有额外的时间来同时对索引进行更新,以维持数据和索引的一致性。
4. 索引是否必须:

创建索引需要占用数据空间并花费一定时间
遍历索引会减慢数据修改速度
5. 索引结构分类

B+Tree索引:
相对于B-tree的区别:1)所有数据都出现在叶子节点上;2)叶子节点形成一个单向链表
在原B+Tree的基础上,增加一个指向相邻叶子节点的链表指针,就形成了带有顺序指针的B+Tree,提高区间访问的性能
Hash索引:
采用一定的hash算法,将键值换算成新的hash值,映射到对应的槽位上,然后存储在hash表中
高性能,底层数据结构是用哈希表实现的, 只有精确匹配索引列的查询才有效, 不支持范围查询,只支持memory引擎
如果两个(或多个)键值,映射到一个相同的槽位上,就产生了hash冲突(也称为hash碰撞),可以通过链表来解决
特点:
只能用于对等比较(==,in),不支持范围查询(between,>,<,…)
无法利用索引完成排序操作
查询效率高,通常只需要检索一次就可以了,效率通常高于B+tree
R-tree索引(空间索引):主要用于地理空间数据类型,只支持MyISAM引擎
Full-text(全文索引):是一种通过建立倒排索引,快速匹配文档的方式
6.索引分类

主键索引:对于表中主键创建的索引,默认自动创建,有且只有一个
唯一索引:避免同一个表中某数据列中的值重复,可以有多个
常规索引:快速定位特定数据,可以有多个
全文索引:查找文本中的关键字,可以有多个
6. 选择创建索引的数据列

连接中频繁使用的列
定义有主键和外键的列
在指定范围中快速或频繁查询的列
需要按排序顺序快速或频繁检索的列
7.聚合索引和辅助索引的区别?

聚合索引:将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据,必须有且只有一个
辅助索引:将数据与索引分开存储,索引结构的叶子节点关联的是对应的主键(id),可以存多个
8. 创建索引

create [UNIQUE|FULLTEXT] index 索引的名字 on 表名(列名);
创建唯一索引:
create unique index 索引名字 on 表名(列名);
9. 删除索引

drop index index_name on table_name;
drop index 索引名字 on 表名;
10.sql索引优化

查看sql执行频次:show global STATUS like ‘Com_______’;
慢查询日志
show variables like ‘slow_query_log’; # 查询是否打开了慢查询开关

# find / -name -type f 'my.cnf'
vi /etc/mysql/my.cnf
# 开启慢查询日志查询开关
slow_qurey_log=1
# 设置慢日志时间
long_query_time=1

  • systemctl restart mysql; # 重启mysql

cd /var/lib/mysql
tail -f xxxslow.log

 查看 sql耗时
* ```
select @@have_profiling; 			  # 是否支持profile操作
select @@profiling # profiling		  # 开关是否已开启
set profiling=1; 					  # 开启profiling
show profiles;						  # 查看执行耗时
show profile for query query_id; 	  # 查着指定query_id的SQL语句各个阶段的耗时情况
show profile cpu for query query_id;  # 查看指定query_id的SQL语句CPU的使用情况

3.4.3 视图
1.视图定义:基于某个查询结果的虚表,是从一个或多个表或视图导出的表,视图数据的修改也会影响原表的数据 insert update delete
2.视图优点

简化操作:使用数据库视图向最终用户和外部应用程序隐藏底层表的复杂性。通过数据库视图,只需要使用简单的 SQL 语句,不需要编写具有许多连接的复杂语句
安全性:
将基表中重要的字段信息/敏感数据,可以不通过视图给用户
允许创建只读视图以向特定用户公开只读数据,用户只能在只读视图中检索数据,但不能对其进行更新
独立性:视图可以使应用程序和数据库表在一定程度上独立
3.视图缺点

性能差:从数据库视图查询数据速度变慢,特别是如果视图是基于其他视图创建的
修改限制:
当用户试图修改视图的某些信息时,数据库必须把它转化为对基本表的某些信息的修改,对于比较复杂的试图,可能是不可修改的
每当更改与视图关联的基本表的结构时,也必须更改视图
4.视图语句

创建视图
create view 视图名字 as select 语句;

修改视图
alter view 视图名

在视图中插入一行数据
insert into 视图名字 vulues(值1,值2…);

修改视图数据
update 视图名字 set 列=值 where 条件;

删除视图中数据
delete from 视图名字 where 条件;

删除视图
drop view 视图名字;

删除多个视图"
drop view 视图名1,视图名2,视图名3;

3.4.4 存储过程
1.存储过程定义
事先经过编译并存储在数据库中的一段sql语句的集合。减少数据在数据库和应用服务器之间的传输,提高数据处理的效率

2.存储过程特点

封装、复用
可以接收参数,也可以返回参数
减少网络交互,效率提升
3.存储过程基本语法

创建

create PROCEDURE 存储过程名称([参数列表])
BEGIN
sql语句
END;

 

调用
call 存储过程名称([参数]);

 

查看
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = ‘数据库名称’; – 查询指定数据库的存储过程及状态信息
SHOW CREATE PROCEDURE 存储过程名称 ; – 查询某个存储过程的定义
1
2
删除
DROP PROCEDURE [ IF EXISTS ] 存储过程名称 ;

 04 计算机网络部分  
 1. 三次握手,四次挥手过程

 三次握手:  
 第一次握手:客户端发送syn包(syn=1,seq=x)到服务器,并进入SYN\_SENT状态,等待服务器确认;  
 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN\_RECV状态;  
 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。  
 握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。  
 四次挥手:断开一个TCP连接则需要“四次挥手”。  
 第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不 会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可 以接受数据。  
 第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。  
 - 第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。  
 第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。  
 2. OSI,TCP/IP,五层协议的体系结构,以及各层协议

 OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。  
 TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。  
 五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。  
 每层作用  
 物理层:传输二进制比特流  
 数据链路层:负责将上层数据封装成帧  
 网络层:负责路由寻址和广播 ;广播:发送消息和接收消息  
 \*传输层:负责建立一个可靠的端到端的连接;端到端:发送到接收 ;过程:建立、维护、撤销(拆除)  
 会话层:负责建立维护拆除会话,为端应用之间提供控制功能(可靠性)  
 表示层:完成对传输数据格式转换:格式化;发:加密;接:解密;发:压缩,接:解压缩  
 应用层:对应用软件提供网络支持  
 3. cookie、session、token

 cookie:在客户端存储在客户端用于存储会话信息的  
 session:在服务器端,记录用户的请求状态,一般默认时间30min  
 session\_id会存在cookie中,每次请求cookie中所有信息都会传递给服务器,服务器通过session\_id来识别是否是同一个用户请求,不是同一个用户的话,就会要求重新登录  
 token:访问权限,保存在客户端本地  
 鉴权:访问的接口是否正常,是否非法访问绕过前端。 防止跳过页面直接访问接口\*\*token\*\*  
 授权:是否具有访问接口的权限。 唯一全局动态的 。  
 4. 常用状态码



**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)**
![img](https://img-blog.csdnimg.cn/img_convert/67a36e05690b9fe902774166201df0ab.jpeg)

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
、 应用层。  
 五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。  
 每层作用  
 物理层:传输二进制比特流  
 数据链路层:负责将上层数据封装成帧  
 网络层:负责路由寻址和广播 ;广播:发送消息和接收消息  
 \*传输层:负责建立一个可靠的端到端的连接;端到端:发送到接收 ;过程:建立、维护、撤销(拆除)  
 会话层:负责建立维护拆除会话,为端应用之间提供控制功能(可靠性)  
 表示层:完成对传输数据格式转换:格式化;发:加密;接:解密;发:压缩,接:解压缩  
 应用层:对应用软件提供网络支持  
 3. cookie、session、token

 cookie:在客户端存储在客户端用于存储会话信息的  
 session:在服务器端,记录用户的请求状态,一般默认时间30min  
 session\_id会存在cookie中,每次请求cookie中所有信息都会传递给服务器,服务器通过session\_id来识别是否是同一个用户请求,不是同一个用户的话,就会要求重新登录  
 token:访问权限,保存在客户端本地  
 鉴权:访问的接口是否正常,是否非法访问绕过前端。 防止跳过页面直接访问接口\*\*token\*\*  
 授权:是否具有访问接口的权限。 唯一全局动态的 。  
 4. 常用状态码



**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)**
[外链图片转存中...(img-V2dgy3pb-1713692435011)]

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
  • 28
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、什么是兼容性测试?兼容性测试侧重哪些方面? 5 2、我现在有个程序,发现在Windows上运行得很慢,怎么判别是程序存在题还是软硬件系统存在题? 5 3、测试的策略有哪些? 5 4、正交表测试用例设计方法的特点是什么? 5 5、描述使用bugzilla缺陷管理工具对软件缺陷(BUG)跟踪的管理的流程? 5 6、你觉得bugzilla在使用的过程中,有什么题? 5 7、描述测试用例设计的完整过程? 6 8、单元测试的策略有哪些? 6 9、LoadRunner分哪三部分? 6 10、LoadRunner进行测试的流程? 6 什么是并发?在lordrunner中,如何进行并发的测试?集合点失败了会怎么样? 6 12、使用QTP做功能测试,录制脚本的时候,要验证多个用户的登录情况/查询情况,如何操作? 6 13、QTP中的Action有什么作用?有几种? 6 14、TestDirector有些什么功能,如何对软件测试过程进行管理? 7 15、你所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试……)? 7 16、条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录? 8 17、Beta测试与Alpha测试有什么区别? 8 18、软件的评审一般由哪些人参加?其目的是什么? 8 19、测试活动中,如果发现需求文档不完善或者不准确,怎么处理? 8 20、阶段评审与项目评审有什么区别? 8 21、阐述工作版本的定义? 8 22、什么是桩模块?什么是驱动模块? 8 23、什么是扇入?什么是扇出? 8 24、你认为做好测试计划工作的关键是什么? 8 25、你认为做好测试用例工作的关键是什么? 9 26、简述一下缺陷的生命周期? 9 27、软件的安全性应从哪几个方面去测试? 9 28、软件配置管理工作开展的情况和认识? 9 29、你觉得软件测试通过的标准应该是什么样的? 10 30、引入测试管理的含义? 10 31、一套完整的测试应该由哪些阶段组成? 10 32、单元测试的主要内容? 10 33、集成测试也叫组装测试或者联合测试,请简述集成测试的主要内容? 10 34、简述集成测试与系统测试关系? 10 35、软件测试的文档测试应当贯穿于软件生命周期的全过程,其中用户文档是文档测试的重点。那么软件系统的用户文档包括哪些? 10 36、软件系统中除用户文档之外,文档测试还应该关注哪些文档? 10 37、简述软件系统中用户文档的测试要点? 11 38、单元测试主要内容是什么? 11 39、如何理解强度测试? 13 40、如何理解压力、负载、性能测试测试? 13 41、什么是系统瓶颈? 13 42、文档测试主要包含什么内容? 13 43、功能测试用例需要详细到什么程度才是合格的? 14 44、配置和兼容性测试的区别是什么? 14 45、软件文档测试主要包含什么? 15 46、没有产品说明书和需求文档地情况下能够进行黑盒测试吗? 15 47、测试中的“杀虫剂怪事”是指什么? 15 48、在配置测试中,如何判断发现的缺陷是普通题还是特定的配置题? 15 49、为什么尽量不要让时间有富裕的员工去做一些测试? 16 50、完全测试程序是可能的吗? 16 51、软件测试的风险主要体现在哪里? 16 52、发现的缺陷越多,说明软件缺陷越多吗? 16 53、所有的软件缺陷都能修复吗?所有的软件缺陷都要修复吗? 17 54、软件测试人员就是QA吗? 17 55、如何减少测试人员跳槽带来的损失? 17 56、测试产品与测试项目的区别是什么? 17 57、和用户共同测试(UAT测试)的注意点有哪些? 18 58、如何编写提交给用户的测试报告? 18 59、测试工具在测试工作中是什么地位? 18 60、什么是软件测试软件测试的目的? 18 61、简述负载测试与压力测试的区别。 19 62、写出bug报告流转的步骤,每步的责任人及主要完成的工作。 19 63、写出bug报告当中一些必备的内容。 19 64、开发人员老是犯一些低级错误怎么解决? 20 65、画出软件测试的V模型图。 20 66、为什么要在一个团队中开展软件测试工作? 20 67、您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作? 20 68、您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试……) 20 69、您认为做好测试用例设计工作的关键是什么? 21 70、请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。 21 71、测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的? 22 72、您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。 22 73、请以您以往的实际工作为例,详细的描述一次测试用例设计的完整的过程。 23 74、您以往是否曾经从事过性能测试工作?如果有,请尽可能的详细描述您以往的性能测试工作的完整过程。 23 75、你对测试最大的兴趣在哪里?为什么? 23 76、你以前工作时的测试流程是什么? 24 77、当开发人员说不是BUG时,你如何应付? 24 78、软件的构造号与版本号之间的区别?BVT(BuildVerificationTest) 24 79、您以往的工作中,一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录? 25 80、您以往所从事的软件测试工作中,是否使用了一些工具来进行软件缺陷(Bug)的管理?如果有,请结合该工具描述软件缺陷(Bug)跟踪管理的流程。 25 81、您认为性能测试工作的目的是什么?做好性能测试工作的关键是什么? 25 82、单元测试、集成测试、系统测试的侧重点是什么? 25 83、集成测试通常都有那些策略? 25 84、一个缺陷测试报告的组成 25 85、基于WEB信息管理系统测试时应考虑的因素有哪些? 25 86、软件测试项目从什么时候开始,?为什么? 26 87、需求测试注意事项有哪些? 26 88、简述一下缺陷的生命周期 26 89、你在你所在的公司是怎么开展测试工作的?是如何组织的? 26 90、你认为理想的测试流程是什么样子? 26 91、您在从事性能测试工作时,是否使用过一些测试工具?如果有,请试述该工具的工作原理,并以一个具体的工作中的例子描述该工具是如何在实际工作中应用的。 26 92、软件测试活动的生命周期是什么? 26 93、请画出软件测试活动的流程图? 26 94、针对缺陷采取怎样管理措施? 26 95、什么是测试评估?测试评估的范围是什么? 26 96、如果能够执行完美的黑盒测试,还需要进行白盒测试吗?为什么? 26 97、测试结束的标准是什么? 26 98、软件验收测试除了alpha ,beta测试以外,还有哪一种? 26 99、做测试多久了?以前做过哪些项目?你们以前测试的流程是怎样的?用过哪些测试工具? 27 100、请就如何在开发中进行软件质量控制说说你的看法 27 101、一套完整的测试应该由哪些阶段组成?分别阐述一下各个阶段。 27 102、软件测试的类型有那些?分别比较这些不同的测试类型的区别与联系。 27 103、测试用例通常包括那些内容?着重阐述编制测试用例的具体做法 27 104、在分别测试winform的C/S结构与测试WEB结构的软件是,应该采取什么样的方法分别测试?他们存在什么样的区别与联系? 27 105、在测试winform的C/S结构软件时,发现这个软件的运行速度很慢,您会认为是什么原因?您会采取哪些方法去检查这个原因? 27 106、描述使用bugzilla缺陷管理工具对软件缺陷(BUG)跟踪的管理的流程 27 107、你都用什么测试方法 针对不同的产品或者系统或者模块,有不同的测试方法。总体而言有白盒测试和黑盒测试。 27 108、怎么编写案例 案例的编写与测试阶段的定义有很大的关系。系统测试和unit测试的案例可能不同。总体而言测试案例根据系统的需求而定。 27 109、怎么才能够全面的测试到每一个点 测试的全面性主要需要在设计测试计划的时候考虑,从测试策略,产品需求等等多个角度考虑从而定义全部的测试点。 27 110、谈谈软件测试技术,以及如何提高 27 111、谈谈软件测试职业发展,以及个人的打算 27 112、谈谈软件测试在企业的地位,也可以结合软件生命周期来谈 27 113、一般公司里实际的软件测试流程是什么样的?你们公司又是怎样的? 27 114、软件工程师要具有那些素质? 27 115、你会哪些测试工具?怎么操作? 27 116、你能不能说下你的3到5的职业计划(规划) 27 117、你觉得你来应聘有那些优势? 27 其他题:(有可能清晰的思路比确切的答案更重要) 27 开发及环境搭建类面试题 28 1、描述软件产生内存泄露的原因以及检查方式。(可以结合一种开发语言进行描述) 28 2、简述什么是值传递,什么是地址传递,两者区别是什么? 28 3、结构化程序设计和面向对象程序设计各自的特点及优缺点是什么? 28 4、简述什么是存储过程和触发器? 28 5、使用C语言编写一个函数,用于交换两个变量的值(地址传递)。 29 6、请简述DNS、活动目录、域的概念。 29 7、描述TCP/IP协议的层次结构,以及每一层中重要协议。 29 8、简述子网掩码的用途。 29 9、说出4种以上常用的操作系统及其主要的应用范围(微软的操作系统除外)。 29 10、在Linux系统中,一个文件的访权限是755,其含义是什么? 29 11、Windows操作系统中PATH环境变量的作用是什么? 30 12、Ghost的主要用途和常用方法? 30 13、在RedHat中,从root用户切到userl用户,一般用什么命令? 30 14、Linux中,一般怎么隐藏文件? 30 15、如何将自己的本地磁盘(D)做成FTP供远端主机使用? 30 16、对RUP.CMM,CMMI,XP,PSP.TSP的认识? 30 17、DNS是什么,它是如何工作的? 31 18、防火墙如何保证安全的?主要有哪些? 31 19、目前流行的操作的系统有哪些?请举例说明安装操作系统的注意事项? 33 20、简述一下c/s模式或者b/s模式? 33 21、TCP/UDP有哪些区别? 34 22、ISO模型?HUB、tch、Router是ISO的第几层设备? 34 23、内存有哪几种存储组织结构.请分别加以说明? 34 人力资源面试题 34 1、你的测试职业发展是什么?你自认为做测试的优势在哪里? 34 2、你为什么想离开目前的职务? 34 3、你对我们公司了解有多少? 34 4、你找工作时,最重要的考虑因素为何? 34 5、为什么我们应该录取你? 34 6、请谈谈你个人的最大特色。 34 7、一个测试工程师应具备那些素质和技能? 35 8、您认为在测试人员同开发人员的沟通过程中,如何提高沟通的效率和改善沟通的效果?维持测试人员同开发团队中其他成员良好的人际关系的关键是什么? 35 9、在您以往的测试工作中,最让您感到不满意或者不堪回首的事情是什么?您是如何来对待这些事情的? 35 10、在即将完成这次笔试前,您是否愿意谈一些自己在以往的学习和工作中获得的工作经验和心得体会?(可以包括软件测试、过程改进、软件开发或者与此无关的其他方面) 35 11、为什么选择测试这行? 35 12、你的工作通常能在时限内完成吗.(我想一下就是她这个题的动机是什么) 35 13、通常你对于别人批评你会有什么样的反应 35 14、如果明知这样做不对,你还会依主管的指过去做吗? 35 15、如果你接到一个客户抱怨的电话,你确知无法解决他的题,你会怎么处理? 35 16、请就软件测试人员应该具备什么样的基本素质说说你的看法。 36 17、你在五内的个人目标和职业目标分别是什么? 36 18、你怎样做出自己的职业选择? 36
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值