白盒测试扫盲

目录

前言:

什么是白盒测试

白盒测试中验证什么

如何执行白盒测试

步骤1:理解源代码

步骤2:创建测试用例并执行

白盒测试示例

白盒测试技术

白盒测试的类型

单元测试

测试内存泄漏

其他

白盒测试的优势

白盒测试的缺点

结束语


前言:

白盒测试是软件测试中的一种方法,它基于对软件系统的内部结构和实现细节的了解来设计和执行测试。白盒测试也被称为结构测试或透明盒测试,因为测试人员拥有关于软件内部结构的详细信息。

什么是白盒测试

白盒测试正在测试一个软件解决方案的内部结构,设计和代码。在这种类型的测试中,测试人员可以看到代码。它主要侧重于验证通过应用程序的输入和输出,改善设计和可用性,增强安全性。白盒测试也称为透明测试,开盒测试,结构测试,基于代码的测试,它通常由开发人员执行。

它是进行软件测试的重要部分之一。与之相对应的黑盒测试涉及从外部或最终用户类型的角度进行测试。另一方面,白盒测试基于应用程序的内部工作原理,并围绕内部测试展开。

白盒测试中验证什么

白盒测试涉及以下软件代码的测试:

  • 内部安全
  • 编码过程中路径或结构
  • 通过代码的特定输入流
  • 预期输出
  • 条件循环的功能
  • 分别测试每个语句,对象和函数

测试可以在软件开发的系统、集成和单元级别进行。白盒测试的基本目标之一是验证应用程序的工作流程。它涉及针对预期或期望的输出测试一系列预定义的输入,以便当特定输入未产生预期的输出时,发现程序的BUG。

如何执行白盒测试

为了简化白盒测试,将其分为两个基本步骤。这是测试人员使用白盒测试技术测试应用程序时所做的事情:

步骤1:理解源代码

测试人员经常要做的第一件事是学习和理解应用程序的源代码。由于白盒测试涉及对应用程序内部工作的测试,因此测试人员必须非常了解所测试应用程序中使用的编程语言。同样,测试人员必须高度了解安全的编码。安全通常是测试软件的主要目标之一。测试人员应该能够发现安全问题,并防止黑客和极客用户的攻击,他们可能有意或无意将恶意代码注入应用程序。

步骤2:创建测试用例并执行

白盒测试的第二个基本步骤涉及测试应用程序的源代码,以验证正确的流程和结构。一种方法是编写更多代码以测试应用程序的源代码。测试人员将为应用程序中的每个过程或一系列过程开发很少的测试。此方法要求测试人员必须对代码有深入的了解,并且通常由开发人员完成。

白盒测试示例

一个加法的Demo:

    def add(int a, int b) {int result = a + b;if (result > 0) print resultelse print(-result);}    

白盒测试的目标是验证代码中的所有决策分支,循环,语句。

为了执行上述代码中的语句,白盒测试用例应为:

A = 1,B = 1
A = -1,B = -3

白盒测试技术

白盒测试的主要技术是代码覆盖率分析。代码覆盖率分析消除了测试用例套件中的盲点。它标识一组测试用例未执行的程序区域。一旦发现盲点,就可以创建测试用例来验证未经测试的代码部分,从而提高软件产品的质量。

有自动工具可以执行代码覆盖率分析。以下是一些覆盖率分析技术

语句覆盖:这种技术要求在软件工程的测试过程中,至少对代码中的所有可能语句进行一次测试。

分支覆盖率:此技术检查软件应用程序的每个可能路径(if-else和其他条件循环)。

除了上述内容之外,还有许多覆盖类型,例如条件覆盖,多个条件覆盖,路径覆盖,功能覆盖等。每种技术都有其自身的优点,并尝试测试(覆盖)软件代码的所有部分。使用语句和分支覆盖率,通常可以达到80-90%的代码覆盖率。

白盒测试的类型

白盒测试包含几种用于评估应用程序,代码块或特定软件包的可用性的测试类型。以下列出-

单元测试

通常是在应用程序上进行的第一类测试。单元测试是在开发每个单元或代码块时执行的。单元测试本质上是由程序员完成的。作为软件开发人员,只需要开发几行代码,单个函数或对象,并对其进行测试,以确保其能够正常工作,然后再继续进行单元测试,以帮助在软件开发生命周期的早期识别出大多数错误。在此阶段发现的错误更便宜且易于修复。

测试内存泄漏

内存泄漏是导致应用程序运行缓慢的主要原因。如果您的软件应用程序运行缓慢,那么具有丰富的检测内存泄漏经验的质量保证专家至关重要。

其他

  • 白盒渗透测试:在此测试中,测试人员/开发人员具有应用程序源代码的完整信息,详细的网络信息,涉及的IP地址以及应用程序在其上运行的所有服务器信息。目的是从多个角度攻击代码以暴露安全威胁
  • 白盒突变测试:突变测试通常用于发现用于扩展软件解决方案的最佳编码技术

白盒测试的优势

  • 通过发现隐藏的错误进行代码优化。
  • 白盒测试用例可以轻松实现自动化。
  • 由于通常涵盖所有代码路径,因此测试更加彻底。
  • 即使没有GUI,也可以在SDLC中尽早开始测试。

