提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|使用教程|编辑:龚雪|2015-12-15 13:37:20.000|阅读 495 次
概述:关于Parasoft C / C ++test的嵌入式单元测试实践,本文主要介绍了单元测试的结果验证和扩大覆盖率。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
接下来的一步是运行测试用例,然后审查结果。如果你想,你也可以在运行之前检查它们。但从实际来看,最好是先运行它们。我们选中“proc.c”文件,然后在配置菜单中选择“运行单元测试(Run Unit Tests)”。不到一分钟(包括下载、执行和上传),我们得到结果:11个测试用例通过,27个测试用例运行异常。当我们仔细检查失败的原因时,我们会发现这主要是由三个功能导致的: “average”、 “update_brake_signal” 和 “brake_control”。 它们都需要指针作为参数(如下图所示),而在测试用例中给它们传递了空值。
现在我们必须做出决定。如果我们的代码是非常安全的,当传递空值时是不会崩溃的。否则,我们就姑且认为这样的情况不会发生,并删除这些测试用例。 我们采用一种混合的方法。因为功能“average” 和“brake_control”是用来被其他功能调用的,我们放置一个“if”保护语句。功能“update_brake_signal”仅仅从“brake_control”而来,所以我们不需要对它进行多余的保护。我只需要删除那些通过右键单击的测试案例,并选择适当的C++test操作。
再一次的运行,我们完成了25个测试用例和72%的语句覆盖率,得到了77个结果验证。下图显示的代码是与功能“brake_control”和“average”相关。语句覆盖通过高亮显示。它也显示在小窗口的右下角中。测试用例显示在“test case explorer”的左侧。需要进行验证的结果显示在下面的窗口面板中。
现在,我们要进行测试并验证结果。通过这样的步骤,才会得到有意义的断言。因为有了C++test,需要的工作量大大减少。如果你决定将断言作为最重要的变量,C++test会进一步减少你的工作量。如果代码运行良好,可以将结果一起验证。这基本上是“冻结(freezes)”的当前状态。然后,你需要仔细检查代码中最重要的部分。如果它影响到系统安全,那么需要检查所有的内容。
目前我们的语句覆盖率为72%,而我们的目标是100%。“brake_control”只有25%的语句覆盖。我们可以看到,它基本上在第一个“if”语句中就退出了,这是我们增加的对空指标的一种保护。显然,我们需要提供一个测试案例,可以通过非空指针到制动信号变量。我们可以复制、修改现有的测试案例,或者使用测试用例向导。测试用例向导中指明哪些功能要测试,然后图形编辑器引导设置前置条件,参数,后置条件和预期值。这种方法可以限定测试案例。对于简单的类型,向导往往是非常有效的。但对于没有工厂函数的复杂类型,复制和修改可能更有效。关于向导有一件事值得关注:功能里使用的和要求进行初始化的所有变量,它都可以自动识别。如果手动编写测试用例, 你最初可能会忽略这一点。这种情况下,需要额外的调试以便弄清楚为什么测试案例没有按照预期进行。
在本例中,使用向导创建一个传递指针到分配s32类型(“spd_diff” equal to +100 for one and -100 for the other),并设置两个值为10的变量(“Speed_Diff_Threshold” 和“Brake_Signal_Coeff” )的测试用例只用了一两分钟。同时运行这两个案例之后,我们的覆盖率提高到了97%,其中“update_brake_signal”和“brake_control”全部覆盖。要达到覆盖率100%需要使用向导,这一次是针对功能“update_speed”的。这一过程同样只需要一两分钟。这个功能并不复杂,和容易在没有覆盖到的if语句中找到一组变量值。最后,我们的覆盖率就达到了100%。
购买最新正版授权Parasoft赠送Macbook!""
慧都年终盛典火爆开启,一年仅一次的最强促销,破冰钜惠不容错过(12.01~12.31)!!优惠详情点击查看>>
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn
本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@capbkgr.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