BDD简介 ---1

BDD(Binary Decision Digrams)是最新流行于人工智能模型诊断方面的一种求解算法,主要用于诊断求解,配置和约束满足等方面,下面我将对BDD做一下简单的介绍.
在学习BDD之前首先要有一点离散数学的基本概念,知道∧,∨,﹁,=>,<=>等基本符号的意义和各范式的表达,定义if-then-else 操作为: x=>y0,y1 = (x∧y0) ∨(x∧y1)
所以x=>y0,y1 为真时当且仅当x ,y0同为真或x为假,y1为真.从这种if-then-else 操作演化来的形式被称作if-then-else Normal Form(INF).我们指定布尔表达式t[0/x],不难发现,对于t的山农扩展 t = x =>t[1/x],t[0/x] 是基于x的布尔值的,而对于任何的布尔表达式都可以转化为INF的表示方式.
例如:给定布尔表达式 t = (x1<=>y1) ∧(x2<=>y2) .我们可以通过对变量x1,x2,y1,y2的选择设定找到一个INF表达从而实现山农扩展.我们给定:
t = x1 => t1 , t0
t0 = y1 => 0 , t00
t1 = y1 => t11 , 0
t00 = x2 => t001 , t000
t11 = x2 => t111 , t110
t000 = y2 => 0 , 1
t001 = y2 => 1 ,0
t110 = y2 => 0 ,1
t111 = y2 => 1,0
[img]C:\Documents and Settings\gyk\桌面\bdd-picture\dt.bmp" alt="[/img]
图1 决策树
从上图我们可以看到决策树其实就是一个完全的二叉树,可以说是对所有可能性的一种枚举,但是不难发现,给定中很多变量取值都是相同的,如我们可以用t000取代t110…,而对于子表达式的等价取代我们就可以得到一个图,BDD(Binary Decision Digrams)图! 通过取代,我们可以得到:
t = x1 => t1 , t0
t0 = y1 => 0 , t00
t1 = y1 => t00 , 0
t00 = x2 => t001 , t000
t000 = y2 => 0 , 1
t001 = y2 => 1 ,0
[img]C:\Documents and Settings\gyk\桌面\bdd-picture\bdd.bmp" alt="[/img]
从而一个简单的BDD就出来了.
什么是BDD测试(行为驱动开发测试)? 本文介绍了BDD测试、使用Python实现BDD测试以及代码示例和说明。有了Python的支持,实现BDD测试变得更加简单易懂,研发和测试人员都应该掌握并应用到实际的工作中,以提高软件开发效率、质量。BDD测试的优点在于,它能够将开发、测试和业务部门融合起来,提高效率和质量。通过BDD测试,可以促进团队成员之间的沟通和协作,从而更好地满足业务需求,减少错误,加快发布速度。通过将测试用例编写为自然语言脚本,BDD测试可以促进业务需求、开发和测试团队之间的沟通和协作,从而提高代码的可读性、可维护性和可重复性。 阅读详情

相关推荐

TDD 与 BDD - 详细指南

最后,您已读完本文,了解了测试驱动开发 (TDD) 和行为驱动开发 (BDD),包括它们的含义、原则、优点和缺点以及它们的不同之处。在本文中,您将了解测试驱动开发 (TDD) 和行为驱动开发 (BDD),包括它们的含义、它们的原则、优势、劣势、它们的工作方式以及它们的主要区别。:当开发人员收到来自用户或产品团队的新需求时,对功能文件和场景进行更新,并重复整个周期(即之前的 BDD 阶段),直到实现预期的行为。:使用 BDD 方法开发的产品是以客户为中心的,因为大多数功能的实现都是基于客户的反馈。

jascl的博客 1142

二叉决策图BDD原理、应用与实现介绍

二叉决策图BDD原理、应用与实现的完整介绍,包括BDD到OBDD的转化、OBDD到ROBDD的转化,以及BDDC++语言实现库buddy的内部原理介绍

Pytest-BDD 行为驱动开发测试

Pytest-BDD 是一个BDD测试框架,使用自然语言Gherkin来描述系统功能和场景,根据这些描述步骤进行系统自动化的测试。

Flora's Zone 3475

BDD算法实现 - BuDDy开源代码

BuDDy是一个比较经典的BDD实现,已经有较长时间没有更新,这个代码是最后一个版本,可以供参考学习。如果需要最新的BDD代码,也可以参考微软的Z3,里面有一个模仿BuDDy的简单实现。

BDD(二元决策图)

转载自:二元决策图(Binary Decision Diagrams - BDD) (一) 在形式化验证、数字系统的设计和验证中,许多任务都涉及大型命题逻辑公式的运算。二元决策图(BDD)已经成为许多应用的首选表示方法。1986年,Bryant发表论文指出归约有序的二元决策图是布尔函数的规范表示。 几个基本概念: 布尔函数(Boolean function)描述如何基于对布尔输入的某种逻辑计算确定布尔值输出,它

Pawa1uoke的博客 7681

证明与计算(3): 二分决策图(Binary Decision Diagram, BDD)

0x01 布尔代数(Boolean algebra) 大名鼎鼎鼎的stephen wolfram在2015年的时候写了一篇介绍George Boole的文章:George Boole: A 200-Year View。 怎样用数学公理重新表达经典逻辑?George Boole在19世纪的时候开始思考这件事,在他的书《The Mathematical Analysis of Logic》里面Geor...

weixin_30892987的博客 1906

Dataset之BDD100K:BDD100K数据集的简介、下载、使用方法之详细攻略

