1. 语句覆盖(Statement Coverage)
定义:语句覆盖是指测试用例执行了程序中的每一条语句,确保每个语句至少被执行一次。
语句覆盖的目的是测试程序中的代码是否被执行,它只测试代码中的执行语句,这里的执行语句不包括头文件、注释、空行等。
语句覆盖在多分支的程序中,只能覆盖某一条路径,使得该路径中的每一个语句至少被执行一次,但不会考虑各种分支组合情况。
通俗例子:想象你在一个房子里,每个房间(语句)你都至少要进一次,这样可以确保你已经看过房子里的每个地方。
解释:语句覆盖检查的是代码的每个语句是否都被执行过。如果某个语句没有被执行,那么可能存在未发现的错误。
2. 分支覆盖(Branch Coverage)
定义:分支覆盖是指测试用例执行了程序中的每一个分支,即每个条件语句(如if-else)中的每一个可能的路径都被执行了。比如判定1(A>0 && B>0),需要使A>0有真假值,并且B>0也要有真假值,不需要考虑如何组合,只需满足基本条件即可
通俗例子:在房子里有一些门(条件语句),每扇门可能通向不同的房间。你不仅要进每个房间,还要确保每扇门的每个方向(开门或关门)你都尝试过。
解释:分支覆盖检查的是代码中的每个分支是否都被执行过,这样可以确保所有可能的路径都被测试到了。
3. 判定覆盖(Condition Coverage)
定义:判定覆盖(Decision Coverage)又称为分支覆盖,其原则是设计足够多的测试用例,在测试过程中保证每个判定至少有一次为真值,有一次为假值。
判定覆盖的作用是使真假分支均被执行,虽然判定覆盖比语句覆盖测试能力强,但仍然具有和语句覆盖一样的单一性。
通俗例子:在一个房间里有灯的开关(布尔表达式),你要确保灯的开和关两种状态都测试过。
解释:判定覆盖关注的是每个条件中的每个布尔表达式的所有可能值都被测试过,确保逻辑条件在不同情况下都能正确执行。
4. 路径覆盖(Path Coverage)
定义:路径覆盖是指测试用例执行了程序中的所有可能的路径,从入口到出口的每一种可能的路径都被执行过。
通俗例子:想象你在迷宫中,每条可能的路径你都要走一遍,确保你探索了所有的路线。
解释:路径覆盖是最严格的一种覆盖标准,它要求测试用例执行程序中的所有可能路径。这种方法可以发现更复杂的逻辑错误,但在实际应用中,由于路径数量可能非常多,往往很难完全实现。
总结
- 语句覆盖:每个语句至少执行一次(进每个房间)。
- 分支覆盖:每个条件的每个分支至少执行一次(开关每扇门)。
- 判定覆盖:每个条件的每个布尔值(True/False)至少执行一次(测试灯的开关)。
- 路径覆盖:每条可能的路径至少执行一次(探索迷宫中的每条路径)。
在外面很多的教程都认为这六种逻辑覆盖从弱到强的排列顺序是:
语句覆盖->判定覆盖->条件覆盖->判定-条件覆盖->条件组合覆盖->路径覆盖
标签:语句,逻辑,每个,覆盖,路径,判定,架构师,执行 From: https://blog.csdn.net/sadfasdfsafadsa/article/details/142449487