MBT測試思想在蘇寧蛙測的運用實踐分享
什麼是MBT測試設計?
MBT(Model based testing)中文名稱為基於模型的測試, 基於模型的測試屬於軟體測試領域的一種測試方法。
通常MBT的方法是需要搭配工具使用的,這樣在模型畫好的同時,可以自動生成對應的測試用例以及自動化指令碼。
MBT的測試設計理念,是基於需求的功能流程,然後進行建模,基於這個模型,才稱得上是測試需求。也就是說做MBT測試設計的前提是對需求和業務有深刻的認識。
為什麼要做MBT測試設計?
我們所熟悉的傳統測試設計方式主要分為等價類、邊界值、決策表、狀態轉換圖、決策樹、正交法等。傳統測試設計沒有一些工具的支援,主要依賴與測試人員的思考分析。
傳統測試設計流程
先介紹一下傳統測試設計的主要流程,測試人員首先進行需求評審後,這個過程是熟悉和了解需求的過程,然後開始進行測試設計,測試設計主要運用的方法是之前提到過的“等價類、邊界值、決策表、狀態轉換圖、決策樹、正交法等”,但是這些方法沒有現成的工具使用,通常情況測試人員需要用筆在紙上去畫一下,計算下場景組合,這些思考完成後,距離測試用例還有一段距離,此時測試人員會用在思維導圖軟體上把之前想到的場景列出來,之後再根據列出的場景逐一轉化成文字案例。
下面舉一個例子來說明一下:
以物流列印作業通知單功能為例,功能的場景為在採購入庫搜尋/列印頁面按照條件搜尋出條目點選列印操作。
·第一步業務梳理,該需求場景流程如下圖:
·第二步分析列印操作這步有哪些場景:
分析這步時需要依賴測試人員對需求的理解,對測試設計方法的運用,如下圖在思維導圖中梳理出所有場景,分別運用了流程場景設計、判斷法、正交法設計方法。
·第三步將列好的思維導圖編寫成測試用例
此時需要測試人員逐條去編寫測試用例,編寫步驟描述、預期輸出、預置條件、標記編號、名稱等資訊。全部完成後才輸出完整測試用例。
·第四步用例評審
用例評審也是測試設計中的關鍵一步,傳統用例評審時是測試人員把設計好的用例,一般是excel格式發給相關人員評審。
·第五步用例修改
評審後,根據評審意見需要對測試用例進行修改。改動可能是某一步驟修改,也可能是需要增加其中一個場景。
·第六步用例維護
測試用例不僅僅是編寫完成工作就結束,後續需求功能變動,都需要去維護修改測試用例,後續功能如果發生變更時則需要修改之前的測試用例,其中某一步驟功能變更後可能需要修改所有的測試用例。
傳統測試設計的存在痛點
由上述例子可以看出,測試人員在測試設計時,分析場景、編寫用例、評審用例以及用例後期維護都是比較耗費時間的。
·需求分析的痛點
上述傳統的測試設計中,測試人員只需在頭腦中理解大致的需求,即根據自己的理解輸出測試用例;
·分析場景的痛點
之前在做測試設計場景分析時,運用的設計方法對測試人員個人技術依賴比較高,不同的測試人員設計出來的測試用例質量也是存在差別,其中如正交法,如果正交因子比較多時,沒有工具支撐的情況下很容易遺漏。
·編寫用例的痛點
將思路轉化成用例這步,也是耗時比較長的一步,測試人員需要逐條編寫,工作相對枯燥,佔用時間長,往往用例的步驟描述時存在偷工減料的現象,用例編寫規範得不到落實。
·評審用例的痛點
評審用例時,評審人員拿到的是成型的用例,此時評審人員並不能看到設計者的當時的思路,以及運用的測試設計方法。逐條檢視完整用例才能明白這步用例具體的操作,同樣耗費評審人員的寶貴時間。
·後期維護的痛點
測試用例後期最怕的是用例維護,往往需求後續過程中一個小的最佳化點,都需要逐條修改用例,修改的時間甚至趕上了之前的編寫時間,往往很多測試人員都忽視了這一環節。
贅述了這麼多,既然傳統測試設計存在這麼多痛點,為什麼我們不去解決改變這些痛點呢?
所以我們要做的MBT測試設計工具,目的就是為了解決測試設計中的痛點,進而提升測試設計過程的效率。
MBT測試設計流程
還是繼續上文的例子,用MBT測試設計流程工具如何去做設計呢?
·首先拿到需求後對需求進行分析
首先需求分析是我們做測試設計的前提,這步是必不可少的一步,主要分析對應使用者是誰?解決什麼場景問題?
·明確被測特性的目的和價值
明確使用者時如何使用這個功能,存在哪些場景、邊界。從使用者使用角度,會發現很多因子,將因子記錄下來。
·功能點劃分
將整個需求分成多個功能點,每個模型內部主題明確,模型間沒有太多重複,需求要被完整覆蓋。
·對每個模型進行粗略設計
模型的業務流程是怎麼樣,有哪些分支因子在模型什麼位置,有哪些資料因子在模型什麼位置。
同樣我們會先梳理出業務主流程。用MBT進行測試建模是基於需求的功能流程,然後進行建模,基於這個模型,才稱得上是測試需求。鑑於此,就要求對於需求要有深刻的認知,所以熟悉業務是很必要的,若是業務不熟悉,那建模過程將會充滿艱難險阻。這樣也反向促進測試人員需要在需求和功能理解上下更多的功夫。
·建立MBT測試模型,對每個功能點進行進一步分析
經過分析在列印這步操作上會有一些業務場景分支。這時候在模型中對這一步進行細化分析。中間可能會用到場景劃分、判斷法、正交因子等設計方法,會在模型中體現出來。這樣當時運用了哪些方法,思路都會體現在模型中。
合作伙伴功能為SH的因子圖:
·透過工具基於模型生成測試用例
進一步去填寫步驟中對應的預置條件、測試步驟、預期結果。關鍵節點的公用步驟只需要填寫一次,這樣也減少了重複工作。
·MBT測試設計評審
測試設計評審時展現給評審人員的是模型圖,不再是一行行的用例記錄。評審人員能夠看到設計者當時的設計思路,用的什麼測試方法。
·測試用例的維護
用例維護與之前不同點在於,維護是在模型上維護,如果增加一條分支,或者其中一個步驟有修改,只需要修改對應的分支和步驟再次點選同步。後續需求功能點最佳化時,重新開啟對應的模型能看到之前業務流程圖,新參與的人員可以更快的熟悉對應的功能。
由上所述,對比MBT測試設計和傳統測試設計是不是有很大的不同呢。我們總結一下,MBT測試設計要求測試人員對需求理解更深,設計、編寫、評審以及維護都圍繞了一張模型圖,設計評審過程都比較透明。
MBT測試設計在蘇寧蛙測的運用
既然MBT測試設計對比傳統測試設計有很多優勢點,那為何很多測試人員沒有去用呢?其實是因為做MBT測試設計必須得依賴工具,市面上又沒有合適的工具,久而久之測試人員還是用的老方法。
現在蘇寧蛙測平臺結合業務場景,分析測試人員需求,研發出了一套MBT測試設計建模工具,下面介紹一下蘇寧蛙測平臺這款工具的特點。
工具使用介紹
在蘇寧蛙測平臺中MBT測試建模工具的入口在建立測試案例中,使用者可以在對應案例集的模組下右擊建立測試設計模型。
建模的操作非常簡單,測試人員只需要做簡單的拖拉連線的動作,在模型中梳理自己的思路。
·初始建模頁面
左側方有步驟、案例、多因子和批註。“步驟“對應到模型設計中的具體操作步驟,設計時將多個步驟和案例串聯起來,一條連線上會對應一個測試場景。
·編輯案例/步驟屬性選單
選擇步驟名,右擊步驟,可自定義步驟屬性;
編輯步驟視窗可以去細化測試步驟、預期、預置條件的描述。
·編輯後按儲存
經過一系列拖拉連線動作後,測試人員的模型就設計好了。
這時點選一下儲存,或者同步。就可以生成案例了。
·同步後生成案例
工具支援多種設計方式
前面提到的多種測試設計方法如流程圖、等價類、邊界值、正交法等,測試人員設計時主要是透過自己在紙上筆畫或者在腦海裡思考,沒有對應的工具。
而蛙測平臺的MBT測試設計工具也支援這些設計方法,模型中的多因子功能就運用了正交法,運用工具可用省去了測試人員在紙上筆畫和思考的過程。
操作舉例如下:拖動多因子到模型中,右擊多因子圖示,選擇開啟多因子。
·第一步:設定多因子json報文
注:如果多因子變數值是字串用””號表示,如使用者名稱[“張三”];
如果是數字就輸阿拉伯數字,如ID[123456];
·第二步:選擇組合因子數(預設因子數為2)
·校驗多因子json資料格式
·生成多因子組合
點選生成組合按鈕,輸入多因子變數名名稱,按確定按鈕後,生成多因子案例
工具特點與效果
平臺工具結合了多種測試設計方法,用模型表達需求,工具的支撐可以實現科學覆蓋。
模型設計透過拖拉連線方式,操作簡單,無需複雜的培訓學習成本。
蛙測平臺的測試設計建模工具正在多個業務中心推廣使用,試用過程中,經過對比測試人員用例寫作效率和用例維護效率上都有所提升。隨著廣泛推廣以及工具的持續最佳化效果將更明顯。
願景
MBT測試設計的目的在於幫助測試人員更方便的進行測試設計,後續會再做繼續演進,在設計的時候結合自動化,能夠在測試設計的時候也組合成對應的自動化,每一個步驟就對應自動化執行的一步。最終測試人員可以基於模型去執行自動化,並能評估產品質量。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31077337/viewspace-2156495/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 介面測試框架接入效能測試實踐分享框架
- 測試用例最佳實踐
- 介面自動化測試工程實踐分享
- 以資料思維和技能提升資料應用測試實踐
- junit測試工具運用
- Vue 應用單元測試的策略與實踐 04 - Vuex 單元測試Vue
- phpunit測試成功phpunit測試實踐程式碼PHP
- 蘇寧易購億萬規模效能測試實踐之 SQL 效能調優 - 楊婧SQL
- Vodafone A/B測試實踐
- 精準測試實踐
- Locust效能測試實踐
- 實用測試技能分享:jmeter+Jenkins效能測試自動化搭建JMeterJenkins
- 從應用看A/B測試——DataTester的最佳實踐
- 針對 “測試用例最佳實踐” 的說明
- 單元測試的入門實踐與應用
- Vue 應用單元測試的策略與實踐 02 - 單元測試基礎Vue
- Vue 應用單元測試的策略與實踐 03 - Vue 元件單元測試Vue元件
- Golang專案的測試實踐Golang
- DevOps 中的測試實踐dev
- DevOps中的測試實踐dev
- 敏捷測試的方法與實踐敏捷測試
- 88 郵箱測試左移和測試右移的落地實踐
- Java中的單元測試與整合測試最佳實踐Java
- Docker與自動化測試及其測試實踐Docker
- Twitter的A/B測試實踐(一):為什麼要測試以及測試的意義
- 實用測試技能分享:APP壓力穩定性測試之Monkey入門實戰APP
- 質量運營在智慧支付業務測試中的初步實踐
- google測試分享-分層測試Go
- 經驗分享丨功能測試漲薪路線,記一次簡單的效能測試實踐!
- Go 單元測試實踐Go
- HTTP介面測試實踐(一)HTTP
- 契約測試Pact實踐
- ChaosBlade混沌測試實踐
- Parasoft軟體測試實踐:什麼是左移測試?
- 自動化測試的最佳實踐
- 測試團隊的組建實踐
- 滲透測試對app安全測試實戰過程分享APP
- 中興通訊測試專案實踐:敏捷測試特性文件的交付過程實踐探討敏捷測試