Dataset之BDD100K:BDD100K数据集的简介、下载、使用方法之详细攻略 目录 BDD100K数据集的简介 BDD100K数据集的下载 BDD100K数据集的使用方法 BDD100K数据集的简介 BDD100K,A Large-scale Diverse Driving Video Database。2018...

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 2万+

TDD、BDD、DDD简介

1. TDD TDD指的是Test Drive Development,很明显的意思是测试驱动开发,也就是说我们可以从测试的角度来检验整个项目。大概的流程是先针对每个功能点抽象出接口代码,然后编写单元测试代码,接下来实现接口,运行单元测试代码,循环此过程,直到整个单元测试都通过。这一点和敏捷开发有类似之处。 TDD的好处自然不用多说,它能让你减少程序逻辑方面的错误,尽可能的减少项目中的bug,开始接触编程的时候我们大都有过这样的体验,可能你觉得完成得很完美,自我感觉良好,但是实际测试或者应用的时候才发现

casey的博客 6222

TDD和BDD的区别 (TDD vs BDD)

前言 如果你关注软件开发最佳实践方面的话题,你肯定听说过测试驱动开发(TDD - Test Driven Development) 和行为驱动开发(BDD - Behavior Driven Development)。这篇文章会为你阐述这两种模式的含义并举例,同时对二者进行比较。 测试驱动开发 (TDD) 当我第一次听到TDD这个词,从字面上理解,觉得很简单,就是用于驱动软件开发的测试。 这没有错...

辰辰沉沉大辰沉 7978

Python BDD 框架比较之 pytest-bdd vs behave

这两个框架都有其优点和特性,选择哪一个主要取决于特定需求。如果你已经在使用pytest,并且希望以最少的学习曲线使用 BDD,那么pytest-bdd可能是更好的选择。另一方面,如果你希望编写的测试代码更接近自然语言,并且适合非技术团队成员阅读和修改,那么behave可能是更好的选择。

oscar999的专栏 2126

Python BDD框架入门实战指南

行为驱动开发(BDD)是一种敏捷软件开发的技术,它鼓励软件项目中的开发者、QA和非技术或商业参与者之间的协作。BDD的核心是通过使用自然语言描述软件行为的方式,增强开发团队对业务需求的理解,并将这些需求转化为可执行的测试案例。Feature是Gherkin中描述软件特性或功能的关键词。它为测试用例提供了一个高层次的概述。每个Feature包含一个或多个场景(Scenarios),描述了具体的用户行为和预期结果。Feature: 用户登录功能为了保护用户账户安全作为一个用户。

weixin_36238982的博客 1322

【格密码】如何解决BDD问题

接下来介绍的算法最早由Klein提出,他将BDD问题的解码半径优化到了:其中k的范围如下:随机化的BDD算法的复杂度为:可以看到当k为常数时,该算法即为多项式时间复杂度。我们知道标准的串行干扰消除算法中会用到就近取整,这一步可以进行优化。

forest_LL的博客 1660

227. Cucumber BDD测试

Cucumber BDD 基础概念与Gherkin语言 BDD(行为驱动开发)是一种敏捷方法,通过自然语言描述系统行为,促进跨团队协作。Cucumber作为核心工具,通过Gherkin语言将业务需求转化为可执行测试用例。Gherkin采用Given-When-Then结构编写.feature文件,使非技术人员也能参与测试设计。关键组件包括:Feature(功能模块)、Scenario(测试场景)和Step Definitions(步骤代码映射)。最佳实践包括保持场景简洁、复用步骤定义、合理分层测试。

weixin_43484713的博客 1740

Pytest插件介绍:pytest-BDD

pytest-bdd是一个基于pytest的BDD库,它实现了Gherkin语言的一个子集,能够自动化测试,并促进行为驱动开发。pytest-bdd利用了pytest的强大功能和灵活性,使得单元测试和功能测试能够统一起来,减少了持续集成服务器配置的负担,并允许测试设置的复用。支持Gherkin语言的一个子集,用于描述测试场景和步骤。能够将Gherkin描述转化为pytest可执行的测试代码。支持依赖注入,使得测试步骤能够方便地复用测试设置。提供了丰富的钩子函数,方便扩展和自定义测试行为。

zhangkexin_z的博客 1371

MagicDraw-BDD

MagicDraw学习笔记

木头征的博客 3968

Pytest-BDD框架进行-行为驱动开发测试

1. 什么是BDDBDD 即 Behavior-driven development,行为驱动开发。 在软件工程中, BDD是一种敏捷开发流程。减少传统测试过程中由于技术背景能力,非技术与商业参与者之间业务理解不同而导致的问题。BDD它关注的核心是设计,其要求在设计测试用例的时候对系统进行定义,倡导使用通用的语言将系统的行为描述出来,将系统设计和测试用例结合起来,从而以此为驱动进行开发工作...

jhonefer的博客 5393

bdd ci_BDD是– BDD不是

bdd ci “我是雅典最聪明的人,因为我知道我一无所知。” -苏格拉底470-399 BC 什么是BDD(对我而言) 1.对话 BDD是关于对话的 对话有助于我们了解我们正在尝试构建和识别应用程序行为的内容 对话有助于我们分享有关我们正在建设的知识 通过对话,我们有意发现所构建内容的行为,并消除了一些一阶的无知 等等,这不是真实的...啊,好吧,这是个玩笑:-) ...

danpu0978的博客 155
下一篇: BDD简介---2
guyikun
博客等级 码龄18年 1粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值