条件覆盖

MySQL执行计划extra中的using index 和 using where using index 的区别

喜夏-厌秋 提交于 2020-03-18 18:52:53
本文出处: http://www.cnblogs.com/wy123/p/7366486.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他) mysql执行计划中的extra列中表明了执行计划的每一步中的实现细节,其中包含了与索引相关的一些细节信息 其中跟索引有关的using index 在不同的情况下会出现Using index, Using where Using index ,Using index condition等 那么Using index 和 Using where;Using index 有什么区别?网上搜了一大把文章,说实在话也没怎么弄懂,于是就自己动手试试。 本文仅从最简单的单表去测试using index 和 using where using index以及简单测试using index condition的情况的出现时机 。 执行计划的生成与表结构,表数据量,索引结构,统计信息等等上下文等多种环境有关,无法一概而论,复杂情况另论。 测试环境搭建   测试表以及测试数据搭建,类似于订单表和订单明细表,暂时先用订单表做测试   测试表结构 create table test_order ( id int auto_increment primary key, user_id

神奇的 SQL 之 ICP → 索引条件下推

廉价感情. 提交于 2020-03-09 10:03:51
开心一刻   楼主:来,我们先排练一遍   小伙伴们:好   嘿、哈、嚯   楼主:非常好,就是这个节奏,我们开始吧   楼主:啊、啊、啊,疼 ! 你们是不是故意的 ? 回表与覆盖索引   正式讲 ICP 之前了,我们先将相关的概念捋一捋,知道的就当回顾,不知道的就当了解了,这有助于对 ICP 的理解   建个示例表 tbl_index CREATE TABLE tbl_index ( c1 INT, c2 INT, c3 CHAR(1), PRIMARY KEY(c1), KEY idx_c2 (c2) );   覆盖索引     如果 where 条件的列和 select 的列都在一个索引中,通过这个索引就可以完成查询,这就叫就叫覆盖索引;当然,覆盖索引基本针对的是组合索引(InnoDB 的聚簇索引有点特殊,具体可以看下面的图)     针对上面的 tbl_index, select c2 from tbl_index where c2 = 4 ; 是覆盖索引查询,但是这条 SQL 没有意义,如果我们在 tbl_index 表上增加索引 index idx_c2_c3 (c2,c3) ,那么 select c3 from tbl_index where c2 = 4 ; 走覆盖索引查询还是很有意义的,那问题又来了,覆盖索引的意义何在 ? 我们往下看   回表    

软件测试英语词汇

