白盒测试?看这一篇就够了

news2024/11/16 3:48:44

白盒测试?看这一篇就够了

    • 什么是白盒测试:
    • 白盒测试流程
    • 白盒测试技术
    • 白色测试分 2 个步骤进行
    • 白盒测试的特点
    • 白盒测试的优点
    • 白盒测试的缺点

五星上将麦克阿瑟曾经说过“在白盒测试面前,黑盒测试就是弟弟“
在这里插入图片描述

什么是白盒测试:

白盒测试技术分析内部结构、使用的数据结构、内部设计、代码结构和软件的工作,而不仅仅是黑盒测试中的功能。它也称为玻璃盒测试或透明盒测试或结构测试。白盒测试也称为透明测试或开盒测试。

白盒测试是一种软件测试技术,涉及测试软件应用程序的内部结构和工作原理。测试人员可以访问源代码,并使用这些知识来设计可以在代码级别验证软件正确性的测试用例。

白盒测试也称为结构测试或基于代码的测试,用于测试软件的内部逻辑、流程和结构。测试人员创建测试用例来检查代码路径和逻辑流,以确保它们满足指定的要求。

白盒测试流程

  • 输入:需求、功能规格、设计文档、源代码。

  • 处理:进行风险分析以指导整个过程。

  • 正确的测试计划:设计测试用例以覆盖整个代码。执行冲洗重复,直到达到无错误的软件。此外,还传达了结果。

  • 输出:准备整个测试过程的最终报告。

白盒测试技术

  1. 报表覆盖范围
    在这里插入图片描述2. 分支机构覆盖范围:
    在这种技术中,测试用例被设计为使得来自所有决策点的每个分支至少被遍历一次。在流程图中,所有边必须至少遍历一次。
    在这里插入图片描述

  2. 条件覆盖
    在此技术中,必须涵盖所有单独的条件,如下例所示:

读取 X、Y

如果(X == 0 || Y == 0)

打印“0”

#TC1 – X = 0,Y = 55

#TC2 – X = 5,Y = 0

  1. 多条件覆盖
    在该技术中,条件的可能结果的所有可能组合至少被测试一次。让我们考虑以下示例:

读取 X、Y

如果(X == 0 || Y == 0)

打印“0”

#TC1:X = 0,Y = 0

#TC2:X = 0,Y = 5

#TC3:X = 55,Y = 0

#TC4:X = 55,Y = 5

  1. 基础路径测试
    在该技术中,控制流图由代码或流程图组成,然后计算循环复杂度,定义独立路径的数量,以便可以为每个独立路径设计最少数量的测试用例。:

制作相应的控制流程图

计算圈复杂度

找到独立路径

设计每个独立路径对应的测试用例

V(G) = P + 1,其中 P 是流图中谓词节点的数量

V(G) = E – N + 2,其中 E 是边数,N 是节点总数

V(G) = 图中不重叠区域的数量

#P1:1 – 2 – 4 – 7 – 8

#P2:1 – 2 – 3 – 5 – 7 – 8

#P3:1 – 2 – 3 – 6 – 7 – 8

#P4:1 – 2 – 4 – 7 – 1 – 。。。– 7 – 8

  1. 循环测试
    循环被广泛使用,它们是许多算法的基础,因此它们的测试非常重要。错误经常发生在循环的开始和结束处。

简单循环:对于大小为 n 的简单循环,测试用例的设计如下:

完全跳过循环

只有一次通过循环

2次通过

m 通过,其中 m < n

n-1 次和 n+1 次通过

嵌套循环:对于嵌套循环,所有循环都设置为其最小计数,并且我们从最内层循环开始。对最里面的循环进行简单的循环测试,然后向外进行,直到测试完所有循环为止。

串联循环:一个接一个的独立循环。每个都应用简单的循环测试。

白色测试分 2 个步骤进行

测试人员应该很好地理解代码

测试人员应该为测试用例编写一些代码并执行它们

白盒测试所需的工具:

  • PyUnit

    Sqlmap

    Nmap

    Parasoft Jtest

    Nunit

    VeraUnit

    CppUnit

    Bugzilla

    Fiddler

    JSUnit.net

    OpenGrok

    Wireshark

    HP Fortify

    CSUn

