一勋又、概述
? ? MBT中文名稱為基于模型的測(cè)試,基于模型的測(cè)試屬于軟件測(cè)試領(lǐng)域的一種測(cè)試方法瓢谢。
二襟衰、背景
? ? ?軟件測(cè)試是一款軟件產(chǎn)品質(zhì)量的最后一道防線满败,是產(chǎn)品線上前必不可少的肤频、最重要的一環(huán)。每一款高質(zhì)量的軟件產(chǎn)品背后葫录,都蘊(yùn)含了大量的測(cè)試工作着裹。而且測(cè)試工作很可能是軟件開(kāi)發(fā)過(guò)程中最昂貴、勞動(dòng)最密集的工作米同。在設(shè)計(jì)測(cè)試用例的過(guò)程中骇扇,或多或少的存在著問(wèn)題,使得軟件測(cè)試結(jié)果不那么理想面粮。下面引入新的測(cè)試方法少孝,基本模型的測(cè)試,是自動(dòng)化測(cè)試的一個(gè)分支熬苍,它將測(cè)試用例的設(shè)計(jì)依托于被測(cè)系統(tǒng)的模型稍走,并基于該模型自動(dòng)生成測(cè)試用例的技術(shù)。從質(zhì)量保證的角度來(lái)看柴底,我們可以制定測(cè)試的內(nèi)容婿脸,但是無(wú)法保證測(cè)試會(huì)覆蓋所有可能的組合,而MBT則允許軟件開(kāi)發(fā)和測(cè)試人員柄驻,只關(guān)注建立系統(tǒng)的正確性及模型的規(guī)范性狐树,再通過(guò)專門(mén)的MBT工具根據(jù)不同的測(cè)試用例設(shè)計(jì)策略從系統(tǒng)模型生成可靠的測(cè)試用例。
? ? 與傳統(tǒng)測(cè)試相比鸿脓,優(yōu)點(diǎn):
? ? ? ? ?(1)測(cè)試用例的維護(hù)更輕松:維護(hù)好模型抑钟,無(wú)需關(guān)注測(cè)試用例的細(xì)節(jié)
? ? ? ? ?(2)軟件缺陷發(fā)現(xiàn)的更早:在構(gòu)建被測(cè)系統(tǒng)模型的過(guò)程中,需要對(duì)被測(cè)系統(tǒng)有比較全面的理解野哭,那么在早期建模過(guò)程中就可以發(fā)現(xiàn)被測(cè)系統(tǒng)中的一些問(wèn)題在塔,不需要等到執(zhí)行大量用例時(shí)才發(fā)現(xiàn);
? ? ? ? ?(3)測(cè)試自動(dòng)化的水平更高:建模后拨黔,MBT可以自動(dòng)生成測(cè)試用例蛔溃,不需要人工編寫(xiě)測(cè)試文檔;
? ? ? ? ?(4)測(cè)試覆蓋率變得更高,使得徹底的測(cè)試(即:窮盡測(cè)試)成為可能:傳統(tǒng)測(cè)試設(shè)計(jì)的過(guò)程中依賴人工城榛,MBT生成測(cè)試路徑時(shí)會(huì)避免人工設(shè)計(jì)測(cè)試用例時(shí)的思維局限性揪利,生成更豐富的測(cè)試路徑用例,但是是否需要執(zhí)行“徹底”的測(cè)試由漏測(cè)對(duì)業(yè)務(wù)的影響決定狠持。MBT只是從技術(shù)上提供了窮盡測(cè)試可能性疟位。
? ? ? ? ?(5)基于模型間接維護(hù)測(cè)試用例的方式更高效:傳統(tǒng)維護(hù)時(shí)需要依賴人工,需要耗費(fèi)大量的人力和時(shí)間成本喘垂,重新測(cè)試設(shè)計(jì)甜刻。使用MBT只需要維護(hù)好測(cè)試模型即可,生成測(cè)試用例的工作可以由MBT工具自動(dòng)完成正勒;
? ? ?缺點(diǎn)得院,即未廣泛推廣的原因:
? ? ? ? ?(1)學(xué)習(xí)成本較高:要求開(kāi)發(fā)人員、測(cè)試人員都精通建模章贞,和工具的選型祥绞;
? ? ? ? ?(2)使用MBT的初期投資較大:已有的MBT工具不一定適合自己產(chǎn)品,定制的話需要考慮擴(kuò)展性鸭限,和處理復(fù)雜邏輯蜕径,也就是要花費(fèi)大量時(shí)間和精力;
? ? ? ? ?(3)用例爆炸
? ?總結(jié)下败京,測(cè)試方法多種多樣兜喻,MBT和傳統(tǒng)測(cè)試相比,各有優(yōu)劣赡麦。如果一個(gè)應(yīng)用的任何組件都可以通過(guò)模型來(lái)模擬朴皆、通過(guò)驅(qū)動(dòng)程序來(lái)驅(qū)動(dòng),并可以通過(guò)測(cè)試結(jié)果來(lái)比較的話泛粹,那么這個(gè)應(yīng)用是MBT的最佳候選者遂铡。
??2.1?通用流程
?2.2? Model design (模型設(shè)計(jì))
?模型設(shè)計(jì),目的是用來(lái)為構(gòu)造測(cè)試用例而進(jìn)行的被測(cè)系統(tǒng)描述
(1)模型關(guān)注點(diǎn):
?? ?(2)?MBT模型分類:
2.3? Tests selection (測(cè)試需求選擇)
?? ? ? ? ? ? 指導(dǎo)測(cè)試用例生成器( test generation)如何生成用例
2.4? ?Tests? paths generation(測(cè)試用例生成)
? ? ? ? ? ?按模型及測(cè)試需求選擇來(lái)生成測(cè)試用例晶姊。GraphWalker就是完成這部分工作的一個(gè)開(kāi)源的java工具忧便。
2.5? ?Tests execution(執(zhí)行測(cè)試)
? ? ? ? ? ?執(zhí)行測(cè)試,并比較預(yù)期
2.6?FSM舉例:海拍客mallpc 登錄相關(guān)功能建模帽借,如下
一個(gè)箭頭,代表一次測(cè)試動(dòng)作超歌;
一個(gè)節(jié)點(diǎn)砍艾,代表一次測(cè)試驗(yàn)證;
2.7 常見(jiàn)工具:BPM-X巍举、fMBT脆荷、GraphWalker
三 、GraphWalker簡(jiǎn)介
?
?GraphWalker就是一個(gè)基于測(cè)試模型的用例生成工具,主要支持于FSM, EFSM模型蜓谋。它以有向圖的形式讀取模型梦皮,生成測(cè)試路徑,適合于多狀態(tài)以及基于事件驅(qū)動(dòng)的狀態(tài)轉(zhuǎn)換的系統(tǒng)桃焕。
四剑肯、使用GraphWalker建模
有向圖中,頂點(diǎn)(或節(jié)點(diǎn))表示一些期望的狀態(tài)观堂,并且邊(弧让网,箭頭,過(guò)渡)表示為了實(shí)現(xiàn)期望的狀態(tài)需要做的任何動(dòng)作师痕;
?4.1 建模工具:yEd
4.2?建模規(guī)則1
? ? ? 4.3 建模規(guī)則2
? ? 4.4 建模keywords
4.5 支持多模型:
? ? ?GraphWalker可以在一個(gè)會(huì)話中使用幾個(gè)模型溃睹。這意味著在生成路徑時(shí),GraphWalker可以選擇跳出一個(gè)模型到另一個(gè)模型胰坟。當(dāng)將不同的功能分為多個(gè)模型時(shí)因篇,這是非常方便的。
? ? ?
多模型offilne運(yùn)行舉例:
java -jar graphwalker-cli-4.0.0-SNAPSHOT.jar -d all offline -m Model_A.graphml random(edge_coverage(100)) -m Model_B.graphml random(edge_coverage(100)) -m Model_C.graphml random(edge_coverage(100))?-m Model_D.graphml random(edge_coverage(100)) –o
當(dāng)路徑生成到達(dá)模型A中的頂點(diǎn)v_B時(shí)笔横,它必須考慮關(guān)鍵字SHARED:B ..這將告訴GraphWalker使用相同的名稱搜索所有其他模型的同一個(gè)關(guān)鍵字:B.在我們的例子中竞滓,只有一個(gè),它在模型B中狠裹。
現(xiàn)在GraphWalker決定是跳出模型A虽界,進(jìn)入模型B中的頂點(diǎn)v_B,還是留在模型A中涛菠。這個(gè)決定是基于隨機(jī)的莉御。
多模型特性:
五、路徑生成器和結(jié)束條件
六俗冻、GraphWalker工作方式
以作為第三方庫(kù)為例:使用GraphWalker第三方庫(kù)實(shí)現(xiàn)模型自動(dòng)化測(cè)試
七礁叔、GraphWalker命令行:此處省略
八、Restful或WebSocket服務(wù)的區(qū)別:此處省略
九迄薄、Web Socket API接口:此處省略
十琅关、REST API接口:此處省略
十一、GraphWalker源碼:
GraphWalker工具核心:graphwalker-core
參考資料:官網(wǎng)http://graphwalker.github.io/
備注:
FSM :有限狀態(tài)機(jī)?Finite State Machine
EFSM:擴(kuò)展有限狀態(tài)機(jī)