白盒测试的缺点

  • 白盒测试可能非常复杂且昂贵。
  • 通常执行白盒测试用例的开发人员会讨厌它。
  • 白盒测试需要专业资源,并且对编程和实现有详细的了解。
  • 白盒测试是耗时的,较大的编程应用程序需要花费大量时间来进行全面测试。

结束语

白盒测试可能非常复杂。涉及的复杂性与要测试的应用程序有很大关系。一个执行单个简单操作的小型应用程序可以在几分钟内进行白盒测试,而大型编程应用程序则需要数天,数周甚至更长的时间才能完全测试。

  作为一位过来人也是希望大家少走一些弯路

在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。

(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等)

相信能使你更好的进步!

点击下方小卡片

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Matlab把两个不同的x轴和y轴画在同一个图里

我们知道画两个y轴可以用yyaxis. 那么画两个x轴呢? 这时候可以用神奇的tiledlayout. % 创建两组数据 x1 0:0.1:40; y1 4.*cos(x1)./(x12); x2 1:0.2:20; y2 x2.^2./x2.^3;t tiledlayout(1,1); % 创建一个tiledlayout % 第一个坐标系 ax1 axes(t); % 创建坐标系, 指定t为…

网络安全之反序列化漏洞分析

简介 FastJson 是 alibaba 的一款开源 JSON 解析库,可用于将 Java 对象转换为其 JSON 表示形式,也可以用于将 JSON 字符串转换为等效的 Java 对象分别通过toJSONString和parseObject/parse来实现序列化和反序列化。 使用 对于序列化的方法toJSONStrin…

Tomcat 部署优化

目录 一.Tomcat介绍 二.了解Tomcat里面里面是放什么的 三. Tomcat:是一个特殊的服务 有两个领域 四.tomcat概述 五.再加上那个扩展java虚拟机(JVM) 调优 tomcat 优化分两种 六.Tomcat核心组件 ​编辑 容器:什么是容器 …

C/C++内存管理详解

去年的今日,博主第一次发文,那时初出茅庐,没什么经验。时隔一年,更加优质的博文献上,希望可以帮助到更多的人❤️❤️❤️ 文章目录 💬 前言一、C/C内存分布二、C语言中动态内存管理方式三、C内存管理方式1…

密码学—Vigenere破解Python程序

文章目录 概要预备知识点学习整体流程技术名词解释技术细节小结代码 概要 破解Vigenere需要Kasiski测试法与重合指数法的理论基础 具体知识点细节看下面这两篇文章 预备知识点学习 下面两个是结合起来使用猜测密钥长度的,只有确认了密钥长度之后才可以进行破解。 …

旅游卡app软件开发解决方案

旅游业的不断发展,旅游卡作为一种便捷的旅游方式越来越受到人们的青睐。旅游卡可以帮助游客节省旅游开支,同时也能让游客更好地规划自己的旅游行程。针对这种情况,开发一款旅游卡app软件是非常必要的。本文将介绍旅游卡app软件开发的解决方案…

基于高校图书馆的用户画像、可视化、模型预测、推荐算法项目实现

需要本项目的可以私信博主获取源码及项目!!! 本研究基于高校图书馆的借阅信息、馆藏图书信息、读者入馆信息、用户信息等多维度的数据表,首先将不同年份的数据拼接在一起,按照时间维度进行整合,并保证数据…

JVM原理:JVM运行时内存模型(通俗易懂)

目录 前言正文虚拟机栈局部变量表操作数栈动态链接方法返回地址 本地方法栈本地方法存在的意义本地方法的调用 虚拟机堆堆结构Eden区Survivor区域老年代Old区常用参数指令 方法区常量池 运行时常量池方法信息类信息域信息JDK1.7前的方法区JDK1.7时的方法区JDK1.7后的方法区 程序…

【MYSQL篇】Update语句原理详解

文章目录 前言缓冲池Buffer PoolInnoDB 内存结构redo logundo logBinlog 总结 前言 前面的文章我们已经对MySQL的查询语句的执行流程进行了说明,感兴趣的可以去看看: 【MySQL篇】Select语句原理详解 本篇文章我们来聊聊 MySQL更新语句的执行原理。更新…

【JavaSE】方法

目录 【1】一个小例子 【2】方法概念及使用 【2.1】什么是方法(method) 【2.2】方法定义 【2.3】方法调用的执行过程 【2.4】实参和形参的关系(重要) 【1.5】没有返回值的方法 【2】函数重载 【2.1】为什么需要方法重载 【2.2】方法重载概念 【2.3】方法签名 【3】…

卷积神经网络--猫狗系列之下载、导入数据集

(由于是学习,所以文章会有一些报错及解决办法) 在Kaggle()获取数据集:(没有账号先去注册一个账号,在注册时可能会出现的问题见Kaggle注册出现一排“Captcha must be filled out.”!) https://www.kaggle.…

vue3+wangEditor5/vue-quill自定义上传音频+视频

一.各种编辑器分析 Quill 这是另一个常用的富文本编辑器,它提供了许多可定制的功能和事件,并且也有一2个官方的 Vue 3 组件 wangEditor5 wangEditor5用在Vue3中自定义扩展音频、视频、图片菜单;并扩展音频元素节点,保证音频节…