【问题标题】:Unit testing Modelica component library?单元测试 Modelica 组件库?
【发布时间】:2016-07-09 12:10:30
【问题描述】:

我正在 Modelica 中创建一个组件库,希望能提供一些关于对包进行单元测试的技术。

到目前为止,我有一个测试包,由一组模型组成,每个组件一个。每个测试模型都会实例化一个组件,并将其连接到一些非常简单的帮助类,这些帮助类提供必要的输入和输出。

在 OMEditor 中以交互方式使用它时效果很好,但我正在寻找具有通过/失败标准等的更自动化的解决方案。

我应该开始编写 .mos 脚本,还是有其他/更好的方法?

谢谢。

【问题讨论】:

  • 我想知道jModelica 检查其版本的方式是否代表了执行单元测试的好方法......但是他们是如何做到的......?也许通过 python 脚本和检查 FMU?
  • 这是 Dassault 在 Modelica 2017 会议上的精彩演示:modelica.org/events/modelica2017/documents/…

标签: unit-testing modelica openmodelica


【解决方案1】:

编写 .mos 脚本是一种方法,但还有一个由 Michael Tiller 编写的小型概念验证库:XogenyTest,您可以将其用作基础。

【讨论】:

  • 谢谢 - Michael Tiller 的任何作品都值得一看。
  • 是的,但是这个库只有很少的提交并且在 3 年内没有更新的事实让我认为它并没有很好地工作(否则人们会采用它)。 :-/
  • Christoph,它只是作为概念验证完成的,可能并不意味着是一个完整的项目。它仍然可以发挥作用。
  • 是的,我收集到了,但我想到的问题是:如果它确实有用,为什么不进一步开发/维护/开发成一个完整的包?无论如何,它在我的清单上需要一段时间来评估......
【解决方案2】:

我更喜欢使用.mos 脚本,当您进一步将测试框架集成到持续集成工具中时,它会很好地工作。 BuildingPy 就是一个很好的例子,虽然它没有在 CI 工具中实现,但它仍然是一个很好的工具。

这是一个好的框架设计的参考: UnitTesting: A Library for Modelica Unit Testing

【讨论】:

  • 感谢您的链接 - 我会浏览一下。
【解决方案3】:

如果您有 Mathematica 和 SystemModeler,您可以从 Mathematica 运行模拟并使用VerificationTest“函数”进行测试: VerificationTest[Abs[WSMSimulate["HelloWorld"]["x", .1] - .90] < .01]

然后可以在TestReport[] 中模拟多个测试。

【讨论】:

    【解决方案4】:

    我喜欢 Openmodelica 测试结果的样子,请参阅

    不过,不知道他们是如何做到的。显然已经完成了某种回归测试,存储了以前的结果,但不知道是来自某个测试库还是自制的。


    总的来说,我觉得这有点可悲/次优,没有每个人都可以/应该使用的“唯一”测试解决方案(例如,python 生态系统中的鼻子或 pytest),相反,每个人似乎都在编造他们的自己的解决方案(或尝试),而您发现的只是一些 Modelica 会议论文(通常没有实现的痕迹)或未知状态的未维护库。

    在我的脑海中,我发现/知道(一些已经在此处的其他答案中链接)

    这似乎是https://xkcd.com/927/ 的病态实例。 (非开发人员)用户不太可能知道要选择哪些,哪些实际上是好的/可用的/可用的/...

    (不是真正的测试,但也相关:使用 ANTLR 进行解析和语义分析:modelica.org/events/Conference2003/papers/h31_parser_Tiller.‌​pdf)

    【讨论】:

    • 我为我们的库制作了一个内部单元测试平台。它看起来很像 openModelica 哈德森。我使用文本模板生成 modelica 脚本并将测试结果解析为 JUNIT xml 格式。在 Dymola 中,您可以直接从批处理运行 .mos 脚本,也可以从 python 脚本和 javascripts 直接调用 API。如果您对更多细节感兴趣,请给我发电子邮件,我相信进一步的讨论将使我的东西成为一个更好的平台。
    • 非常详细的清单 - 谢谢!我同意很遗憾没有解决这个问题的通用解决方案(或解决方案类别)。我在 .Net/C# 世界中做了很多工作,其中有许多测试解决方案都遵循相同的模式:xunit、nunit 等,每个都有 VS 集成测试运行器和自动构建支持。 Modelica 有很多值得喜欢的地方,但缺乏好的 devops 工具对我来说是一个很大的缺点。
    • Modelica 的单元测试和整体项目实施似乎做得很好的另一个例子是来自劳伦斯伯克利国家实验室的Buildings Library。将其添加到列表中可能会很好。
    • @Christoph 你已经知道了这一切,但你可能仍然喜欢这个演示文稿:docs.google.com/presentation/d/…
    • 可用测试解决方案的详细摘要也可以在modelica.org/events/modelica2017/documents/… 中找到。该工具包含安装和如何设置测试的简要指南,可免费获得。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 2019-04-18
    • 2011-10-23
    • 2016-10-19
    • 1970-01-01
    • 2023-01-03
    相关资源
    最近更新 更多