提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|行业资讯|编辑:胡涛|2023-09-05 10:21:49.087|阅读 32 次
概述:本文介绍单元测试中的打桩为何能改进集成测试,欢迎查阅~
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
我们有一个客户,正在根据IEC 61508 功能安全标准开发一个安全关键型项目,他与我们联系。要求我们提供指导,通过进一步减少单元测试产生的干扰来提高开发人员的生产力,这些干扰就是由于缺乏打桩而产生的。
我们了解到,客户进行单元测试的方式更接近于集成测试。在他们的过程中,要测试的单元没有与其依赖组件(项目中的其他文件或功能)隔离开来,单元测试用例是针对大多数已完成的应用程序执行的。
这种方法不是典型的单元测试。它通常被称为集成级测试。集成测试在证明功能性和非功能性要求的良好测试覆盖率方面非常有效。如果启用了结构代码覆盖,它还可以提供出色的测试覆盖率。试中的打桩为何能改进集成测试
单元测试的做法通常是隔离功能、方法或程序。这种隔离是通过剔除依赖性和强制执行特定的执行路径来完成的。
打桩取代了依赖于本函数外的代码。它还为开发人员或测试人员提供了操纵打桩响应或结果的能力,以便以各种方式和各种目的运用该单元,例如,确保该单元性能可靠,安全,并且在某些情况下,也没有安全漏洞。
解释为什么要使用打桩及其带来的价值的最佳方法是通过一个用例逐步说明。例如,看看下面的代码:
在函数的开头,有一个if语句,用于测试样本缓冲区是否成功分配。这个函数的大多数测试用例都是在没有任何打桩的情况下实现的,因为它们关注的是常规的控制流,除了测试用例,它在缓冲区分配失败时检查函数的行为。这个测试用例要allocateSampleBuffer 函数的打桩来模拟故障。
一旦添加了打桩,它将被一致地应用到测试代码中。在处理“分配失败”测试用例的用户将有一个简单的方法将一个特殊的回调函数安装到打桩中,这将模拟预期的效果:分配失败或什么都不做,因为在默认情况下打桩返回一个空指针,这是测试用例的预期。但所有其他测试用例现在都需要注意,因为必须为它们添加一个打桩配置,以避免控制流中不必要的更改。
当然,开发人员可以返回并重新配置他们的测试用例来解决打桩,但这意味着要花额外的时间分析失败的原因,为打桩准备专用的回调函数,并消除测试过程中的干扰,这是客户联系我们时的主要关心的问题。
此外,医疗设备软件开发中的风险管理还需要深入了解医疗软件缺陷可能造成的危害程度。这可以通过风险索引来完成,风险索引根据风险的严重程度对风险进行分类。
在医疗设备软件方面,建立风险指数有助于确定风险管理指标,例如在软件发布使用之前应进行的所需测试、验证和确认级别。它还可以帮助为确保软件持续安全性和有效性所需的持续测试、监控和维护定下基调。
Parasoft C/C++test让自动生成桩或手动创建桩变得更加容易。该选项在两个地方可用:
1.对于自动生成的打桩:
测试配置->执行->符号(tab)
2.对于用户打桩和自动打桩:
打桩视图的打桩设置面板
选中“插入对原始函数的调用”选项后,Parasoft C/C++test会更改打桩的默认生成方式。使用新选项生成的打桩将充当代理并调用原始函数定义,除非用户提供一个特定于测试用例的回调函数来执行替代活动。
在默认情况下,不使用新选项生成的桩(包括遗留打桩)不会尝试调用原始符号。如果没有安装特定于测试用例的回调函数,打桩将什么都不做,只是返回一个默认值,例如空指针或零数值。
为了确保差异是明确的,让我们将情况与用户未提供专用回调时启用和未启用的“插入对原始函数的调用”选项进行比较。
这是为goo函数打的桩,不启用“插入对原始函数的调用”选项。它的工作方式如下:
以下是启用“插入对原始函数的调用”选项后为goo函数生成的相同打桩的查找方式:
正如我们所见,使用新选项添加的打桩对测试代码是透明的。它们只是对原始定义执行代理调用,除非有人提供需替代操作的回调代码。
在打桩函数没有原始定义的情况下,会发生什么呢?如果没有定义替代行为的回调,打桩会如何出现什么情况?
C/C++test的巧妙之处在于它会自动检测这种情况。在测试构建期间,打桩好的函数,即用户桩将重新配置自己。当没有安装回调函数时,它不会调用原始定义,并将返回一个安全的默认值。
在这种半集成测试中,同时处理测试用例时,C/C++test极大地减少了不同团队成员之间的干扰。开发人员A添加的打桩代码不会改变开发人员B添加的测试用例的测试代码的行为。
如果开发人员B决定他们需要为其中一个测试用例的打桩函数配置替代操作,他们可以创建一个特定于测试用例的回调函数,为打桩函数实现所需的替代逻辑,并将该回调函数作为测试用例配置的一部分安装在现有的打桩中。
这就避免了不同人员有着不同测试需求的难题了。如果您对以上内容感兴趣,请持续关注我们,
了解更多有关Parasoft产品咨询,欢迎咨询
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
通过提供强大的3D CAD数据访问工具并适用于桌面、移动和Web的高级环境3D可视化发动机,HOOPS在提升造船设计和制造流程的效率方面发挥了重要作用。
HOOPS Luminate在汽车行业中的应用具有广泛的潜力和深远的影响。它通过提供高效的3D可视化、虚拟装配与拆解、性能分析、客户定制等功能,帮助汽车制造商在设计、生产和销售过程中提升效率、降低成本并提高产品质量。
在不断发展的软件开发世界中,使工具和框架与最新的平台版本保持同步至关重要,欢迎查阅~
全球航运业对国际贸易至关重要,全球 90% 以上的商品通过海运运输。准确监控和控制这些集装箱的移动对于维持高效的供应链至关重要。手动输入集装箱号码是这一程序的关键部分,它带来了相当大的挑战,例如人为错误和效率低下。
针对 C/C++ 软件开发提供统一、完全集成的测试解决方案。
Parasoft Jtest用于应用软件开发的集成Java测试工具
Parasoft dotTEST降低C#和VB.NET开发风险,有效地实现符合C#和.NET开发的测试工具的要求
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