基本条件覆盖与复合条件覆盖

2023-12-12

I'm trying to get my head around the differences between these 2 coverage criteria and I can't work out how they differ. I think I'm failing to understand exactly what decision coverage is. My software testing textbook states that compound decision coverage can be costly (2n combinations for n basic conditions).

我原以为基本条件保险会更贵。

考虑a && b && c && d && e。我的理解是,在基本条件覆盖中,每个原子变量在测试用例中都必须具有值 TRUE 和 FALSE,以便测试用例具有基本条件充分性 - 这是 32 个不同的测试用例。

那么实际的区别是什么,以及所谓的“基本条件”是什么。在上面的例子中,是a一个基本条件?

Thanks.


关于术语,我没有一个方便的来源使用确切的术语“基本条件覆盖”和“多重条件覆盖”。 Binder的《Testing Object-Oriented Systems》说“条件覆盖”和“多条件覆盖”。 Everett & McLeod 的“软件测试”说“简单条件覆盖”和“复合条件覆盖”。但我确信每种情况下的第一个术语是您的“基本状况保险”,第二个是您的“复合状况保险”。我将在下面使用这些术语。

基本条件保障意味着程序中的每个基本条件在某些测试中为真,在某些测试中为假,无论其他条件如何。在下面的

if a && b && c
  # do stuff
else
  # do other stuff
end

存在一个复合条件,a && b && c,具备三个基本条件,a, b and c。只需要两个测试用例,一个所有基本条件都为真,一个所有基本条件都为假,即可获得完整的基本条件覆盖。基本条件碰巧是复合条件的一部分并不重要。

请注意,基本条件覆盖不是分支覆盖。如果复合条件是a && b && !c,上面的两个测试用例仍然可以实现基本条件覆盖,但不会实现分支覆盖。

