基于模型測(cè)試01

一勋又、概述

? ? 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ī)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末讥蔽,一起剝皮案震驚了整個(gè)濱河市涣易,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌冶伞,老刑警劉巖新症,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異响禽,居然都是意外死亡徒爹,警方通過(guò)查閱死者的電腦和手機(jī)荚醒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)隆嗅,“玉大人界阁,你說(shuō)我怎么就攤上這事∨衷” “怎么了泡躯?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)禀晓。 經(jīng)常有香客問(wèn)我精续,道長(zhǎng),這世上最難降的妖魔是什么粹懒? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任重付,我火速辦了婚禮,結(jié)果婚禮上凫乖,老公的妹妹穿的比我還像新娘确垫。我一直安慰自己,他們只是感情好帽芽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布删掀。 她就那樣靜靜地躺著,像睡著了一般导街。 火紅的嫁衣襯著肌膚如雪披泪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,708評(píng)論 1 305
  • 那天搬瑰,我揣著相機(jī)與錄音款票,去河邊找鬼。 笑死泽论,一個(gè)胖子當(dāng)著我的面吹牛艾少,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播翼悴,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼缚够,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了鹦赎?” 一聲冷哼從身側(cè)響起谍椅,我...
    開(kāi)封第一講書(shū)人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎古话,沒(méi)想到半個(gè)月后毯辅,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡煞额,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片膊毁。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡胀莹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出婚温,到底是詐尸還是另有隱情描焰,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布栅螟,位于F島的核電站荆秦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏力图。R本人自食惡果不足惜步绸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吃媒。 院中可真熱鬧瓤介,春花似錦、人聲如沸赘那。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)募舟。三九已至祠斧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拱礁,已是汗流浹背琢锋。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留觅彰,地道東北人吩蔑。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像填抬,于是被迫代替她去往敵國(guó)和親烛芬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容