罗湖高端网站设计常德市做网站联系电话
web/
2025/10/3 21:15:42/
文章来源:
罗湖高端网站设计,常德市做网站联系电话,信息流推广什么意思,本地服务型网站开发本文翻译自#xff1a;Coco Test Engine – The New Era of Code Coverage Analysis
原文作者#xff1a;Qt Group首席软件工程师Sbastien Fricker
审校#xff1a;Felix Zhang 我们的Coco 7重大更新带来了一个长期以来备受期待的功能——测试数据生成#xff08;即Coco …
本文翻译自Coco Test Engine – The New Era of Code Coverage Analysis
原文作者Qt Group首席软件工程师Sébastien Fricker
审校Felix Zhang 我们的Coco 7重大更新带来了一个长期以来备受期待的功能——测试数据生成即Coco Test Engine这为代码覆盖率分析工具Coco增添了强大的新工具。为此我们采访了Coco的首席开发者Sébastien Fricker深入探讨了这次更新及其如何使代码覆盖率分析得到改善。
简而言之测试数据生成功能通过以下方式简化代码分析流程使代码质量保障变得更加简单
快速达到尽可能高的覆盖率在代码覆盖率分析中消除重复自动收集包括边缘案例的测试数据
采访Coco的首席开发者Sébastien Fricker
问你们想通过代码覆盖率分析解决什么问题
过去软件开发者必须自行创建单元测试和测试数据。这本身就是一项艰巨的任务效果也并非最佳因为自己创建的数据往往覆盖不到应该测试的所有边缘案例。
比如说你正在开发一个计算器应用。为了测试它你可能会为简单的表达式编写单元测试然后手动输入测试数据12、3*4、3/2、3-2等来看计算器输出什么结果。
即使是这样简单的案例以前也需要花费大量手工努力去准备测试案例和进行分析。通常测试代码可能比实际的产品代码还要庞大。对于一小段源代码可能需要写一大堆单元测试来达到100%的覆盖率。
这就是为什么开发者通常只关注常规的测试案例比如典型用法、正常流程、正确数据等而忽略许多边缘案例比如错误案例、非法输入、中断的流程等。举个例子对于我们的计算器应用可能会忽略除以零1/0、空表达式或不合法的输入如一个带有多个小数点的数字1.2.3。
最终你可能会花费大量时间寻找测试案例来提高对代码质量的信心但由于在测试中忽略或遗漏了一些案例最终还是无法实现高覆盖率。由此功能质量和开发功能所花费的时间之间的权衡也让人难以取舍。
问测试数据生成是如何帮助解决这个问题的呢
测试数据生成功能正如其名Coco Test Engine能够自动生成测试数据有助于提升测试质量覆盖广泛的边缘或错误案例。通过运行算法Coco Test Engine能够发现那些通常难以覆盖到的案例或补充完善现有测试套件。
Coco的测试数据生成通过三种方式简化编写数据驱动的测试
将测试代码与测试数据分离。许多测试框架并不支持数据驱动测试这意味着开发者需要为每个测试数据编写单独的函数。如果支持测试数据生成和单元测试代码就需要放在同一个文件中这就要求数据符合C语法同时也增加了单元测试代码的体积。数据编辑器让在电子表格格式中查看和编辑测试变得简单。这一套工具不仅能够帮助发现新的测试案例还简化了随代码变化更新测试数据和测试者进行数据验证的流程。
“Coco Test Engine让您更有信心地去进行代码重构。你可以专注于常规案例让Coco覆盖其他所有案例。”
问在哪些情况下测试数据生成特别有用
比如说您打算重写一段代码——这种重构工作是常有的事。如果您在没有适当单元测试的情况下进行修改可能会引入许多问题。
Coco通过测试数据生成自动执行单元测试和验证代码修改。这得益于我们有一份参考代码被重构的代码本应该是能够正常运行的。因此测试案例生成便能产生有效的测试数据用于测试的参考。
这本质上能够让您在重构代码更加得心应手。您只需让它自动产生一套测试等到覆盖率达到较高水平后就可以全心修改代码而让测试引擎自动处理那些需要检测的各种异常数据。
问哪些行业能从改善的代码覆盖率分析中获得最大的价值
无论你正在开发的应用或软件多简单这种方法都是有用的。简单的代码在许多关键系统中起着至关重要的作用比如医疗设备、航空和汽车等。一般来说对于安全性要求极高的行业和软件高代码覆盖率以及测试数据生成功能是必不可少的。
以航空业为例。这个行业有着非常高的标准某些情况下要求100%的代码覆盖率。如果无法实现则每一行未覆盖的代码都需要有充分的解释。
将覆盖率从10%提升到11%相对容易但随着覆盖率的增加提高到更高水平变得越来越困难。如果从50%提升到51%只需要几分钟那么达到90%可能需要花费一个小时。当你试图实现100%的覆盖率时测试所需的时间将呈指数级增加。Coco能够帮你更快达到所需的覆盖水平它利用测试者提供的数据并通过自动寻找新的测试案例来补充完善。
但仅仅找到测试数据还不够还需要对数据的质量进行审核。继续以计算器为例用户可以轻松地提供“4/2”这样的除法输入数据结果是“2”。通过让Coco发现新的测试它可能会找到例如“1/0”的除法案例。但这个输出的正确结果是什么呢是“无限大”“非法表达式”还是“错误除数不可为零”
输出结果需要符合用户的预期只有人才能做出这样的决定——应用程序本身无法自行决定。这就是为什么每个测试数据实例都会添加一个验证标志它允许你标记数据为已审核而不只是因为它是之前函数调用的输出而默认它就是正确的。
“对于某些产品将代码覆盖率提高到100%可能需要几个月的时间。Coco让你更快达到所需的覆盖率并帮助对剩余代码进行解释。”
问Coco Test Engine在实际中是如何工作的
这里有一个流程的简化概述
A. 使用两个宏编写一小段单元测试代码 1. FETCH来获取新的输入数据 2. CHECK来比较输出和预期结果
B. 编译单元测试
C. 使用数据编辑器创建一些测试案例并像正常应用程序那样调试它
D. 执行测试探索以找到新案例并提高覆盖率
E. 审查生成的数据确认输出是否符合预期
在使用Coco的测试数据生成功能时需要考虑的一点是初始设置可能需要一些时间因为你需要验证算法提供的更多测试数据。但随着时间的推移你会发现它带来的好处绝对远大于投入。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86420.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!