【测试】黑盒测试

hahah~~,当然和白盒测试一样啦!!刚刚把学校的黑盒测试实验报告写完,顺便把黑盒测试的内容梳理一下整理一篇博客。最最主要的是,方便期末考用,说到期末考试那就发挥下杨大仙的押题本领押个题,冯老师的期末考试会考等价类划分法。

1. 黑盒测试

1.1 什么是黑盒测试

  • 黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用。
  • 黑盒测试不深入代码细节。

1.2 方法

  • 等价类划分法、边界值分析法、判定表方法、因果图法、场景法、正交试验法、功能图法、错误推测法。

1.3 作用

①是否有不正确或遗漏了的功能
②在接口上,能否正确地接受输入数据,能否产生正确地输出信息
③访问外部信息是否有错
④性能上是否满足要求
⑤界面是否错误,是否不美观
⑥初始化或终止错误

2. 等价类划分法
  • 等价类划分是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。

  • 等价类划分可有两种不同的情况:有效等价类和无效等价类。

  • 有效等价类:是有意义的、合理的输入数据构成的集合。可检查程序是否实现了规格说明中所规定的功能和性能。

  • 无效等价类:与有效等价类的定义恰巧相反。

【例题】

设某公司要打印2001~2010年的报表,其中报表日期为6位数字组成,其中,前4位为年份,后两位为月份。
在这里插入图片描述在这里插入图片描述

3. 边界值法
  • 边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。

【与等价划分的区别】

  • 边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件;
  • 边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。

【设计方法】

确定边界情况(输入或输出等价类的边界);
选取正好等于、刚刚大于或刚刚小于边界值作为测试数据。

【例题】

某选课系统中规定每门课程的选修人数在[20,60]之间,小于20人不开设该门选修课,大于60人不接受后面的选课要求。

测试设计
输入变量:选课人数

测试输入
选择当选课人数分别为19,20,21, 59,60和61等几个边界点,再加上一个正常值点40
4. 判定表法
  • 在实际应用中,许多输入是由多个因素构成,而不是单一因素,这时就需要多因素组合分析。对于多因素,有时可以直接对输入条件进行组合设计,不需要进行因果分析,即直接采用判定表方法。
  • 一个判定表由“条件和活动”两部分组成,也就是列出了一个测试活动执行所需的条件组合,所有可能的条件组合定义了一系列的选择,而测试活动需要考虑每一个选择。

【判定表元素】

条件桩:列出问题的所有条件;
动作桩:列出可能针对问题所采取的操作;
条件项:针对所列条件的具体赋值;
动作项:列出在条件项(各种取值)组合情况下应该采取的动作;
规则:任何一个条件组合的特定取值及其相应要执行的操作。

【判定表方法步骤】

列出所有的条件桩和动作桩;
填入条件项;
填入动作项,制定初始判定表;
简化、合并相似规则或者相同动作。

【例题 — 分析步骤】

“某货运站收费标准如下:如果收件地点在本省,则快件每公斤5元,慢件每公斤3元;如果收件地点在外省,则在20公斤以内(含20公斤)快件每公斤7元,慢件每公斤5元,而超过20公斤时,快件每公斤9元,慢件每公斤7元。”
在这里插入图片描述
【例题】

三角形问题:输入三个整数,这三个值分别表示三角形三条边的长度,请判断这个三角形是等边三角形,还是等腰三角形还是不等边三角形并打印相应的结果,a,b,c 分别代表输入的整数,三角形问题的决策表为:
在这里插入图片描述

测试用例

规则1: 测试输入 = (60,16,26), 预期结果 = 非三角形
规则2: 测试输入 = (50,50,0), 预期结果 = 非三角形
规则3: 测试输入 = (0,0,0), 预期结果 = 非三角形
规则4: 测试输入 = (60,60,60), 预期结果 = 等边三角形
规则5: 这种组合在现实中不可能存在
规则6: 这种组合在现实中不可能存在
规则7: 测试输入 = (60,60,26), 预期结果 = 等腰三角形
规则8: 这种组合在现实中不可能存在
规则9: 测试输入 = (60,26,60), 预期结果 = 等腰三角形.
规则10: 测试输入 = (26,60,60), 预期结果 = 等腰三角形
规则11: 测试输入 = (30,40,50), 预期结果 = 不等边三角形
5. 因果图法
  • 多种输入条件的组合,产生多种结果设计测试用例。

【设计方法】

分析软件规格说明文档描述的哪些是原因(输入条件),哪些是结果(输出条件),给每个原因和结果赋予一个标识符;
找出原因与结果,原因与原因之间的对应关系,画出因果图;
在因果图上标上哪些不可能发生的因果关系,表明约束或限制条件;
根据因果图,创建判定表,将复杂的逻辑关系和多种条件组合很具体明确的表示出来;
把判定表的每一列作为依据设计测试用例。

【基本符号】
在这里插入图片描述
【例题】

