列表

详情


条件测试是检查程序模块中所包含逻辑条件的测试用例设计方法,注重于测试程序中的条件。BROBranch and Relational Operator)测试保证能发现布尔变量和关系操作符只出现一次且没有公共变量的条件中的分支和条件操作符错误。考虑条件C1:(E1>E2&E34),其中E1E2E3E4是数学表达式,“&”表示逻辑“与”,“>”和“=”是关系运算符,则C1的条件约束至少为(  )时,就可以检查C1中的关系操作符错误。

A. {(>, =), (>, >), (>, <), (<, <), (=, <)}

B. {(<, <), (<, =), (<, >), (=, <), (=, =), (=, >), (>, <), (>, =), (>, >)}

C. {(>, <), (=, <), (>, =)}

D. {(>, <), (=, <), (>, =), (<, <)}

参考答案: A

详细解析:

条件侧试是检查程序模块中所包含逻辑条件的测试用例设计方法,注重于测试程序中的条件。BRO(Branch and Relational Operator)测试保证能发现布尔变量和关系操作符只出现一次且没有公共变量的条件中的分支和条件操作符错误。BRO策略利用条件C的条件约束。有n个简单条件的条件C的条件约束定义为(D1,D2,…,Dn)。其中Di(0<i<n)表示条件C中第i个简单条件的输出约束。如果C的执行过程中C的每个简单条件的输出都满足D中对应的约束,则称条件C的条件约束D由C的执行所覆盖。
对于本题,C1:(E1>E2)&(E3< E4),对于布尔变量B,B输出的约束说明B必须是真(t)或假(f)类似地,对于关系表达式,符号<、=、>用于指定表达式输出的约束。
    根据BRO的定义,“&”关系的约束为{(t, f),(t, t),(f, t)},只需要用(>, =),(>, >)替换(t, f),用(>, <)替换(t, t),并用(<, <),(=, <)替换〔f, t)就得到C,的约束集{(>, =),(>, >),(>, <),(<, <),(=, <)}。因此本题应该选A。

通俗一点来说,条件测试的意图是测试条件运算符有没有写错。其选择测试用例的方式,有点类似等价类的划分。
选项中的“(>, =)”,意思是我选一个满足第一个条件为大于,第二个条件为等于的测试用例。
例如:E1,E2,E3,E4分别为:2,1,3,3。此时,正常情况下,C1的值为F。但如果程序员错把原来的式子中第二个条件符号,由<写成了<=,>=或=时,C1会为T。这就能测试出这一类出错的情况。
依此类推,后面的几个分别能测试出不同情况下产生的错误。

上一题