1、2018-5-17 1白盒测试技术知识点2:代码逻辑覆盖测试 2内容 代码逻辑覆盖概念 代码逻辑覆盖的测试方法2018-5-17 2覆盖率 覆盖率是用来度量测试完整性的一个手段。分为逻辑覆盖和功能覆盖两大类。 覆盖率可以通过一个比率公式来表示: 覆盖率=(至少被执行一次的item数)/ item的总数u 通过覆盖率数据,可以知道测试的是否充分,测试的弱点在哪些方面,进而指导设计能够增加覆盖率的测试用例。2018-5-17 3逻辑覆盖 是以程序内部的逻辑结构为基础的测试方法,属“白盒”测试 这一方法是一系列测试过程的总称,它要求测试人员对程序的逻辑结构有清楚的了解 从覆盖源程序的各个方面考虑,大
2、致可以分为 语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖2018-5-17 4语句覆盖 (1)语句覆盖 即每个语句至少能执行一次2018-5-17 5问题:若AND错写为OR,或X1错写为X 1AND B=0 TA=2OR X 1 T X = X / AX = X + 1返回FFTest case : A=2 , B=0 , X=4. 语句覆盖 (1)语句覆盖 为了暴露程序中的错误,语句覆盖是最起码的测试要求,要求设计足够多的测试用例,使得每一条语句至少被执行一次 它对程序的逻辑覆盖很少,是很弱的逻辑覆盖标准 为了更充分地测试程序,需要采用后边讲述的其他逻辑覆盖方法 语
3、句覆盖的优点 检查所有语句 结构简单的代码的测试效果较好 容易实现自动测试 代码覆盖率高 如果是程序块覆盖,则不用考虑程序块中的源代码 语句覆盖不能检查出的错误有 条件语句错误、逻辑运算错误、循环语句错误2018-5-17 6判定覆盖 (2)判定覆盖 判定覆盖又叫分支覆盖,含义是:每个判定的分支至少执行一次。2018-5-17 7Test cases:A=3 , B=0 , X=3A=2 , B=1 , X=1 入口A 1AND B=0 TA=2OR X 1 T X = X / AX = X + 1返回FF问题:若X1错写为X1, B=0; A=2, X1)A=1, B=1, X=1(满足A1
4、, B0; A 2, X1)问:条件覆盖 ? 判定覆盖 答: 不一定。 反例: A=2, B=0, X=1 A=1, B=1, X=2 入口A 1AND B=0 TA=2OR X 1 T X = X / AX = X + 1返回FF条件覆盖 (3)条件覆盖 不仅每一个语句至少执行一次,使得判定中的每个条件获得各种可能结果 判定覆盖只关心整个判定表达式的结果,条件覆盖关心的则是每个条件各种取值的结果 条件覆盖的利弊 能够检查所有的条件错误 不能实现对每个分支的检查 用例数增加2018-5-17 10判断/条件覆盖 (4)判断/条件覆盖 选取足够多的测试数据,使判断中每个条件都取得各种可能值,并使
5、每个判断表达式也取到各种可能的结果。2018-5-17 11Test cases:A=2 , B=0 , X=4(满足A1, B=0; A=2, X1)A=1, B=1, X=1(满足A1, B0; A 2, X1)入口A 1AND B=0 TA=2OR X 1 T X = X / AX = X + 1返回FF判断/条件覆盖 (4)判断/条件覆盖 设计足够多的测试用例,使得判定中每个条件的所有可能取值至少能够获取一次,同时每个判断的所有可能的判定结果至少执行一次 用于解决条件覆盖不一定包括判定覆盖,判定覆盖也不一定包括条件覆盖的问题 分支-条件覆盖的利弊: 既考虑了每一个条件,又考虑了每一个分
6、支,发现错误能力强于分支覆盖和条件覆盖 并不能全面覆盖所有路径 用例数量的增加2018-5-17 12条件组合覆盖 (5)条件组合覆盖 使得每个判断中条件的各种可能组合都至少出现一次。2018-5-17 13全部可能的条件组合为: A1, B=0 A1, B 0 A1, B=0 A1, B 0 A=2, X1 A=2, X 1 A 2, X1 A 2,X 1 Test cases: A=2, B=0, X=4 (T T) A=2. B=1, X=1 (F T) A=1, B=0, X=2 (F T) A=1, B=1, X=1 (F F)问题:没有测试到(T F)的情形入口A 1AND B=0 TA=2OR X 1 T X = X / AX = X + 1返回FF条件组合覆盖 (5)条件组合覆盖 要求设计足够多的测试用例,使得每个判定中条件的各种组合至少出现一次 满足条件组合覆盖标准的测试用例,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准 条件组合覆盖是前面几种覆盖标准中最强的 但是,满足条件组合覆盖要求的测试用例并不一定能使程序中的每条路径都执行到谢 谢15