1.软件测试的根本目的是确保软件满足用户需求
2.软件测试的目的是要衡量软件产品是否符合预期
3.软件测试是一个持续进行的过程
4.测试需要动态执行也需要静态检查
5.测试不仅需要手动执行也需要自动执行
软件的特点:1.软件必须依靠人的智力劳动才能创造出来,软件有较大的随意性。
软件必须依托于具体的硬件设备才能运行。
软件不会如硬件一般产生磨损,但会随着其依托的硬件设备的变化,以及用户需求的不断变化而需要进行升级,且到了某个时候,当需求和硬件的变化使得软件不得不改变其具体构架的时候,该软件就必须被淘汰而焕之以全新的软件。因此,应测试升级后的软件对旧版本的兼容性。
测试过程
1.计划测试
2.设计测试
3.实施测试
4.执行测试
测试用例:测试用例是一组测试输入,执行条件和预期结果,目的是要满足一个特定目标,如执行一条特定的程序路径或检验是否符合一个特定的需求的用例。
可表示为:测试用例=输入+输出+测试环境
输入是测试数据和操作步骤,输出是系统的预期结果。测试环境是系统环境设置,即进行软件测试所必须的工作平台和前提条件
测试用例由输入数据、操作步骤、预期执行结果及测试环境所构成。
自动化测试通过测试工具、测试脚本等手段,按照测试工程师的预定计划对软件产品进行自动测试,从而验证软件是否满足用户的需求。
自动化测试具有良好的可重复性、可操作性和高效率等特点,是提高测试覆盖率和可靠性的重要手段。
测试环境包括硬件环境 软件环境 网络环境 历史数据
1.硬件环境指进行测试所必须的服务器、客户端、网络连接设备,以及打印机扫描仪等辅助硬件设备所构成的环境,它是软件运行及提供部分功能的必要条件
2.软件环境指被测软件运行时的操作系统、数据库、以及其他应用软件构成的环境,它是应用软件运行的基础
3.网络环境主要指针对C/S B/S架构的软件
4.历史数据指测试用例执行所需初始化的各项数据
黑盒测试的方法包括等价类测试、边界值测试、基于决策表的测试方法等可从如下方面来评价某种测试方法的质量
1.测试用例对被测对象的覆盖率
2.测试用例的冗余
3.测试用例的数量
4.测试用例对缺陷的定位能力
5.测试用例射击的复杂度
边界值测试的基本原理:在被测对象的边界及边界附近设计测试用例
对于某个输入条件而言,边界的确定可以参照一下原则
1.若输入条件规定了取值范围,则以该范围作为边界
2.若输入条件规定了值的个数,则以值的个数为边界
3.若输入域是有序集合(如有序表、顺序文件等),则选取集合中特定次序的数据作为边界,如第一个或者最后一个数据等
针对某个输入条件确定边界点时,可基于如下思路
1.首先在需求描述中寻找最大极限边界
2.接着在需求描述中寻找其他较为明显的边界
3.最后还需要关注在软件内部的边界点
正交表的性质:
1.每一列中每个输入条件的各个测试数据出现的次数相同。
2.任意两列所构成的各有序数对出现的次数相同。
输入条件
测试初级
| 用例ID | A | B | C | D |
| 1 | ||||
| 2 | ||||
| 3 |
1.无需穷举所有组合情况,只需要使用少量的抽样组合数据构成测试用例,可明显提高效率;
2.用正交表抽样出的组合数据分布均用,对组合情况具有最佳的覆盖性;
3.能减少手动对组合数据抽样导致的大量测试遗漏。
测试用例的设计
1.测试数据的选择
1.穷举法:在每个边界点的邻域范围内取所有数据构成测试数据的集合
优点:所有数值可以测试到
缺点:条件为连续数值时没法穷举,邻域测试数据多导致测试负担重
2.典型值法:选择边界邻域内的典型值作为测试数据
优点:测试数据包含了边界点本身以及最远离该变节点的邻域数据,具有典型 性,数据量大大降低
2.边界组合方式的选择
1.强边界法
2.弱边界法
3.全边界法
3.测试方案
等价类划分是最典型、最常用的黑盒测试方法。采用此方法的原因是:由于穷举测试的办法数量太大,以至于无法实际完成,自然促使我们在大量的可能数据中选取其中的一部分作为测试用例。等价类划分就是分步骤地把无限多的测试用例减少到同样有效的小范围的过程。
这些子集满足:
1.每个子集内所有数据等价,即被测系统对该子集中每个数据的处理方式相同(保证覆盖)
2.各个子集之间互不相交,即输入域中的某个数据或某项唯一隶属属于某个子集(保证无冗余)
3.所有子集的并集是整个输入域(保证完备)
单元测试是指对软件中的最小可测试单元或基本组成单元进行检查和验证
建议单元选取原则如下
1.对于C语言这类面向过程的开发语言来说,单元常指一个函数或者子过程。在特殊情况下,若有几个函数之间既有强耦合性,导致函数关系非常密切,则应将这几个函数共同作为一个单元来测试
2.对于C++、java、C#这类面向对象的开发语言来说,单元一般指一个类。然而,某些基础类可能非常庞大,涉及大量属性和方法,甚至需要几个开发人员来编码完成,若将该类作为一个单元来测试并不合适,此时的测试将上升到集成测试的层面,并分为类内测试和类间测试
3.图形化软件中,单元常指一个窗口或一个菜单
对被测单元的功能测试属于黑盒测试,对模块代码所做的测试属于白盒测试
单元测试的内容
1.静态检查尤其是静态代码分析的结果适用于所有可能性的运行情况,而动态测试总是针对特殊取值的测试,仅能测试到程序的特定属性,即保证被测组件在其测试平台上对于特定输入是有效的
2.动态测试可以覆盖到程序的各种前置条件和后置条件组合情况,能真实反映程序在特定运行期的运转状况,并能说明执行的常用路径,大大超过同期静态分析所能达到的范围
驱动模块是模拟被测单元的上级模块,用于接收测试数据、启动被测模块和输出结果
桩模块是模拟被测单元所调用的模块。有时需要使用子模块的接口,才能做少量数据操作,并验证和打印入口处的信息,然后返回。桩模块不包含原模块的所有细节
驱动模块的功能要求
1.利用已有的测试用例,接收测试的输入数据。实现方式是通过外部调用的方式从数据文件或外部数据源中依次读入数据(包括测试用例的输入和对应的预期输出)
2.将测试数据传递给被测单元,从而启动被测单元。实现方式是调用被测单元,同时利用参数将输入数据传给被测单元
3.打印和输出测试用例的相关结果,判断测试是通过还是失败。即利用结果的比较加以判断,在允许的误差条件下,一致的结果表明测试通过,否则视为测试失败。执行结果可以直接输出到屏幕,也可以保存到指定的外部文件中。
4.通过测试日志文件记录测试过程,便于后续数据保存和分析。日志文件中应能区分被测对象、测试用例的基本信息、测试执行结果是否通过、失败用例的具体错误信息、测试用例通过率等内容
桩模块的功能要求
1.在特定条件下完成原单元的基本功能。即针对特定的输入可以输出正确的结果。注意:这里所谓的完成功能其实并非真正在模块内部去执行某些复杂的逻辑判断或者计算过程,而是简单的批量“打印”而已,只针对测试用例的一组输入直接返回预期输出
2.能够被正确调用。即符合正确的输入条件,在个数、参数类型、参数顺序等方面与被模拟单元完全一致
3.有返回值。若有返回值,则应针对特定输入返回与被模拟单元完全一致的结果
4.不包含原单元的所有细节。原单元的输入情况可能是无限多的,所谓模拟意味着仅挑选其中典型的输入(如边界),给出已知的输出结果
单元测试的过程
1.计划阶段:完成单元测试计划,制定单元测试策略
2.设计阶段:根据单元测试计划,提取测试需求,完成测试设计
3.实施阶段:根据测试用例开发测试数据或者测试脚本,并建立单元测试环境,准备正式开始测试执行
4.执行阶段:以手动方式或者利用测试脚本自动执行单元测试用例,记录测试结果
5.评估阶段:利用测试用例和缺陷计算相关指标,评估阶段性测试过程和结果,做出决策
日构建是自动、完整的构建整个代码库的代码,在构建的同时完成单元测试执行的软件研发工作模式
回归测试是贯穿在整个测试各个阶段的一个测试活动,主要是对修改过的软件重新进行测试,以保证验证修改的正确性以及其影响
目的在于
1.确保缺陷真正得到了修复
2.防止在缺陷修复或功能变化过程中造成对软件原有正常部分代码的损坏
3.防止由于开发人员自身因素或其他因素导致的版本倒流现象
4.防止由于其他因素造成的原正常功能的失效
集成测试就是在单元测试的基础上,将所有已通过单元测试的模块按照概要设计的要求组装为子系统或系统,并进行测试的过程,目的是确保各个单元模块组合在一起后够按既定意图协作运行并确保增量的行为正确
集成测试的评价
1.测试用例的规模 测试用例规模越小越好
2.驱动模块的设计 驱动模块的数量越少越好
3.桩模块的设计 桩模块的数量越少越好
4.陷阱的定位 单个集成测试涉及接口数量(即模块数量)越少越好
单个集成测试用例的设计中,可以每次测试一对模块的接口,也可以一次测试多对模块之间的接口,由此产生主要的3中测试方法 成对集成 邻居集成 基于路径的集成
成对集成的基本思想是将每个集成测试用例限定在一对调用单元上,每个集成测试用例都是最小的集成单元,仅涉及一对调用的接口。
邻居集成的基本思想是将每个集成测试用例限定在某个节点的邻居上,针对某个模块的集成测试用例同时包含该模块及其邻居。
邻居的构成有两种方式
1.处于中间层的模块
2.根节点直接调用叶子节点
基于路径的集成基本思想是将函数调用图看做程序的控制流图或程序图,每个从根节点到叶子节点的调用形成了路径,每条路径即可构成一个集成测试用例
集成测试遍历顺序的设计
1.大爆炸集成:是将所有经过单元测试的模块一次性组装到被测系统中进行测试,完全不考虑模块之间的依赖性和可能的风险
2.自顶向下的集成:是从主控模块(主程序,根节点)开始,按照系统程序结构,沿着控制层次从上而下,逐渐将各模块组装起来。集成中采用宽度优先或深度优先的策略向下推进,对根节点进行集成测试,所有被根节点直接调用的模块均用桩模块来代替。
3.自底向上:是从底层模块?(即叶子节点)开始,按照调用图的结构,从下而上,逐层将各模块组装起来。对叶子节点进行集成测试,所有被叶子节点直接调用的模块均用驱动模块来代替
4.三明治集成:是将自顶向下和自底向上集成方法集合起来的集成策略
系统测试包括
1.功能测试(用黑盒):主要针对系统的功能需求展开测试,以确认被测系统是否满足用户的功能使用要求
2.性能测试:就是对软件的运行性能指标进行测试,判断系统集成之后在实际的使用环境下能否稳定、可靠的运行
3.安全性测试:用于检验系统对非法侵入的防范能力
4.兼容性测试:检验被测软件与其他软、硬件相互是否能够正确交互和实现信息共享
5.用户界面测试
6.可安装性测试:指广义的安装测试,包括安装和卸载
语句覆盖:设计测试用例时应保证程序的每一条可执行语句至少执行一次
判定覆盖:设计测试用例应保证程序中每个判定节点的取真和取假分支至少执行一次。
条件覆盖:设计测试用例时应保证程序中每个复合判定表达式中,每个简单判定条件的取真和取假情况至少执行一次。
判定/条件覆盖:测试用例的设计应满足判定节点的取真和取假分支至少执行一次,且每个简单判定条件的取真和取假情况也应至少执行一次,即判定覆盖+条件覆盖。
条件组合覆盖:测试用例的设计应满足每个判定节点中,所有简单判定条件的所有可能的取值组合情况应至少执行一次。(通过真值表的方式来得到完全覆盖)
修正的判定/条件覆盖:在满足判定/条件覆盖的基础上,每个简单判定条件都应的影响到整个判定表达式的取值。该指标的实质是利用简单判定条件的影响性来消除测试用例的冗余。
1. 画出软件测试过程的V模型,并简要说明不同测试阶段与开发过程阶段的对应关系。
对应关系:单元测试——编码和详细设计;集成测试——概要设计;系统测试——需求分析;验收测试——用户需求。
2. 简述单元测试的主要任务。
单元测试的主要任务包括:接口测试、局部数据结构测试、执行路径测试、错误处理测试、边界条件测试。
3. 简述采用因果图法设计测试用例的步骤。
分析软件规格说明的描述中哪些是因,哪些是果
分析软件规格说明描述中的语义,画出因果图
在因果图上使用若干标准的符号标明约束条件
把因果图转换成判定表
为判定表中的每一列设计测试用例
4. 可以采用哪些方式组织测试用例?
按照程序功能块组织
按照测试用例的类型组织
按照测试用例的优先级组织
5. 软件测试配置管理包含哪些基本活动?
软件测试配置管理中最基本的活动包括:配置项标识、版本控制、变更控制、配置状态报告、配置审计。
1. (18分)针对如下Test函数,按照基本路径测试方法设计测试用例。
int Test(int count, int flag)
{
int temp = 0;
while (count>0)
{
if (0 == flag)
{
temp = count + 50;
break;
}
else
{
if (1 == flag)
{
temp = temp + 20;
}
else
{
temp = temp + 10;
}
}
count--;
}
return temp;
}
程序控制流图:
程序环路复杂度:CC=4
基本路径集:
Path1 1-2-3-6,7-8-11-2-12
Path2 1-2-12
Path3 1-2-3-4,5-12
Path4 1-2-3-6,7-9,10-11-2-12
设计测试用例:
| 用例ID | count | flag | 预期输出 |
| test1 | 1 | 1 | 20 |
| test2 | 0 | 2 | 0 |
| test3 | 2 | 0 | 52 |
| test4 | 1 | 3 | 10 |
“读入3个正整数a、b、c,分别代表一个三角形的3个边长;判断所输入的整数是否能构成一个三角形,以及该三角形是否是直角三角形,并将结果打印出来。”
根据程序规格说明,判断决策表设计如下:
| c1:a | F | T | T | T | T | T | T | T | T | T | T |
| c2:b | - | F | T | T | T | T | T | T | T | T | T |
| c3:c | - | - | F | T | T | T | T | T | T | T | T |
| c4:a2+b2=c2? | - | - | - | T | T | T | T | F | F | F | F |
| c5: a2+c2=b2? | - | - | - | T | T | F | F | T | T | F | F |
| c6: b2+c2=a2? | - | - | - | T | F | T | F | T | F | T | F |
| a1:非三角形 | X | X | X | ||||||||
| a2:直角三角形 | X | X | X | ||||||||
| a3:非直角三角形 | X | ||||||||||
| a4:不可能 | X | X | X | X |
| 用例ID | a | b | c | 预期输出 |
| DT1 | 4 | 1 | 2 | 非三角形 |
| DT2 | 1 | 4 | 2 | 非三角形 |
| DT3 | 1 | 2 | 4 | 非三角形 |
| DT4 | 3 | 4 | 5 | 直角三角形 |
| DT5 | 3 | 5 | 4 | 直角三角形 |
| DT6 | 5 | 3 | 4 | 直角三角形 |
| DT7 | 2 | 3 | 4 | 非直角三角形 |
2. 常见的逻辑覆盖类型包括: (语句覆盖3) 、判定覆盖、 (条件覆盖4) 、判定/条件覆盖、条件组合覆盖。
3. (系统测试5) 是指将通过集成测试的软件系统,作为计算机系统的一个重要组成部分,与其他系统元素组合在一起所进行的测试。
4. (回归测试6) 是指软件系统被修改或扩充后重新进行的测试。
5. 缺陷分析中的常用的缺陷参数包括:状态、 (优先级7) 、 (严重程度8) 、起源。
6. 一种观点把面向对象测试分为4层: (方法测试9) 、类测试、 (类簇测试10) 、系统测试。
1. 说明软件错误、软件缺陷、软件故障几个概念之间的关系。
软件错误是指在软件生存周期内的不希望出现或不可接受的人为错误;
软件缺陷是指存在于软件中的不希望出现或不可接受的偏差;
软件故障是指软件运行过程中出现的不希望出现或不可接受的内部状态;
软件错误导致软件缺陷产生;软件缺陷导致软件运行中出现故障,此时缺陷被激活。
2. 列举6种黑盒测试的非功能测试类型。
强度测试、性能测试、安全测试、安装与卸载测试、配置测试、兼容性测试、故障修复测试、使用性能测试、帮助测试
3. 简述根据基本路径覆盖方法设计测试用例的步骤。
画出程序控制流程图;
计算程序的环路复杂性;
确定路径集合;
准备测试用例。
4. 如何确定回归测试的范围?
在回归测试范围的选择上,一个最简单的方法是每次回归执行所有在前期测试阶段建立的测试,来确认问题修改的正确性,以及没有造成对其他功能的不利影响。
如果需要选择一个测试子集,常用的用例选择方法可以分为以下3种:局限在修改范围内的测试、在受影响功能范围内回归、根据一定的覆盖率指标选择回归测试。
5. 软件测试自动化有哪些作用?
产生可靠的系统;
改进测试工作质量;
提高测试工作效率。
1. (15分)对下图所示程序段,分别进行语句覆盖、判定覆盖、条件覆盖、条件判定覆盖、多条件覆盖测试用例设计。
语句覆盖:
A=2,B=0,C=?(任意)
判定覆盖:
A=3,B=0,C=1
A=2,B=1,C=?(任意)
条件覆盖:
A=2,B=0,C=2(>1)
A=1,B=1,C=1
条件判定覆盖:
同上
多条件覆盖:
可能的条件组合:
(1)A>1,B=0 P1:T
(2)A>1,B≠0 P1:F
(3)A≤1,B=0 P1:F
(4)A≤1,B≠0 P1:F
(5)A=2,C>1 P2:T
(6)A=2,C≤1 P2:T
(7)A≠2,C>1 P2:T
(8)A≠2,C≤1 P2:F
相应用例:
A=2,B=0,C=2 覆盖(1)、(5)
A=2,B=1,C=1 覆盖(2)、(6)
A=1,B=0,C=2 覆盖(3)、(7)
A=1,B=1,C=1 覆盖(4)、(8)
2. (15分)一个人事管理系统中要记录人员的出生年月,要求输入格式为六位数字(yyyymm),有效出生年月范围为1950年1月至1990年12月。试用等价类划分法设计测试用例,测试系统中出生年月的输入处理是否符合要求。
等价类划分
| 输入条件 | 有效等价类 | 无效等价类 |
| 格式正确 | 6位数字字符(1) | 有非数字字符 (4) 少于6个数字符 (5) 多于6个数字符 (6) |
| 数值范围(隐含年份范围) | 在195001-199012之间 (2) | <195001 (7) >199012 (8) |
| 月份数值范围 | 在1-12之间 (3) | 等于"00 " (9) |
| 序号 | 输入数据 | 覆盖等价类 |
| 1. | 198003 | (1)(2)(3) |
| 2. | 19660a | (4) |
| 3. | 19761 | (5) |
| 4. | 1976021 | (6) |
| 5. | 194602 | (7) |
| 6. | 199602 | (8) |
| 7. | 197600 | (9) |
| 8. | 197613 | (10) |
2. 集成测试应该在 单元测试 之后、系统测试之前进行;常用的集成测试方案是 非增量式 和增量式两种。
3. 验收测试 是在软件开发结束后,用户对软件产品投入实际应用以前,进行的最后一次质量检验活动。
4. 测试用例 是测试执行的最小实体,是为特定目的而设计的一组测试输入、执行条件和预期结果。
5. 缺陷分析的常用度量形式包括: 缺陷发现率 、缺陷潜伏期、 缺陷密度 、整体缺陷清除率。
6.为保证测试活动的可控性,必须在软件测试过程中进行软件测试配置管理,一般来说,软件测试配置管理中最基本的活动包括:配置项标识、 版本控制 、变更控制、 配置状态报告 、配置审计。
1.典型的软件测试过程模型中,哪个模型增加了软件开发各个阶段应同步进行的验证和确认活动?
.W模型
2.常用的黑盒测试用例设计技术包括:
A.等价类划分法、因果图法、边界值分析法、判定表驱动法
3. 自底向上集成测试方法实施中,需要编写:
A. 驱动模块
4. 对于参数配置类的软件,要用哪种方法选择较少的组合方式达到最佳效果?
A.等价类划分法
5.对于软件的β测试,下列描述正确的是:
D.β测试在软件公司外部展开,可以由非专业的测试人员执行
6.在程序测试中,用于检查程序模块或子程序之间的调用是否正确的静态分析方法是:
D. 接口分析
7. 下列有关软件缺陷报告的编写原则中,哪个是错误的
D. 同一个软件缺陷可以被重复报告
8.下列哪个不是测试环境的组成要素
B. 技术文档
9.下列哪个信息不应该在测试用例中包含?
C. 结果记录
10. LoadRunner属于下列哪一类测试工具?
B. 性能测试工具
1.典型的软件测试过程模型中,哪个模型反映了测试活动与分析设计活动的相关性,从左到右描述了基本的开发过程和测试行为?
A.V模型
2.针对布尔表达式 A&&(B||C) 执行逻辑覆盖测试,测试用例至少需要几种组合才能满足条件组合覆盖的要求?
3. 在进行单元测试时,测试工程师通常需要借助什么模块来代替所测模块调用的子模块?
A. 桩模块
4. 对于业务流清晰的系统可以采用下述哪种方法贯穿整个测试用例设计过程?
D. 场景法
5.对于软件的α测试,下列描述正确的是:
B.α测试在软件公司内部展开,由非专业测试人员执行
6.在软件测试用例设计方法中,最常用的方法是黑盒测试和白盒测试,其中不属于白盒测试所关注的是:
B. 软件外部功能
7. 在以下有关集成测试的说法中,错误的说法是
A. 自底向上集成的缺点是在早期不能进行并行测试,不能充分利用人力
8.下列哪个不是测试环境的组成要素?
B. 技术文档
9.下列哪个信息不应该在测试用例中包含?
C. 结果记录
1.软件缺陷是由很多方面造成的,以下哪个方面是造成软件缺陷的最多的地方( A )
A.规格说明书
B.系统设计结果
C.编写代码
D.其他
2.覆盖准则最强的是( D )
A.语句覆盖
B.判定覆盖
C.条件覆盖
D.路径覆盖
3.实际的逻辑覆盖测试中,一般以(C )为主设计测试用例。
A.条件覆盖
B.判定覆盖
C.条件组合覆盖
D.路径覆盖
4.发现错误能力最弱的覆盖准则是( A )。
A.语句覆盖
B.判定覆盖
C.条件覆盖
D.路径覆盖
5.单元测试所使用的主要测试方法是( B )
A.黑盒测试
B.白盒测试
C.集成测试
D.验收测试
6.对于软件缺陷的修复费用,在哪个阶段的费用花费最小( A )
A.分析阶段
B.设计阶段
C.编码阶段
D.发布阶段
7.静态测试的主要对象是(AB )
A.代码检查
B.代码风格与规范
C.软件的功能
D.设计的合理性
8.单元测试主要测试是模块在(ABC )上的错误。
A.语法
B.格式
C.逻辑
D.功能
9.单元测试主要由( C )完成?其中( A )起主要作用。
A.开发人员
B.测试人员
C.开发人员和测试人员
D.以上都不对
10.集成测试所使用的主要测试方法是( A )。
A.黑盒测试
B.静态测试
C.动态测试
D.白盒测试
11.系统测试主要包括包含了多种测试活动,主要分为( AB )。
A.功能性测试
B.非功能性测试
C.回归测试
D.单元测试
12.系统集成测试常见的有哪几种不同模式( AB )。
A.非渐增式测试模式
B.渐增式测试模式
C.测试模式
D.非测试模式
13.软件的兼容性测试包括( AD )。
A.向前和向后兼容
B.多语言测试
C.多版本测试
D.横向测试
14.软件的缺陷通常集中在( AB )阶段。
A.需求分析
B.系统设计
C.编写代码
D.软件测试
15.对于一些关键代码或新人写的代码,主要采取( B )方式。
A.走查
B.会议审查
C.代码互评
D.自查
16.在集成测试中,主要的集成方法有( ABCD )。
A.自顶向下
B.自底向上
C.大爆炸
D.三明治
17.文档测试主要检查文档的(ABCD )。
A.正确性
B.完备性
C.易理解性
D.一致性
18.验收测试完成后还需要提交(AC ),才可交付用户使用。
A.验收报告
B.项目完成报告
C.交付报告
D.无需提供任何报告
19.软件本地化工作中除了翻译之外还应该( ABCD )。
A.处理字符集问题
B.数据格式
C.页面显示和布局
D.配置和兼容性等问题
20.造成软件的主要原因可从( ABC)方面来查找。
A.技术问题
B.软件本身
C.团队工作
D.资金问题
21.代码评审有哪些方法(ABCD )。
A.代码走查
B.正式会议审查
C.代码会审
D.代码咨询
22.软件产品的质量中的非功能需求包括( ABCD )等。
A.适用性
B.有效性
C.可靠性
D.性能
23.当程序有修改,并且要求保证原有功能正常的情况下,必须采用( D )方法。
A.单元测试
B.集成测试
C.系统测试
D.回归测试
24.对于整个软件的本地化过程来说,需要解决的技术问题主要有(AC)。
A.数据格式
B.页面显示和布局
C.配置和兼容性问题
D.翻译问题
25.测试团队的基本责任应该是( ABCD )。
A.发现软件程序、系统或产品中的所有问题
B.尽早地发现问题
C.督促开发人员尽快地解决程序中的缺陷
D.帮助团队解决资金问题
26.驱动程序,用以模拟被测模块的( A )模块。
A.上级模块
B.下级模块
C.同级模块
D.其他
27.整体测试用例的质量要求包括( ABCD )。
A.覆盖率
B.易用性
C.易维护性
D.粒度适中
28.易用性、兼容性、安装、文档测试等主要在( A )阶段完成。
A.单元测试
B.集成测试
C.功能测试
D.验收测试
二、判断题(分值)
1.能够尽可能早的发现软件缺陷,就能够尽可能地节约修复缺陷的成本,因此,因此在软件的设计阶段修复缺陷的费用最低。( F )
2.根据著名的瀑布模型,软件测试应该处在“编程”的下游、在“软件维护”的上游,先有编程,后有测试,测试的位置很清楚。( T )
3.为了能更多测试出软件的缺陷,测试用例的一般要求越复杂越好。( F )
4.因为软件开发人员不止一人,因此在测试时候,只能进行松散地实施测试。(F )
5.每一种测试方法都必须执行程序,才能得到最好的效果。( F )
6.单元测试的主要人员构成是开发人员。( T )
7.集成测试就是系统测试。( F )
8.在进行系统测试的时候,当发现有错误时候,应该及时修正,紧接着修正下一个错误。( T )
9.有的时候因为时间紧迫,可以临时安排几个程序员或者行业新手做测试工作。(F)
10.在实际的运用中,无论对于白盒测试和黑盒测试,通常使用其中一种方法就可以完成对某一软件的测试工作。( F )
11.验收测试是测试的最后一个环节,该测试完成后,马上可以交付用户使用。( F )
12.软件质量的要求是要满足软件的功能性需求。( F )
13.系统测试的目的是检查已经通过单元测试的单元之间的接口是否存在问题。(T)
14.在软件的开发中,每次回归测试都要重新运行完整的测试包。( F )
15.在整个软件团队中,对软件测试人员的要求比较低,会操作计算机、有一定的软件使用经验就可以。(F )
16.在对软件缺陷的描述中,测试人员可以对有个人的观点,也可以对开发人员进行评价,有利于开发人员提高开发质量。(F )
17.在整个软件生命周期中的每个阶段、每个时刻都存在着软件测试活动,软件测试伴随着软件开发。( T )
18.验收测试是由用户完成的。( F )
19.在一个规范的软件的开发中,开发人员的人数一般大于测试人员的人数。( F )
20.在整个开发周期中要对测试用例进行有效的跟踪和维护。( T )
21.功能测试也可以采用白盒测试的方法。(F )
1.在软件测试过程中,应该遵循的原则是?(1)、尽早可能展开预防性测试;(2)、可追溯性;(4)、投入/产出原则;(5)、80/20原则;(6)、的软件测试机构或委托第三方测试,即避免开发人员一边开发,一边测试的情况的出现。
2.测试用例的设计的步骤一般包括?(1)、测试需求分析;(2)、业务流程分析;(3)、测试用例设计;(4)、测试用例评审;(5)、测试用例更新完善。
3.测试用例的原则?(1)测试用例的代表性;(2)测试结果的可判断性;(3)测试结果的可再现性。
4.常用到的软件质量模型有哪些?并简述一下。(1)软件测试瀑布模型:分为测试计划、需求分析、概要设计、详细设计、软件测试、运行和维护7个阶段,自顶向下执行。强调阶段划分及顺序性、各阶段工作及其文档的完备性。(2)软件测试V模型:也称为RAD模型,即快速应用开发模型。属于线性顺序一类的软件开发模型。
5.什么是软件测试计划?是指导测试过程的纲领性文件,包含产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流和风险分析等内容。
6.制定软件测试的计划的原则有?(1)制定测试计划应尽早开始;(2)保持测试计划的灵活性;(3)保持测试计划简洁和易读;(4)尽量争取多渠道评审测试计划;(5)计算测试计划的投入。
7.制定软件测试的技术的步骤有?(1)产品基本情况调研;(2)测试需求说明;(3)测试的策略和记录;(4)测试资源配置;(5)计划表;(6)问题跟踪报告;(7)测试计划的评审
8.什么是静态测试、动态测试?静态测试:是一种不通过执行程序而进行测试的技术,只是检测和评审。动态测试:直接执行被测试程序以提供测试支持。
9.什么是白盒测试、黑盒测试?二者的关系是什么?一、(1)白盒测试:又称功能功能测试、数据驱动测试和行为测试,是一种从用户观点出发的测试,被测程序为黑盒子,通过测试来检测每个功能是否能够正常使用(2)黑盒测试:又称结构测试和逻辑驱动测试,是知道产品内部工作过程,通过测试来检测产品内部动作是否按照规格说明书的规定去正常运行。二、白盒测试偏重实现方式,注重局部;黑盒测试偏重业务方面,注重整体。有着本质区别,又是相互联系、相辅相成。
10.软件测试的过程是什么?(1)测试一致性;(2)可持续改进测试过程;(3)便于管理;(4)系统测试;(5)验收测试;
11.软件测试与软件开发的过程的关系是什么?(1)测试工程师与开发工程师目标一致、行为对立、并行工作,有生产就必然有质检,二者的工作相辅相成,开发人员和测试人员的主要矛盾就集中在对bug的定义上。(2)软件测试工程师:查找bug、管理bug、质量保证。软件开发:系统设计、编码、修改bug
12.白盒测试的覆盖准则有哪些?(1)语句覆盖 ;(2)判定覆盖;(即分支覆盖); (3)条件覆盖 ;(4)判定-条件覆盖 ;(5)条件组合覆盖 ;(6)路径覆盖 。
13.白盒测试的常用工具有哪些?各适用于什么情况?(1)静态白盒测试:在不执行的条件下有条理地仔细审查软件设计、体系结构和代码,从而找出软件缺陷的过程。(2)动态白盒测试:需要对各个模块功能、模块间的接口、局部数据结构、主要执行路径、错误处理等反面的测试
14.单元测试是什么?单元测试是在软件开发过程中要进行的最低级别的测试活动,起目的在于发现每个模块内部可能存在的差距。
15.单元测试的原则有哪些?(1)单元测试越早进行越好;(2)单元测试应该根据《软件详细设计规格说明》进行;(3)对于修改过的代码应该重做单元测试,以保证对已发现错误的修改没有引入新的错误;(4)当测试用例的测试结果与设计规格说明书的预期结果不一致时,测试人员应该如实记录实际的测试结果;(5)单元测试应注意选择好被测试软件单元的大小;(6)一个完整的单元测试说明应该包含软件证明测试和负面测试;(7)注意使用单元测试工具。
16.单元测试的重要性及目的是什么?一、(1)提前发现问题并解决可以节约时间(2)是测试阶段的基础,为后期的集成测试和系统测试做好准备;(3)对单元测试,容易发现问题,减少成本。二、目的:是暴漏出失败和错误。失败的可能性是可预期的,并且可以使用断言来进行检查。而错误则是不可预期的问题
17.简述单元测试的过程?(1)准备阶段;(2)编制阶段(3)代码审查阶段;(4)单元测试阶段;(5)评审、提交阶段。
18.什么是插桩程序设计?是在保证被测程序原有逻辑完整性的基础上在程序中插于一些探针,通过探针的执行抛出程序运行的特征数据,通过这些数据的分析,可以获得程序的控制流和数据信息,进而得到逻辑覆盖等动态信息,从而实现测试目标的方法。
19.集成测试是什么?是在假定各个软件单元已经通过了单元测试的前提下,检测各个软件单元之间相互接口是否正确。
20.集成测试的主要任务是什么?(1)将各个模块连接起来,检查模块相互调用时,数据结构接口是否丢失;(2)将各个子功能组合起来,检查能否达到预期要求的各项功能;(3)一个模块的功能是否会对另一个模块的功能产生不利的影响;(4)全局数据结构是否有问题,会不会被异常修改;(5)单个模块的误差积累起来,是否被放大,从而达到不可接受的程度。
21.集成测试与单元测试,系统测试的区别是什么?一、集成测试与单元测试的区别:(1)集成测试关注的是模块间的接口、接口之间的数据传递关系、单元组合后是否实现预计的功能;(2)集成测试组装的对象比单元测试的对象级别要高。二、集成测试与系统测试的区别:(1)系统测试对象是整个系统以及与系统交互的硬件和软件平台;(2)集成测试所测试的对象是模块间的接口,其目的是在找出在模块接口上面,包括整体体系结构上的问题;(3)软件的集成测试工作最好由不属于该软件开发组的软件设计人员承担,以提高集成测试的效果。
22.集成测试的内容有哪些?(1)制定集成测试计划;(2)设计集成测试;(3)实施集成测试;(4)执行集成测试;(5)评估集成测试。
23.如何进行集成测试的用例设计?(1)为系统运行设计用例;(2)为正向测试设计用例;(3)为逆向测试设计用例;(4)为满足特殊需求设计用例;(5)为高覆盖设计用例;(6)测试用例补充;(7)注意事项。
24.集成测试的方法有哪些?分别适用于哪些情况?一、非曾式集成;将所有经过单元测试的模块一次性组装到被测系统中进行测试,不考虑模块之间的依赖性和可能的风险;二、自顶向下集成;从控制模块开始,沿着程序的控制层向下移动,逐渐把各个模块结合起来。三、自底向上集成;从最底层的模块开始,按结构图自下而上和自底向上的集成方法;四、混合集成。对高风险模块优先进行重点测试,保证系统稳定性。
25.系统测试是什么?是指测试整个系统已确定其是否能够提供应用的所有需求行为,包含了多种测试活动,主要分为功能性测试和非功能测试。
26.系统测试与用户测试有何不同?系统测试是测试整个系统已确定其是否能够提供应用的所有需求行为;用户测试分为体验、界面、验收、用户测试报告组成
27.简述系统测试的主要内容?(1)功能测试。即测试软件系统的功能是否正确,其依据是需求文档,如《产品需求规格说明书》。(2)健壮性测试。即测试软件系统在异常情况下能否正常运行的能力。健壮性有两层含义:一是容错能力,二是恢复能力
28.容量测试与压力测试的区别有哪些?(1)压力测试是在给系统不断加压,增加并发量,直到崩溃,找到系统所能承受的极限值。(2)容量测试是在预先分析的极限值下,系统能否正常运行。
29.什么是性能测试?通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者结合进行。
30.什么是回归测试?它有什么好处?一般如何进行回归测试?一、回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。二、大幅降低系统测试、维护升级等阶段的成本。三、(1)为每个项目创建用例基线库;(2)标识每个用例的重要性及有线级;(3)建立用例直接的关系。
31.验收测试是什么?是在软件产品完成了功能测试和系统测试之后,产品发布之前所进行的软件测试活动,它是技术测试的最后一个阶段,是将程序与其最初的需求及最终用户当前的需要进行比较的过程,也叫交付测试。
32.验收测试的主要内容是什么?(1)文档审查(2)安装测试(3)功能测试(4)性能测试(5)界面测试(6)加载测试(7)配置测试(8)恢复测试(9)安全性测试。
33.α测试和β测试有什么不同?a 测试是在公司内部由用户组织与的测试;a 测试对发现缺陷是可控的,但缺陷是人数有限、地域。b测试是在外部有用户进行的测试;b测试不会认真地去发现缺陷,有时仅仅是为了抢占市场。
34.如何组织软件测试团队?(1)建立合理、高效的组织结构(2)建立正确的分工体系,即角色与职责;(3)培养合格的测试人员。
35.如何进行软件测试人员的培养?(1)人员选择要求;(2)人员培训与培养;(3)测试人员职业发展规划;下载本文