萝らか妹 提交于 2020-03-03 02:49:34
软件测试英语专业词汇 NLV:Nation Language Version 本地化版本 FVT:Functional Verification Testing 功能验证测试 TVT:Translation Verification Testing 翻译验证测试 SVT:System Verification Testing 系统验证测试 fault--故障 在软件中一个错误的表现。 feasible path--可达路径 可以通过一组输入值和条件执行到的一条路径。 feature testing--特性测试 参考功能测试(Functional Testing) FMEA--失效模型效果分析(Failure Modes and Effects Analysis) 可靠性分析中的一种方法,用于在基本组件级别上确认对系统性能有重大影响的失效 FMECA--失效模型效果关键性分析(Failure Modes and Effects Criticality Analysis) FMEA的一个扩展,它分析了失效结果的严重性。 FTA--故障树分析(Fault Tree Analysis) 引起一个不需要事件产生的条件和因素的确认和分析,通常是严重影响系统性能、经济性、安全性或其它需要特性。 functional decomposition--功能分解 参考模块分解(modular

[白盒测试学习] 从逻辑覆盖实例学起

不问归期 提交于 2020-02-02 17:53:02
1. 什么是白盒测试 白盒测试也称结构测试、逻辑驱动或基于程序的测试,是一种测试用例设计方法。 一般用于分析程序的内部结构。 针对特定的条件和循环设计测试用例,对程序的逻辑路径进行测试。 用这种发方法进行程序设计时,测试者可以看到被测程序,并分析其内部结构,白盒测试要求对被测程序的结构特性做到一定程度的覆盖。 从这个角度上说,白盒测试也是基于覆盖的测试技术。 2. 白盒测试方法概述 白盒测试通常分为静态和动态两种类型,包含很多常用的方法。 静态分析: 按照一定步骤直接见车源代码或代码的测试方法。 包括-代码审查、桌面检查、代码走查等方法 动态测试: 指按照一定步骤生成测试用例并驱动被测程序运行来发现错误。 包括-基本路径测试、符号测试、逻辑驱动覆盖、循环测试、数据流测试等方法。 3. 逻辑覆盖法 这里就从逻辑覆盖法开始了我的白盒测试学习历程。 逻辑覆盖是白盒测试中以程序内部的逻辑结构为基础的设计测试程序用例的技术。 是一系列测试过程的总称。 根据测试覆盖目标不同,以及覆盖源程序的详尽程度分析由高到低排序,可以分为: 语句覆盖 判定覆盖 条件覆盖 判定/条件覆盖 条件组合覆盖 路径覆盖 -------------------------分割线---------------------------------- [从实例开始说起] 程序流图如下: 路径: p1 = {a,c,e} P2

白盒测试中的几种逻辑覆盖

纵然是瞬间 提交于 2020-02-02 08:52:12
白盒测试又称为结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。就是在知道软件代码,和内部逻辑结构后进行的一项测试。主要目的是检查内部结构,逻辑。方法是检查每一条路径。与黑盒测试相比,黑盒测试更偏向用户,白盒测试更偏向于开发者。黑盒测试只需要输入和结果。而白盒测试更需要测试,软件内部是如何运行的。 今天我想说一说,白盒测试中的几种逻辑覆盖 白盒测试,为了保证测试的完整性,就要测试软件内部的每一条路径。逻辑覆盖方法能帮助我们设计测试用例,以减少不必要的消耗: 逻辑覆盖包括 语句覆盖 、 判定覆盖 、 条件覆盖 、 判定/条件覆盖 、 条件组合覆盖 和 路径覆盖 。六种覆盖标准发现错误的能力呈由弱到强的变化: 1.语句覆盖每条语句至少执行一次。 2.判定覆盖每个判定的每个分支至少执行一次。 3.条件覆盖每个判定的每个条件应取到各种可能的值。 4.判定/条件覆盖同时满足判定覆盖条件覆盖。 5.条件组合覆盖每个判定中各条件的每一种组合至少出现一次。 6.路径覆盖使程序中每一条可能的路径至少执行一次。 以下我举个例子 对于一个这样逻辑的程序它的代码大致如下 ... if(y>1&&z=0) x=x/y; if(y=2||x>1) x=x+1; ... 1.语句覆盖每条语句至少执行一次。   我们只需是每条语句执行一次即可 x=4,y=2,z=0 2.判定覆盖每个判定的每个分支至少执行一次。

条件覆盖,路径覆盖,语句覆盖,分支覆盖

时间秒杀一切 提交于 2020-02-02 05:09:37
转自 http://hi.baidu.com/%D2%D7%B1%D8%BA%C6/blog/item/f016729f4fbeaebbc9eaf4df.html 语句覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每一个语句至少执行一次,其覆盖标准无法发现判定中逻辑运算的错 误;判定覆盖是指选择足够的测试用例,使得运行这些测试用例时,每个判定的所有可能结果至少出现一次,但若程序中的判定是有几个条件联合构成时,它未必能 发现每个条件的错误; 条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,判定中每个条件的所有可能结果至少出现一次,但未必能覆盖全部分支;判定/条件覆盖是使判定中 每个条件的所有可能结果至少出现一次,并且每个判定本身的所有可能结果也至少出现一次;条件组合覆盖是使每个判定中条件结果的所有可能组合至少出现一次, 因此判定本身的所有可能解说也至少出现一次,同时也是每个条件的所有可能结果至少出现一次;路径覆盖是每条可能执行到的路径至少执行一次;其中语句覆盖是 一种最弱的覆盖,判定覆盖和条件覆盖比语句覆盖强,满足判定/条件覆盖标准的测试用例一定也满足判定覆盖、条件覆盖和语句覆盖,条件组合覆盖是除路径覆盖 外最强的,路径覆盖也是一种比较强的覆盖,但未必考虑判定条件结果的组合,并不能代替条件覆盖和条件组合覆盖。 举个例子吧 if A and B then

判定覆盖 与 条件覆盖 的区别

一曲冷凌霜 提交于 2020-02-01 14:04:43
判定覆盖只关心判定表达式的值(真/假),而条件覆盖涉及到判定表达式的每个条件的值(真/假)。 举个最简单的例子,方便理解: 判定表达式:a>1 or b>1 用判定覆盖设计的测试数据: a=5 (判定表达式的值为“真”) a=0 (判定表达式的值为“假”) 这里不需要管b的取值,就已经满足判定覆盖的条件了。 用条件覆盖设计的测试数据: a=5 (条件a>1的值为“真”) a=0(条件a>1的值为“假”) b=5 (条件b>1的值为“真”) b=0 (条件b>1的值为“假”) 这里不考虑 a>1 or b>1 这个表达式的取值的情况,但必须把a>1 和 b>1 这两个条件的取值考虑全。 来源: https://www.cnblogs.com/yinluhui0229/archive/2011/05/19/2051482.html

白盒测试中的六种覆盖方法案例分析

依然范特西╮ 提交于 2020-02-01 13:29:05
一、语句覆盖(Statement coverage) “ 语句覆盖 ”是一个 比较弱的 测试 标准,它的 含义是:选择足够的测试用例, 使得程序中每个语句至少都能被执行一次。 图 6.4 是一个被测试的程序,它的源程序是: PROCEDURE M(VAR A , B , X : REAL) ; BEGIN IF (A>1) AND (B=0) THEN X := X/A ; IF (A=2)OR (X>1) THEN X := X+1; END. 为使程序中每个语句至少执行一次,只需设计一个能通过路径 ace 的例子就可以了,例如选择输入数据为: A=2 , B=0 , X=3 就可达到“语句覆盖”标准。 从本例可看出,语句覆盖实际上是很弱的,如果第一个条件语句中的 AND 错误地编写成 OR ,上面的测试用例是不能发现这个错误的;又如第三个条件语句中 X > 1 误写成 X > 0 , 这个测试用例也不能暴露它,此外,沿着路径 abd 执行时, X 的值应该保持不变,如果这一方面有错误,上述测试数据也不能发现它们。 总之,一般认为“语句覆盖”是很不充分的一种标准。 二、判定覆盖(Decision coverage) 比“语句覆盖”稍强的覆盖标准是“ 判定覆盖 ” ( 或称 branch coverage分支覆盖 ) 标准。 含义 是:执行足够的 测试 用例,

白盒测试的逻辑覆盖法

半世苍凉 提交于 2020-02-01 13:27:56
逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。它属白盒测试。逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。 六种覆盖标准发现错误的能力呈由弱到强的变化: 1.语句覆盖 2.判定覆盖 3.条件覆盖 4.判定/条件覆盖 5.条件组合覆盖 6.路径覆盖 对上述6种覆盖标准的具体介绍: 1.语句覆盖(Statement Coverage):就是设计若干个测试用例,运行被测程序,使得程序中每一可执行语句至少执行一次。这里的“若干个”,意味着使用测试用例越少越好。语句覆盖在测试中主要发现缺陷或错误语句。 语句覆盖率的公式:语句覆盖率=被评价到的语句数量/可执行语句总数x100% 语句覆盖的缺点:对程序执行逻辑的覆盖很低。 2.判定覆盖(Decision coverage): 有时也称分支覆盖,就是指设计若干测试用例,运行被测程序,使得每个判定的取真分支和取假分支至少评价一次。 判定覆盖的公式: 判定覆盖率=被评价到的判定分支个数/判定分支的总数X100%。 判定路径覆盖率(DDP)=被评价到的判定路径数量/判定路径的总数X100%。 判定覆盖的缺点:判定覆盖虽然把程序所有分支均覆盖到了,但其主要对整个表达式最终取值进行度量,忽略了表达式内部取值。 3.条件覆盖(Condition Coverage): 设计足够多的测试用例,运行被测程序

MySQL执行计划extra中的using index 和 using where using index 的区别

南笙酒味 提交于 2020-01-12 15:53:23
本文出处: http://www.cnblogs.com/wy123/p/7366486.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他) mysql执行计划中的extra列中表明了执行计划的每一步中的实现细节,其中包含了与索引相关的一些细节信息 其中跟索引有关的using index 在不同的情况下会出现Using index, Using where Using index ,Using index condition等 那么Using index 和 Using where;Using index 有什么区别?网上搜了一大把文章,说实在话也没怎么弄懂,于是就自己动手试试。 本文仅从最简单的单表去测试using index 和 using where using index以及简单测试using index condition的情况的出现时机 。 执行计划的生成与表结构,表数据量,索引结构,统计信息等等上下文等多种环境有关,无法一概而论,复杂情况另论。 测试环境搭建   测试表以及测试数据搭建,类似于订单表和订单明细表,暂时先用订单表做测试   测试表结构 create table test_order ( id int auto_increment primary key, user_id