教材《软件测试技术》第二版
考试大纲 + 课后习题
第1章 概述
-
考核知识点与考核目标
- 软件测试的基本概念(
重点
)
识记:软件测试的定义
理解:软件测试生命周期、软件开发与测试模型 - 软件测试技术分类(
重点
)
理解:软件测试技术的分类 - 软件测试目的和原则(
次重点
)
理解:软件测试目的和原则 - 软件测试工作流程(
重点
)
理解:软件测试工作流程 - 软件开发与软件测试的关系(
一般
)
理解:软件开发与软件测试的关系
- 软件测试的基本概念(
-
课后习题
- 软件测试的目的:
发现软件中出现的错误
- 软件测试的原则:
1. 测试用例不仅选用的合理的数据,还要选择不合理的数据;2.应制定测试计划并严格执行;3. 对发现错误较多的程序段,应该进行更深入的测试;
- 测试时机:
应该尽可能早地进行测试
- 软件测试对象:
软件代码、文档、数据
- 什么是软件测试?简述其目的和原则。
答:简单的说,是为了发现错误而执行软件产品程序的过程;大体来讲就是软件产品在交付之前,对软件进行检测是否满足客户需求的一种工作;
测试目的:通过对软件错误的原因和分布进行归纳,来发现并排除软件产品的缺陷,对在需求和设计过程中存在的问题查缺补漏,从而确保软件的产品的质量;
测试原则:
1、尽早的和不断的进行软件测试;
2、不可能完全的测试;无法找出所有的设计错误,并且不能采用逻辑来证明程序的正确性;
3、增量测试,由小及大;单元测试、集成测试、确认测试、系统测试
4、避免测试自己的程序;
5、设计周密的测试用例
6、注意错误集中的现象;
7、确认bug的有效性;
8、合理安排测试计划
9、回归测试;
10、测试结果的统计和分析;
11、及时更新测试;- 软件测试阶段是如何划分的?
大体分为以下3个阶段:
1、需求阶段,需求阶段是测试活动的前提,明确了软件产品最终的实现的效果,生成测试总体计划;
2、设计及编码阶段,根据需求阶段的文档进行概要设计,形成集成测试方案并以模块为单位循环进行单元测试、编码、单元测试,直至所有单元测试成功;
3、集成测试、系统测试、验收测试阶段,完成集成测试后,申请系统测试、最后再进行验收测试- 简述软件测试过程。
软件测试过程大概分六步走:
第一步:对要执行测试的产品项目进行分析,确定测试策略,制定测试计划。该计划被审核批准后转向第二步。测试工作启动前一定要确定正确的测试策略和指导方针,这些是后期开展工作的基础。只有将本次的测试目标和要求分析清楚,才能决定测试资源的投入。
第二步:设计测试用例。设计测试用例要根据测试需求和测试策略来进行,进度压力不大时,应该设计的详细,如果进度、成本压力较大,则应该保证测试用例覆盖到关键性的测试需求。该用例被批准后转向第三步。
第三步:如果满足“启动准则”,那么执行测试。执行测试主要是搭建测试环境,执行测试用例。执行测试时要进行进度控制、项目协调等工作。
第四步:提交缺陷。这里要进行缺陷审核和验证等工作。
第五步:消除软件缺陷。通常情况下,开发经理需要审核缺陷,并进行缺陷分配。程序员修改自己负责的缺陷。在程序员修改完成后,进入到回归测试阶段。如果满足“完成准则”,那么正常结束测试。
第六步:撰写测试报告。对测试进行分析,总结本次的经验教训,在下一次的工作中改。- "软件测试能够保证软件质量"这句话对吗?软件测试软件质量之间是什么关系?
对。因为对软件测试的目的就是为了确保软件是否满足了需求说明而进行的一项工作。软件质量是依赖于软件测试的,因为软件是人编先写和设计的,是人就一定会犯错误。所以,如果不对软件进行测试验证,软件的质量就得不到保障;
- 简述软件开发进程和测试进程的关系;
测试应该尽可能早的进行,也就是从需求阶段就要开始进行,知道软件产品交付给客户。测试的工作应该贯穿于整个软件开发周期,准确来说是跟软件开发齐头并进的。
- 什么是回归测试?什么时候进行回归测试?
- 软件测试的目的:
回归测试就是对上一版本测试中产生的缺陷问题,经过修改后,再次进行验证,确认bug是否修复的过程。
第3章 白盒测试
-
考核知识点与考核目标
- 白盒测试概述(
次重点
)
理解:白盒测试的含义
白盒测试的分类
白盒测试与调试的异同 - 白盒测试用例设计技术(
重点
)
应用:逻辑覆盖测试(语句覆盖、判定覆盖、条件覆盖、路径覆盖)
边界值分析
基本路径测试
循环语句测试
- 白盒测试概述(
-
课后习题
- 白盒测试的描述
1、逻辑覆盖法是一种常用的白盒测试方法;
2、白盒测试仅与程序的内部结构有关,完全可以不考虑程序的功能要求
3、测试基于代码,无法求额定设计正确与否- 对于逻辑表达式((a&b) || c), 需要多少个测试用例才能完成条件组合覆盖?
4种
1. a = 1 b= 1 / c = 1 -- 真真
2. a = 1 b = 1 / c = 0 -- 真假
3. a = 1 b = 0 / c = 1 -- 假真
4. a = 0 b = 1 / c = 0 -- 假假- 逻辑覆盖法包括:语句覆盖、判定覆盖(分支覆盖)、条件覆盖、判定-条件覆盖、路径覆盖
- 如果测试用例集实现了某软件的路径覆盖,那么他一定同时实现了该软件的
判定覆盖
- 使用白盒测试方法时,确定测试数据的依据是指定的覆盖标准和程序的
内部逻辑
; - 简述白盒测试用例的设计方法,并进行分析总结;
白盒测试的测试用设计方法包括以下几点:
1. 逻辑覆盖法
2. 边界值分析
3. 基本路径测试
4. 循环语句测试
5. 程序插装
逻辑覆盖测试就是根据程序的逻辑设计结构设计测试用例,在设计时,可以如下覆盖准则进行设计:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、路径覆盖;
边界值分析对程序中的条件值使用等价类划分和边界值分析设计测试用例,即要取正常值、非正常值、边界值进行测试;
基本路径测试是使用流图或者程序图来描述程序中的逻辑控制流程,根据流程图的符号划分出程序的可能执行路径进行测试用例设计;
循环语句测试专门针对程序中的循环流程进行测试用例设计。有简单循环、嵌套循环(从内往外进行)、串接循环(内循环依赖外循环的结果)、无结构循环等用例设计方法;
程序插装就是往程序中插入操作,实现测试。如: 插入打印代码,进行验证;- 分析归纳逻辑覆盖的各种策略,并比较每种覆盖的特点,分析在怎样的情况下采用何种覆盖方式。
逻辑覆盖测试包括:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、路径覆盖。
1. 语句覆盖的策略是使程序中的每个可执行语句至少执行一次。 发现不了判断中的逻辑错误;使用场景:对程序中检查不可执行语句有一定作用;
2. 判定覆盖的策略是使程序中的每个判断条件分支,区真取假,各执行一次。 无法确定判断内部条件的错误;
3. 条件覆盖的策略是使程序中每个判断中每个条件的真假值至少满足一次。 覆盖条件的测试用例不一定覆盖了分支
4. 判定-条件覆盖是使程序中判断的每个条件的所有可能至少出现一次,每个判断本身的判定结果也至少出现一次;结合了判定覆盖和条件覆盖。能覆盖所有分支,但是不能覆盖所有路径;
5. 路径覆盖使测试用覆盖中所有可能的路径。在实际应用的程序的可执行路径非常庞大,做到完全测试是不可能的。- 按照各种覆盖方法为下述语句设计测试用例。
if (a > 2 && b < 3 && (c > 4 || d < 5)) { statement1; } else { statement2; }
答:1. 语句覆盖测试用例
CASE1 a = 3; b = 2; c = 5 d = 4 执行statement1
CASE2 a = 2 执行statement2;
2. 判定覆盖测试用例
CASE1 a = 3; b = 2; c = 5 d = 4 执行statement1
CASE2 a = 2 执行statement2;
3. 条件覆盖测试用例
case1 a = 3; b = 2; c = 5 d = 4 执行statement1
case2 a = 1 执行statement2
4. 条件判定覆盖测试用例
case1 a = 3; b = 2; c = 5 d = 4 执行statement1
case2 a = 1 b = 1 c = 1 d = 6 执行statement2
5. 路径覆盖测试用例
case1 a = 3; b = 2; c = 5 d = 4 执行statement1
case2 a = 1 执行statement2- 针对test函数按照基本路径测试方法设计测试用例。
int Test(int i_count, int i_flag) {
int i_temp = 0;
① while (i_count > 0) {
② if(i_flag == 0) {
③ i_temp = i_count + 100;
break;
}
⑨ else {
④ if (i_flag == 1) {
⑤ i_temp = i_temp + 10;
}
⑩ else {
⑥ i_temp = i_temp + 20;
}
}
⑦ i_count --;
}
⑧ return i_temp;
}
控制流图:
测试用例如下:
路径1: ① → ⑧ (i_count <= 0)
路径2: ① → ② → ③ → ⑧ (i_count > 0, i_flag = 0)
路径3:① → ⑨ → ④ → ⑤ → ⑦ → ① → ⑧ (i_count > 1, i_flag = 1)
路径4: ① → ⑨ → ④ → ⑥ → ⑦ → ① → ⑧ (i_count > 1, i_flag != 1)
- 用逻辑覆盖对下面的Java 代码段进行测试(画出程序流程图和控制流图,并写出每种覆盖准则设计测试用例)。
public char function(int x, int y) {
char t;
① if (x >= 90 && y >=90) {
② t = 'A';
③ } else {
④ if (x + y >= 165) {
⑤ t = 'B';
}
⑥ else {
t = 'C';
}
}
⑩ return t;
}
这里就只画图了
第4章 黑盒测试
-
考核知识点与考核目标
- 黑盒测试概述(
次重点
)
理解:黑盒测试的含义
黑盒测试与白盒测试的异同
黑盒测试的原则和策略 - 黑盒测试用例设计技术(
重点
)
应用:等价类划分
边界值分析
因果图法 决策表法
- 黑盒测试概述(
课后习题:
- 黑盒测试的描述:
- 不需要了解程序内部的代码及实现
- 判断用户会用到哪些功能,会遇到哪些问题;
- 基于软件开发文档,所以也能知道软件实现了文档中的那些功能;
- 黑盒测试的方法有:等价类划分、边界值分析法、 错误推测法、因果图法、决策表法;
- 划分软件测试属于白盒测试还是黑盒测试的依据是:是否能看到被测源程序;
- 简述黑盒测试方法的特点。
特点如下:
1. 适用于功能测试、可用性测试及可接受性测试;对照说明书测试程序功能;
2. 可测试长的、复杂的程序的工作逻辑,易被理解。不可能进行完全的、毫无遗漏的输入测试,有一些软件Bug或人为设置的故障通过黑盒测试是无法检测出来的。
3. 黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。很明显,如果外部特性本身设计有问题或规格说明的规定有误,用黑盒测试方法是发现不了的。
- 健壮等价类测试和标准等价类测试的主要区别是什么?
等价类划分法是把所有可能输入的数据,即程序的输入域划分若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例;等价类就是指某个输入域的子集和;
针对是否对无效数据进行测试,可以将等价类测试分为标准等价类测试和健壮等价类测试;
1. 标准等价类测试是只考虑有效值的数据,测试用例使用每个等价类中的一个值;
2. 健壮等价类测试主要考虑了无效输入,对有效输入,测试用例从每个有效等价类中取一个值,对无效输入,一个测试用例取一个无效值,其他值均取有效值。
- 试为三角形问题中的直角三角形开发一个决策表和相应的测试用例。注意:存在等腰直角三角形。
样例决策表:
来不及细写了 格式大概如下:
如果条件有n个,那么规则的个数就是2的n次方; ‘-’ 代表条件极为相似的关系,统一使用'-'表示;
条件 / 规则 | 规则 1-8 |
规则 9 |
规则 10 |
规则 11 |
规则 12 |
规则 13 |
规则 14 |
规则 15 |
规则 16 |
---|---|---|---|---|---|---|---|---|---|
条件:c1: a、b、c构成三角形? c2: a = b? c3: b = c? c4: a = c |
N - - - |
Y Y Y Y |
Y N Y Y |
Y Y N Y |
Y Y Y N |
Y Y Y Y |
Y Y Y Y |
Y Y Y Y |
Y Y Y Y |
动作:r1: 不构成三角形 r2: 一般三角形 r3: 等腰三角形 r4: 等腰直角三角形 r5: 等边三角形 |
✔️ |
✔️ |
|
|
|
|
|
|
|
测试用例:
测试用例编号 | a | b | c | 结果 |
---|---|---|---|---|
1 | 10 | 10 | 10 | 等边三角形 |
1 | 1 | 2 | 3 | 一般三角形 |
1 | 0 | 10 | 10 | 不构成三角形 |
- 给定二元函数f(x,y),输入变量x,y分别满足x ∈[1,16], y∈[1,51]。 写出该函数采用边界值分析法设计的测试用例。
如果程序有n个变量,那么采用边界值分析测试程序会产生4n + 1个测试用例(健壮性测试6n + 1),取值策略 包括min(最小值) min+(略大于最小值) nom(正常值) max-(略小于最大值) max(最大值) min-(略小于最小值) max+ (略大于最大值)
{ <1, 25>, <2, 25>, <15, 25>, <16, 25>, <8, 25>, <8, 1>, <8, 2>, <8, 50>, <8, 51> }
如果是健壮性边界测试再加上{<0, 25>, <17, 25>, <8, 0>, <8, 52>}
第5章 单元测试
- 考核知识点与考核目标
- 单元测试的概念(
次重点
)
理解:单元测试的概念 - 单元测试环境(
一般
)
理解:单元测试环境 - 单元测试策略(
重点
)
理解:自顶向下策略、自底向上策略、孤立测试、综合测试 - 单元测试分析(
次重点
)
理解:单元测试分析 - 单元测试步骤(
次重点
)
理解:单元测试步骤 - 单元测试用例设计(
重点
)
应用:单元测试用例设计
- 单元测试的概念(
课后练习
单元测试中用来模拟被测模块调用者的模块是:驱动模块
-
单元测试的内容包括:
- 判断得到的结果是否正确;
- 判断是否满足所有的边界条件;
- 分析是否能够使用反相关联检查;
- 分析是否可以强制一些错误发生;
- 分析模块接口;
- 分析局部数据结构;
- 分析独立路径;
- 分析出错处理是否正确;
在进行单元测试时,常用的方法是:采用白盒测试,辅之以黑盒测试;
单元测试有哪些步骤?各个步骤有哪些实施内容?
答: 单元测试步骤主要分为以下几个阶段:
1. 准备阶段,准备开发环境,设计测试用例并审查;
2. 编制阶段,程序员根据设计说明书进行编码;
3. 代码审查阶段,对源代码进行代码审查;
4. 单元测试阶段,利用相关测试工具对单元测试代码进行测试,最终生成测试报告和bug清单;
5. 评审、提交阶段,对源代码文件进行统计评审,给出评审结论,并将其提交到配置库中;
- 简述单元测试的目的和意义。
答:
单元测试的目的:
验证开发人员所编写的代码是否按照其所设想的方式执行,并产生符合预期值的结果,确保产生符合其需求的程序单元;
单元测试的意义:
程序在经过单元测试之后,系统集成过程将会大大的简化,开发人员可以将精力更好的集中单元之间的交互作用和全局的功能实现上,而不会陷入充满很多bug的单元之中不能自拔;
- 单元测试策略主要有哪些,并描述这些策略。
答:单元测试的策略如下:
1. 自顶向下的单元测试策略,从最顶层开始,将顶层调用的模块做成桩模块,再测试下一层的时候,以上一层为驱动模块进行测试,直到测试完所有单元;
2. 自底向上的单元测试,从调用模块的最底层模块开始测试,模拟调用该模块的模块为驱动模块,再对上一层模块测试时,用已经被测试的模块做桩模块,以此类推,直至测试完所有单元;
3. 孤立测试,无须考虑每个模块之间的关系,再对单个模块进行测试时,对模块单独设计驱动模块和桩模块,逐一完成所有单元模块的测试;
- 什么是驱动模块和桩模块?为下面的函数构造一个驱动模块。
int devide(int a, int b) {
int c;
if (b == 0) {
printf("除数不能为0");
return 0;
}
c = a / b;
return c;
}
答:
驱动模块相当于所测模块的主程序,它接受所测程序的数据,把这些数据传递给所测模块,最后再实际输出测试结果;
桩模块用于替代所测模块调用的子模块。桩模块可以进行少量的数据操作,不需要实现子模块所有功能,只需要根据需要来实现子模块的一部分功能;
驱动模块构造
void main() {
int x, y, result;
scanf("%d%d",x,y);
result = divide(x,y);
printf(result);
}
第6章 集成测试
- 考核知识点与考核目标
- 集成测试概述(
一般
)
理解:集成测试的概念
集成测试与系统测试的区别
集成测试与开发的关系
集成测试的层次
集成测试的过程 - 集成测试的分析方法(
重点
)
理解:体系结构分析
模块分析
接口分析
风险分析
可测试性分析
集成测试策略分析 - 集成测试策略(
重点
)
理解:基于调用图的集成
基于路径的集成 分层集成 基于功能的集成 高频集成 基于进度的集成 基于风险的集成 基于事件的集成 、客户/服务器的集成
应用:大爆炸集成 、自顶向下集成 、自底向上集成、 三明治集成 、改进的三明治集成 - 集成测试用例设计(
重点
)
应用:集成测试用例设计
- 集成测试概述(
课后习题
- 集成测试有哪些不同的集成方法? 简述不同方法的特点。
答:集成测试的方法包括:
1. 基于分解的集成:分解的集成又分为非增量式和增量式两大类。大爆炸集成方法属于非增量式测试,就是一次性把通过单元测试的模块集成到一起进行测试,不考虑组件之间的依赖关系和可能存在的风险。自顶向下和自底向上集成属于增量式集成。自顶向下集成就是从顶层控制模块开始,依照系统层次结构图,对各个模块一边组装一边进行测试。自底向上集成就是从最小的底层模块开始,按层次结构图,逐层向上集成。
2. 三明治集成,是一种混合式增殖式测试策略,综合了自顶向下和自底向上方法的优点,也叫基于功能分解集成
。主要是区分出一个中间并以此为界,中间层上方使用自顶向下策略,中间层下方使用自底向上策略,中间层各模块先跟下层集成,然后字跟上层,最后对所有模块进行集成测试;
3. 修改过的三明治集成,主要是补充了三明治集成中间层不能进行充分测试的缺点。即对中间使用独立测试策略,就是开发相应的驱动模块和桩模块对中间层的模块进行测试
4. 基于调用图的集成,把程序内部个单元的调用关系模拟成单元调用图,而单元调用图是一种有向图,节点表示程序单元,边代表调用关系。有两种集成方式,成对集成和相邻集成。成对集成就是对调用图的每个边都创建一个集成测试会话,虽然会创建多个集成测试过程,但可以减少驱动模块和桩模块的开发。相邻集成是针对节点而言的,对节点及该节点邻居形成一个集成进行测试。
5. 基于路径的集成,根据源节点、汇节点生成模块执行路径的集成方式。源节点指的是程序开始执行或者开始处的点。汇节点指的是程序执行片段结束处的点。
6. 分层集成,对系统应用进行分层,然后各层采用大爆炸,自顶向下、自顶向上、三明治的策略进行集成测试。适用于通信系统,不适合各层关系复杂的系统;
6. 基于功能的集成,按照模块功能的重要程度组织模块的集成顺序。依次按照模块的重要程度进行集成测试;
7. 高频集成,频繁的向一个已经稳定的系统基线中添加新的代码(迭代),防止给稳定系统带来错误的一种集成测试方法。
8. 基于进度的集成,最大限度的保持开发和测试的并行性,对最早可获得代码进行集成,必要时开发驱动模块或桩模块进行集成测试;
9. 基于风险的集成,尽可能早的验证高风险的模块;
10. 基于事件的集成,又叫基于消息的集成,主要是验证消息路径的正确性,渐增式的把系统集成到一起;
11. 基于使用的集成,主要是针对面向系统,根据类之间的关系进行集成测试。
12. 客户服务器的集成,单独测试每个客户端和服务器端,必要时设计驱动模块和桩模块;
- 简述基于功能分解的集成的特点,并分析其适用的应用场景。
基于功能的分解集成也就是三明治集成,它的特点是:以系统功能分解为基础,在方法上综合了自顶向下和自底向上两种集成的优点,并在各个子模块上进行了真正的大爆炸集成,因此对于驱动器和桩模块的工作量较少,然而也会带来定位缺陷困难的问题;
它的使用场景:适用大部分软件开发项目,采用结构化编程方法的产品;
- 简述基于调用图的集成的特点, 并分析其适用的应用场景。
基于调用图的集成的特点:它属于结构性测试方法,将功能分解图细化为单元调用图。他有两种集成方式,分别是成对集成和相邻集成。这两种方法都能大大减少驱动器和桩模块开发的工作量,相邻集成的特点决定了它也具有缺陷隔离困难的缺点;
他的应用场景:使用与大部分软件开发项目,采用结构化编程方法的产品;
-
如图所示,采用基于功能分解的集成方法分析模块图的集成测试会话,分别采用自顶向下、自顶向上、三明治集成的方法。
使用自顶向下集成步骤如下:
1. 测试M1模块,并且设计桩模块D2、D3、D4代替M1模块实际调用的M2、M3、M4模块;
2. 使用实际M2模块代替D2桩模块测试;
3. 使用M3实际模块代替D3桩模块,并设计D5、D6桩模块代替M3的调用模块M5、M6进行测试;
4. 使用实际模块4代替D4桩模块进行测试;
5. 使用实际模块M5代替D5桩模块进行测试;
6. 使用实际模块M6代替D6桩模块,并设计D7桩模块代替M6调用的M7模块,然后进行测试;
7. 使用M7代替桩模块D7进行测试;
使用自底向上集成策略步骤如下:
1. 为M7的调用模块M6设计D6驱动模块,然后将M7和D6集成进行测试;
2. 模拟M3调用M6的关系,设计D3驱动模块,把通过集成测试的M6和M7集成起来进行测试;
3. 模拟M1调用M3设计D1驱动模块,与M7、M6、M3模块集成进行测试;
4. 其他以此类推...
使用三明治集成步骤如下:
以M3模块为中间层,并行测试目标层上一层,目标层下一层,具体步骤如下:
第7章 系统测试
- 考核知识点与考核目标
- 系统测试的概念(
次重点
)
理解:系统测试的概念 - 系统测试过程(
一般
)
理解:系统测试过程 - 系统测试类型(
重点
)
理解:系统测试类型 - 系统测试用例设计(
重点
)
应用:系统测试用例设计
- 系统测试的概念(
课后习题
- 什么事系统测试?
系统测试就是将已经集成好的软件系统,作为整个计算机系统的一个单元,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。
- 系统测试主要包括哪些内容?
测试主要包括:
1. 功能测试
- 系统中最基本的测试,验证所开发的系统是否达到了客户的要求,是否能够按照需求说明正常工作;
2. 协议一致性测试
- 主要针对分布式系统,测试系统之间的通信协议的一致性、性能、互操作性、健壮性;
3. 性能测试
客户端的性能测试
- 并发性能测试,利用自动化负载工具进行测试;
- 疲劳强度测试、系统咋正常情况支持的用户最大并发数;
- 大数据量测试、针对系统存储、传输、看,
- 速度测试: 测试软件的响应时间
网络性能测试
应用在服务器的性能测试
4. 压力测试
- 又叫强度测试,就是在系统各种资源超负荷的情况下,软件的运行情况、反应速度。
5. 容量测试
- 在系统正常运行的过程中,测试软件能够处理的数据容量;
6. 安全性测试
- 软件的用户数据、机密信息是否安全,系统内的保护机制是否能够抵御入侵者的共计;
7. 恢复性测试
- 检验软件在发生错误后,是否能够从错误中恢复过来,继续运行;
8. GUI测试
- 软用户界面测试,测试软件界面是否与设计的一致,是否可以按照规定流程显示正确的内容;
9. 备份测试
- 测试软件备份数据的能力
10. 健壮性测试
- 检查软件的容错能力,在软件出现错误时,软件是否能够继续运行或者自动恢复;
11. 兼容性测试
- 属于适配性测试,验证能否在不同的系统上面有正确的表现
12. 可用性测试
- 验证软件产品的设计是否是真正的面向用户,用户是否易用;
13. 可安装性测试
- 验证软件是否能够正确的安装到支持的环境中
14. 文档测试
- 验证文档是否和软件的表现一致
15. 在线帮助测试
- 在线帮助用户,提供实时咨询的服务
16. 数据转换测试
- 验证软件升级时,新旧数据的适配
17. 验收测试
客户根据需求进行验收软件
- 针对某论坛,考虑需要要测试的内容。
针对论坛涉及的增、删、改、查、登录等方面进行测试内容的设计,具体就不写了;
- 针对某杀毒软件(如360杀毒), 考虑其需要测试的内容。
以平时自己使用软件的思路,设计测试内容;
第8章 软件测试自动化
- 考核知识点与考核目标
- 自动化测试概述(一般)
理解:自动化测试的时机
自动化测试成本
自动化测试生命周期
自动化测试价值 - 自动化测试的特点(次重点)
理解:自动化测试与手工测试的比较
自动化测试的优缺点 - 自动化测试工具的选择和使用(重点)
应用:自动化测试工具的选择和使用 - 常见的自动化测试工具(次重点)
应用:JUnit 、C++ Test 、LoadRunner
- 自动化测试概述(一般)
课后习题
- 简述软件测试自动化的意义。
适时地进行自动化测试,能够使测试功能得以改进,并提高开发工作的质量,降低开发成本和缩短开发周期。
- 在运用软件自动化测试时,应注意哪些缺点和事项。
在运用软件自动化测试时,应注意以下几点:
1. 自动化测试的所花费的成本,尤其是时间成本;
2. 手工测试能够发现自动化测试所不能发现的问题;
3. 如果产品的行为变了,自动化测试就可能会报告一些不真实的bug;
4. 自动化测试价值的大小和生命周期的长短;
5. 要不断跟踪bug报告并加以修改,保留和测试相关的文档;
自动化测试的缺点:
1. 自动化测试不能取代手工测试,测试主要还是要靠人工;
2. 新缺陷越多,自动化测试失败的几率就越大;
3. 工具本身不具有想象力;
4. 技术问题、组织问题、脚本维护实施难;
5. 测试工具和其他软件的互操作性,难以适应新技术革新;
- 软件测试工具主要分为哪几类?
测试工具大体分为以下几类:
1. 白盒测试工具:静态测试工具Logiscope,动态测试工具
2. 黑盒测试工具:TeamTest
3. 测试管理工具:Test Manager
4. 其他自动化测试工具:针对数据库测试的TestBytes 和针对应用性能进行优化的EcoScope等;
- 请解释LoadRunner下最大并发用户数、业务操作响应时间,服务器资源监控指标的含义与用途。
LoadRunner是一种预测系统行为和性能的工业级性能测试负载测试工具;
1. 最大并发用户数,是指服务器的某一功能,在同一时间下,支持访问的最大用户数。可以明确软件规格说明;
2. 业务操作响应时间,是指服务器在响应用户的操作所花费的总时间。
3. 服务器资源监控指标,是指服务器在运行过程中,系统的状态相关的一些数据。比如:吞吐量,内存情况、cpu情况等;
- 了解当前常用的自动化测试工具,并对这些进行针对性的说明。
- JUnit,是 Java编程语言编写的面向对象的单元级测试工具;主要是开发人员在开发时做单元测试使用;
2. C++ Test,能够使用与任何开发周期的易于使用的产品,可以有效的防止软件错误、提高代码的稳定性,实现自动化单元测试;
3. LoadRunner是一种预测系统行为和性能的工业级标准性能负载测试工具;它可以做到轻松创建虚拟用户,创建真实的负载,定位性能问题,分析结果精准定位问题;
第9章 软件BUG和管理
- 考核知识点与考核目标
- 软件 BUG 的产生和影响(
一般
)
理解:软件 BUG 的产生和影响 - 软件 BUG 的种类(
重点
)
理解:需求阶段的 BUG 分析设计阶段的 BUG
实现阶段的 BUG 配置阶段的 BUG 短视将来的 BUG 静态文档的 BUG - BUG 报告单的提交和管理(
一般
)
理解:BUG 报告单的内容、BUG 的管理流程 - 重现 BUG 的分析和方法(
重点
)
理解:重现 BUG 的分析和方法
- 软件 BUG 的产生和影响(
课后习题
- bug的来源和影响有哪些?
- bug的来源有:程序编写错误、需求变更频繁导致的错误、软件设计过于复杂、交流不充分或者沟通出问题、测试人员的经验与技巧不足、时间过于紧迫、缺乏文档、管理上的缺陷;
2. bug的影响有:
- 因为bug过多,可能摧残人员的意识;
- 资源的损失;
- 影响了产品的质量,同时也会严重损坏公司形象;
- bug的种类有哪些?并通过对实际案例的测试,分析一下找出的bug都是在软件生命周期的哪个阶段出现的?
bug的种类有:
1. 需求阶段的bug,如:产品提出的需求模糊、不清晰;还有些需求可能被忽略;有些需求可能相互冲突;
2. 分析设计阶段的bug, 如:忽略一些情况的设计;混乱的设计;模糊的设计;
3. 实现阶段的bug,如:程序员在编码时,可能会出现消息错误、用户界面接错、遗漏一些需求、内存溢出或者程序崩溃;
4. 配置阶段的bug,如:旧代码覆盖了新的代码、测试服务器上的代码跟实现人员本机的代码不一致;
5. 短时将来的bug,设计的时候想的不够全面导致的,如:千年虫问题,如果id的类型使用的Int,但是在长时间的累积,数值会突破峰值,导致溢出;
6.静态文档的bug,如:文档描述不完整,或者描述与实际不一致;
- 简述bug的管理流程。
对bug的管理是测试工作中一个重要部分,测试是为了尽早的发现缺陷,因此对bug进行跟踪管理,确保每个被发现的缺陷都能得到及时处理;
1、bug管理的第一步是测试员选择一个测试用例开始测试;
2、发现实际输出值和程序期望值不一致的时候,就发现了一个bug;
3、将bug提交到bug跟踪管理系统,管理系统会将bug保存到数据库,并同步发送一个消息给最终负责实施员;
4、实施员根据bug的唯一id从数据库查询到改bug信息,修复后,将bug状态改为Fixed并提交数据库;
5、修复bug后,跟踪管理系统会发送消息给测试员;
6、测试员对bug进行确认测试,确认修复就关闭bug,否则就回到第3步;