首页 > 其他分享 >白盒测试?软件工程?看这一篇就够了

白盒测试?软件工程?看这一篇就够了

时间:2024-01-22 20:31:58浏览次数:27  
标签:白盒 代码 测试人员 软件工程 就够 测试 测试用例 循环

五星上将麦克阿瑟曾经说过“在白盒测试面前,黑盒测试就是弟弟“

白盒测试?软件工程?看这一篇就够了_白盒测试

让我们来讲一个故事


今天和女朋友吵架了,(假设你有女朋友)。

今晚又是一个人睡沙发,这天晚上,你躺在沙发上,夜不能寐


决定学习一下这个事情——白盒测试


前言

什么是白盒测试:

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

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

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

白盒测试流程


  1. 输入:需求、功能规格、设计文档、源代码。
  2. 处理:进行风险分析以指导整个过程。
  3. 正确的测试计划:设计测试用例以覆盖整个代码。执行冲洗重复,直到达到无错误的软件。此外,还传达了结果。
  4. 输出:准备整个测试过程的最终报告。

白盒测试技术

1. 报表覆盖范围

白盒测试?软件工程?看这一篇就够了_白盒测试_02

2. 分支机构覆盖范围:

在这种技术中,测试用例被设计为使得来自所有决策点的每个分支至少被遍历一次。在流程图中,所有边必须至少遍历一次。

白盒测试?软件工程?看这一篇就够了_测试用例_03

3. 条件覆盖

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

  • 读取 X、Y
  • 如果(X == 0 || Y == 0)
  • 打印“0”
  • #TC1 – X = 0,Y = 55
  • #TC2 – X = 5,Y = 0

4. 多条件覆盖

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

  • 读取 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

5. 基础路径测试

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

  • 制作相应的控制流程图
  • 计算圈复杂度
  • 找到独立路径
  • 设计每个独立路径对应的测试用例
  • 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

6. 循环测试

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

  • 简单循环:对于大小为 n 的简单循环,测试用例的设计如下:
  1. 完全跳过循环
  2. 只有一次通过循环
  3. 2次通过
  4. m 通过,其中 m < n
  5. n-1 次和 n+1 次通过
  • 嵌套循环:对于嵌套循环,所有循环都设置为其最小计数,并且我们从最内层循环开始。对最里面的循环进行简单的循环测试,然后向外进行,直到测试完所有循环为止。
  • 串联循环:一个接一个的独立循环。每个都应用简单的循环测试。。

白色测试分 2 个步骤进行

  1. 测试人员应该很好地理解代码
  2. 测试人员应该为测试用例编写一些代码并执行它们

白盒测试所需的工具:

  • PyUnit
  • Sqlmap
  • Nmap
  • Parasoft Jtest
  • Nunit
  • VeraUnit
  • CppUnit
  • Bugzilla
  • Fiddler
  • JSUnit.net
  • OpenGrok
  • Wireshark
  • HP Fortify
  • CSUn

白盒测试的特点

  1. 代码覆盖率分析:白盒测试有助于分析应用程序的代码覆盖率,这有助于识别未测试的代码区域。
  2. 访问源代码:白盒测试需要访问应用程序的源代码,这使得测试各个功能、方法和模块成为可能。
  3. 编程语言知识:执行白盒测试的测试人员必须具备 Java、C++、Python 和 PHP 等编程语言知识,才能理解代码结构并编写测试。
  4. 识别逻辑错误:白盒测试有助于识别代码中的逻辑错误,例如无限循环或不正确的条件语句。
  5. 集成测试:白盒测试对于集成测试很有用,因为它允许测试人员验证应用程序的不同组件是否按预期协同工作。
  6. 单元测试:白盒测试也用于单元测试,其中涉及测试各个代码单元以确保它们正常工作。
  7. 代码优化:白盒测试可以通过识别任何性能问题、冗余代码或其他可以改进的领域来帮助优化代码。
  8. 安全测试:白盒测试也可用于安全测试,因为它允许测试人员识别应用程序代码中的任何漏洞。
  9. 设计验证:验证软件内部设计是否按照指定的设计文件进行实现。
  10. 检查代码是否准确:验证代码是否按照指南和规范运行。
  11. 识别编码错误:它发现并修复代码中的编程缺陷,包括语法和逻辑错误。
  12. 路径检查:它确保探索代码执行的每个可能路径并测试代码的各种迭代。
  13. 确定死代码:它查找并删除程序正常运行时未使用的任何代码(死代码)。

总结

白盒测试的优点

  • 彻底的测试:白盒测试是彻底的,因为整个代码和结构都经过测试。
  • 代码优化:它可以优化代码,消除错误,并有助于消除多余的代码行。
  • 早期检测缺陷:它可以在早期阶段开始,因为它不需要像黑盒测试那样的任何接口。
  • 与SDLC集成:可以在软件开发生命周期中轻松启动白盒测试。
  • 复杂缺陷的检测:测试人员可以识别通过其他测试技术无法检测到的缺陷。
  • 全面的测试用例:测试人员可以创建更全面、更有效的测试用例,涵盖所有代码路径。
  • 测试人员可以确保代码符合编码标准并针对性能进行了优化。

