软件测试中语句覆盖的优点,软件测试之测试覆盖率的基本策略

news/2024/7/3 4:33:43

原标题:软件测试之测试覆盖率的基本策略

软件测试覆盖率简介

1、定义:覆盖率是用来度量测试完整性的一个手段,同时也是测试技术有效性的一个度量。

2、计算:覆盖率=(至少被执行一次的item数)/item的总数

3、特点

1)通过覆盖率数据,可以检测我们的测试是否充分

2)分析出测试的弱点在哪方面

3)指导我们设计能够增加覆盖率的测试用例,有效提高测试质量,但是测试用例设计不能一味追求覆盖率,因为测试成本随覆盖率的增加而增加。

软件测试覆盖率分类

覆盖率按照测试方法大体上可以划分为三大类,即白盒覆盖(white-Box Coverage)、灰盒覆盖(Gray-Box coverage)和黑盒覆盖(Black-Box Coverage)。

白盒覆盖率(white-Box Coverage)

白盒覆盖率中使用的最常见的就是逻辑覆盖率(Logical Coverage ),也叫代码覆盖率(Code Coverage)或者结构化覆盖率(Structural Coverage),我们常见的逻辑覆盖包括:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。

1、语句覆盖(Statement Coverage)

1)定义:在测试时,运行被测程序后,程序中被执行的可执行语句的比率。

2)计算公式:语句覆盖率=(至少被执行一次的语句数量)/(可执行的语句总数)

3)100%语句覆盖率含义:在测试时,首先设计若干个测试用例,然后运行被测程序,使程序中的每个可执行语句至少执行一次。

4)特点:语句覆盖可以检验每个可执行语句,但是即使语句覆盖率达到了100%,也会有缺陷发现不了,所以覆盖率只是我们度量的手段。

2、判定覆盖(Decision Coverage)/分支覆盖率(Branch Coverage)

1)定义:在测试时,运行被测程序后,程序中所有判断语句的取真分支和取假分支被执行到的比率。

2)计算公式:判定覆盖率=(判定结果被评价的次数)/(判定结果的总数)

3)100%条件覆盖率含义:在测试时,首先设计若干个测试用例,然后运行测试程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假值均曾被满足。

4)特点

(1)若判定覆盖达到100%,则语句覆盖必为100%。

(2)即使判定覆盖率达到了100%,也会有缺陷发现不了。

3、条件覆盖(Condition Coverage)

1)定义:在测试时,运行被测程序后,程序中所有判断语句中每个条件的可能取值(真值和假值)出现过的比率。

2)计算公式:条件覆盖率=(条件操作数值至少被评价一次的数量)/(条件操作数值的总数)

3)100%条件覆盖率含义:在测试时,首先设计若干个测试用例,然后运行被测试程序,要使每个判断中每个条件的可能取值至少满足一次。

4)特点:覆盖条件的测试用例不一定覆盖判定。

4、判定-条件覆盖(Decision Condition Coverage)/分支条件覆盖(Branch Condition Coverage)

1)定义:在测试时,运行被测程序后,程序中所有判断语句中每个条件的可能取值(真值和假值)和每个判断本身的判定结果(为真为假)出现的比率。

2)计算公式:判定-条件覆盖率=(条件操作数值或判定结果至少被评价一次的数量)/(条件操作数值的总数+判定结果的总数)

3)100%判定-条件覆盖率含义:设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能结果至少执行一次。换言之,即是要求各个判断的所有的可能的取值组合至少执行一次。

4)特点

(1)判定-条件覆盖率实际上就是判定覆盖率和条件覆盖率的组合。

(2)采用判定-条件覆盖,逻辑表达式中的错误不一定能够查得出来。

5、条件组合覆盖(Condition combination coverage)

1)定义:在测试时,运行被测程序后,所有语句中原子条件所有的可能的取值结果组合出现过的比率。

2)计算公式:条件组合覆盖率=(至少被执行一次的条件组合)/(总的可能的条件组合数)

3)100%条件组合覆盖率含义:设计足够的测试用例,使得判断中条件的各种可能组合至少出现过一次。

4)特点:若条件组合覆盖率为100%,则语句覆盖率、判定覆盖率、条件覆盖率和判定-条件覆盖率必为100%。

6、路径覆盖(Path Coverage)

1)定义:在测试时,运行被测程序后,程序中所有可能的路径被执行的比率。

2)计算公式:路径覆盖率=(至少被执行一次的路径数)/(总的路径数)

3)100%路径覆盖率含义:设计足够的测试用例,要求覆盖程序中所有可能的路径。

