您的位置:軟件測試 >> 測試技術(shù) >> 測試精品文章
基于模型的測試的測試設(shè)計(jì)
作者:TeemuKanstrén(澤眾軟件原創(chuàng)翻譯) 發(fā)布時(shí)間:[ 2014/4/22 14:18:27 ] 推薦標(biāo)簽:軟件測試 測試技術(shù) 自動(dòng)化測試設(shè)計(jì)

  注意,圖1中的試驗(yàn)?zāi)P捅簧晕⒑喕蕴峁┮粋(gè)測試模型中的一些核心要素的例子。測試這樣一個(gè)系統(tǒng)的真實(shí)模型將包含更多步驟,動(dòng)作和檢查,以及更多的規(guī)定。例如,我們需要來啟動(dòng)和終止調(diào)動(dòng)的步驟,注銷終端步驟,移動(dòng)它們的網(wǎng)絡(luò)的步驟,啟動(dòng)數(shù)據(jù)傳輸不同類型的步驟,等等更多。
  至于這種模型中的規(guī)定,我們應(yīng)該保持終端列能有效調(diào)用,消息列可以發(fā)送和接收,并保證一切有效數(shù)據(jù)傳輸。并且應(yīng)在測試先知中用類似于圖1中檢查注冊(cè)終端的方式去再次堅(jiān)持這項(xiàng)新規(guī)定。本文的其余部分將把示例模型引用為一個(gè)擴(kuò)展版本。一個(gè)測試生成器可采取不同的方法從一個(gè)測試模型生成測試用例。對(duì)于OSMO Tester生成器及圖1所示測試模型,該模型可能如[ ACM ]所述那樣被直觀地描述為一系列規(guī)則和動(dòng)作。該模型定義了一組可以在被測系統(tǒng)上進(jìn)行的動(dòng)作(在OSMO Tester標(biāo)記中用作@TestStep的一部分)。當(dāng)這些動(dòng)作中的每一個(gè)都被允許時(shí),一組規(guī)則(OSMO Tester標(biāo)記中的@Guard)定義了。規(guī)則允許的話,生成器以不同的方式組合這些動(dòng)作以生成測試用例。整個(gè)測試模型可以被視作用來描述大量的可能測試用例集。隨后測試生成器從(使用一些由用戶定義的覆蓋準(zhǔn)則的)這個(gè)模型去生成測試用例?捎脴(biāo)準(zhǔn)的變化取決于所使用的工具,但一些例子包含了在模型中覆蓋用戶指定要求(手動(dòng)標(biāo)記的特定部分或路徑),覆蓋動(dòng)作組合,并覆蓋不同動(dòng)作的各種數(shù)據(jù)值。(可能已被用來為我們的示例模型指導(dǎo)生成器的)覆蓋準(zhǔn)則的一些例子包括:注冊(cè)終端的數(shù)量,調(diào)用終端的數(shù)量,注冊(cè)卻自由(不處于調(diào)用狀態(tài))的終端的數(shù)量,及動(dòng)作結(jié)果配對(duì)。例如,它可以被定義為對(duì)將“零”,“一”和“多”類別都覆蓋到終端類型數(shù)中的每一個(gè)很感興趣。動(dòng)作覆蓋可以與這些數(shù)值中的一些進(jìn)一步配對(duì),以激勵(lì)生成器來生成步驟,諸如注銷一個(gè)調(diào)用終端和注銷一個(gè)不同配置下的非調(diào)用終端。有了更嚴(yán)格/松散的覆蓋目標(biāo),以及從自由度變?yōu)樵跍y試用例中添加隨機(jī)性,那么生成機(jī)可以被用來生成一組更小/更大的測試用例。
  圖2是一個(gè)(含有圖1模型中的一個(gè)測試生成流程的四個(gè)不同點(diǎn)的)例子。在點(diǎn)一( 1 )中 ,模型程序被5個(gè)未注冊(cè)終端初始化了。在點(diǎn)二(2 )中,生成由幾個(gè)步驟推進(jìn),且三個(gè)終端已被注冊(cè)。在點(diǎn)三( 3 )中 ,幾個(gè)步驟再次被通過且兩個(gè)注冊(cè)終端有了有效調(diào)用(兩者間的單獨(dú)調(diào)用)。在點(diǎn)四( 4 )中,兩個(gè)以前未注冊(cè)的終端已經(jīng)被注冊(cè)了,前面調(diào)用的一部分已經(jīng)退出,已用兩個(gè)終端建了一個(gè)新的調(diào)用。

圖2.測試生成流程示例

   它真正測試哪些東西呢?
  測試生成的一個(gè)常見問題是:它真正測試什么呢?如果我們只是無休止地生成測試數(shù)據(jù)或測試步驟卻對(duì)結(jié)果的正確性一無所知,那還有什么意義呢?在基模測試中,測試模型也可以用來檢查測試用例。圖1中這是由模型中@Post注釋的方法舉例說明的。生成器在所有的測試步驟兩兩間(后)執(zhí)行這個(gè)過程,以證明被測系統(tǒng)的情況與測試模型的情況一致。例如,在圖2的點(diǎn)二( 2 )中,它會(huì)檢查是否測試模型中被標(biāo)記為注冊(cè)的三個(gè)終端在被測系統(tǒng)中也都處于相同情況。它還要檢查其他兩個(gè)沒有被注冊(cè),而且他們都沒有正在進(jìn)行有效調(diào)用。
  類似地,更具體的檢查可以嵌入到任何可在其中獲得一些具體結(jié)果的行動(dòng)中去。
  如果需要的話,這些檢查可以是不同粒度的,且可以在按量進(jìn)行,因?yàn)椴幌袷止つ_本,他們不需要手工編寫每個(gè)測試用例的每一步,卻可以由測試生成器進(jìn)行,時(shí)間間隔與時(shí)間長短都不限。
  當(dāng)已經(jīng)創(chuàng)建了一個(gè)測試模型,測試生成器用來從這些模型生成測試用例。除了用指定的覆蓋準(zhǔn)則為指導(dǎo)從整體模型生成測試,很多MBT工具還提供了一種手段來指導(dǎo)生成器用各種形式的用戶定義場景去關(guān)注特定部分。例如,有了(有調(diào)用等的)擴(kuò)展示例模型,我們或許還想從某個(gè)角度專注分析管理終端注冊(cè)的網(wǎng)絡(luò)服務(wù)器。要做到這一點(diǎn),用戶可以創(chuàng)建一個(gè)場景,確保只有測試步驟與該場景(如注冊(cè)和注銷)相關(guān)聯(lián)。
  工具的具體場景定義語言,可以用來建立這樣的場景。要建一個(gè)特定測試配置,測試模式可用指定終端實(shí)例被參數(shù)化。
  圖3說明了為我們只允許注冊(cè)和注銷步驟的示例模型建立一個(gè)場景,且每個(gè)步驟都必須在每個(gè)生成的測試用例中出現(xiàn)至少兩次。
  更真實(shí)的例子會(huì)包括更多步驟,更多部分,并且可能還包括用以驅(qū)動(dòng)SUT到場景起點(diǎn)的啟動(dòng)腳本。
  這樣一個(gè)場景甚至可以用來定義一個(gè)特定動(dòng)作序列,該序列將被用作一個(gè)啟動(dòng)腳本以生成一個(gè)類似于手工編寫測試用例的純手工特定測試用例,而不是當(dāng)模型和其他生成的測試用例一樣變化時(shí)將被更新。

圖3.使用OSMOTester的場景定義示例

上一頁123下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd