基于模型的測(cè)試框架Pymodel介紹

前言

開(kāi)源框架PyModel可以實(shí)現(xiàn)基于模型的測(cè)試。下面簡(jiǎn)單介紹一下它的使用方法。

Windows系統(tǒng)安裝步驟

1、直接clone到本地目錄:

git clone git@github.com:jon-jacky/PyModel.git

2、進(jìn)入clone下來(lái)的目錄中,在PyMode文件夾下,執(zhí)行安裝命令:

python setup.py install
安裝到此就算完成了。但是每次執(zhí)行測(cè)試命令先都得cd到PyMode\bin 目錄下,執(zhí)行命令pymodel_paths

然后才可以在這個(gè)windows終端中執(zhí)行PyMode的各種測(cè)試命令。

比如cd到sample目錄下的具體項(xiàng)目目錄下,執(zhí)行trun test 來(lái)執(zhí)行示例中的測(cè)試。推薦查看samole目錄下的Socket示例。

PyModel中包含的幾個(gè)主要程序:pmt、pma、pmg、pmv

pmt:生成用例和跑用例

pmt的參數(shù)用法,可以在命令行中執(zhí)行pmt -h 查看

pmt可以執(zhí)行兩種類型的測(cè)試:offline testing 和 on-the-fly testing

offline testing:測(cè)試的順序和結(jié)果都是事先確定好的,一般的單元測(cè)試工具提供的都是這種類型的測(cè)試。

on-the-fly testing:需要Controllable actions(能被pmt調(diào)用到的:比如在Socket示例中的send_call和recv_call)和Observable actions(不能被pmt調(diào)用,是被被測(cè)系統(tǒng)調(diào)用,然后傳回來(lái)。比如Socket示例中的send_return和recv_return)

pma:根據(jù)模型生成有限狀態(tài)機(jī)(FSM)
pmg:根據(jù)FSM(通常由pma)來(lái)生成一個(gè).dot文件,文件里是畫(huà)圖語(yǔ)言,后續(xù)生成圖片用。

pmv:調(diào)用pma、pmg和dot命令,讓分析和顯示可以用一個(gè)命令完成。

怎么使用PyModel寫(xiě)測(cè)試?

1、實(shí)現(xiàn)模型程序:

示例:https://github.com/jon-jacky/PyModel/blob/master/samples/Socket/msocket.py

  • action函數(shù):會(huì)定義一些action函數(shù),表示系統(tǒng)的某項(xiàng)操作;

  • actionA_enable函數(shù):返回True or False 定義某個(gè)action能被操作的條件;

  • state:一個(gè)元組,元素是被測(cè)系統(tǒng)的狀態(tài);

  • actions:一個(gè)元組,元素action函數(shù);

  • cleanup:一個(gè)元組,元素是部分action函數(shù),做清理操作用的;

  • enablers:一個(gè)字典,定義了action和相應(yīng)action_enable函數(shù)之間的關(guān)系,當(dāng)需要執(zhí)行action函數(shù)前都得確保與之相對(duì)應(yīng)的action_enable函數(shù)返回True才可以;

  • domain:一個(gè)字典,限制了各個(gè)action的參數(shù)取值

  • Accepting函數(shù):返回True or False.定義系統(tǒng)是否處于可接受狀態(tài),在跑測(cè)試的時(shí)候測(cè)試結(jié)束條件可以用到。

  • Reset函數(shù):重置狀態(tài)

2.實(shí)現(xiàn)Test Harness/Steper/adapter

示例https://github.com/jon-jacky/PyModel/blob/master/samples/Socket/stepper_d.py

test_action:根據(jù)具體傳入的函數(shù)名字和參數(shù),在被測(cè)系統(tǒng)上做相應(yīng)操作。

3.定義Observable actions

示例:https://github.com/jon-jacky/PyModel/blob/master/samples/Socket/observables.py

4.寫(xiě)執(zhí)行具體測(cè)試命令的文件,比如叫test.py:

示例:https://github.com/jon-jacky/PyModel/blob/master/samples/Socket/test.py

主要就是調(diào)用pmt命令來(lái)執(zhí)行測(cè)試

最后使用 trun xxx即可執(zhí)行測(cè)試(xxx即4中的文件名稱)。

另外還可以寫(xiě)一些限制和復(fù)雜的選擇策略來(lái)豐富測(cè)試。

后記

本文主要介紹了基于模型的測(cè)試pymodel的具體使用方法,可以使用它來(lái)落地實(shí)現(xiàn)基于模型的測(cè)試,給自動(dòng)化測(cè)試帶來(lái)一些新的嘗試。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容