提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|使用教程|编辑:郑恭琳|2020-12-01 15:51:02.243|阅读 187 次
概述:单元测试是测试软件的单个单元/组件的最佳实践,但是对于Java开发人员而言,这可能既乏味又昂贵。很难通过人工断言来测试每个单元的正确行为,并通过模拟来隔离每个方法,并且单元测试本身容易受到错误和误解的影响。为了改善这种情况,您可以使用运行时分析工具来检测数据和控制流,外部依存关系,并计算测试代码覆盖率。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
为了实现单元测试的好处,您可以在运行期间通过运行时分析观察单元测试。单元测试执行期间的运行时分析对于提高测试效率和有效性至关重要。
单元测试是测试软件的单个单元/组件的最佳实践,但是对于Java开发人员而言,这可能既乏味又昂贵。很难通过人工断言来测试每个单元的正确行为,并通过模拟来隔离每个方法,并且单元测试本身容易受到错误和误解的影响。为了改善这种情况,您可以使用运行时分析工具来检测数据和控制流,外部依存关系,并计算测试代码覆盖率。
借助从运行时分析中收集到的数据,诸如Parasoft Jtest之类的企业级解决方案可以通过自动推荐正确行为的断言以及模拟方法来改善测试隔离性,从而提示开发人员如何改进测试。自动单元测试生成和运行时分析之间的这种集成减少了Java单元测试所需的手动干预。
单元测试是一种众所周知的做法,但是其实现需要在许多项目中进行改进。单元测试做得很好,提高了敏捷过程的敏捷性,提高了质量和安全性,并节省了长期成本。
不幸的是,尽管希望获得更好的结果,但是尽管有这些好处,开发人员仍然无法在单元测试中挣扎。测试创建和维护所需的时间和精力可能太多,无法证明增加测试工作是合理的。通常,测试套件很脆弱,因为单元/对象与依赖项之间的隔离性较差。正确地模拟依赖关系,就像创建确定正确程序逻辑所需的断言一样,成为软件测试人员的祸根。即使对方案进行参数化测试也可能是乏味且耗时的。
如果软件开发团队希望获得彻底的单元测试的好处,则必须通过创建,隔离和维护测试来解决这些问题。答案从测试自动化工具开始,但仅自动化测试执行并收集结果是不够的。运行时分析是观察运行的可执行文件并记录关键指标的过程,是一种创新的方法,可以帮助改善单元测试的创建、模拟和测试稳定性。
在大多数情况下,开发人员并不认为运行时分析在单元测试的早期阶段很重要。大多数工具用于捕获单元测试遗漏的错误,或者仅用于计算代码覆盖率。但是,尽管这些好处很重要,但是运行时分析还可以观察单元测试的第一次迭代的执行情况,以提出改进测试的建议,并检测干扰测试稳定性的测试运行时环境的更改。
JUnit之类的测试框架会创建稀疏代码,需要开发人员进一步输入。这项工作很繁琐,因此可以根据观察到的程序逻辑自动填充更多细节。例如,Parasoft Jtest可以自动生成以下单元测试:
同样,对于带有参数化输入的单元测试,如下所示:
由于创建的测试从一开始就是可执行的,因此可以通过运行时分析来观察它们的结果和执行流程。例如,测试可能由于引发异常而失败,如下所示。
此外,运行时工具会观察到依赖关系的执行路径,并建议可能的模拟,以增加测试的隔离度。尽管目视检查被测对象会发现其依赖关系,但是自动检测和模拟这些依赖关系可以节省许多繁琐且容易出错的工作。
在下面的示例中,Parasoft Jtest根据单元测试的执行轨迹为开发人员提供了模拟对象的选择:
在这种情况下,添加可模拟方法模式会将方法添加到要由诸如PowerMock之类的模拟框架处理的模拟列表中。
如下所示,也可以模拟静态构造函数。
在充分了解执行流程以及方法调用中使用的参数之后,可以使用运行时分析向开发人员提供有用的建议,以改进测试代码。尽管提供了断言,但静态地,当创建测试时,它们可能未启用或正确。在执行测试时,失败和遗漏的断言会触发警告,然后会提出建议以解决问题。
例如,在创建新测试之后,并且没有对建议的断言进行注释,您将看到以下内容:
或者,例如,如果断言失败,则显示以下内容:
无论发生什么情况,都是有关断言的纠正措施的持续反馈,这会在创建测试以完成单元测试时关闭循环。另外,随着被测设备的变化,这些变化可以以相同的方式处理,从而不断减少了所需的手动测试维护。
运行时分析还可以检测执行期间测试环境中的变化,这些变化会影响为后续测试重新创建相同测试环境的能力。一次通过但以后失败的测试可能是造成挫败感,浪费时间和精力的主要原因。您可以使用运行时分析检测到的不稳定性示例包括:
至关重要的是,每个测试执行都必须有相同的起点,以确保获得可靠的结果。通过运行时检测防止测试不稳定,从而消除了测试调试阶段的猜测。
因此,您可以看到运行时分析不仅用于计算代码覆盖率。测试执行期间的运行时分析对于提高测试效率和有效性至关重要。监视执行路径可提供有关依赖项的信息,以改善对依赖项和模拟的处理。可以监视断言,自动建议可以帮助提高测试保真度。在运行时测试环境中检测到影响测试稳定性的更改,可以消除挫败感并减少测试代码的调试周期。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.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@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