📜  控制结构测试

📅  最后修改于: 2022-05-13 01:56:18.578000             🧑  作者: Mango

控制结构测试

控制结构测试用于通过测试程序中存在的各种控制结构来增加覆盖范围。在控制结构测试下执行的不同类型的测试如下 -

1. Condition Testing 
2. Data Flow Testing
3. Loop Testing 

1. 状态测试:
条件测试是一种测试用例设计方法,它确保逻辑条件和决策语句没有错误。逻辑条件中出现的错误可能是不正确的布尔运算符、布尔表达式中缺少括号、关系运算符中的错误、算术表达式等。

使用条件测试测试的常见逻辑条件类型是 -

  1. 一个关系表达式,例如 E1 op E2 其中 'E1' 和 'E2' 是算术表达式,而 'OP' 是一个运算符。
  2. 一个简单的条件,例如前面带有 NOT (~)运算符的任何关系表达式。
    例如, (~E1) 其中“E1”是算术表达式,“a”表示 NOT运算符。
  3. 复合条件由两个或多个简单条件、布尔运算符和括号组成。
    例如,(E1 & E2)|(E2 & E3) 其中 E1、E2、E3 表示算术表达式,'&' 和 '|'表示 AND 或 OR运算符。
  4. 布尔表达式由操作数和布尔运算符(如“AND”、OR、NOT)组成。
    例如,“A|B”是一个布尔表达式,其中“A”和“B”表示操作数,|表示 OR运算符。

2. 数据流测试:
数据流测试方法根据定义的位置选择程序的测试路径,并使用程序中的所有变量。

数据流测试方法描述如下假设程序中的每个语句都分配有唯一的语句编号并且主题函数不能修改其参数或全局变量。
例如,以 S 作为其语句编号。

DEF (S) = {X | Statement S has a definition of X}
USE (S) = {X | Statement S has a use of X} 

如果语句 S 是 if 循环语句,则其 DEF 集为空,其 USE 集取决于语句 S 的状态。如果语句为任意方式,则语句 S 处的变量 X 的定义称为语句 S' 的行从 S 到语句 S',则 X 没有其他定义。

变量 X 的定义使用 (DU) 链具有 [X, S, S'] 的形式,其中 S 和 S' 表示语句编号,X 在 DEF(S) 和 USE(S') 中,并且 X 的定义在语句 S 中是语句 S' 处的行。

一个简单的数据流测试方法要求每个 DU 链至少被覆盖一次。这种方法称为 DU 测试方法。 DU 测试并不能确保覆盖程序的所有分支。

但是,仅在 rar 情况下,不保证分支会被 DU 测试覆盖,例如在这种情况下,另一个构造在其后半部分中没有任何变量的任何确定性并且另一部分不存在。数据流测试策略适用于选择包含嵌套 if 和循环语句的程序的测试路径。

3. 循环测试:
循环测试实际上是一种白盒测试技术。它特别关注循环构造的有效性。
以下是循环的类型。

  1. 简单循环 –以下一组测试可应用于简单循环,其中通过循环的最大允许数量为 n。
    1. 跳过整个循环。
    2. 只遍历循环一次。
    3. 遍历循环两次。
    4. 使 p 通过 p
    5. 遍历循环 n-1, n, n+1 次。

  2. 级联循环——如果循环不相互依赖,则可以使用简单循环中使用的方法测试接触循环。如果循环是相互依赖的,则在嵌套循环中遵循这些步骤。

  3. 嵌套循环 –循环内的循环称为嵌套循环。测试嵌套循环时,测试的数量随着级别嵌套的增加而增加。
    测试嵌套循环的以下步骤如下 -
    1. 从内循环开始。将所有其他循环设置为最小值。
    2. 对内循环进行简单的循环测试。
    3. 向外工作。
    4. 继续,直到测试所有循环。
  4. 非结构化循环——应尽可能重新设计这种类型的循环,以反映非结构化结构化编程结构的使用。