基於模型的測試 (Mode base testing)

參考網址:关于基于模型的测试的那些事

文中提到如何來建模型,要先將大的系統拆解成小的部分,就像軟體測試之道裡面提到的,『太小,才是一個好的模型適當的大小』,從小模型開始瞭解系統的功能,在慢慢的組成整個系統的架構。文中也舉例如何進行數據模型與狀態機模型,在狀態機模型中,我們可以看出其實可以測試的路徑有很多,所以我們必須先想說我們的覆蓋目標是什麼?然後透過狀態機模型來建立我們的測試。所以我們之前畫的FSM 也要繼續維護,也許有一天我們可以利用它來建立我們測試。

參考網址:浅谈基于模型的测试

文中提到說,MBT 並不致力於讓待測系統與規格書在所有情況下都保持一致,而是系統化的從模型產生測試案例,再以測試案例去操作待測系統,看系統行為是否與模型一致。
在 MBT 一開始,要先需求開始建模,建立一個機器可讀的模型,再藉由分析模型,來生成測試案例(包括提供給待測系統的輸入與期望輸出),然後觀察系統的回應與期望的是否相同。
但是有時候一個失敗的測試案例也不見得一定是問題,有可能是模型的行為錯了,或是更進一步的,一開始需求就是錯的,所以當到後面發現有測試案例失敗了,就要再進一步分析。

參考網址:基于模型的测试简介(一)

MBT 的過程需要先建立模型,再來生成測試案例後,去執行測試,分析結果,不只是找到 bug ,也可以透過模型來分析是否是一開始的需求需要做改變。透過文中那張圖,可以很清楚地看到一個 MBT 的流程,我覺得將系統畫成模型也可以讓我們更瞭解系統的細節功能。(網址一開始可能會是亂碼,要去調整一下編碼)

參考網址:Model-Based Testing

文中提到,如果是根據系統行為而建的模型,稱為 『system model driven testing』,如果是根據測試的策略而建的模型,稱為『tester model driven testing』,也提到說,因為 system model 不需要去涉及 test design ,他是根據實際系統行為而建立的,所以讓開發人員與測試人員可以很容易的共享與討論,此外,因為 system model 是由不同的 compositional 組成,所以很容易去 reuse 他們,並且提到為什麼 tester model 不是 compositional。

參考網址:基于模型的软件测试方法研究

文中提到,對待測軟體不同的行為要用不同的模型去描述,例如:控制流程圖,數據流程圖可以表達程式的結構關係,而狀態機則可以表示系統外部行為。

也提到說,在建模的過程中,必須要先去分析理解待測的軟體
(必須了解需求規格,或是內部數據的交流等),
再來,選擇合適的測試模型(不同應用領域可以使用不同的模型,或是根據模型特性來選擇)。最後使用狀態機模型的測試舉例如何該去建立測試的模型。

參考網址:Model-Based Test Engine Benefit #1: Simplified automation creation and maintenance

這篇文章提到了一些 MBT 的優點,原本的測試腳本可能比較容易紀錄,但是當應用程式有什麼改變時,卻難以維護,使用 MBT 當應用程式有什麼改變時,可以很快地去修正模型,可以讓測試人員不會花很多時間在維護測試腳本上面。
也提到說,因為 MBT 的預期結果是從執行測試操作裡面分離出來的,所以容易去 reuse 。
感覺上 MBT 因為先是透過系統去建出模型,所以一開始可以讓我們更瞭解待測系統,再來,測試案例的輸入與預期輸出都是依據模型去創建的,所以當待測系統有所更動時,也可以較快的去反映,並重新調整模型與測試案例。

參考網址:Model-Based Test Engine Benefit #4: Generate and execute new tests – and find new bugs

回歸測試可以確保我們的基本功能正常,但是卻很難找到新的問題,當測試案例一次又一次的執行原本的東西時,要找到新的問題會比較難,文中提到 MBT 的另外優點,可以透過隨機的數據或是路徑來產生新的測試案例,不會一直重複的執行相同的路徑或數據,較容易發現到一些手工測試不會走到的地方。
不管我們使用什麼測試技術或方法來測試,一定不可能涵蓋到所有的可能性,所以我們不能只使用單一的方法,而是要使用不同的方法與技術來測試我們的程式。

參考網址:Software Testing Types: Model-Based Testing

文中提到,MBT 可以在開發人員還沒開始實作時就先部分的建立模型,也可以讓測試在早期就先開始進入開發過程,透過與開發人員一起討論,建立模型,也可以讓測試人員與開發人員共同討論,並知道哪些可能是需要注意的地方。

廣告

發表迴響

Please log in using one of these methods to post your comment:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s