gpt4 book ai didi

unit-testing - 单元测试并发软件 - 你做什么?

转载 作者:行者123 更新时间:2023-12-04 00:59:24 32 4
gpt4 key购买 nike

随着软件变得越来越并发,您如何使用单元测试来测试类型的核心行为(不是并行行为,只是核心行为)?

在过去的美好时光里,你有一个类型,你调用它,然后检查它返回的内容和/或它调用的其他内容。

现在,您调用一个方法,实际工作被安排在下一个可用线程上运行;你不知道它什么时候真正开始并调用其他的东西——更重要的是,那些其他的东西也可能是并发的。

你如何处理这个问题?您是否抽象/注入(inject)并发调度程序(例如抽象任务并行库并在单元测试中提供假/模拟)?

你遇到过哪些对你有帮助的资源?

编辑

我已经编辑了问题以强调测试类型的正常行为(忽略任何用于利用多核的并行机制,例如 TPL)

最佳答案

免责声明:我在西雅图的一家小型初创公司 Corensic 工作。我们有一个名为 Jinx 的工具,旨在检测代码中的并发错误。在我们处于 Beta 阶段时,它现在是免费的,所以您可能想查看一下。 (http://www.corensic.com/)

简而言之,Jinx 是一个非常薄的虚拟机管理程序,当它被激活时,它会滑入处理器和操作系统之间。 Jinx 然后智能地获取执行切片并运行各种线程时序的模拟以查找错误。当我们发现会导致错误发生的特定线程计时,我们会在您的机器上使该计时“成为现实”(例如,如果您使用的是 Visual Studio,调试器将在该点停止)。然后,我们指出代码中导致错误的区域。 Jinx 没有误报。当它检测到一个错误时,它肯定是一个错误。

Jinx 可以在 Linux 和 Windows 上工作,并且可以在 native 代码和托管代码中使用。它与语言和应用程序平台无关,可以与您现有的所有工具一起使用。

如果您检查了它,请向我们发送有关哪些有效和无效的反馈。我们一直在一些大型开源项目上运行 Jinx,并且已经看到 Jinx 发现错误的速度比简单的压力测试代码快 50-100 倍。

关于unit-testing - 单元测试并发软件 - 你做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3362734/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com