软件工程-软件测试-测试方法

软件工程-测试方法-白盒和黑盒测试

软件工程-软件测试
软件测试方法可以分为静态测试和动态测试。

静态测试

静态测试是指被测试程序不在程序上运行,而是采用人工检测和计算机辅助金泰分析的手段对程序进行检测。

静态测试方法

(1)人工检测:是指不依靠计算机而是靠人工审查程序或评审软件,包括代码检查、静态结构分析和代码质量度量等;
(2)计算机辅助静态分析:利用静态分析工具对被测试程序进行特性分析,从程序中提取一些信息,以便检查程序逻辑的各种缺陷和可疑的程序构造。

动态测试

动态测试是指通过运行程序发现错误。

动态测试方法

白盒测试

概念

白盒法又称为逻辑覆盖法,因为要以程序(模块)内部的逻辑结构为基础来设计测试用例,主要用于单元测试。测试的关键也是如何选择高效的测试用例。
白盒测试的主要方法有程序结构分析、逻辑覆盖、基本路径测试等,它根据程序的控制结构设计导出测试用例,主要用于软件程序的验证。

原则

(1)对程序模块的所有独立的执行路径至少测试一次;
(2)对所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次;
(3)检查程序的内部数据结构,保证其结构的有效性。
(4)在循环的边界和运行界限内执行循环体;

方法
逻辑覆盖

软件工程-软件测试-测试方法_第1张图片
标准
(1) 语句覆盖
选择足够的测试用例,使得程序中每个语句至少都能被执行一次。
(2) 判定覆盖
执行足够的测试用例,使得程序中每个判定至少都获得一次“真”值和一次“假”值。
(3) 条件覆盖
执行足够的测试用例,使得判定中的每个条件获得各种可能的结果。
(4) 判定/条件覆盖
执行足够的测试用例,使得判定中每个条件取到各种可能的值,并使每个判定取到各种可能的结果。
(5) 条件组合覆盖
执行足够的例子,使得每个判定中条件的各种可能组合都至少出现一次。

例:用白盒法测试以下程序段,如图所示,程序中有两个判定,每个判定都包含复合条件的逻辑表达式。
Procedure (VAR A,B,X:REAL);
BEGIN
IF(A>1) AND (B=0)
THEN X:=X/A ;
IF (A=2) OR (X>1)
THEN X:=X+1
END;
软件工程-软件测试-测试方法_第2张图片
软件工程-软件测试-测试方法_第3张图片
软件工程-软件测试-测试方法_第4张图片

基本路径测试

概念
从广义角度讲,任何有关路径分析的测试都可以被称为路径测试。简单描述:路径测试就是从一个程序的入口开始,执行所经历的各个语句的完整过程。
路径的表达式
(1)弧a和弧b相乘,表示为ab。它表明路径是先经历弧a,接着经历弧b,弧a和弧b是先后相接的。
(2)弧a和弧b相加,表示为a+b。它表明两弧是“或”的关系,是并行的路段。

软件工程-软件测试-测试方法_第5张图片
软件工程-软件测试-测试方法_第6张图片
可用以下三种方法计算环形复杂度
(1)流图中区域的数量对应于环形复杂性。
(2)给定流图G的环形复杂度V(G),定义为V(G)=E-N+2,E是流图中的边的数量,N是流图中节点的数量。
(3)给定流图G的环形复杂度V(G),定义为V(G)=P+1,p是流图G中判定节点的数量。

导出测试用例
程序段的基本路径集中有4条独立路径:
路径1:4 →14
路径2:4 →6 →7 →14
路径3:4 →6 →9 →10 →13 →4 →14
路径4:4 →6 →9 →12 →13 →4 →14

设计测试用例
软件工程-软件测试-测试方法_第7张图片

黑盒测试

概念

黑盒测试也成为功能测试,在不完全考虑软件内部结构和特性的情况下,测试软件外部特性。

测试错误

(1)是否有错误的功能或遗漏的功能;
(2)界面是否有误、输入是否正确、输出是否正确;
(3)是否有数据结构或外部数据库访问错误;
(4)性能是否能够接受;
(5)是否有初始化或终止性错误。

方法
等价类划分

