一:基础概念

软件测试的定义:

Myers (1979)定义测试是执行程序的过程,其目的是发现错误。

本书:软件测试就是一个过程或一系列过程,用来确定计算机代码完成了其应该完成的功能,不执行其不该有的操作。

软件测试的目的(意义)是什么?

软件测试是为了确认软件做了所期望的事情(Do theright thing),另一方面是确认软件以正确的方式来做了这个事件(Do it right)。软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。因此软件测试是保证整个软件开发过程是高质量的。

重要的测试原则:① 软件测试是为发现错误而执行程序的过程② 尽量避免编码人员测试自己的程序③ 好的测试用例能够对未发现的错误高度敏感④ 成功的测试用例能够发现未知的错误⑤ 成功的测试需要仔细定义输入输出的期望值⑥ 成功的测试需要仔细研究分析测试结果

常见的错误:

① 数据引用错误(是否有引用的变量未赋值或为初始化)

② 数据声明错误(是否所有的变量都进行了明确的声明?)

③ 运算错误 (是否存在不一致的数据类型的变量间的运算?)

④ 比较错误 (是否有不同数据类型变量之间的比较运算?)

⑤ 控制流错误 (是否所有的循环最终都终止了?)

⑥ 接口错误 (被调用模块接收到的形参(parameter)数量是否等于调用模块发送的实参(argument)数量?顺序是否正确?)

⑦ 输入/输出错误 (打开文件的语句中各项属性的设置是否正确?)

⑧ 其他检查 (如果程序编译通过了,但计算机提供了一个或多个“警告”或“提示”信息,应对此逐一进行认真检查......)


大多数软件项目应使用人工测试:① 利用错误列表进行代码检查② 小组代码走查③ 桌面检查④ 同行评审⑤ 可用性测试

单元测试与聚合测试:1. 单元测试是测试的基础级别。单元测试着眼于程序或 系统的较小组件模块,执行每个模块以证实其履行了 指定功能 2. 单元测试的优势在于它容许对小单元的测试和调试, 从小单元到大单元的集成过程提供了更好的管理方式 3. 把组件聚合后,必须通过测试确认所有的组件之间能 够正确地协作运行。因此集成测试的目标是暴露接口 的缺陷,以及聚合后的组件之间相互作用的缺陷

高级测试:

模块测试的目的是发现程序模块与其接口规 格说明之间的不一致 

功能测试的目的是为了证明程序未能符合其 外部规格说明 

系统测试的目的是为了证明软件产品与其初 始目标不一

二:白盒测试

定义:白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。

白盒测试的测试方法有:代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。

白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。

其中逻辑覆盖包括语句覆盖判定覆盖条件覆盖、判定/条件覆盖、条件组合覆盖路径覆盖。六种覆盖标准发现错误的能力呈由弱到强的变化:

1.语句覆盖:每条语句至少执行一次。
2.判定覆盖:每个判定的每个分支至少执行一次。
3.条件覆盖:每个判定的每个条件应取到各种可能的值。
4.判定/条件覆盖:同时满足判定覆盖条件覆盖。
5.条件组合覆盖:每个判定中各条件的每一种组合至少出现一次。
6.路径覆盖:使程序中每一条可能的路径至少执行一次。

如果上面的几种覆盖方法还是不懂什么意思的话看这个:http://www.51testing.com/html/44/n-3713444.html


基本路径测试法的步骤:
(下面无真正的程序只是举个例子,看了还不会的话,实验一白盒测试里面都有,去跟里面的具体例子走一遍,感觉这里会出一个题)
第一步:画出控制流图
流程图用来描述程序控制结构。可将流程图映射到一个相应的流图(假设流程图的菱形决定框中不包含复合条件)。在流图中,每一个圆,称为流图的结点,代表一个或多个语句。一个处理方框序列和一个菱形决测框可被映射为一个结点,流图中的箭头,称为边或连接,代表控制流,类似于流程图中的箭头。一条边必须终止于一个结点,即使该结点并不代表任何语句(例如:if-else-then结构)。由边和结点限定的范围称为区域。计算区域时应包括图外部的范围。
软件测试(应付考试)
第二步:计算圈复杂度
圈复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序的基本的独立路径数目,为确保所有语句至少执行一次的测试数量的上界。独立路径必须包含一条在定义之前不曾用到的边。
有以下三种方法计算圈复杂度:
流图中区域的数量对应于环型的复杂性(就是流图中区域的个数);
给定流图G的圈复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中结点的数量;
给定流图G的圈复杂度V(G),定义为V(G)=P+1,P是流图G中判定结点的数量。
第三步:导出测试用例根据上面的计算方法,可得出四个独立的路径。(一条独立路径是指,和其他的独立路径相比,至少引入一个新处理语句或一个新判断的程序通路。V(G)值正好等于该程序的独立路径的条数。)  
路径1:4-14
路径2:4-6-7-14
路径3:4-6-8-10-13-4-14
路径4:4-6-8-11-13-4-14
根据上面的独立路径,去设计输入数据,使程序分别执行到上面四条路径。

三:黑盒测试

定义:黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。

测试方法:从理论上讲,黑盒测试只有采用穷举输入测试,具体的黑盒测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法、场景法等。

等价类划分方法:将程序可能的输入数据分成若干个子集,从每个子集选取一个代表性的数据作为测试用例,等价类是某个输入域的子集,在该子集中每个输入数据的作用是等效的

步骤 

a) 建立等价类表,列出所有划分出的等价类:

b) 为每个等价类规定一个唯一的编号;

c) 设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类

d) 重复c),最后使得所有有效等价类均被测试用例所覆盖;

e) 设计一个新的测试用例,使其只覆盖一个无效等价类。

f) 重复e)使所有无效等价类均被覆盖。

ppt上的一个例子:

软件测试(应付考试)

(还不明白:详细跟实验二黑盒测试的一个例子走一遍)


边界值分析方法:

看了这张图你因该会知道

软件测试(应付考试)

因果图:(有可能出大题)因果图方法最终生成的就是判定表。它适合于检查程序输入条件的各种组合情况。

怎么画? 

因果图-图形符号

1. 恒等(-):若原因出现,则结果出现;若原因不出现,则结果也不出现(见图 (a))。

2. 非():若原因出现,则结果不出现;若原因不出现,则结果出现(见图(b))。

3. 或(Ú):若几个原因中有一个出现,则结果出现;若几个原因都不出现,则结果不出现(见图 (c))。

4. 与(Ù):若几个原因都出现,则结果出现;若其中有一个原因不出现,则结果不出现(见图 (d))。

软件测试(应付考试)

我估计不会考到下面这张图

软件测试(应付考试)

例子:

软件测试(应付考试)

软件测试(应付考试)

软件测试(应付考试)

上面这张图原本因有8个可能,有两个是等价类!(中间有很多细节我不能解释,如果出了这题,就照着上面的例子写满就好了)


四:回归测试

定义:执行回归测试是一种技术,它提供一种快速的 、方便的方法来决定代码的修改是否改变了或 破坏了现存的功能。回归测试与一般测试比较 ,有六个方面不同:  测试计划的可获性  测试范围  时间分配  开发信息  完成时间和执行频率

回归测试过程主要有七个步骤:提出修改需求 ,修改软件工件,选择测试用例,执行测试, 识别失败结果,确认错误,和排除错误。 

回归测试有两个主要方法: 1. 全部重新测试,即将之前所有的测试用例全部重 新执行; 2. 有选择的重新测试,即选择和使用已存在的测 试用例的一个子测试用例集。

波及效应:波及效应是研究改变给软件所带来的直接波及 和诱发波及,以保证软件发生改变后仍然保持 一致性与完整性。  波及效应分析是一个迭代过程。有的步骤可以 自动化执行,而有的步骤必须手工进行。  程序切片能自动化帮助进行识别潜在波及影响。

总结:回归测试要消耗很多时间,建议那些常常要进 行回归测试的人员,使用各种工具来提高效率 ,并利用模块依赖和修改依赖来帮助分析波及 效应



相关文章: