首页 > 其他分享 >【安全技术系列】白盒测试方法+demo演示

【安全技术系列】白盒测试方法+demo演示

时间:2024-04-05 19:12:05浏览次数:20  
标签:覆盖 func5 白盒 demo 单元测试 else print 测试方法

首先,说一下什么是单元测试。

单元测试是一种软件测试类型,其中测试用例针对单个代码单元(例如函数、类或模块)进行设计和执行。单元测试旨在验证代码单元的正确性、隔离性和健壮性。

什么是白盒测试

白盒测试是一种软件测试技术,其中测试人员具有对被测代码的内部结构和实现细节的完全访问权限。白盒测试技术包括:

语句覆盖:测试用例执行代码中的每一行语句。

判定覆盖:测试用例执行代码中的每个判定条件的每个分支。

条件覆盖:测试用例使得代码中的每个条件表达式的每个条件都取得真值和假值。

判定/条件覆盖:测试用例覆盖所有判定条件和条件表达式,以及它们的所有可能取值。

组合覆盖:测试用例覆盖程序中不同参数的所有组合情况。

路径覆盖:测试用例执行代码中的每个可能执行路径。

单元测试和白盒测试的关系

单元测试和白盒测试密切相关,因为白盒测试技术通常用于设计和执行单元测试。白盒测试的详细知识使测试人员能够创建针对代码内部结构的有效测试用例,从而提高单元测试的覆盖率和有效性。

通过使用白盒测试技术,单元测试可以:

确保代码中的所有语句、条件和路径都已执行。

识别代码中的逻辑错误和实现缺陷。

提高代码的健壮性和可靠性。

促进代码的可维护性和可测试性。

白盒测试的代码实例

def func1():
    print("Statement 1")
    print("Statement 2")

func1()  # 覆盖了两个语句

def func2(x):
    if x > 0:
        print("Positive")
    else:
        print("Non-positive")

func2(1)  # 覆盖了 if 分支
func2(-1)  # 覆盖了 else 分支

def func3(x):
    if x == 0:
        print("Zero")
    elif x > 0:
        print("Positive")

func3(0)  # 条件 x == 0 为 True
func3(1)  # 条件 x > 0 为 True,条件x==0 为False
func3(-1) # 条件 x < 0 为 False,条件x==0 为False


def func4(x, y):
    if x > 0:
        if y == 0:
            print("X positive, Y zero")
        else:
            print("X positive, Y non-zero")
    else:
        print("X non-positive")

func4(1, 0)#覆盖了两个if,且条件都是True
func4(1, 1)#第一个if条件为True,第二个if中的条件为False,覆盖了嵌套的else
func4(-1, 0)#第一个if条件为False,覆盖了第一个if中的else


def func5(x, y):
    print(x, y)

func5(1, 2)
func5(1, 0)
func5(1, -1)
func5(0, 1)
func5(0, 0)
func5(0, -1)
func5(-1, 1)
func5(-1, 0)
func5(-1, -1)  # 覆盖正数、零和负数的所有参数组合

def func6(x):
    if x > 0:
        print("Take true path")
    else:
        print("Take false path")

    print("End")

func6(1)  # 覆盖了 if 分支和print("End")的执行路径
func6(-1)  # 覆盖了 else 分支和print("End")的执行路径


标签:覆盖,func5,白盒,demo,单元测试,else,print,测试方法
From: https://www.cnblogs.com/o-O-oO/p/18116063

相关文章

  • 27 个 CSS 案例演示和 DEMO(1),【大牛疯狂教学】
    伪类和伪元素==========4、伪类HTML元素的状态是可以动态变化的。举个栗子,当你的鼠标悬浮到一个按钮上时,按钮就会变成“悬浮”状态,这时我们就可以利用伪类:hover来选中这一状态的按钮,并对其样式进行改变。:hover是笔者最最常用的一个伪类。还有一个很常用的伪类是:nth......
  • 轻松玩转书生·浦语大模型趣味 Demo——day2笔记
    本节课有四个任务:学习部署、玩角色扮演的agent项目,玩数学运算agent、玩写作agent 主要学习过程就是跟着视频,复制学习文档里的资料,完成demo的使用。主要目的是熟悉开发平台。视频:轻松玩转书生·浦语大模型趣味Demo_哔哩哔哩_bilibili资料:Tutorial/helloworld/hello_world.......
  • 书生·浦语大模型趣味Demo课程笔记
    第二节书生·浦语大模型趣味Demo实践环境准备浦语大模型的开发机器支持了cuda11.7的基础环境和一些自动迁移conda配置脚本迁移conda环境命令:studio-conda-ointernlm-base-tdemo如果自己安装软件环境:condacreate-ndemopython==3.10-ycondaactivatedemoconda......
  • BGP-LS原理及基本功能测试方法
    BGP-LS产生的原因BGPLinkState是一种新型的收集网络拓扑信息的技术。传统网络拓扑信息收集方式是路由器使用IGP(OSPF或IS-IS)协议收集网络拓扑信息,不同网络域中的IGP协议将各个域的拓扑信息单独上送给上层控制器,在这种拓扑收集方式下,存在以下几个问题:•对上层控制器的计算能力......
  • Transformer学习-最简DEMO实现字符串转置
    Transformer学习-最简DEMO实现字符串转置一.代码二.参考三.输出背景:调试AI加速卡在Pytorch训练时的精度问题,搭建了一个简单的Transformer,设置随机种子,保证每次重训练loss完全一致,可以直接对比各算子的计算误差一.代码importosimportrandomimportnumpya......
  • 书生浦语第二期第二节课笔记(轻松玩转书生·浦语大模型趣味 Demo)
    以下内容是在InternStudio的开发机上运行的一、部署 InternLM2-Chat-1.8B 模型进行智能对话第一步:进入开发机后,在终端中输入以下环境命令配置进行环境配置studio-conda-ointernlm-base-tdemo#与studio-conda等效的配置方案#condacreate-ndemopython==3.10-......
  • 轻松分钟玩转书生·浦语大模型趣味 Demo
    一、基础作业:使用InternLM2-Chat-1.8B模型生成300字的小故事:使用猪猪模型部署并访问:二、进阶作业:完成Lagent工具调用数据分析Demo部署:熟悉huggingface下载功能,使用huggingface_hubpython包,下载InternLM2-Chat-7B的config.json文件到本地:......
  • SpringBoot集成MyBatis-Plus快速入门Demo
    目录1.MyBatis-Plus概述2.MyBatis-Plus框架结构3. MyBatis-Plus快速入门3.1 创建表3.2 创建工程3.3 导入依赖3.4添加配置文件application.yml,配置数据库信息3.5 创建实体类(包括自动填充)3.6创建配置类(包括配置乐观锁、分页、逻辑删除等插件) 3.7编写自动填......
  • 【GO】大小堆demo
    `packagemainimport("container/heap""fmt""math/rand")typeMyHeap[]MembertypeMemberstruct{scoreintnamerune}func(hMyHeap)Len()int{returnlen(h)}//Smallestheapfunc(hMyHeap)Less(i,jint)bool{r......
  • InternLM2 Demo初体验-书生浦语大模型实战营学习笔记2
    本文包括第二期实战营的第2课内容。本来是想给官方教程做做补充的,没想到官方教程的质量还是相当高的,跟着一步一步做基本上没啥坑。所以这篇笔记主要是拆解一下InternStudio封装的一些东西,防止在本地复现时出现各种问题。搭建环境首先是搭建环境这里,官方教程说:进入开发机后,在`t......