PyModel是一個用Python編寫的基于模型的開源測試(所謂的MBT)工具。
在基于模型的測試中士八,我們編寫一個模型,然后根據(jù)這個模型產(chǎn)生用例梁呈。模型也會檢查測試輸出婚度。基于模型的測試之所以有用是因為測試用例如此之多官卡,不太可能全部都手工編寫蝗茁。
在PyModel的所包含的例子中可以看到,有為網(wǎng)絡socket建立的模型和相應的測試腳本寻咒,一個通信協(xié)議哮翘,嵌入式控制器,一些數(shù)據(jù)結構毛秘,一個多線程的程序和一個web程序饭寺。
PyModel包含一個驗證模型的分析器阻课,可視化它們的行為,并且檢查它們的安全屬性艰匙。
PyModel可以生成類似于單元測試的離線測試限煞,但是應用PyModel的典型方式是在運行中進行測試。使用這種方式员凝,test runner會在測試運行時進行計算晰骑,所以test runner可以盡可能的長。在運行中進行測試可以解決被測系統(tǒng)的不確定性和異步問題绊序。
PyModel可以使用組合來合并模型硕舆,通過場景編程來指導測試,并且根據(jù)策略編程來確定重點測試范圍骤公。
PyModel提供了3個主要的程序:
pma,PyModel分析器抚官,生成有限狀態(tài)機(FSM)并且通過探索模型程序來計算屬性,F(xiàn)SM阶捆,測試套件凌节。
pmg,PyModel制圖工具洒试,從FSM生成一個文件或者圖形化的命令倍奢,生成的結果可以被Graphviz dot命令處理然后生成多種格式的圖形化文件,比如
svg,pdf和ps垒棋。
pmt卒煞,PyModel測試執(zhí)行程序,顯示測試路徑叼架,生成離線測試畔裕,執(zhí)行離線測試,生成和執(zhí)行在運行中測試乖订。
第四個程序是pmv扮饶,PyModel查看工具,可以調(diào)用pma,pmg和Graphiz dot命令(來顯示pmg生成的圖形)乍构,pmv非常簡潔和方便甜无,所以分析和展示只需要一條命令就可以完成。
使用pma和pmg(或者pmv)來可視化和預覽pmt中定義的行為哥遮。pma所創(chuàng)建的圖的每一條路徑都會被pmt生成的test run覆蓋到岂丘,調(diào)用pma和pmt的參數(shù)完全一樣。單獨的pma工具在可視化和安全分析方面也非常有用昔善。
正在開發(fā)中的PyModel可以從Github上找到https://github.com/jon-jacky/PyModel元潘。
PyModel需要使用Python2.6以上的版本(因為用到了?itertools.product)
PyModel的開發(fā)受到了NModel的影響畔乙,但并非NModel的翻譯版本或者再實現(xiàn)君仆。