先來看看功能測試如何進行的:編寫測試用例,測試用例當中最主要的是測試步驟和預期結果;測試人員根據測試用例執行操作步驟,然后通過眼睛和思考判斷實際結果與預期結果是否相等。如果相等,測試通過;如果不相等,測試失敗。
自動化測試要做的事情與功能測試是一致。這里的自動化主要包含三個層面的自動化,單元測試自動化,接口測試自動化和web測試自動化。當然,不同層面的自動化關注點是不一樣的。
單元測試自動化,調用被測試的類或方法,根據類或方法的參數,傳入相應的數據。然后,得到一個返回結果。最終斷言返回的結果是否等於預期結果。如果相等,測試通過;如果不相等,測試失敗。所以,這里單元測試關注的是代碼的實現與邏輯。元測試是測試中的最基本的測試, 也是測試中的最小單元, 它的對象是函數對象,也可以包含輸入輸出, 針對的是函數功能或者函數的內部邏輯方面。 並不包含業務邏輯。
接口測試自動化,根據接口文檔,到底是傳get請求呢?還是post請呢?調用被測試的接口,構造相應的數據(id=1,name=zhangsan),得到返回值,是200成功,並返回查詢結果。還是10021,用戶名不能為空。不管輸入的參數是怎樣的,我們都將得到一個結果。最終斷言返回的結果是否等於預期結果。如果相等,測試通過;如果不相等,測試失敗。所以,接口測試關注的是數據。只要數據正確了,功能就做成大半,剩下的無非是如何把這些數據展示在頁面上。
web測試的自動化,這種測試更貼近用戶的行為,模擬用戶點擊了某個按鈕,向個輸入框里輸入了什么。但是用戶可以看到登錄成功了,但web自動化並不知道它剛才的點擊有沒有生效。所以,要找“證據”,比如,登錄成功后頁面右上角會顯示“歡迎,xxx”。這就是登錄成功的有力“證據”。於是,當web自動化登錄成功后,就去獲取這個數據進行斷言。斷言如果相等,測試通過;如果不相等,測試失敗。所以,web自動化的關注點用戶操作形為,頁面上真正的按鈕和輸入框是否可用。
所以,從測試的行為本質上來看,功能測試與單元自動化測試,接口自動化測試和web自動化測試並沒有區別。唯一的區別是,一個由人來執行,一個由代碼或工具執行。