针对基本条件覆盖率进行不太积极优化的一组测试用例将包含一个测试用例,其中所有三个基本条件均为假,以及三个测试用例,每个测试用例的不同基本条件为真。这仍然只是复合条件中基本条件的八种可能组合中的四种。我们忽视其他四个的不舒服的感觉就是为什么复合条件覆盖。这需要对复合条件下基本条件的每种可能组合进行测试。在上面的示例中,您需要八个测试,每个测试对应以下可能值的每种可能组合a, b and c,以获得完整的复合条件覆盖。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基本条件覆盖与复合条件覆盖 的相关文章

  • PHPUnit\Framework\TestCase 和 Tests\TestCase 有什么区别?

    我注意到在示例测试中 这两个类是内置的 功能测试 gt use Tests TestCase 单元测试 gt PHPUnit Framework TestCase 两者有什么区别 在什么情况下您会使用其中一种 PHPUnit Framewo
  • 使用 WebServiceContext 测试 @Webservice EJB(使用 OpenEJB?)

    我有一些 EJB 作为 JAX WS Web 服务 WebService Stateless Remote MobileFacade class public class MobileFacadeBean implements Mobile
  • Intellij IDEA 代码覆盖率不起作用

    当我尝试运行具有覆盖范围的 JUnit 测试时 我收到以下错误 FATAL ERROR in native method processing of javaagent failed java lang reflect Invocation
  • ruby rspec 不能与 simplecov 一起使用

    我安装了 simplecov gem 并添加了 require simplecov SimpleCov start 到spec helper rb文件 现在如果我在some file spec rb文件中包含spec helper rb并尝
  • 使用鼻子获取设置中当前测试的名称

    我目前正在使用鼻子编写一些功能测试 我正在测试的库操作目录结构 为了获得可重现的结果 我存储了一个测试目录结构的模板 并在执行测试之前创建该模板的副本 我在测试中执行此操作 setup功能 这确保了我在测试开始时始终具有明确定义的状态 现在
  • 如何在 e2e AngularJS 测试中进行文件上传?

    在我的一种观点中 我有一个文件上传控件 它支持通过拖放或单击按钮后打开的标准文件对话框上传文件 How to do this in my e2e tests1 1 Just one of the two options will be en
  • Android Espresso - 如果未选中,请单击复选框

    I have onView withId R id check box perform click 但我只想在尚未选中该复选框时执行此操作 我怎样才能在浓缩咖啡中做到这一点 我还想根据其之前的状态来切换复选框 开关 起初 我尝试用此方法打开
  • C++ GUI 桌面 Windows 应用程序的测试自动化工具/库/框架

    不幸的是 我有一个在 Windows 上运行的 GUI 桌面应用程序 并使用 Borland C 编译器进行编译 我知道这是一项非常古老的技术 但这就是生活 我工作的公司有很多免费的 QTP 许可证 但说实话 我不喜欢这个工具 我想用一些开
  • Protractor:是否可以测试我的应用程序中没有404?

    我是量角器的新手 我想编写一个测试来查看是否存在带有 url 的锚点给出 404 错误 我见过这个如何用量角器测试html链接 https stackoverflow com questions 29212375 how to test h
  • Python - 测试抽象基类

    我正在寻找测试抽象基类中定义的方法的方法 最佳实践 我能直接想到的一件事是对基类的所有具体子类执行测试 但有时这似乎有些过分 考虑这个例子 import abc class Abstract object metaclass abc ABC
  • 如果没有按钮,Espresso 不会记录任何意图

    我正在尝试编写一个测试来验证使用浓缩咖啡启动的意图 问题是有意的 不记录任何意图 我有这个测试 Test public void shoulddosomething startActivity intended hasComponent h
  • JS 代码覆盖率

    我是测试场景的新手 我有一个问题想请你帮忙 例如 如果我有一个从 HTML JS 和 CSS 实现并调用其他 API 的 Web 应用程序 在测试此 Web 应用程序时 在进行功能测试时如何在浏览器中测量 HTML JS CSS 浏览器应用
  • 如何在 akka actor 中测试公共方法?

    我有一个 akka 演员 class MyActor extends Actor def recieve def getCount id String Int do a lot of stuff proccess id do more st
  • 如何对参数列表中的每个项目运行 pytest 测试

    假设我有一个 HTTP URL 列表 例如 endpoints e 1 e 2 e n 我想跑n测试 每个端点一个 我怎样才能做到这一点 一次测试所有端点的简单方法是 def test urls for e in endpoints r g
  • Guice 字段注入不起作用(返回 null)

    我在使用 Guice 时遇到空值问题 接下来我将向您展示一个类似场景的示例 我知道字段注入是一种不好的做法 但我希望它在演示中像这样工作 我有一个名为B 这是我要注入的 class B Inject public B public void
  • 开玩笑 setTimeout 不暂停测试

    it has working hooks async gt setTimeout gt console log Why don t I run expect true toBe true 15000 我已经查看了这个答案 Jest 文档和几
  • 应该使用 Rspec Gem 在 Belong_to 测试中返回“String:Class 的未定义方法‘reflect_on_association’”

    在我的 Rails 应用程序中 我有我的模型Request Service and ServiceRequest 在我的 models rb 文件中 我有 request rb class Request lt ApplicationRec
  • OutputCapture 进行多次测试

    我正在使用 org springframework boot test OutputCapture 来测试记录某些内容的注释 它对于单个测试非常有效 当单独运行测试时 如果源文件中存在使用输出捕获的多个测试 但是当多个测试一起运行时 只有第
  • Selenium Web 驱动程序如何知道新窗口何时打开,然后恢复执行

    我在使用 Selenium Web 驱动程序自动化 Web 应用程序时遇到问题 该网页有一个按钮 单击该按钮会打开一个新窗口 当我使用以下代码时 它会抛出OpenQA Selenium NoSuchWindowException No wi
  • 移动端跨浏览器网络测试

    在构建网站时 我通常使用以下工具浏览器截图 http browsershots org确保我的页面在不同的浏览器中看起来相当不错 然而 我开始收到关于在不同便携式设备上运行的大量移动浏览器的抱怨 我的问题很简单 如何最好地进行移动跨浏览器测

