首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用普通C语言的测试驱动开发:管理多个模块

使用普通C语言的测试驱动开发:管理多个模块
EN

Software Engineering用户
提问于 2012-09-02 08:26:45
回答 1查看 799关注 0票数 5

我刚开始接受测试驱动的开发,但我很喜欢它。然而,有一个主要问题使我无法有效地使用它。

我工作的嵌入式医疗应用程序,普通C,与安全问题。

假设您有一个模块A,它有一个我想测试的函数A_function()。该函数调用一个函数B_function,在模块B中实现。我希望将模块解耦,因此,正如James所教的,我创建了一个模拟模块B,该模块实现了B_function的模拟版本。

然而,总有一天,我必须用真正版本的B实现模块B_function。当然,这两个B_function不能生活在同一个可执行文件中,所以我不知道如何有一个唯一的“启动程序”来测试两个模块。

James的出路是在模块A中用一个函数指针替换对B_function的调用,该函数指针可以根据需要具有模拟或实际函数的值。然而,我在一个团队中工作,我无法证明这个决定是没有意义的,如果不是为了测试,也没有人要求我明确地使用测试驱动的方法。

也许唯一的出路是为每个模块生成不同的可执行文件。

有更聪明的解决方案吗?谢谢

EN

回答 1

Software Engineering用户

发布于 2012-09-03 00:22:02

基于您所描述的,我认为这是使用函数指针的一个可怕的原因。它将提高您调试、分析核心转储的能力,并将使未来的开发/维护复杂化。函数指针有它们的位置,但这不是其中之一。

我想你是从错误的角度来测试的。A_func依赖于B_func的存在才能运行。因此,如果没有B的实际实现,就无法真正测试A。安装一个模拟B_func只会为A_func生成一组有限的测试。根据定义,如果没有真正的A_func,您就不能完全使用B_func。

假设您没有处理模块包含的级联系列,那么适当的测试套件将有一些测试来执行B_func,然后还有一些额外的测试来执行A_func可以通过的变体。可以理解,在B_func的测试和来自A_func的B_func的间接测试之间可能存在一些冗余,但这通常并不是什么大问题。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/163360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档