1. 程式人生 > >深入理解軟體測試中自動化測試

深入理解軟體測試中自動化測試

什麼是自動化測試

編寫程式碼(指令碼),也就是把手工測試用例的操作步驟和校驗轉化成指令碼實現,然後批量執行程式碼(指令碼)實現測試的目的, 就是自動化測試

從自動化測試的概念推匯出,自動化測試用例編寫的根據是我們的手工測試用例

自動化測試的分類

介面自動化測試, web UI自動化測試, app 自動化測試, 效能自動化測試等

為什麼要做自動化測試

優點:

1、把人從重複的測試活動中解放出來(比如在迭代1版本實現了測試點A的自動化指令碼, 在迭代2 ,迭代3 迭代N的版本中都可以使用自動化指令碼覆蓋這個測試點,把人解放出來),讓人多手工測試哪些自動化不能覆蓋的點,提升測試質量

2、主要用於迴歸測試(迴歸之前迭代做的功能),縮短迴歸時間,提升測試效率

怎麼理解自動化測試主要用於迴歸測試:

1、比如在A迭代實現了裝置管理員模組, A迭代的測試完成後間歇期寫裝置管理員模組的自動化指令碼

2、B迭代測試的時候, 可能還需要測試裝置管理員模組,這個時候可以用自動化指令碼去覆蓋, 可以縮短測試周期,提升測試覆蓋度, 保證質量

3、對於web系統,平均的話每個人每天大概可以執行70個左右的測試用例, 那1000個測試用例需要, 14人天左右才能執行完, 但是如果把這1000個測試用例轉化成自動化指令碼,那麼可能就僅僅需要10-20個小時就測試完成,然後加上半天左右的結果分析, 就把1000個測試點給測試完成了

缺點:

1、自動化測試的指令碼需要達到一定的數量才能見到測試效果,但是前期需要搭建自動化框架,所以自動化測試有前期投入大,後期收益高的特點, 這個特點也說明自動化測試適合長期迭代的軟體,不適合專案型的軟體。

2、UI自動化測試發現問題的效率沒有人手工執行發現問題的效率高,畢竟ui自動化測試用例的測試點有限, 所以在做測試的時候,測試點第一次測試的時候最好是手工去覆蓋, 後面迴歸的時候可以用自動化指令碼覆蓋

3、ui自動化指令碼執行比較慢, 不是特別穩定,需要比較多的等待時間, 一般情況下一個UI自動化指令碼執行時間是20秒-45秒, 1000個自動化測試用例, 如果一個機器執行,時間需要5-10個小時, 這個時候可能就需要分佈到多個機器跑,比如說分佈到3個機器, 那麼只需要2-3個小時就可以出結果。

自動化測試的誤區

1.自動化測試會完全取代手工測試

2.自動化測試一定比手工測試牛X,更加高達上

3.自動化可以發掘更多BUG(ui自動化測試發現bug佔總bug 的比例可能在5% ), 自動化更多的時候是保障系統功能沒有問題

4.所有用例都適合自動化, 和硬體相關的,和第三方系統相關的功能, 很多時候這些功能我們要通過手工測試去覆蓋

5.並非所有的專案都適合自動化測試

什麼專案適合自動化測試

①需求穩定,不會頻繁變更

自動化測試最大的挑戰就是需求的變化,而自動化指令碼本身就需要修改、擴充套件、debug,去適應新的功能,如果投入產出比太低,那麼自動化測試也失去了其價值和意義;

折中的做法是選擇相對穩定的模組和功能進行自動化測試,變動較大、需求變更較頻繁的部分用手工測試;

②多平臺執行,組合遍歷型、大量的重複任務

測試資料、測試用例、自動化指令碼的重用性和移植性較強,降低成本,提高效率和價值;

③軟體維護週期長,有生命力

自動化測試的需求穩定性要求、自動化框架的設計、指令碼開發與除錯均需要時間,這其實也是一個軟體開發過程,如果專案週期較短,沒有足夠的時間去支援這一過程,那自動化測試也就不需要了;

自動化測試的工具

Web自動化測試工具:selenium(web強烈推薦)

介面自動化測試工具:SoapUI、postman,jmeter,也可以通過python/java等語言。

手機自動化測試工具:appium、robotium。

編寫自動化指令碼的人和時間

一個專案中的自動化框架一般有專人(這個人可能就不做手工測試啦)維護,編寫自動化指令碼可能是全員

全員編寫自動化指令碼的時間是迭代的間歇期, 專人是維護完框架一直寫

執行自動化的時間、人、流程

時間:迭代的每個輪次轉測試後

人:專人負責,一般和專案自動化框架專人是同一人

流程:批量執行自動化指令碼,分析自動化結果, 發自動化測試報告(相關產品,研發,測試)

挑選哪些測試用例編寫自動化指令碼

從自動化測試的概念推匯出,自動化測試用例編寫的根據是我們的手工測試用例

從這幾個維度來挑選,1、功能重要性 2、實現難度

功能重要的, 實現容易的肯定優先實現, 如果功能重要的都不好實現,那麼先從功能次重要的,容易實現的開始