白盒测试的特点

  • 代码覆盖率分析:白盒测试有助于分析应用程序的代码覆盖率,这有助于识别未测试的代码区域。

  • 访问源代码:白盒测试需要访问应用程序的源代码,这使得测试各个功能、方法和模块成为可能。

  • 编程语言知识:执行白盒测试的测试人员必须具备 Java、C++、Python 和 PHP 等编程语言知识,才能理解代码结构并编写测试。

  • 识别逻辑错误:白盒测试有助于识别代码中的逻辑错误,例如无限循环或不正确的条件语句。

  • 集成测试:白盒测试对于集成测试很有用,因为它允许测试人员验证应用程序的不同组件是否按预期协同工作。

  • 单元测试:白盒测试也用于单元测试,其中涉及测试各个代码单元以确保它们正常工作。

  • 代码优化:白盒测试可以通过识别任何性能问题、冗余代码或其他可以改进的领域来帮助优化代码。

  • 安全测试:白盒测试也可用于安全测试,因为它允许测试人员识别应用程序代码中的任何漏洞。

  • 设计验证:验证软件内部设计是否按照指定的设计文件进行实现。

  • 检查代码是否准确:验证代码是否按照指南和规范运行。

  • 识别编码错误:它发现并修复代码中的编程缺陷,包括语法和逻辑错误。

  • 路径检查:它确保探索代码执行的每个可能路径并测试代码的各种迭代。

  • 确定死代码:它查找并删除程序正常运行时未使用的任何代码(死代码)。

白盒测试的优点

  • 彻底的测试:白盒测试是彻底的,因为整个代码和结构都经过测试。

  • 代码优化:它可以优化代码,消除错误,并有助于消除多余的代码行。

  • 早期检测缺陷:它可以在早期阶段开始,因为它不需要像黑盒测试那样的任何接口。

  • 与SDLC集成:可以在软件开发生命周期中轻松启动白盒测试。

  • 复杂缺陷的检测:测试人员可以识别通过其他测试技术无法检测到的缺陷。

  • 全面的测试用例:测试人员可以创建更全面、更有效的测试用例,涵盖所有代码路径。

  • 测试人员可以确保代码符合编码标准并针对性能进行了优化。

白盒测试的缺点

  • 编程知识和源代码访问:测试人员需要具备编程知识并访问源代码才能执行测试。

  • 过分强调内部工作:测试人员可能会过多关注软件的内部工作,而可能会错过外部问题。

  • 测试中的偏见:测试人员可能对软件有偏见,因为他们熟悉软件的内部工作原理。

  • 测试用例开销:重新设计代码、重写代码需要重新编写测试用例。

  • 对测试人员专业知识的依赖:测试人员需要对代码和编程语言有深入的了解,而不是黑盒测试。

  • 无法检测缺失的功能:在测试现有代码时无法检测到缺失的功能。

  • 生产错误增加:生产中出现错误的可能性很高。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1403201.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

10篇深度学习时间序列预测综述汇总!含金融、医疗、气象等领域应用!

在当今数据驱动的时代&#xff0c;时间序列预测在金融、医疗和气象等领域发挥着关键作用&#xff0c;而深度学习作为人工智能领域的重要分支&#xff0c;为解决时间序列预测问题提供了强大的工具。 为了帮助大家深入理解深度学习时间序列预测&#xff0c;这里整理了10篇深度学习…

springboot配置项动态刷新

文章目录 一&#xff0c;序言二&#xff0c;准备工作1. pom.xml引入组件2. 配置文件示例 三&#xff0c;自定义配置项动态刷新编码实现1. 定义自定义配置项对象2. 添加注解实现启动时自动注入3. 实现yml文件监听以及文件变化处理 四&#xff0c;yaml文件转换为java对象1. 无法使…

Oracle认证 | 甲骨文Oracle认证含金量高吗?

“考证”在各行各业中一直都是热度不减的话题&#xff0c;IT领域也不例外。 对于在校学生来说&#xff0c;并没有太多实践经验&#xff0c;证书在一定程度上就是找工作时的“敲门砖”&#xff0c;多张证书多条路&#xff1b; 对于职场人士来说&#xff0c;证书在升职加薪、跳…

