当前位置: 首页 > ai >正文

软件工程(一):黑盒测试与白盒测试

黑盒测试(Black Box Testing)

定义

黑盒测试是指不关心程序内部实现细节,只关注输入和输出的测试方法。把被测软件当作一个“黑盒子”,只依据功能说明书或需求文档来编写测试用例,验证功能是否正确。

特点

  • 不需要了解代码结构或内部逻辑。
  • 主要测试软件的功能性(即做了应该做的事)。
  • 典型方法包括:
    • 等价类划分
      • 把输入数据划分为有效/无效的几组,每组只取一个代表值进行测试。
      • 目的是减少测试数量,但又能有效覆盖可能的输入。
    • 边界值分析
      • 重点测试输入值在边界附近的情况(比如最小值、最大值、临界点)。
      • 因为程序往往在边界容易出错。
    • 错误推测
      • 基于经验猜测程序最可能出错的地方进行测试。
    • 因果图分析
      • 把各种输入条件与输出之间的关系用图形表示,并基于图生成测试用例。
    • 状态迁移测试
      • 测试系统在不同状态间切换的正确性,比如自动售货机状态。
  • 适合发现:
    • 功能错误
    • 界面错误
    • 性能问题
    • 数据处理错误

例子

比如测试一个登录功能,只测试各种账号密码组合是否能成功或失败,而不管后端是怎么校验密码的

白盒测试(White Box Testing)

定义

白盒测试是指了解程序内部逻辑结构,基于源代码来设计测试用例的方法。测试者可以看到程序的源代码,验证各个路径、分支、条件是否按照设计正确执行。

特点

  • 需要了解代码实现和控制流程。
  • 主要测试软件的内部逻辑正确性
  • 典型方法包括:
    • 语句覆盖
      • 保证程序中的每一条语句至少被执行一次。
    • 分支覆盖
      • 保证程序中的每一个if、for、while等分支都至少被走过一次。
    • 条件覆盖
      • 保证每一个判断条件的真假情况都至少出现一次。
    • 路径覆盖
      • 尝试覆盖所有可能的执行路径,难度较高但覆盖更全面。
    • 循环测试
      • 针对for、while等循环结构,分别测试循环0次、1次、N次(特别是N很大)情况。
  • 适合发现:
    • 逻辑错误
    • 边界条件处理不当
    • 程序异常处理错误
    • 安全漏洞

例子

比如检查一个登录程序,测试者会跟踪代码中密码校验的分支是否都走过,比如密码为空、密码正确、密码错误等情况是否都被正确处理。

灰盒测试(Gray Box Testing)

定义

灰盒测试结合了黑盒和白盒测试的优点。
测试人员部分了解内部逻辑,在此基础上设计更有效的测试用例,但不需要像白盒那样彻底深入代码细节。

特点

  • 了解部分代码实现、数据库结构、API接口等信息。
  • 既从外部测试功能,又能针对潜在内部风险设计测试用例。
  • 适合复杂系统,如分布式系统、大型Web服务。

例子

  • 测试一个Web应用,既检查前端界面输入,也通过了解后端数据库结构编写针对性的测试用例。

什么时候用黑盒、白盒、灰盒?

场景推荐的测试方法
新功能验证、系统集成测试黑盒测试
单元测试(模块内部细粒度测试)白盒测试
安全测试、接口测试、性能测试灰盒测试
黑盒覆盖不了的复杂逻辑分支白盒测试补充
面向最终用户的系统验收测试黑盒测试为主
http://www.xdnf.cn/news/2721.html

相关文章:

  • 【浙江大学DeepSeek公开课】人类经验与AI算法的镜像之旅
  • 考研系列-计算机组成原理第七章、输入/输出系统
  • 解锁健康密码:养生的多维智慧
  • 【手册】Linux服务器应急排查实战指南
  • 《Learning Langchain》阅读笔记11-RAG(7)索引优化:RAPTOR方法和ColBERT方法
  • C++:BST、AVL、红黑树
  • 惠普P1108打印机信息
  • gre over ipsec (神州数码)
  • 巧记英语四级单词 Unit6-中【晓艳老师版】
  • SpringBoot启动后自动执行方法的各种方式-笔记
  • 【MCP】第三篇:Cline工具链路追踪——解码“协议引擎“的神经传导奥秘
  • Pytest-mark使用详解(跳过、标记、参数 化)
  • 夜莺 v8.0.0-beta.10 部署
  • 新能源汽车声纹监测技术的发展趋势是什么?
  • 机器学习:【抛掷硬币的贝叶斯后验概率】
  • 【MySQL】-- 增删改查操作(1)
  • AI辅助编程-cursor开发煤矿持证上岗管理程序需求与设计篇
  • python tk.text不可编辑
  • 高效运维,智慧监测:COMEM光纤温度测量系统在电力行业中的应用
  • 云服务器被黑客攻击应急响应与加固指南(上)
  • Shiro学习(七):总结Shiro 与Redis 整合过程中的2个问题及解决方案
  • 网络安全入门综述
  • 深入了解指针(6)
  • day004-习题
  • Python实例题:Pvthon实现键值数据库
  • 入门版 鸿蒙 组件导航 (Navigation)
  • 游戏打击感实现
  • frp内网穿透的基础使用
  • 如何选择靠谱的软件测试外包公司?软件测试外包需要多少费用和时间?
  • Python抽象类:ABC模块的优雅之道与手动实现的隐性陷阱