实验二白盒测试
一、实验目的
通过对于实例程序的测试,熟悉结构性测试的基本方法。
二、实验要求
(1)综合运用结构性测试方法(如逻辑覆盖、基本路径测试等方法)对被测程序进行测试,找出whiteBox.exe程序中存在的缺陷。
三、测试用例的设计
1.对于Triangle Program的测试
Private Sub triangle(a As Long, b As Long, c As Long, progOutput As String) Dim IsATriangle As Boolean
'Are a, b, and c sides of a Triangle?
Node (0)
If (a < b + c) And (b < a + c) Then
Node (1)
IsATriangle = True
Else
Node (2)
IsATriangle = False
progOutput = "Not a Triangle"
End If
' Determine Triangle Type
Node (3)
If IsATriangle Then
Node (4)
If (a = b) And (b = c) Then
Node (5)
progOutput = "Equilateral"
Else
Node (6)
If (a = b) Or (a = c) Then
Node (7)
progOutput = "Isosceles"
Else
Node (8)
If (a * a = b * b + c * c) Or (b * b = a * a + c * c) Or (c * c = a * a + b * b) Then
Node (9)
progOutput = "Right Triangle"
Else
Node (10)
progOutput = "Scalene"
End If
Node (11)
End If
Node (12)
End If
Node (13)
End If
Node (14)
End Sub
(1)程序段的控制流图如下:
(2)程序段的环形复杂度V(G)=19条边-15个结点+2=6 (3)程序段中的基本路径集中有6条独立路径。
路径1:0→1→3→14
在实际程序下,找不到此路径的例子。
路径2:0→2→3→14
路径3:0→1→3→4→5→13→14
路径4:0→1→3→4→6→7→12→13→14
路径5:0→1→3→4→6→8→9→11→12→13→14
路径6:0→1→3→4→6→8→10→11→12→13→14
(4)设计的测试用例如下:
输入数据预期输出
测试用例1 找不到实际例子无
测试用例2 4,2,1 Not a Triangle
测试用例3 3,3,3 Equilateral
测试用例4 4,4,5 Isosceles
测试用例5 3,4,5 Right a triangle
测试用例6 4,5,6 scalence
2.对于NextDate Program的测试
Private Sub NextDatePJ(InMonth As String, InDay As Integer, InYear As Integer, newDate As String)
Dim OutDay As Integer, OutYear As Integer, OutMonth As String
OutYear = InYear
Node (0)
Select Case InMonth
Case "January", "March", "May", "July", "August", "October", "December" Node (1)
If InDay < 31 Then
Node (2)
OutDay = InDay + 1
OutMonth = InMonth
Else
Node (3)
OutDay = 1
OutMonth = NextMonth(InMonth)
End If
Node (4)
Case "April", "June", "September", "November":
Node (5)
If InDay < 30 Then
Node (6)
OutDay = InDay + 1
OutMonth = InMonth
Else
Node (7)
OutDay = 1
OutMonth = NextMonth(InMonth)
End If
Node (8)
Case "February"
Node (0)
If InDay < 28 Then
Node (9)
OutDay = InDay + 1
OutMonth = InMonth
ElseIf InDay = 28 Then
Node (10)
Node (11)
If ((InYear Mod 4) = 0) And ((InYear Mod 400) <> 0) Then Node (12)
OutDay = 29 'leap year
OutMonth = InMonth
Else 'not a leap year
Node (13)
OutDay = 1
OutMonth = NextMonth(InMonth)
End If
Node (14)
Else
Node (15)
OutDay = 1
OutMonth = NextMonth(InMonth)
End If
Node (16)
End Select
Node (17)
newDate = OutMonth - Str(OutDay) "," & Str(OutYear) End Sub
(1)程序段的控制流图如下:
(2)程序段的环形复杂度V(G)=24条边-18个结点+2=8 (3)程序段中的基本路径集中有8条独立路径。
路径1:0→1→2→4→17
路径2:0→1→3→4→17
路径4:0→5→7→8→17
路径6:0→9→11→12→14→16→17
路径7:0→9→11→13→14→16→17
路径8:0→9→15→16→17
(4)设计的测试用例如下:
四、测试结果分析
此部分从测试结果分析推断出程序中存在的缺陷有哪些。
1.对于Triangle Program的测试
分析:
1、软件中的名称没有匹配好,比如第一个测试数据:把right triangle=scalene
使得结果与预期本质上是一致,却fail
2、软件没有制定三角形两边之和大于第三边两边之差小于第三边的约束。
3、软件没有制定三角形的变数应该在1~200之间,从而使边长大于200的也是
2.对于NextDate Program的测试
1、此软件测试的年份介于1812—2012年之间,在输入1811年时,测试结果与预期结果不一致,显示的等于输入日期的下一天。
2、在输入,平年的二月份的29号时,测试结果与预期结果不一致,平年的二月份只有28天,而软件测试结果却显示了三月一号。
3、在输入某年的12月31号时,测试结果显示的时,测试结果与预期结果不一致,输入的年份的第一天,显示错误。
4、此软件测试的年份介于1812—2012年之间,在输入2013年的某一天时,测试结果与预期结果不一致,系统显示的是这一天的下一天,这与软件的界定围矛盾,显示错误。
5、当输入的是某个月的32号时,显示的却是下个月的1号。
这与实际不符。
要求做完后以00UUU.doc上传(其中:00是学号末两位,UUU是)。