黑盒测试是测试中重要的一个环节,但是过多书籍都是长篇大论,看起来很糟糕。今天对于黑盒,我决定借助一个例子详细解析下黑盒的奥秘。一起来吧!!!
首先,我们要明白几个概念:
1》有效等价类:对程序规格说明来说合理,有意义的输入数据。可用此类检查规格说明中定义的功能和性能。
2》无效等价类:与有效等价类相反的定义。
一 等效类
下面以实例分析:
1个函数包含3个变量,month,day,year。函数的输出为输入日期的后一天日期。例如:输入为2013-3-13 ,则函数输出应为2013-3-14.找出该函数的有效等价类。
问题分析:
1,要输入数据(月份,天数,年数)
2,预测排序所有可能的输入数据(合法数据,字符,越界日期,小数日期等)
3,判断可能输出的数据(正常输出,月份变化,年份变化,天数变化,错误提示等)
4,表格列出所有可能性进行汇总,归档。
定义数据:
输入:input
月份:month 1--12月: m1--m12
天数:day 1--31月: d1--d31
年份:year 是否闰年: leap/!leap
无效等价:invalid
无效月份month: !m#
无效天数day : ! d#
无效年份year : !y#
输出:output
错误:o1
天数加1 :o2
月数加1 :o3
天数为1 :o4
年数加1 :o5
月数为1 :o6
所有可能操作:
【输入】input:
month(1-12):m1{1,3,5,7,8,10},m2{4,6,9,11},m3{2},m4{12}
day(1-31):d1{1-27},d2{28},d3{29},d4{30},d5{31}
year():y1{leap year},y2{!leap year}
【无效等价】invalid:
month:!m1{<1},!m2{>12},!m3{has char},!m4{specal char}
day:!d1{<1},!d2{>31},!d3{has char},!d4{specal char}
year:!y1{has char},!y2{specal char}
【输出】output:
o1:errior
o2:day=day+1
o3:month=month+1
o4:day=1
o5:year=year+1
o6:month=1
列表显示:
对应所有可能操作排列组合结果
数据统计和归纳分析
:
二等边值测试
问题分析:
1,要输入边界测试值:最大值,最小值,中间值,偏大值,偏小值(若需要验证健壮性,加入最大偏大值和最小偏大值)
2,需要测试对象n(month,day,year三个),测试条目5n条
3,列表设计测试计划表
定义数据:
最大值:max
最小值:min
中间值:mid
偏大值:max-1
偏小值:min+1
如图:
列表:
总结:
通过以上分析,对黑盒操作并非那么深奥。是有规律和将可能发生错误操作归纳。当然任何程序错误必不可免,尽量避免严重后果的操作,在测试阶段尤为重要。等价性测试遍历所有可能性,比较严谨。但是条目巨多,工作量大。现实测试建议使用等边界测试,这样数据量比较集中,测试工作量相对小。黑盒测试对于大型代码比较方便。这个一个螺旋式的测试形式。