如何做自動化測試
阿新 • • 發佈:2019-02-16
這個話題比較大,相信大家也都有自己的想法,我在這裡寫一些我自己的看法,請大家指教。
什麼叫做自動化測試工程師
首先,會使用自動化測試工具的測試人員不能夠稱之為完全的自動化測試人員,這類測試人員被稱為『工具小子』(Script Kid)。這個階段還是處於自動化測試的一個比較低階的階段,因為這些工具都不是測試人員開發的。
對於高手來說,要能寫一些獨立的測試指令碼甚至測試工具。
更高的高手則是能指令碼和工具和實際工作緊密結合起來,解決工作中遇到的問題。
自動化測試工程師應該具有開發能力嗎
通過上述內容,應該可以看得出來,自動化測試人員一定要有開發能力,而這恰恰是測試人員目前所欠缺的。沒有開發能力的測試人員雖然也可以做一些所謂的自動化,但是僅僅是一些皮毛,沒有辦法做到活學活用。根據某機構的調查資料,目前所有從事測試工作的人中,90%的人都沒有任何開發能力。根據目前的市場行情,如果在精通一門開發語言,能夠從純手工測試轉型為自動化測試工程師,月薪至少增加3~5k。自動化測試的層級
一般來說,自動化測試分為三個層級:單元測試、介面測試和UI測試,這三層成一個金字塔形狀分佈。最底層是單元測試,介面測試在中間,UI測試在最上層。下面通過一個表格來對比著三層測試。
層級 |
所處位置 |
受益 |
測試物件 |
執行速度 |
定位問題難度 |
維護成本 |
單元測試 |
底層 |
70% |
類或者方法 |
極快 |
十分容易 |
低 |
介面測試 |
中間 |
20% |
服務介面 |
快 |
一般 |
低 |
UI測試 |
上層 |
10% |
UI |
慢 |
較難 |
非常高 |
測試人員應該怎麼辦
單元測試
單元測試無疑是最適合做自動化的,但是,大多數單元測試都是由研發人員自己完成。單元測試的程式碼行覆蓋率能夠達到70%,就是一個非常不錯的程度了。測試人員不做單元測試,但是可以嘗試推動研發人員來編寫單元測試用例。單元測試框架
- 單元測試常用的框架——XUnit,比如Java的JUnit,PHP的PHPUnit,Python的unittest等等;
- 一個測試用例通常由三部分組成——setUp,測試邏輯,tearDown。setUp用於準備測試資料,tearDown用於清理資料;
- 一般單元測試框架都支援裝飾器設計模式的註解,比如跳過執行,測試套件的組織,測試用例依賴管理等等
UI測試
- 分散式——case增加到一定程度後,如何快速的執行所有的case,這就涉及到分散式的概念。對於Selenium,官方提供了一個Grid,感興趣的同學可以研究一下;
- 行為驅動——也就是常說的Cucumber,這個領域筆者沒有太多的涉足,不誤導大家
- 關鍵字驅動——由『操作物件』、『操作』、『資料』關鍵字組合成測試用例,框架來把關鍵字解析為指令碼並執行。這種框架最大的優點就是可以提供給不懂程式碼的測試人員使用,典型的代表是Robot framwork
- 資料驅動——同一段程式碼的業務邏輯通過更換資料輸入來生成多個測試用例,我們只需維護測試資料就可以維護case,這種框架思想在很多測試工具中都有實現
- 關鍵字和資料混合驅動——目前最高階的框架,將上述兩種框架結合起來