软件测试必问必背面试题

https://blog.csdn.net/shanmao04/article/details/135223153?
01 软件测试理论部分
1.1 测试概念

1. 请你分别介绍一下单元测试、集成测试、系统测试、验收测试、回归测试

  • 单元测试:完成最小的软件设计单元(模块)的验证工作,目标是确保模块被正确的编码
  • 集成测试:通过测试发现与模块接口有关的问题
  • 系统测试:是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件
  • 回归测试:回归测试是指在发生修改之后重新测试先前的测试用例以保证修改的正确性
  • 验收测试:这时相关的用户或独立测试人员根据测试计划和结果对系统进行测试和接收。验收测试包括Alpha测试和Beta测试。
    • Alpha测试:是由用户在开发者的场所来进行的,在一个受控的环境中进行。并且在开发者对用户的指导下进行测试,开发者负责记录发现的错误和使用中遇到的问题
    • Beta测试 :由软件的最终用户在一个或多个用户场所来进行的,开发者通常不在现场。由用户记录在测试中遇到的一系列问题,并定期报给开发者。

2. 什么是黑盒?什么是白盒?黑盒和白盒的测试方法分别有哪些?

  • 黑盒:黑盒测试也称功能测试或数据驱动测试。把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,对程序接口进行测试。“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试
    • 常用的黑盒测试方法:等价类划分法;边界值分析法;因果图法;场景法;正交实验设计法;判定表驱动分析法;错误推测法;功能图分析法。
  • 白盒测试:也称为结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试
    • 常用白盒测试方法:
      • 静态测试:不用运行程序的测试;
      • 动态测试:需要执行代码,通过运行程序找到问题;
    • 逻辑覆盖包括:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖
      • 1.语句覆盖每条语句至少执行一次。
      • 2.判定覆盖每个判定的每个分支至少执行一次。
      • 3.条件覆盖每个判定的每个条件应取到各种可能的值。
      • 4.判定/条件覆盖同时满足判定覆盖条件覆盖。
      • 5.条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
      • 6.路径覆盖使程序中每一条可能的路径至少执行一次。

3. 测试流程:

  • 需求测试->概要设计测试->详细设计测试->单元测试->集成测试->系统测试->验收测试

4. app测试性能指标

  • 内存
  • cpu
  • 流量
  • 启动速度

5. web测试和app测试不同点

  • 系统架构方面:

    • web项目,一般都是b/s架构,基于浏览器的
    • app项目,则是c/s的,必须要有客户端,用户需要安装客户端。
    • web测试只要更新了服务器端,客户端就会同步会更新。App项目 则需要客户端和服务器都更新
  • 性能方面:

    • web页面主要会关注响应时间
    • 而app则还需要关心流量、电量、CPU、GPU、Memory等。
  • 兼容方面:

    • web是基于浏览器的,所以更倾向于浏览器和电脑硬件,电脑系统方面的兼容
    • app测试则要看分辨率,屏幕尺寸,操作系统、网络
    • web测试是基于浏览器的所以不必考虑安装卸载。
    • 而app是客户端的,则必须测试安装、更新、卸载。除了常规的安装、更新、卸载还要考虑到异常场景:包括安装时的中断、弱网、安装后删除安装文件 。

6. 缺陷按优先级分为哪些类型? p1-p5 面试重点

  • 缺陷必须立即解决
  • 缺陷要求正常排队等待修复
  • 缺陷可以在方便时被纠正
  • 下一个版本修复
  • 不修复

7. 测试用例的内容是什么? 面试重点

  • 用例编号
  • 测试概述或用例标题
  • 优先级
  • 前置条件
  • 输入数据
  • 测试步骤
  • 预期结果

8. 测试结束的标准是什么? 面试重点

  • 全部测试用例都被执行完成
  • 未修改bug都被确认或置为应有状态,暂缓修改的问题都有详尽的解析
  • 测试报告编写完成
  • 测试收尾工作结束
  • 测试总结完成
  • 项目处于试运行或上线阶段
  • 在测试计划中定义结束的标准:在一定性能下平稳运行多少天、本版本没有严重bug,普通buh数量在多少个以下,bug修复百分之多少以上
    ;实际测试达到上述要求,由项目、开发、测试经理共同签字,认同测试结束,版本即可发布。
1.2 软件开发模型

软件生命周期: 从软件最初构思到最终消亡(退役)的过程。

1. 软件生命周期

立项 ---需求分析 ---设计、编码、测试 ---发布 ---运行维护 ---淘汰
软件立项===》可行性研究 ===》需求分析 ===》概要设计 ===》详细设计 ===》编码实现 ===》单元测试 ===》集成测试 ===》系统测试 ===》验收测试 ==》运行维护

2. 瀑布模型

在这里插入图片描述

缺点:
	1. 各阶段划分完全固定,阶段之间产生大量文档,极大增加工作量
	2. 由于开发模型是线性的,用户只有等到整个过程的末期才能看到开发结果,增加开发风险
	3. 不适应用户需求变化
3 . 快速原型模型(现在特别流行模式) Axure 软件

在这里插入图片描述

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

在这里插入图片描述
分批次地分析、设计、编码和测试这些增量组件。

5. 迭代模型 开发进度快

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

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

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

  • 软件测试人员提交缺陷报告;
  • 测试负责人审核后将缺陷分配给相关开发人员修复
  • 缺陷被修改后有测试人员根据缺陷报告中修改记录进行返测
  • 返测通过的缺陷由负责人关闭;
  • 返测未通过的缺陷直接返回给开发人员重新修改,然后再由测试人员返测,直到测试和开发达成一致处理意见。
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]
  1. grep:指定文件中搜索特定的内容,并将含有这些内容的行标准输出
  • 格式:grep [options] 文件名
  • [options]主要参数:
    • -c:只输出匹配行的计数
    • -i:不区分大小写(只适用于单字符)
    • -h:查询多文件时不显示文件名
    • -l:查询多文件时只输出包含匹配字符的文件名
    • -n:显示匹配行及行号
    • -s:不显示不存在或无匹配文本的错误信息
    • -v:显示不包含匹配文本的所有行
    • -e:使用正则匹配
    • -E:使用扩展正则
    • --color=auto:将
  1. sed 流文本编辑器
  2. awk 文本和数据处理,
  3. find作用是在目录中搜索文件,它的使用权限是所有用户。
  • 格式:find [path][options][expression]
    • path指定目录路径。它是一个路径列表,相互用空格分离,如果不写path,那么默认为当前目录。

 整份文档一共有将近 200 页,全部为大家展示出来肯定是不太现实的,为了不影响大家的阅读体验就只展示了部分内容,还望大家海涵,希望能帮助到您面试前的复习且找到一个好的工作,也节省大家在网上搜索资料的时间来学习!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值