产品说明书:有一个处理单价为1元钱的盒装饮料的自动售货机软件。若投入1元硬币,按下“可乐”、“雪碧”、或“红茶”按钮,相应的饮料就送出来。若投入的是2元硬币,在送出饮料的同时退还1元硬币。
在这里插入图片描述
在这里插入图片描述
【优点】

  1. 因果图法能够帮助我们按照一定步骤,高效的选择测试用例,设计多个输入条件组合用例;
  2. 因果图分析还能为我们指出,软件规格说明描述中存在的问题 ;
  3. 可以依据因果图检验需求的逻辑和程序未来应包含的函数或方法。

【缺点】

  1. 输入条件与输出结果的因果关系,有时难以从软件需求规格说明书得到;
  2. 即使得到了这些因果关系,也会因为因果关系复杂导致因果图非常庞大,测试用例数目极其庞大。
6. 场景分析法

6.1 为什么引入用例场景

  • 现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。

6.2 用例场景的定义

  • 用例场景用来描述流经用例的路径,从用例开始到结束遍历这条路径上所有基本流和备选流。

【例题:ATM取款例子】

基本流:1.插入磁卡;2.ATM机验证帐户正确;3.输入密码正确,通过验证;4.输入取款金额;5.取出金额;6.取卡

备选流一:帐户不存在或受限制
备选流二:密码不正确,还有输入机会
备选流三:密码不正确,没有输入机会
备选流四:卡中余额不足
备选流五:机中余额不足
备选流六:超过每日最大提款限额
备选流七:输入金额非100倍数

在这里插入图片描述

7. 正交试验法
  • 在许多应用系统的测试工作中,输入条件的因素很多,而且每个因素也不能简单用“是”和“否”来回答,每个因素也有多个选项,测试组合会变得很多,如果按照传统的测试方法,会导致很大的测试工作量。

【设计方法】

1.确定影响功能的因子与状态;
2.选择一个合适的正交表;
3.利用正交表构造测试数据集。

【例题】

信息系统中,员工信息查询设有3个独立的查询条件,以获得特定员工的个人信息。(员工号(ID),员工姓名(Name),员工邮件地址(Mail Address))
在这里插入图片描述

8. 功能图法
  • 每个程序的功能通常由静态说明和动态说明组成:

     静态说明描述了输入条件和输出条件之间的对应关系
     动态说明描述了输入数据的次序或者转移的次序。 
    
  • 功能图法就是为了解决动态说明问题的一种测试用例的设计方法 。

  • 功能图由状态迁移图(state transition diagram,STD)和逻辑功能模型(logic function model,
    LFM)构成;

  • 状态迁移图:用于表示输入数据序列以及相应的输出数据,由输入和当前的状态决定输出数据和后续状态 ;

  • 逻辑功能表:用于表示状态输入条件和输出条件之间的对应关系。

  • 功能图法设计测试用例,就是如何覆盖软件所表现出来的所有状态,可以转化为两个层次的测试用例,从功能逻辑模型(决策表或因果图)导出局部测试用例,覆盖各个状态的各种输入数据的组合,从状态迁移图导出整体的测试用例,以覆盖系统(程序)控制的逻辑路径;

  • 功能图法是综合运用黑盒方法和白盒方法来设计测试用例,即整体上选用白盒方法——路径覆盖、分支和条件覆盖等,而局部上选用的是黑盒方法——决策表或因果图方法。

9. 错误推测法
  • 基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例以检查这些错误。

【发现程序经常出现的错误的方法】

单元测试中发现的模块错误;
产品的以前版本曾经发现的错误;
输入数据为0或字符为空;
当软件要求输入时(比如在文本框中),不是没有输入正确的信息,而是根本没有输入任何内容,单单按了Enter键。
### 黑盒测试与白盒测试的概念 #### 黑盒测试 黑盒测试是一种不考虑内部结构或工作原理的测试方法,仅基于程序的功能需求文档来进行测试。这种方法关注的是输入和输出之间的关系,而不涉及代码的具体实现细节[^1]。 #### 白盒测试 相比之下,白盒测试则深入到软件的内部逻辑层面,通过检查源代码来设计测试案例。这种类型的测试旨在验证程序中的每条路径是否都能正常运行,并确保所有的条件分支都得到了充分检验[^2]。 ### 主要区别 | 特征 | 黑盒测试 | 白盒测试 | | --- | --- | --- | | **视角** | 用户角度 | 开发者角度 | | **依据** | 功能规格说明书 | 源代码及控制流图 | | **目标** | 验证功能正确性 | 查找潜在错误并优化性能 | ### 应用场景 对于复杂的业务流程或者界面交互较多的应用来说,采用黑盒测试可以有效地模拟真实用户的操作行为,从而发现一些由于理解偏差而导致的问题。而对于算法密集型模块或是安全性要求极高的组件,则更适合运用白盒测试手段去排查深层次的设计缺陷以及安全漏洞。 ```python def black_box_test(input_data, expected_output): actual_output = process_input(input_data) # 假设这是被测函数调用 return actual_output == expected_output def white_box_test(code_block): coverage_report = analyze_code_coverage(code_block) branch_conditions_met = check_all_branches_executed(coverage_report) return branch_conditions_met ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值