前言
開(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)一些新的嘗試。