软件测试(第2版)_Paul学习05_03——Ch5边界值测试_03

5.5 举例分析

5.5.2 NextDate 函数的测试用例

回顾以下第2章中关于NextDate的问题描述:NextDate是一个有三个变量(月份、日期和年)的函数。函数返回输入日期后面的那个日期。变量月份、日期和年都是整数,且满足以下条件:

C1:1≤月份≤12

C2:1≤日期≤31

C3:1812≤年≤2012

对无效的输入日期,比如6月31日,或c1、c2、c3中的任意一个条件失败,则NextDate,都会产生一个输出,指示其为无效日期,或给出具体的无效原因,或笼统的给出"无效日期输入。"提示。

 

注:以下是依据方法产生测试用例,未考虑输入之间的逻辑关系,比如6月31日,出现的常识性错误并不是疏落。

边界值分析测试用例:共4×3 + 1 = 13个,如下表所示

用例标识

月份

日期

预期输出

1

6

15

1812

1812616

2

6

15

1813

1912616

3

6

15

1912

1912616

4

6

15

2011

2011616

5

6

15

2012

2012616

6

6

1

1912

191262

7

6

2

1912

191263

8

6

15

1912

1912616

9

6

30

1912

191271

10

6

31

1912

错误

11

1

15

1912

1912116

12

2

15

1912

1912216

13

6

15

1912

1912616

14

11

15

1912

19121116

15

12

15

1912

19121216

 

边界值健壮性测试用例:共6×3 + 1 = 19个,如下表所示

用例标识

月份

日期

预期输出

1

6

15

1811

提示输入超出范围

2

6

15

1812

1812616

3

6

15

1813

1912616

4

6

15

1912

1912616

5

6

15

2011

2011616

6

6

15

2012

2012616

7

6

15

2013

提示输入超出范围

8

6

0

1912

提示输入超出范围

9

6

1

1912

191262

10

6

2

1912

191263

11

6

15

1912

1912616

12

6

30

1912

191271

13

6

31

1912

错误

14

6

32

1912

提示输入超出范围

15

0

15

1912

提示输入超出范围

16

1

15

1912

1912116

17

2

15

1912

1912216

18

6

15

1912

1912616

19

11

15

1912

19121116

20

12

15

1912

19121216

21

13

15

1912

提示输入超出范围

 

最坏情况测试用例:共53 = 125,如下表所示

用例标识

月份

日期

预期输出

1

1

1

1812

181212

2

1

1

1813

181312

3

1

1

1912

191212

4

1

1

2011

201112

5

1

1

2012

201212

6

1

2

1812

181213

7

1

2

1813

181313

8

1

2

1912

191213

9

1

2

2011

201113

10

1

2

2012

201213

11

1

15

1812

1812116

12

1

15

1813

1813116

13

1

15

1912

1912116

14

1

15

2011

2011116

15

1

15

2012

2012116

16

1

30

1812

1812131

17

1

30

1813

1813131

18

1

30

1912

1912131

19

1

30

2011

2011131

20

1

30

2012

2012131

21

1

31

1812

181221

22

1

31

1813

181321

23

1

31

1912

191221

24

1

31

2011

201121

25

1

31

2012

201221

26

2

1

1812

181222

27

2

1

1813

181322

28

2

1

1912

191222

29

2

1

2011

201122

30

2

1

2012

201222

31

2

2

1812

181223

32

2

2

1813

181323

33

2

2

1912

191223

34

2

2

2011

201123

35

2

2

2012

201223

36

2

15

1812

1812216

37

2

15

1813

1813216

38

2

15

1912

1912216

39

2

15

2011

2011216

40

2

15

2012

2012216

41

2

30

1812

错误

42

2

30

1813

错误

43

2

30

1912

错误

44

2

30

2011

错误

45

2

30

2012

错误

46

2

31

1812

错误

47

2

31

1813

错误

48

2

31

1912

错误

49

2

31

2011

错误

50

2

31

2012

错误

51

6

1

1812

181262

52

6

1

1813

181362

53

6

1

1912

191262

54

6

1

2011

201162

55

6

1

2012

201262

56

6

2

1812

181263

57

6

2

1813

181363

58

6

2

1912

191263

59

6

2

2011

201163

60

6

2

2012

201263

61

6

15

1812

1812616

62

6

15

1813

1813616

63

6

15

1912

1912616

64

6

15

2011

2011616

65

6

15

2012

2012616

66

6

30

1812

181271

67

6

30

1813

181371

68

6

30

1912

191271

69

6

30

2011

201171

70

6

30

2012

201271

71

6

31

1812

错误

72

6

31

1813

错误

73

6

31

1912

错误

74

6

31

2011

错误

75

6

31

2012

错误

76

11

1

1812

1812112

77

11

1

1813

1813112

78

11

1

1912

1912112

79

11

1

2011

2011112

80

11

1

2012

2012112

81

11

2

1812

1812113

82

11

2

1813

1813113

83

11

2

1912

1912113

84

11

2

2011

2011113

85

11

2

2012

2012113

86

11

15

1812

18121116

87

11

15

1813

18131116

88

11

15

1912

19121116

89

11

15

2011

20111116

90

11

15

2012

20121116

91

11

30

1812

1812121

92

11

30

1813

1813121

93

11

30

1912

1912121

94

11

30

2011

2011121

95

11

30

2012

2012121

96

11

31

1812

错误

97

11

31

1813

错误

98

11

31

1912

错误

99

11

31

2011

错误

100

11

31

2012

