代码覆盖率

代码覆盖率

代码覆盖率
代码覆盖率是衡量验证进展的最简易的方式。它的作用是检查代码是否冗余,设计要点是否遍历,被检测的对象是RTL代码,而代码覆盖率的检测一般由工具自动生成的,不需要自定义收集条件。代码覆盖率主要包括以下几种:
1.行覆盖率(Line coverage)
行覆盖率度量的是多少行代码已经被执行过。比如,你有100行代码,执行了90行,那么覆盖率就是90%。

2.分支覆盖率(Branch coverage)
分支覆盖率衡量的是代码中的分支覆盖的情况,包括:
if-else语句覆盖情况
case语句覆盖情况
三元操作符(“?:”)覆盖情况

3.路径覆盖率(Path Coverage)
路径覆盖率衡量的是在穿过代码和表达式的路径中有哪些已经被执行过,表明代码中数据通路的覆盖情况。

4.条件覆盖率(Conditional coverage)
判定式中有多个条件时,要求每个条件的取值均得到验证。这里的条件覆盖率很容易与分支覆盖率产生混淆,为了方便大家区别,下面举一个例子:
假设我们有如下两种情况:

test1()为true
test1()和test2()都为false
如果只是为了验证分支覆盖率,以上的两种情况就足够了,因为if语句中两种分支条件都有了,但是对于第一条分支中的只有在test1()为false情况下的BUG,这里并没有覆盖到。

而在条件覆盖率下,还需要验证test1()为false且test2()为true这种情况,只有这三种情况都验证到了,才算是满足了条件覆盖率。

5.翻转覆盖率(Toggle coverage)
翻转覆盖率衡量的是哪些单比特变量的值为0或1,表明代码中信号的0到1和1到0的翻转情况。

6.有限状态机覆盖率(FSM coverage)
有限状态机覆盖率衡量的是状态机中哪些状态和状态转换已经被访问过。表明状态机中各个状态的覆盖情况。

self = ChainMap({}, {'im30': 'pax_branch_7.0_3.xx_release', 'im30v2': 'A133_V2_4_T509_pax_branch_release', 'a80': 'pax_branch...3700': 'MTK_android11_pax_branch_user', 'a8300': 'A133_V2_4_pax_branch_release', 'a6650': 'A6650_pax_branch_user'}, {}) key = 'a80s' def __missing__(self, key): > raise KeyError(key) E KeyError: 'a80s' /usr/lib/python3.8/collections/__init__.py:890: KeyError During handling of the above exception, another exception occurred: request = <SubRequest 'upgrade_os_by_fastboot' for <Function test_Antutu_Score_PER1>> get_device_in_config = ('172.16.120.187:6714', '172.16.25.170', 'false', 'A80S', True) get_sn_fastboot_sn = {'1240047508': '241050374620301a044f', '1240193065': '140050344410142b03ce', '1640000442': '1400788643245025084f', '2210000495': 'NRUO65VOT4TWON99', ...} @pytest.fixture(scope='session', autouse=False) def upgrade_os_by_fastboot(request, get_device_in_config, get_sn_fastboot_sn): """ 更新固件 """ _serial, ip, regex, device_name, is_version_test = get_device_in_config # 一些配置参数 # _serial = get_serial logger.info(exec_cmd("adb devices -l")) if util.wait_for_device(_serial, timeout=10 * 60) is False: assert False, "{} device is offline".format(_serial) return # 优先从命令行获取 fastboot_sn = request.config.getoption(CmdOption.DEVICE_FASTBOOT.value) if fastboot_sn is None: fastboot_sn = get_sn_fastboot_sn.get(_serial) if fastboot_sn is None: logger.warning(f"也许你需要在{get_sn_fastboot_sn_map_path()}配置对应的fastboot sn") fastboot_sn = _serial path = os.getcwd() logger.info("upgrade_os_by_fastboot path:%s" % path) logger.info(exec_cmd("rm -rf ./Uniphiz_*")) logger.info(exec_cmd("rm -rf ./PayDroid_*")) logger.info(exec_cmd("rm -rf ./IM30_A80_PayDroid_*")) if is_version_test is False: # CI的日常测试任务 upgrade_result = upgrade_now(_serial, device_name, fastboot_sn, "", "fastboot") else: # CI的版本测试任务 > upgrade_result = upgrade_now_version_test(_serial, device_name, fastboot_sn, "", "fastboot") ../CI_Code_Pull/tests/conftest.py:209: 这是什么错误
07-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

傻童:CPU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值