黑盒测试基本方法

本文详细介绍了黑盒测试的概念、常用方法及其应用场景。包括等价类划分、边界值分析、错误推测法、因果图法和场景法等内容。同时,还列举了功能测试的具体实践方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

黑盒测试:又称功能测试或数据驱动测试,需要测试软件产品的功能,不考虑软件内部结构和处理过程
黑盒测试设计用例常用方法有等价类划分,边界值分析,错误推测法,因果图法,场景法
黑盒测试试图发现以下类型的错误
1.功能错误或遗漏 2.界面错误 3.数据结构或外部数据库访问错误
4.性能错误 5.初始化和终止错误
测试用例常用方法
1.等价类划分:把所有输入数据即程序的输入域划分成若干个区域(子集),每个子集中选取具有代表性的数据作为测试用例。同一子集中的各个数据对于揭露程序的bug都是等效的。测试某等价类的代表值就等于这一类其他值的测试。
有效等价类:对于程序需求说明是合理的,有意义的数据构成的集合。检测是否实现需求的功能和性能。
无效等价类:无意的数据构成的集合,测试程序对于无意义数据的处理结果。
划分等价类的原则:
① 在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。

  ② 在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类。

  ③ 在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。

  ④ 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。

  ⑤ 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。

  ⑥ 在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。

边界值分析:是对等价类划分方法的补充
大量错误都是在测试范围的输入或输出的边界上因此针对各种边界情况设计测试用例,通常输入和输出的等价类边界就是应重点测试的边界情况,应选择正好等于或刚刚大于(小于)边界的值作为测试数据。而不是典型值或任意值。

基于边界值选择测试用例的原则:
 1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。

  2)如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。

  3)根据规格说明的每个输出条件,使用前面的原则1)。

  4)根据规格说明的每个输出条件,应用前面的原则2)。

  5)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。

  6)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。

  7)分析规格说明,找出其它可能的边界条件。

错误推测法:基于测试经验和直觉推测程序中所有可能存在的各种错误。从而有针对性的设计测试用例

因果图法:考虑输入条件之间的关系,相互组合可能会产生一些新的情况。利用因果图描述多种条件的组合,相应产生多个动作。

利用因果图生成测试用例的基本步骤:

  (1) 分析软件需求说明描述中, 那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件), 并给每个原因和结果赋予一个标识符。

  (2) 分析软件软件需求说明。找出原因与结果之间, 原因与原因之间对应的关系。 根据这些关系,画出因果图。

  (3) 由于语法或环境限制, 有些原因与原因之间,原因与结果之间的组合情况不不可能出现。 为表明这些特殊情况, 在因果图上用一些记号表明约束或限制条件。

  (4) 把因果图转换为判定表。

  (5) 把判定表的每一列拿出来作为依据,设计测试用例。
  从因果图生成的测试用例(局部,组合关系下的)包括了所有输入数据的取TRUE与取FALSE的情况,构成的测试用例数目达到最少,且测试用例数目随输入数据数目的增加而线性地增加。

判定表驱动分析方法:待补充。不了解

常用的功能测试方法

  功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。常用的测试方法如下:

  1、页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。

  2、相关性检查:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确。

  3、检查按钮的功能是否正确:如update, cancel, delete, SAve等功能是否正确。

  4、字符串长度检查: 输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度,会不会出错。

  5、字符类型检查: 在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型,会否报错。

  6、标点符号检查: 输入内容包括各种标点符号,特别是空格,各种引号,回车键。看系统处理是否正确。

  7、中文字符处理: 在可以输入中文的系统输入中文,看会否出现乱码或出错。

  8、检查带出信息的完整性: 在查看信息和update信息时,查看所填写的信息是不是全部带出。,带出信息和添加的是否一致

  9、信息重复: 在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理。

  10、检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,按”delete”,看系统如何处理,会否出错;然后选择一个和多个信息,进行删除,看是否正确处理。

  11、检查添加和修改是否一致: 检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型。

  12、检查修改重名:修改时把不能重名的项改为已存在的内容,看会否处理,报错。同时,也要注意,会不会报和自己重名的错。

  13、重复提交表单:一条已经成功提交的纪录,back后再提交,看看系统是否做了处理。

  14、检查多次使用back键的情况: 在有back的地方,back,回到原来页面,再back,重复多次,看会否出错。

  15、search检查: 在有search功能的地方输入系统存在和不存在的内容,看search结果是否正确。如果可以输入多个search条件,可以同时添加合理和不合理的条件,看系统处理是否正确。

  16、输入信息位置: 注意在光标停留的地方输入信息时,光标和所输入的信息会否跳到别的地方。

  17、上传下载文件检查:上传下载文件的功能是否实现,上传文件是否能打开。对上传文件的格式有何规定,系统是否有解释信息,并检查系统是否能够做到。

  18、必填项检查:应该填写的项没有填写时系统是否都做了处理,对必填项是否有提示信息,如在必填项前加*

  19、快捷键检查:是否支持常用快捷键,如Ctrl+C Ctrl+V Backspace等,对一些不允许输入信息的字段,如选人,选日期对快捷方式是否也做了限制。

  20、回车键检查: 在输入结束后直接按回车键,看系统处理如何,会否报错。

