Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

淺談 Model based testing 與 graphwalker 導入心得 20160127

539 vues

Publié le

淺談 Model based testing 與 graphwalker 導入心得

Publié dans : Logiciels
  • Soyez le premier à commenter

淺談 Model based testing 與 graphwalker 導入心得 20160127

  1. 1. 淺談 Model-Based Testing & Graphwalker 導入心得 scott.hsiao@gmail.com 12/31/2015
  2. 2. 你印象中的測試是什麼?
  3. 3. 測試是... 程式怎麼可能有問題,根本浪費時間? 一直退件,阻擋產品上市,把我搞得很黑的討厭鬼? 要動用好多人力物力,但好像沒什麼產出跟效益? 要寫好多測試項目,是沒什麼技術性的工作?感覺很麻煩? 進度落後、交期很趕,那就壓縮測試時間就好? 交給客戶(白老鼠)全民公測就好? 出貨後客戶端出大包時,拿來擋子彈的對象?
  4. 4. 優點: 重用性、擴充性、靈活 性.... 大家每天在碰的東西 這不用多做解釋了吧.... 物件導向開發
  5. 5. 當程式都用物件導向 開發了... 測試還停留在程序語 言時代 回頭看看主流的測試技法
  6. 6. 「測項標題」產生器 看看這個例子: 某檔案總管的清單功能支援 X種語系,Y個檔案格式,Z個 使用者操作手勢, 請問要完整測試會有幾種測 項排列組合? 如果再考慮N種系統、M種背 景事件呢?
  7. 7. 測試步驟跟測試項目清單 僵固(沒人 性)的步驟 如老太婆裹 腳布的超長 測項清單
  8. 8. 無法避免的緊箍咒 人工測試曠日廢時! 永遠不足的測試覆蓋率! 不斷成指數成長的維護成本!
  9. 9. 那假如導入自動測試呢? 測試設備成本跟工程師人工成本還是跑不掉
  10. 10. 問題解決了一半,緊箍咒還是存在 人工測試曠日廢時! 永遠不足的測試覆蓋率! 不斷成(指數)倍數成長的維護成本!
  11. 11. 人家都上太空了,我們還在殺豬公
  12. 12. 如愚公移山,如夸父追日,難矣
  13. 13. 測試也可以很酷!?
  14. 14. 寫過 Android 都知道的 猴子測試 (Monkey Testing) ● 隨機產生點擊、輸入、手勢等 動作 ● 可自訂各種事件比例、間隔時 間 無腦有效但常常鬼打牆 Android 平台限定 猴子測試 (Monkey Testing)
  15. 15. 有沒有能夠完整驗證物件設計, 又具有猴子無腦特性的測試工具?
  16. 16. Model-Based Testing = 物件導向精神 + 猴子無腦測試
  17. 17. Understanding Model - Based - Testing
  18. 18. 重點複習 軟體應用環境日漸複雜 重大關鍵應用如交通運輸等品質不能妥協 要尋求更合理有效的方法來進行測試 MBT可以依照預設的FSM隨機走訪 新增功能也只需在架構中加入新的狀態跟連線就好 透過MBT可以用最少的自動化測試步驟確保系統如預期運作
  19. 19. Project GraphWalker MIT Licensed Open Souce Project: Homepage All Source Codes are Available on GitHub Main Contributors: Kristian Karl, Nils Olsson @Spotify
  20. 20. Spotify SQA用GW解決多屏一雲的複雜測試難題
  21. 21. 以亞馬遜網路書店找書購物車買書流程為例
  22. 22. MBT 技術的優點 重用性:程式中應用到同樣的物件,可以套用同樣 的測試模型 擴充功能性:新版加入的功能,不需要翻新檢查所 有測項,只需調整對應的模型跟函式 靈活性:能動態改變測試參數與執行流程,隨機進 行測試發現問題
  23. 23. MBT 這好東西要怎麼用?
  24. 24. Test Result 流程步驟 Graph Walking GraphML Model Runner w/stubs Runner w/functions Modeling (yED) Stub Generator Actions Scripting 1 2 3 4 5
  25. 25. Step 1: 建模 (產生GraphML格式的物件模型) 1/2 建議使用 yED 免費的GraphML繪製 工具 基於Java,支援各種作 業系統
  26. 26. Step 1: 建模 (產生GraphML格式的物件模型) 2/2 語法範例 e_C [login == true] / eC++ e_C:edge 的名稱是 e_C [login == true]:限制條件是 login 為真 / eC++:動作是把 eC這個變數的值 +1
  27. 27. Step 2: 生成 Stubs (假的函示) $ java -jar gw.jar source -i merged.graphml . /lib/python.template > merged.py
  28. 28. Step 3: 把Stub填入動作變成可以執行的函式
  29. 29. Step 4: 把模型跟函式透過 GraphWalker 引擎跑 // 啟動 GW Online Service $ java -jar gw.jar online --json --service RESTFUL - m merged.graphml "random(edge_coverage(100))" & // 執行 GW runner $ python merged.py
  30. 30. Step 5: 等結果
  31. 31. Live Demo
  32. 32. 這樣就夠了嗎?
  33. 33. SQA 自行開發的外掛工具 GraphML接圖程式(多人協力) 模組繪製檢查機制 錯誤續跑機制 JUnit 格式報告 Jenkins 整合 固定路徑測試 自動測試治具 (App/Web) ● Android ● iOS ● Windows ● MacOS ● Linux
  34. 34. 參考引用來源 GraphWalker: ● Official Webpage: http://graphwalker.org/index ● GitHub: https://github.com/GraphWalker ● Discuss Group: https://groups.google.com/forum/#!forum/graphwalker-3 測項產生器拉霸機:http://slot.miario.com/machines/136965 介紹影片:Understand MBT - Youtube, GW Amazon Example - Youtube 程序語言與物件導向程式語言概念圖:http://www.bbc.co. uk/education/guides/z3fgcdm/revision/7

×