基于springboot+vue的网上购物商城(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

【设计模式】张一鸣笔记:责任链接模式怎么用?

我将通过一个贴近现实的故事——请假审批流程&#xff0c;带你了解和掌握责任链模式。 什么是责任链模式&#xff1f; 责任链模式是一种行为设计模式&#xff0c;它让你可以避免将请求的发送者与接收者耦合在一起&#xff0c;让多个对象都有处理请求的机会将这个对象连成一条…

【架构师专题】架构师如何做好业务架构?

作为一个优秀的架构师&#xff0c;必须要先训练自己的业务架构技能&#xff0c;但是要训练之前&#xff0c;一定要先理解“业务架构”的定义。 业务架构 那么什么是业务架构呢&#xff1f;这里我给大家梳理了一个比较准确的定义。 “业务架构”是一个企业或组织在运营过程中…

大模型日报-20240122

清华、小米、华为、 vivo、理想等多机构联合综述&#xff0c;首提个人LLM智能体、划分5级智能水平 https://mp.weixin.qq.com/s/JYB4BzsXhWF8pEUUkvn_GQ 想必这些唤醒词中至少有一个曾被你的嘴发出并成功呼唤出了一个能给你导航、讲笑话、添加日程、设置闹钟、拨打电话的智能个…

gradle构建spring-framework源码

5.3.22版本构建 通过启动的jvm参数配置代理下载 Could not download jruby-stdlib-9.2.20.1.jar (org.jruby:jruby-stdlib:9.2.20.1) Could not get resource https://repo.maven.apache.org/maven2/org/jruby/jruby-stdlib/9.2.20.1/jruby-stdlib-9.2.20.1.jar. Could not GE…

Vue3组件库开发 之Button(2) 未完待续

Vue3组件库开发 之Button(1) 中新建项目&#xff0c;但未安装成功ESLINT 安装ESLINT npm install eslint vite-plugin-eslint --save-dev 安装eslint后&#xff0c;组件文件出现错误提示 添加第三方macros &#xff0c;虽然不是官网但很多开发者都是vue3开发人员 安装macros…

SAP CDS VIEW实现行列转换

需求&#xff1a; 销售订单上的业务伙伴数据都在VBPA存储&#xff0c;根据PARVW来区分是售达方或者是送达方等等&#xff0c;有时候一些报表取数时有一些条件&#xff0c;比如售达方等于xxxxx并且送达方等于xxxxx&#xff0c;这时候就不是简单的一条sql就能搞定的事了&#xf…

基于扩散模型语音驱动人物头像说话模型:DreamTalk

1 DreamTalk介绍 DreamTalk&#xff1a;由清华大学、阿里巴巴和华中科大共同开发的一个基于扩散模型让人物头像说话的框架。 能够根据音频让人物头像照片说话、唱歌并保持嘴唇的同步和模仿表情变化。这一框架具有以下特点: DreamTalk能够生成高质量的动画&#xff0c;使人物脸…

前端转鸿蒙的就业前景如何?有必要学鸿蒙么?

学习鸿蒙开发是否有必要&#xff0c;取决于多个因素&#xff1a; 一、个人兴趣与职业规划&#xff1a; 如果你对华为鸿蒙操作系统&#xff08;HarmonyOS&#xff09;感兴趣&#xff0c;并且希望将这个平台作为你的职业发展的方向&#xff0c;那么学习鸿蒙开发是非常有意义的。…

ORA-01033: ORACLE initialization or shutdown in progress---惜分飞

客户反馈数据库使用plsql dev登录报ORA-01033: ORACLE initialization or shutdown in progress的错误 出现该错误一般是由于数据库没有正常open成功,查看oracle 告警日志发现 Mon Jan 22 16:55:50 2024 Database mounted in Exclusive Mode Lost write protection disabled …

93. 复原 IP 地址 - 力扣(LeetCode)

题目描述 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 ‘.’ 分隔。 例如&#xff1a;“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址&#xff0c;但是 “0.011.255.245”、“…

【Linux】vim中批量化注释

批量化注释 ctrlvhjkl进行区域选择shiftiI“//”esc*2 批量化删除注释 ctrlvhjkl进行区域选择&#xff08;包含且仅包含“//”-可以用L控制&#xff09;d删除

WIFI6与WIFI5的差异在哪里

在数字时代&#xff0c;随着无线网络的不断演进&#xff0c;WIFI技术作为我们日常连接的主要方式之一也在不断升级。在过去的几年里&#xff0c;WIFI5一直是许多用户的首选标准&#xff0c;为我们提供了可靠的无线连接。然而&#xff0c;如今WIFI6崭露头角&#xff0c;引入了一…

最详细PE文件格式讲解!!!!!

一&#xff1a;简单介绍和必须知道的知识点&#xff1a; 在介绍PE文件格式的细节前&#xff0c;仔细看一下下面图&#xff0c;该图展示了PE文件格式的大概布局&#xff0c;学习时建议配合使用PE工具——stud_PE。 1.1PE的基本概念 PE文件使用的是一个平面地址空间&#xff0c;所…

Nvidia DPU BlueField 软件概述_AI_卸载_降本增效_DPU时代_内核表示模型

Nvidia_BF_DPU简介 随着摩尔定律的减弱&#xff0c;加速计算和人工智能是较经济实惠的方式实现数据中心能源效率所需的工具。 让我们一起跟随和了解 NVIDIA Grace CPU、NVIDIA L4 GPU 和 NVIDIA BlueField DPU 如何推动数据中心迈向更高效的未来。 NVIDIA BlueField DPU 软件…

快速傅立叶变换FFT学习笔记

什么是FFT&#xff1f; FFT&#xff08;Fast Fourier Transformation&#xff09; 是离散傅氏变换&#xff08;DFT&#xff09;的快速算法&#xff0c;即快速傅氏变换。FFT使计算机计算离散傅里叶变换所需要的乘法次数大为减少&#xff0c;特别是被变换的抽样点数N越多&#x…

MySQL索引的使用,大大提升你代码的效率

目录 &#x1f680;索引使用 &#x1f680;最左前缀法则 &#x1f680;范围查询 &#x1f680;索引失效情况 隐式类型转换是什么&#xff1f; 隐式类型转换的影响 举例说明 无隐式类型转换的情况 存在隐式类型转换的情况 总结 &#x1f680;模糊查询 &#x1f680;or…