4)特点

(1)路径覆盖比判定条件覆盖更强,但是不能包含判定条件覆盖。

(2)若路径覆盖率为100%,则语句覆盖率、判定覆盖率必为100%。

小结:逻辑覆盖率可以作为软件测试的一个度量,但是,即使达到了100%的逻辑覆盖率,仍然无法保证程序的正确性。

灰盒覆盖率(Gray-Box Coverage)

函数覆盖和接口覆盖可以归为灰盒测试的范畴。

1、函数覆盖

1)定义:它表示在测试中,有哪些函数被测试到了,其被测试到的频率有多大,这些函数在系统所有函数中占的比例有多大。

2)计算公式:函数覆盖=(至少被执行一次的函数数量)/(系统中函数的总数)

3)特点:是针对一个系统或者子系统测试的。

2、接口覆盖(Interface Coverage)/入口点覆盖(Entry-Point Coverage)

1)定义:要求通过设计一定的用例使得系统的每个接口被测试到。

2)计算公式:接口覆盖=(至少被执行一次的接口数量)/(系统中接口的总数)

黑盒覆盖率(Black-Box Coverage)

在实际测试中,与黑盒相关的覆盖率比较少,主要是功能覆盖率(Function Coverage),其中最常见的是需求覆盖。

需求覆盖

1)定义:它表示在测试中,有哪些函数被测试到了,其被测试到的频率有多大,这些函数在系统所有函数中占的比例有多大通过设计一定的测试用例,要求每个需求点都被测试到。

2)计算公式:需求覆盖=(被验证到的需求数量)/(总的需求总数)

转载:http://www.51testing.com/html/09/n-3726309.html返回搜狐,查看更多

责任编辑:


http://lihuaxi.xjx100.cn/news/239603.html

相关文章

PHP 实现无限分类

最近打算做一个blog,通常每篇文章都有属于自己的分类。下面就记录下我在写blog时实现无限分类的过程。php框架用的是laravel,根据注释也能轻松改成你习惯的框架。 数据表设计 CREATE TABLE article_category (id int(10) unsigned NOT NULL AUTO_INCREMENT,pid int(…

为什么您不需要精通数学就可以学习编程

by Pau Pavn通过保罗帕文(PauPavn) 为什么您不需要精通数学就可以学习编程 (Why you don’t need to excel at math to learn how to program) This is probably one of the greatest misconceptions I’ve ever heard.这可能是我听过的最大的误解之一。 If you want to prog…

计算机教师简介50字,教师风采个人简介50字数.docx

教师个人简介 50 字大全例一:大家好,我叫王力央。今年 12 岁了,我有很多的兴趣比如:跳绳、游泳、看书、写字和玩耍。我 喜欢的东西也很多:水果、蔬菜、大螃蟹、大龙虾。大家要多吃蔬菜少吃油炸食品身体才能强壮、健康。…

yjk只算弹性的不计算弹塑性_基于ANSYS Workbench的表面裂纹计算

一、写在前面本教程使用ANSYS Workbench17.0 进行试件表面裂纹的分析,求应力强度因子。需要提前说明的是,本案例没有工程背景,仅为说明裂纹相的计算方法,因此参数取值比较随意,大量设置都采用了默认值。对于实际工程&a…

Vue.js slots: 为什么你需要它们?

也许你已经看过了Vue.js slots的文档。我对这个功能从“为什么你可能需要它”到“没有它我怎么可能工作”的态度转变非常快。虽然文档已经解释了它的概念,但是这里有一个关于slots怎么改进应用程序代码库的真实例子。在我看来,slots是vue最有用和最有趣的…

【iCore4 双核心板_ARM】例程十七:USB_MSC实验——读/写U盘(大容量存储器)

实验方法: 1、将跳线冒跳至USB_UART,通过Micro USB 线将iCore4 USB-UART接口与电脑相连。 2、打开PUTTY软件。 3、通过读U盘转接线将U盘(或者读卡器)与iCore4 USB-OTG接口相连。大容量存储器为FAT32格式。 实验现象: 核心代码&…

[附源码]计算机毕业设计springboot抗疫医疗用品销售平台

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

JavaScript的“ this”通过成立一个高中乐队来解释

by Kevin Kononenko凯文科诺年科(Kevin Kononenko) JavaScript的“ this”通过成立一个高中乐队来解释 (JavaScript’s “this” Explained By Starting A High School Band) If you have ever been in a band, had a friend that started a band, or seen a corny 80s movie …