白盒测试的缺点

  • 编程知识和源代码访问:测试人员需要具备编程知识并访问源代码才能执行测试。
  • 过分强调内部工作:测试人员可能会过多关注软件的内部工作,而可能会错过外部问题。
  • 测试中的偏见:测试人员可能对软件有偏见,因为他们熟悉软件的内部工作原理。
  • 测试用例开销:重新设计代码、重写代码需要重新编写测试用例。
  • 对测试人员专业知识的依赖:测试人员需要对代码和编程语言有深入的了解,而不是黑盒测试。
  • 无法检测缺失的功能:在测试现有代码时无法检测到缺失的功能。
  • 生产错误增加:生产中出现错误的可能性很高。

白盒测试?软件工程?看这一篇就够了_白盒测试_04

以上就是今天的全部内容,希望对大家有所帮助,也希望大家多多留言、点赞、在看、转发四连爱❤️  支持。 咱们下篇文章见,Bye~

标签:白盒,代码,测试人员,软件工程,就够,测试,测试用例,循环
From: https://blog.51cto.com/u_15717981/9369956

相关文章

  • 软件工程
     软件工程是以计算机科学理论和技术以及工程管理原则和方法等为基础,研究软件开发、运行和维护的系统性、规范化的方法和技术本学科重点围绕软件工程理论、软件工程技术、可信软件理论与方法、数据挖掘与语义计算、移动与分布式计算等领域展开研究。在软件工程理论与技术、复杂......
  • 复选框的操作,看这一篇就够啦~~
    平常在工作中对于复选框的操作算频繁的了。尽管在网上已经有很多这方面的文章了,但是感觉总结的不够详细。下面是本人对于操作复选框进行的一些总结。下面的方法大多是基于jquery的,所以要记得引用jquery哦~~用原生js的地方做了说明,大家各取所需吧。HMTL代码如下:1<!DOCTYPEh......
  • 网工人在职场中光有技术就够了?
    IT人在职场中,专业技能当然是基本功,而且也是不可或缺的基石,但如果你认为只要有专家级别的技术就够了,那你的事业发展将会有所局限,如何能为仕途何锦上添花,我将从三个方面给大家分享你需要什么样的”综合能力”。01技术相关在IT网络领域,思科确实有着举足轻重的地位,。但......
  • 每日总结2024/1/13(白盒技术)
    第一节:什么是白盒测试?白盒测试是软件测试技术,白盒测试也称结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。它根据程序的控制结构设计测试用例,主要用于软件程序验证。白盒测试中也称为透明盒测试、基于代码的测试和玻璃盒测试。它是BoxTesting软件测试方法之一......
  • 什么是黑盒白盒测试,他们有什么区别?
    软件测试是软件开发过程中的基本活动。黑盒测试和白盒测试是两种不同类型的软件测试策略,它们具有同样强大的功能,并且结合使用时甚至更好。一、黑盒测试在软件中,黑盒测试很方便,可以减少灾难性(软件)崩溃的风险。灾难性的软件崩溃可能是什么?系统在更新客户数据库的过程中崩溃了?在这种情......
  • 软件工程导论读后2
    在书中介绍的几种软件开发过程模型,如瀑布模型和增量模型,是常用的项目管理方法。了解这些模型可以帮助我们更好地规划和组织软件开发过程,确保项目的顺利进行。可行性分析是软件项目初期的重要环节,它主要是评估问题的解决方案是否可行和值得投入资源和时间。通过经济、技术、法律和......
  • 软件测试/测试开发/全日制|pytest用例执行顺序,这篇文章就够了
    前言在使用unittest测试框架执行测试时,测试用例执行的顺序是默认按照ACSII码的顺序加载测试用例并执行,顺序为:0-9、A-Z、a-z,测试目录、测试模块、测试类、测试方法/测试函数都按照这个规则来加载测试用例。在有的时候,我们并不希望测试用例按照这样的规则来执行,pytest就可以让我们按......
  • 南阳师范学院 人工智能与软件工程学院
    南阳师范学院计算机应用专业创办于1995年,1999年8月独立设置计算机系。现有计算机科学与技术、软件工程、网络工程、物联网工程、数据科学与大数据技术、智能科学与技术6个本科专业。2013年开始招收生物信息工程研究生,2020年获批电子信息硕士点。计算机科学与技术学院计算机应用专......
  • 软件工程 之 (XMUT)Java期末复习题及答案-选择题
    软件工程实用案例教程https://www.cnblogs.com/IvanKK/p/17712702.htmlJava期末复习题及答案https://www.cnblogs.com/IvanKK/p/17712704.html计算机网络复习题库https://www.cnblogs.com/IvanKK/p/17712719.html(XMUT)Java期末复习题及答案-选择题分数1作者张峰单位......
  • java基础知识点API之String详解--String基础看它就够了
    一:概述java中的String在java.lang包下,使用时可以直接使用不需要进行导包。字符串在日常使用中非常多,例如之前的变量定义。二:详细说明<1>JDK-帮助文档中对Strng类的介绍<2>字符串常量的创建,字符串常量在创建之后,它们的值不能被更改,但是可以被共享。publicstaticvoidmain(String[......