2016-03-22 65 views
5

我在Modelica創建了一個組件庫,並希望對單元測試該軟件包的技術提供一些輸入。單元測試Modelica組件庫?

到目前爲止,我有一個測試包,由一組模型組成,每個組件一個。每個測試模型實例化一個組件,並將其連接到一些非常簡單的幫助器類,它們提供必要的輸入和輸出。

這在OMEditor交互使用時工作正常,但我在尋找與通更自動化的解決方案/失敗的標準等

我應該開始寫劇本.mos,或者是有其他/更好辦法 ?

感謝。

+0

我想知道[jModelica](http://www.jmodelica.org/api-docs/compliance_diagnostics/1.17/check /index.html)檢查其版本是執行單元測試的好方法......但他們如何做到這一點......?也許通過python腳本和檢查FMU? –

+0

以下是由達索在Modelica 2017會議上給出的一個很好的演示文稿:https://modelica.org/events/modelica2017/documents/3ds_TestingTutorialSlides.pdf – matth

回答

5

我怎麼樣Openmodelica測試結果看,見

無盡管他們知道他們是如何做的。很明顯,某些迴歸測試已經完成,並存儲了以前的結果,但不知道這是來自某個測試庫還是自制的。


在一般情況下,我覺得有點傷心/不理想,不存在「一」測試解決方案,每個人都可以/應該使用(例如參見在Python生態系統的鼻子或pytest),而不是大家似乎(或嘗試),並且您發現的只是一些Modelica會議文件(通常沒有一絲實現)或未知狀態的未保存的文件庫。

關閉我的頭頂,我發現/知道(一些已經在其他的答案鏈接在這裏)

  • OM testing
  • JModelica testing(似乎只對編譯器錯誤的測試?)
  • Xogeny test (對我來說,圖書館的一些測試本身就失敗了。此外,似乎並不包括測試運行)
  • MoUnit(由德國弗勞恩霍夫的東西,而不是公開可用? - 也許在OneWind/OneModelica)
  • UnitTesting(顯然是某種XogenyTest的前身此外,沒有源/實施來找到)
  • Optimica Testing Toolkit(顯然是commercial product by Modelon
  • SystemModeler VerificationTest
  • buildingspy Python包,用於除其他外regression testing。在伯克利Modelica建築物圖書館的保護下。 (僅用Dymola模擬)
  • Modelica_Requirements庫 - 定義模擬的要求。 (自稱是開源和實施,但顯然不是隨處可用)
  • ...我敢肯定有更多的我已經忘記了還是我不知道

這似乎像https://xkcd.com/927/病理情況。對於(非開發人員)用戶來說,要知道哪些是可選的,哪些是真正的好用/可用/可用/不可能...

(不是真正的測試,但也是相關的:使用ANTLR的解析和語義分析:modelica.org/events/Conference2003/papers/h31_parser_Tiller.PDF)

+0

我爲我們的圖書館製作了一個內部單元測試平臺。它看起來很像openModelica哈德森。我使用了一個文本模板來生成modelica腳本,並將測試結果解析爲JUNIT xml格式。在Dymola中,您可以直接從批處理或直接從Python腳本和JavaScripts調用API來運行.mos腳本。如果你對進一步的細節感興趣,請給我發一封電子郵件,我相信一些進一步的討論會讓我的東西成爲更好的平臺。 –

+2

非常詳細的清單 - 謝謝!我同意,沒有解決這個問題的通用解決方案(或一類解決方案)是一件令人遺憾的事情。我在.Net/C#世界做了很多工作,其中有許多測試解決方案都遵循相同的模式:xunit,nunit等等,每個都有VS集成測試運行器和自動構建支持。 Modelica有很多喜歡的東西,但缺乏好的devops工具對我來說非常重要。 –

+0

勞斯萊斯伯克利國家實驗室的[建築物庫](https://github.com/lbl-srg)是Modelica的單元測試和總體項目實施的另一個例子。將它添加到列表中可能會很好。 –

3

編寫.mos腳本將是一種方法,但Michael Tiller還有一個小型的概念驗證庫:XogenyTest,您可以使用它作爲基礎。

+1

感謝 - Michael Tiller的任何內容都值得關注。 –

+0

是的,但事實上,這個庫只有很少的提交,並沒有在3年內更新,這讓我覺得它並沒有真正發揮出色(否則人們會採用它)。 : -/ – Christoph

+0

克里斯托夫,它只是作爲一個概念證明,可能並不意味着一個完整的項目。它仍然可以用作有用的。 –

2

我更喜歡使用.mos腳本,當您將測試框架進一步集成到持續集成工具時,它的工作情況非常好。 BuildingPy就是一個很好的例子,雖然它沒有在CI工具中實現,但它仍然是一個很好的工具。

這裏有一個很好的框架設計的參考: UnitTesting: A Library for Modelica Unit Testing

+0

感謝您的鏈接 - 我會瀏覽。 –

1

如果你有數學和SystemModeler可以運行從數學模擬,並使用VerificationTest「功能」測試: VerificationTest[Abs[WSMSimulate["HelloWorld"]["x", .1] - .90] < .01]

然後可以在TestReport[]中模擬多個測試。