错误

101

12

1

1812

1812122

102

12

1

1813

1813122

103

12

1

1912

1912122

104

12

1

2011

2011122

105

12

1

2012

2012122

106

12

2

1812

1812123

107

12

2

1813

1813123

108

12

2

1912

1912123

109

12

2

2011

2011123

110

12

2

2012

2012123

111

12

15

1812

18121216

112

12

15

1813

18131216

113

12

15

1912

19121216

114

12

15

2011

20111216

115

12

15

2012

20121216

116

12

30

1812

18121231

117

12

30

1813

18131231

118

12

30

1912

19121231

119

12

30

2011

20111231

120

12

30

2012

20121231

121

12

31

1812

181311

122

12

31

1813

181411

123

12

31

1912

191311

124

12

31

2011

201211

125

12

31

2012

201311

 

5.5.3 佣金问题的测试用例

回顾问题描述:步枪销售商销售制造商制造的步枪机(lock)、枪托(stock)和枪管(barrel)。枪机卖45美元,枪托卖30美元,枪管卖25美元。销售商每月至少要售出一只完整的步枪,且生产限额是大多数销售商在一个月内科销售70个枪机、80个枪托和90个枪管。每访问一个镇子之后,销售商都给制造商发出电报,说明在那个镇子中售出的枪机、枪托和枪管数量。到了月末,销售商要发出一封很短的电报,通知-1个枪机被售出。这样步枪制造商就知道当月的销售情况,并计算销售商的佣金如下:销售额不到(含)1000美元的部分为10%,1000(不含)~1800(含)美元的部分15%,超过1800美元的部分20%。佣金程序生成月份销售报告,汇总售出的枪机、枪托和枪管总数,销售商的总销售额以及佣金。

 

分析:

(1)输入的定义域

C1:1≤lock≤70,-1

C2: 1≤stock≤80

C3: 1≤barrel≤90

基于输入的边界值测试方法与三角形和Next Date问题类似,不在赘述,重点分析输出边界问题。

(2)输出边界

佣金问题的输入空间如下图所示,根据问题描述,重点分析中间输出销售额为1000、1800时的输出边界,如图所示的两个平面,靠下的平面是输出销售额为1000的平面,这个平面的三个点分别是(22,0,0)、(0,33,0)和(0,0,40),靠上的平面是输出销售额为1800的平面,这个平面的三个点分别是(40,0,0)、(0,60,0)和(0,0,72),一是因为整除问题,数量的取值不一定正好在平面上,但是是离平面最近的一个点,二是可以把此边界认为是一个平面边界,是一个对前面所述的点边界的拓展,当然根据不同的条件,可以有线边界、曲面边界。

 

依据上图设计输出边界测试用例如下表所示:

用例标识

枪机

枪托

枪管

销售额

佣金

说明

1 

1

1

1

100

10

(输出,下同)最小值

2

1

1

2

125

12.5

略大于最小值

3

1

2

1

130

13

略大于最小值

4

2

1

1

145

14.5

略大于最小值

5

5

5

5

500

20

0-1000的中点

6

10

10

9

975

97.5

略低于边界值

7

10

9

10

970

97

略低于边界值

8

9

10

10

955

95.5

略低于边界值

9

1

1

37

1000

100

边界值

10

1

31

1

1000

100

边界值

11

21

1

1

1000

100

边界值

12

10

10

10

1000

100

边界值

13

10

10

11

1025

103.75

略高于边界值

14

10

11

10

1030

104.5

略高于边界值

15

11

10

10

1045

106.75

略高于边界值

16

10

11

9

1005

100.75

略高于边界值

17

14

14

14

1400

160

1000-1800的中点

18

1

57

1

1780

217

略低于边界值

19

39

2

1

1795

219.25

略低于边界值

20

18

17

19

1795

219.25

略低于边界值

21

1

1

69

1800

220

边界值

22

18

18

18

1800

220

边界值

23

18

19

17

1805

221

略高于边界值

24

18

18

19

1825

225

略高于边界值

25

18

19

18

1830

226

略高于边界值

26

19

18

18

1845

229

略高于边界值

27

48

48

48

4800

820

1800-7800的中点

28

70

80

89

7775

1415

略小于最大值

29

70

79

90

7770

1414

略小于最大值

30

69

80

90

7755

1411

略小于最大值

31

70

80

90

7800

1420

最大值

 

5.6 随机测试

随机测试,使用随机数生成器选出测试用例值,随机测试可以避免出现测试偏见,但也带来一个严重的问题:多少随机测试是充分的?另外,预期结果如何确定?是由程序判定还是由人来判定?如果特别多测试用例怎么来判定?这些问题大多时候很难回答。

可以将随机测试作为其它方法测试的一个补充,正如生活中一样,一个连字都不认识的小孩,凭着好奇心,可以发现很多关于软件的新功能,使得惯于常用套路思维的爸爸妈妈感到很惊讶,发出:"原来软件还可这么用,还有这个功能。"的感叹。

5.7 边界值测试的指导方针

  1. 除了特殊值测试,基于函数(程序)输入定义域的测试方法,是所有测试方法中最基本的。
  2. 这类方法有一种假设,输入变量是真正独立的。
  3. 注意区分正常值与健壮值、单缺陷与多缺陷。
  4. 另一种很有用的基于输出的测试用例形式,可以用于生成错误消息的系统,覆盖所有的错误消息。
  5. 定义域分析还可以用于内部变量,例如循环控制、索引和指针。

     

    第5章结束。

    ------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值