随机推荐

  • Netbeans IDE 中的自动格式化 Javascript

    是否有任何已知的插件或方法可以在 Netbeans IDE 中正确自动格式化 Javascript 编辑 2012 年 9 月 15 日 进一步研究后 我发现 javascript 模块已经被重写 非常需要 您终于可以找到 javascri
  • 不使用存储库模式,按原样使用 ORM (EF)

    我总是使用存储库模式 但对于我最新的项目 我想看看是否可以完善它的使用以及 工作单元 的实现 我开始挖掘得越多 我开始问自己这个问题 我真的需要它吗 现在这一切都始于 Stackoverflow 上的几条评论 可以追溯到 Ayende Ra
  • Rails:使用控制器渲染 js.erb 模板

    我有一个 Rails 应用程序试图合并一些 AJAX 其中单击 新建 会打开一个模式窗口和一个表单 我希望能够在失败时显示验证错误 因此在我的创建操作中 我考虑重新渲染 new js erb 文件 这是正确的方法吗 def create p
  • Android 谷歌标签管理器

    我正在按照我的营销团队的要求为 Android 应用程序 V4 实施 Google 跟踪代码管理器以供将来使用 而且我从未在网站的 GTM 上工作过 所以在这种情况下我很天真 我已经根据官方网站上的说明创建了帐户 容器和标签 我已将标签管理
  • 填充八位字节字符串

    我有 65 个不同位长度的参数 我需要将它们填充为八位字节字符串 参数将连续填充在八位字节字符串中 例如 假设第一个参数是 1 位长 因此它将填充在八位位组字符串的第 1 个八位位组的第 0 位位置 现在第二个参数假设为 9 位长 因此 该
  • 子类中的重载运算符

    游览和导游 导游扩展了旅游类别 我在旅游类中超载了 gt 运算符 我的旅游课程看起来像 include
  • cakephp中的save和saveAll函数有什么区别?

    任何人都可以举个例子吗 save用于简单地保存模型 Array ModelName gt Array fieldname1 gt value fieldname2 gt value 假设上述信息存储在名为 data 的数组中 则可以调用 t
  • WCF REST 文件上传

    我正在开发一个 WCF Web 服务 它需要能够上传文件等 目前我添加 平面图 项目的方法如下所示 OperationContract WebInvoke Method GET ResponseFormat WebMessageFormat
  • 如何生成相关的 Uniform[0,1] 变量

    这个问题与如何生成具有不同分布的相关变量的数据集 在 Stata 中 假设我创建一个遵循 Uniform 0 1 分布的随机变量 set seed 100 gen random1 runiform 我现在想要创建第二个随机变量 它与第一个随
  • JAXB 错误:有多个映射。由于两个对象工厂具有相同的 Bean

    我有两个 Maven JAXB 项目 A 主要 Maven JAXB 存根 XSD 项目 其中包含 BASKET xsd B Maven JAXB 存根想要将 BASKET xsd 包装在自己的对象中的用户项目 这会产生两个对象工厂 不同的
  • 如何在 GitHub 上合并远程更改?

    第一次尝试 Github 推送时出现以下错误 rejected master gt master non fast forward error failed to push some refs to email protected me m
  • masm32 调用 stdout 没有输出

    我正在使用 masm32 在 Windows 7 上编译和链接 它与下面的代码一起工作得很好 然而 调用 stdOut 并不是简单地在命令提示符上打印任何内容 我究竟做错了什么 386 model flat stdcall option c
  • 如何制作一个互动节目?

    我正在学习 Ocaml 我需要创建一个可以通过以下方式与用户交互的程序 Program Welcome User command1 arg1 arg2 program The answer is User command2 arg prog
  • 在这种情况下如何在 Racket 上订购我的累积变量?

    出于教育原因 我使用 Racket 进行编码 我收到了一项任务 其中我应该创建一个函数 在没有过滤器的情况下 它将接收一个列表作为输入 并仅返回另一个列表 其中包含第一个列表的偶数 我提出了迭代过程的递归定义 define add even
  • 使用向量的 r 子集数组

    我觉得这个问题应该已经有了答案 但我没有找到 我有一个数组 我想使用向量对其进行子集化 我知道如何以困难的方式做到这一点 但我确信一定有一种简单的方法 有任何想法吗 这是我的例子 dat lt data frame a rep letter
  • Spring Boot + Hibernate + Postgres - 不创建表

    我正在尝试基于实体生成架构表 应用程序正确启动 生成 SQL 但没有结果 没有创建任何表 怎么了 我在没有 Spring Boot 的情况下在普通 Spring MVC Hibernate JPA 中使用了相同的设置 并且一切正常 这是我的
  • 为什么Python的嵌套函数不称为闭包?

    我在 Python 中见过并使用过嵌套函数 它们与闭包的定义相匹配 那么为什么它们被称为 嵌套函数 而不是 闭包 呢 嵌套函数不是闭包 因为它们不被外部世界使用吗 UPDATE 我正在阅读有关闭包的内容 这让我开始思考这个关于 Python
  • 需要帮助将 BMP 图像转换为 [R] 中的矩阵吗?

    我对 R 非常陌生 我想知道是否有一种简单的方法可以将 BMP 图像转换为 R 中的矩阵 主要是 我正在寻找任何可以提供帮助的包 矩阵中每个元素的值对应于颜色 在 CRAN 软件包列表中搜索 bmp 就会出现bmp和其他一些 为了简洁起见
  • 禁用用户在 BottomSheet 上拖动

    我正在尝试禁用用户拖动BottomSheet 我想禁用的原因有两件事 1 它可以防止ListView向下滚动 2 我不希望用户使用拖动来消除 而是使用BottomSheetView 这就是我所做的 bottomSheetBehavior B
  • 基本条件覆盖与复合条件覆盖

    I m trying to get my head around the differences between these 2 coverage criteria and I can t work out how they differ