黑盒测试(一)-----边界值测试

本文介绍边界值分析这一黑盒测试方法的基本原理和技术细节,包括单缺陷假设与多缺陷假设、不同类型的边界值测试及其应用场景,并通过实例展示了如何设计有效的测试用例。
边界值分析是一种常用的黑盒测试方法,是对等价类划分方法的补充;所谓边界值,是指相对于输入等价类和输出等价类而言,稍高于其最高值或稍低于最低值的一些特定情况。边界值分析的步骤包括确定边界,选择测试用例两个步骤。
一、基本原理:
  • 错误更可能出现在输入变量的极值附近.
  • 失效极少由两个(或多个)缺陷的同时发生引起的。
  • Min、Min+、Nom、Max-、Max.
二、单缺陷假设和多缺陷假设:
  • 单缺陷假设是边界值分析的关键假设。单缺陷假设指“失效极少是由两个或两个以上的缺陷同时发生引起的”。在边界值分析中,单缺陷假设即选取测试用例时仅仅使得一个变量取极值,其他变量均取正常值;
  • 多缺陷假设,则是指“失效是由两个或两个以上缺陷同时作用引起的”,要求在选取测试用例时同时让多个变量取极值。
三、边界值测试数据类型:数值、速度、字符、地址、位置、尺寸、数量等。
 
四、边界值测试的分类:
 单变量假设多变量假设 
 有效值基本边界值测试最坏情况测试
 无效值健壮性测试健壮最坏情况测试 
 
五、边界值测试技术:
(一)、基本边界值测试。 
有n个输入变量,设计测试用例使得一个变量在数据有效区内取最大值、略小于最大值、正常值、略大于最小值和最小值。如下图所示,两个变量X1,X2。它们的有效取值区间分别为[c,d],[a,b]。
 
对于有n个输入变量的程序,基本边界值分析的测试用例个数为4n+1。
 
(二)、健壮性测试。
    健壮性是指在异常情况下,软件还能正常运行的能力。健壮性考虑的主要部分是预期输出,而不是输入。 健壮性测试是边界值分析的一种简单扩展。除了变量的5 个边界分析取值还要考虑略超过最大值(max)和略小于最小值(min)时的情况。 健壮性测试的最大价值在于观察处理异常情况,它是检测软件系统容错性的重要手段。如下图所示。
 对于有n个输入变量的程序,健壮性测试的测试用例个数为6n+1。
 
(三)、最坏情况测试。
    最坏情况测试拒绝单缺陷假设,它关心的是当多个变量取极值时出现的情况。最坏情况测试中,对每一个输入变量首先进行包含最小值、略高于最小值、正常值、略低于最大值、最大值等5个元素集合的测试,然后对这些集合进行笛卡尔积计算,以生成测试用例。最坏情况测试将意味着更大工作量。如下图所示。
对于有n个输入变量的程序,最坏情况测试的测试用例个数为5^n。
 
(四)、健壮最坏情况测试。
    健壮最坏情况假设对每一个变量首先进行最小值、略小于最小值的值、略高于最小值的值、正常值、最大值、略高于最大值的值、略低于最大值的值等7个元素的集合。然后对这些集合进行笛卡尔积运算,以生成测试用例。如下图所示。
对于有n个输入变量的程序,健壮最坏情况测试的测试用例个数为7^n。
 
六、边界值测试举例。
1.三角形问题的边界值分析测试用例。
测试用例(基本边界测试分析):
 Test Case a b c 预期结果
 TC1100100 等腰三角形
 TC22100 100 等腰三角形
 TC3199100 100 等腰三角形
 TC4200 100 100 非三角形 
 TC5100 1100等腰三角形
 TC6100 100 等腰三角形
 TC7100 199 100 等腰三角形
 TC8100 200 100 非三角形
 TC9100 100 等腰三角形
 TC10100 100 等腰三角形
 TC11100 100 199 等腰三角形 
 TC12100 100 200 等腰三角形 
 TC13100 100 100 等边三角形
 
 
2.写出NextDate函数的最坏情况测试用例。
  • 条件:  l≤月份≤12 ; 1≤日期≤31 ; 1812≤年≤2012
  •  月份的取值(1,2,6,11,12); 日期的取值(1,2,15,30,31); 年的取值(1812,1813,1912,2011,2012)
  • 这三个变量的笛卡尔乘积后的测试用例,总共有5 * 5 * 5 = 125个测试用例。(省略测试用例表).
 
 
<think>根据用户提供的引用内容,用户需要查找头歌平台上关于黑盒测试边界值法的代码。然而,引用内容主要介绍了边界值分析法的概念、原理和示例,并未直接提供具体的代码实现。不过,引用中提到了边界值测试的典型场景(如三角形问题)和注意事项。 考虑到头歌平台(Educoder)通常提供在线编程和测试的环境,边界值测试的代码实现可能是指编写测试用例或测试脚本。根据引用内容,边界值测试常用于数值输入的范围检查(如0<=参数<100)或三角形构成条件(A>0, B>0, C>0, A+B>C等)。 由于用户没有指定具体编程语言,我将以Python为例,编写个简单的边界值测试示例,模拟测试个函数(例如三角形类型判断函数)的边界情况。同时,根据引用[4]和[5],我们将设计测试用例覆盖边界值(上点、离点)。 ### 示例:三角形问题的边界值测试 假设有个函数`is_triangle(a, b, c)`,用于判断三条边是否能构成三角形。根据引用[4],构成三角形的条件是: - $a>0, b>0, c>0$ - $a+b>c$ - $a+c>b$ - $b+c>a$ 我们将针对这些条件设计边界值测试用例。例如,对于条件$a>0$,边界是0,那么测试点可以取-1, 0, 1(其中0是上点,-1是离点,1是内点)。其他条件同理。 下面是个用Python编写的测试框架(使用unittest)的示例: ```python import unittest # 待测试的函数,这里假设已经实现,但为了演示先写个简单的 def is_triangle(a, b, c): if a <= 0 or b <= 0 or c <= 0: return False if a + b <= c or a + c <= b or b + c <= a: return False return True class TestTriangleBoundaryValue(unittest.TestCase): # 测试边界值:针对每条边的0边界和两边之和等于第三边的边界 def test_negative_side(self): # 测试负数和0的边界 # 上点:0;离点:-1;内点:1 self.assertFalse(is_triangle(0, 1, 1)) # 上点(边界) self.assertFalse(is_triangle(-1, 1, 1)) # 离点(边界外) self.assertTrue(is_triangle(1, 1, 1)) # 内点 def test_sum_equal_to_side(self): # 测试两边之和等于第三边的边界(不能构成三角形) # 上点:两边之和等于第三边(如1+1=2) self.assertFalse(is_triangle(1, 1, 2)) # 上点,应该返回False(不能构成三角形) # 离点:两边之和小于第三边(如1+1<3) self.assertFalse(is_triangle(1, 1, 3)) # 内点:两边之和大于第三边(如2,3,4) self.assertTrue(is_triangle(2, 3, 4)) # 可以继续添加其他边界测试,例如最大值边界等 if __name__ == '__main__': unittest.main() ``` ### 说明: 1. 这个测试用例类包含两个测试方法: - `test_negative_side`:测试边长为0或负数的情况(边界值:0和负数)。 - `test_sum_equal_to_side`:测试两边之和等于或小于第三边的情况(边界值:两边之和等于第三边)。 2. 每个测试方法中,我们按照边界值分析法选取了上点、离点和内点进行测试。 3. 注意,实际测试中可能需要更全面的测试用例,覆盖所有边界条件(如每个边的0边界,以及每个两边之和等于第三边的边界)。这里仅作示例。 ### 头歌平台上的使用 在头歌平台上,通常需要将代码(包括测试代码)写入指定的文件或编辑区,然后平台会自动运行测试。具体步骤可能因平台课程设置而异,但代码结构类似。 ### 相关问题 §§相关问题§§ 1. 如何设计更全面的边界值测试用例(例如三角形问题的所有边界)? 2. 边界值测试与等价类划分有什么区别和联系? 3. 在头歌平台上如何运行黑盒测试的代码? </think> ### 边界值分析法代码实现(头歌平台示例) 根据引用内容,边界值分析法是黑盒测试的核心技术,主要用于检测输入/输出边界附近的错误。以下是头歌平台常见的边界值测试代码实现示例(Python语言),参考了引用[1][2][3][4][5]中描述的边界值选取原则: ```python # 测试对象:判断成绩等级的函数 # 规则:0 <= score <= 100 # 90-100: A, 80-89: B, 70-79: C, 60-69: D, 0-59: F def score_grade(score): """成绩等级判定函数(含潜在错误示例)""" if score > 100 or score < 0: # 错误代码:应为 score > 100 或 score < 0 return "Invalid" elif score >= 90: # 边界值:90 return "A" elif score >= 80: # 边界值:80 return "B" elif score >= 70: # 边界值:70 return "C" elif score >= 60: # 边界值:60 return "D" else: return "F" # 边界值测试用例(根据引用[3][5]的三点分析法) boundary_tests = [ -1, 0, 1, # 下边界:上点=0,离点=-1,内点=1 59, 60, 61, # 等级D/C边界 69, 70, 71, # 等级C/B边界 79, 80, 81, # 等级B/A边界 89, 90, 91, # 等级A边界 99, 100, 101 # 上边界:上点=100,离点=101,内点=99 ] # 执行边界值测试 print("边界值测试结果:") for score in boundary_tests: grade = score_grade(score) print(f"输入:{score:3d} → 输出:{grade}") ``` #### 关键实现说明: 1. **边界点选取**(引用[1][4]): - 上点:边界值本身(0,60,70,80,90,100) - 离点:边界相邻值(-1,59,61,69,71,79,81,89,91,99,101) - 内点:有效域内点(1,61,71等) 2. **错误检测原理**(引用[2][4]): - 当输入101时,正确代码应返回"Invalid",但示例中`score > 100`错误写成`score > 100`(应为`>=`) - 边界值0和100检测范围溢出错误 3. **测试用例设计**(引用[3][5]): ```python # 标准边界值模板(以范围0<=x<=100为例) min_value = 0 max_value = 100 test_cases = [ min_value - 1, # 下边界离点(无效值) min_value, # 下边界上点 min_value + 1, # 下边界内点 max_value - 1, # 上边界内点 max_value, # 上边界上点 max_value + 1 # 上边界离点(无效值) ] ``` #### 头歌平台使用提示: 1. 在实训环境中通常需要: - 在指定区域补充边界值测试用例 - 修改存在边界缺陷的待测函数 - 验证边界值测试覆盖率 2. 实际题目可能涉及: - 三角形问题(引用[4]的A+B>C边界) - 数组索引边界(引用[4]的数组初始化) - 日期/时间边界用例 ### 相关问题
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值