當前位置:編程學習大全網 - 源碼下載 - 基於模型測試01

基於模型測試01

壹、概述

MBT中文名稱為基於模型的測試,基於模型的測試屬於軟件測試領域的壹種測試方法。

二、背景

? 軟件測試是壹款軟件產品質量的最後壹道防線,是產品線上前必不可少的、最重要的壹環。每壹款高質量的軟件產品背後,都蘊含了大量的測試工作。而且測試工作很可能是軟件開發過程中最昂貴、勞動最密集的工作。在設計測試用例的過程中,或多或少的存在著問題,使得軟件測試結果不那麽理想。下面引入新的測試方法,基本模型的測試,是自動化測試的壹個分支,它將測試用例的設計依托於被測系統的模型,並基於該模型自動生成測試用例的技術。從質量保證的角度來看,我們可以制定測試的內容,但是無法保證測試會覆蓋所有可能的組合,而MBT則允許軟件開發和測試人員,只關註建立系統的正確性及模型的規範性,再通過專門的MBT工具根據不同的測試用例設計策略從系統模型生成可靠的測試用例。

與傳統測試相比,優點:

?(1)測試用例的維護更輕松:維護好模型,無需關註測試用例的細節

?(2)軟件缺陷發現的更早:在構建被測系統模型的過程中,需要對被測系統有比較全面的理解,那麽在早期建模過程中就可以發現被測系統中的壹些問題,不需要等到執行大量用例時才發現;

?(3)測試自動化的水平更高:建模後,MBT可以自動生成測試用例,不需要人工編寫測試文檔;

?(4)測試覆蓋率變得更高,使得徹底的測試(即:窮盡測試)成為可能:傳統測試設計的過程中依賴人工,MBT生成測試路徑時會避免人工設計測試用例時的思維局限性,生成更豐富的測試路徑用例,但是是否需要執行“徹底”的測試由漏測對業務的影響決定。MBT只是從技術上提供了窮盡測試可能性。

?(5)基於模型間接維護測試用例的方式更高效:傳統維護時需要依賴人工,需要耗費大量的人力和時間成本,重新測試設計。使用MBT只需要維護好測試模型即可,生成測試用例的工作可以由MBT工具自動完成;

?缺點,即未廣泛推廣的原因:

?(1)學習成本較高:要求開發人員、測試人員都精通建模,和工具的選型;

?(2)使用MBT的初期投資較大:已有的MBT工具不壹定適合自己產品,定制的話需要考慮擴展性,和處理復雜邏輯,也就是要花費大量時間和精力;

?(3)用例爆炸

總結下,測試方法多種多樣,MBT和傳統測試相比,各有優劣。如果壹個應用的任何組件都可以通過模型來模擬、通過驅動程序來驅動,並可以通過測試結果來比較的話,那麽這個應用是MBT的最佳候選者。

2.1? 通用流程

2.2? Model design (模型設計)

? 模型設計,目的是用來為構造測試用例而進行的被測系統描述

(1)模型關註點:

?(2)?MBT模型分類:

2.3? Tests selection ( 測試需求選擇)

指導測試用例生成器( test generation)如何生成用例

2.4 Tests? paths generation(測試用例生成)

按模型及測試需求選擇來生成測試用例。GraphWalker就是完成這部分工作的壹個開源的java工具。

2.5 Tests execution(執行測試)

執行測試,並比較預期

2.6? FSM舉例:海拍客mallpc 登錄相關功能建模,如下

壹個箭頭,代表壹次測試動作;

壹個節點,代表壹次測試驗證;

2.7 常見工具 :BPM-X、fMBT、GraphWalker

三 、GraphWalker簡介

?GraphWalker就是壹個基於測試模型的用例生成工具,主要支持於FSM, EFSM模型。它以有向圖的形式讀取模型,生成測試路徑,適合於多狀態以及基於事件驅動的狀態轉換的系統。

四、使用GraphWalker建模

有向圖中,頂點(或節點)表示壹些期望的狀態,並且邊(弧,箭頭,過渡)表示為了實現期望的狀態需要做的任何動作;

4.1 建模工具:yEd

4.2?建模規則1

? 4.3 建模規則2

4.4 建模keywords

4.5 支持多模型:

?GraphWalker可以在壹個會話中使用幾個模型。這意味著在生成路徑時,GraphWalker可以選擇跳出壹個模型到另壹個模型。當將不同的功能分為多個模型時,這是非常方便的。

?

多模型offilne運行舉例:

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

當路徑生成到達模型A中的頂點v_B時,它必須考慮關鍵字SHARED:B ..這將告訴GraphWalker使用相同的名稱搜索所有其他模型的同壹個關鍵字:B.在我們的例子中,只有壹個,它在模型B中。

現在GraphWalker決定是跳出模型A,進入模型B中的頂點v_B,還是留在模型A中。這個決定是基於隨機的。

多模型特性:

五、路徑生成器和結束條件

六、GraphWalker工作方式

以作為第三方庫為例: 使用GraphWalker第三方庫實現模型自動化測試

七、GraphWalker命令行:此處省略

八、Restful或WebSocket服務的區別:此處省略

九、Web Socket API接口:此處省略

十、REST API接口:此處省略

十壹、GraphWalker源碼:

GraphWalker工具核心:graphwalker-core

參考資料:

官網 http://graphwalker.github.io/

備註:

FSM :有限狀態機?Finite State Machine

EFSM:擴展有限狀態機

  • 上一篇:當年為什麽有人說MC抄襲泰拉瑞亞?
  • 下一篇:個人web開發asp.netcore和php7之間如何選擇?
  • copyright 2024編程學習大全網