等价类划分是一种典型的黑盒测试方法,使用这一方法时,完全不考虑程序的内部结构,只依据程序的规格说明来设计测试用例。等价类划分方法把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据做为测试用例。
使用这一方法设计测试用例要经历划分等价类(列出等价类表)和选取测试用例两步。
划分等价类:等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。测试某等价类的代表值就等价于对这一类其它值的测试。
等价类的划分有两种不同的情况:
1. 有效等价类:是指对于程序的规格说明来说,是合理的,有意义的输入数据构成的集合。
2. 无效等价类:是指对于程序的规格说明来说,是不合理的,无意义的输入数据构成的集合。
在设计测试用例时,要同时考虑有效等价类和无效等价类的设计。
划分等价类等价类的原则。
1. 如果输入条件规定了取值范围,或值的个数,则可以确立一个有效等价类和两个无效等价类。

例:例如,在程序的规格说明中,对输入条件有一句话: “…… 项数可以从1到999 ……”
则有效等价类是“1≤项数≤999”两个无效等价类是“项数<1”或“项数>999”。在数轴上表示成:

软件工程-软件测试-测试方法_第8张图片
2.如果输入条件规定了输入值的集合,或者是规定了“必须如何”的条件,这时可确立一个有效等价类和一个无效等价类。
3.如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类。
4.如果规定了输入数据的一组值,而且程序要对每个输入值分别进行处理。这时可为 每一个输入值确立一个有效等价类,此外针对这组值确立一个无效等价类,它是所有不允许的输入值的集合。
5.如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
测试用例
(1) 为每一个等价类规定一个唯一编号;
(2) 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;
(3)设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。
软件工程-软件测试-测试方法_第9张图片
软件工程-软件测试-测试方法_第10张图片

边界值划分

边界值分析法是一种很实用的黑盒测试方法,是对等价类划分方法的补充。人们从长期的测试工作经验得知,大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误
选取正好等于、刚刚大于或刚刚小于边界的值做为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。
原则
(1)如果输入条件对取值范围进行了界定,则应以边界内部以及刚超出范围边界外的值作为测试用例。
(2)如果对取值的个数进行了界定,则应当分别以最大、最小个数及稍小于最小、稍大于最大个数作为测试用例。
(3)对于输出条件,同样可以应用上面提到的两条原则来进行测试用例设计。
(4)如果程序规格说明书中指明输入或者输出是一个有序集合,就应当注意选取该有序集合中的第一个和最后一个元素作为测试用例。
测试用例规则
规则1
如果输入条件规定了值的范围,则应该取刚达到这个范围的边界值及刚刚超过这个范围边界的值作为测试输入数据。
规则2
如果输入条件规定了值的个数,则用最大个数、最小个数、比最大个数多1个、比最小个数少一个的数作为测试数据。
基本思想是:故障往往出现在输入变量的边界值附近。
例如:当一个循环条件为“≤”时,却错写成“<”;计数器发生少计一次。
边界值分析利用输入变量的最小值(min)、略大于最小值(min+)、输入值域内的任意值(nom)、略小于最大值(max-)和最大值(max)来设计测试用例。

例:
比如,在做三角形计算时,要输入三角形的三个边长:A、B和C。 我们应注意到这三个数值应当满足:
A>0、B>0、C>0、
A+B>C、A+C>B、B+C>A,
才能构成三角形。但如果把六个不等式中的任何一个大于号“>”错写成大于等于号“≥”,那就不能构成三角形。问题恰出现在容易被疏忽的边界附近。
软件工程-软件测试-测试方法_第11张图片

错误推测

人们也可以靠经验和直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的例子。这就是错误推测法。
错误推测法的基本想法是:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。

因果图

因果图是从自然语言描述的程序规格说明中找出因(输入条件)和果(输出或者程序状态的改变),通过因果图转换为判定表。
步骤
(1)分析程序规格说明的描述中,哪些是原因,哪些是结果;
(2)分析程序规格说明的描述中予以的内容,并将其表示成连接各个原因与结果的“因果图”;
(3)表明约束条件;
(4)把因果图转换成判定表;
(5)为判定表中每一列的情况设计测试用例。

你可能感兴趣的:(学习,笔记,软件测试)