### 黑盒测试基本方法及其在软件测试中的应用 黑盒测试是一种重要的测试方法,它通过模拟用户操作和测试软件的功能来确保软件的质量和可靠性。这种方法主要关注输入和输出之间的关系,而不涉及程序内部的逻辑结构[^2]。以下是黑盒测试中常用的基本方法及其在软件测试中的具体应用: #### 1. 等价类划分法 等价类划分法是将测试输入数据划分为若干个等价类,每个等价类中的任意一个值都可以代表该类的其他值进行测试[^3]。这种方法可以显著减少测试用例的数量,同时保证测试的有效性。 ```python def test_equivalence_partitioning(): # 定义等价类范围 valid_input = [x for x in range(1, 101)] # 合法输入范围为1到100 invalid_input = [-1, 101] # 非法输入范围 for value in valid_input + invalid_input: if 1 <= value <= 100: assert process_input(value) == "Valid", f"Test failed for {value}" else: assert process_input(value) == "Invalid", f"Test failed for {value}" def process_input(value): return "Valid" if 1 <= value <= 100 else "Invalid" ``` #### 2. 边界值分析法 边界值分析法着重于测试输入和输出的边界条件,因为许多错误往往发生在这些边界上[^4]。通过选择边界值附近的测试数据,可以更有效地发现潜在问题。 ```python def test_boundary_value_analysis(): boundary_values = [0, 1, 99, 100, 101] # 边界值及邻近值 for value in boundary_values: if 1 <= value <= 100: assert process_input(value) == "Valid", f"Test failed for {value}" else: assert process_input(value) == "Invalid", f"Test failed for {value}" ``` #### 3. 错误推测法 错误推测法基于经验和直觉,预测可能存在的错误并设计相应的测试用例[^3]。这种方法通常用于补充其他测试方法未覆盖的场景。 #### 4. 因果图法 因果图法通过分析输入条件(原因)和输出结果(结果)之间的因果关系来设计测试用例[^3]。这种方法特别适用于复杂的逻辑功能测试。 ```python def test_cause_effect_graph(): input_conditions = [(True, True), (True, False), (False, True), (False, False)] expected_outputs = ["Pass", "Fail", "Fail", "Fail"] for i, (condition1, condition2) in enumerate(input_conditions): result = evaluate_logic(condition1, condition2) assert result == expected_outputs[i], f"Test failed for {condition1}, {condition2}" def evaluate_logic(condition1, condition2): return "Pass" if condition1 and condition2 else "Fail" ``` #### 5. 判定表驱动法 判定表驱动法通过列出所有可能的条件组合及其对应的动作来设计测试用例。这种方法适合处理多条件组合的复杂场景。 ```python def test_decision_table(): decision_table = [ {"Condition1": True, "Condition2": True, "Action": "Pass"}, {"Condition1": True, "Condition2": False, "Action": "Fail"}, {"Condition1": False, "Condition2": True, "Action": "Fail"}, {"Condition1": False, "Condition2": False, "Action": "Fail"}, ] for row in decision_table: result = evaluate_logic(row["Condition1"], row["Condition2"]) assert result == row["Action"], f"Test failed for {row['Condition1']}, {row['Condition2']}" ``` ### 黑盒测试的应用场景 黑盒测试广泛应用于配置项测试、配置项集成测试和系统测试中,主要用于验证软件的功能是否符合需求规格说明[^1]。通过结合多种测试方法,可以全面覆盖软件的各种功能场景,提高测试的有效性和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值