測試工程師在碰到這種情況時要么放棄這部分應用了難以識別的控件的測試自動化,要么找出一些解決的辦法。
另外,還有一些測試是基本上不可能被自動化實現的,例如,測試工程師可以實現自動化地把文檔發送到打印機的過程,但是檢查打印的效果(是否被正確地打印出來,有沒有越過紙張打印線)這部分則必須人工進行。
至于哪些測試用例應該被自動化實現,可以參考下表決定:
YES | NO | ||
測試執行的次數 | 測試會被執行多次嗎? | ||
測試會有規律地運行嗎?例如經常被重用,作為回歸測試的一部分或每日構建測試? | |||
測試的關鍵程度 | 測試覆蓋了軟件功能的最關鍵部分的路徑嗎? | ||
測試覆蓋了最復雜的部分嗎?(通常是最容易出錯的部分) | |||
測試的代價 | 如果手工進行測試的話,是否不可能、非常難以執行,例如并發測試、持久性測試、性能測試、內存泄漏測試等。 | ||
測試非常耗時嗎?例如需要檢查成百上千個測試結果輸出。 | |||
測試的類型 | 測試需要組合很多輸入,但是共用一個測試步驟嗎?例如同一個功能,用很多不同的輸入來驗證。 | ||
測試需要在多種軟硬件配置環境下執行嗎? | |||
被測試應用或系統 | 測試是在一個穩定的應用程序上執行的嗎?例如功能特性已經基本完成。 | ||
使用兼容的技術和開放的架構 |
陷阱7:自動化能提供百分百的測試覆蓋率
并非所有內容都可以被自動化地測試到。不可能覆蓋所有可能的輸入,所有可能的組合和路徑。
自動化測試可以增加測試的廣度和深度,但是仍然無法達到100%的測試覆蓋率,因為沒有足夠的時間或資源。
例如一個簡單的登錄界面的測試,假設我們需要測試它的密碼驗證函數的正確性,密碼長度在6到8個字符之間,每個字符可以大寫或小寫,至少包含一個數字,那么輸入的可能組合將達到2,684,483,063,360個。
即使我們可以每分鐘創建一個測試,也需要155年來完成全面的測試。因此,不可能窮盡所有可能的輸入的測試。
陷阱8:測試自動化就是錄制和回放
僅僅錄制得到的不是有效的自動化腳本。
很多項目經理仍然把測試自動化等同于使用錄制回放工具。而事實上,錄制得到的腳本通常是不可重用的腳本,腳本中充滿了硬編碼的值,這些值應該被參數化,否則腳本僅僅適用于一個測試情況,腳本還應該加入條件判斷、循環等結構,以便增強測試腳本的靈活性。
自動化測試所需要的技巧與手工測試所需要的技巧是不一樣的。
通常,你的項目經理會被那些測試工具銷售們迷惑,認為自動化的軟件測試就是簡單地按一個錄制的按鈕,產生測試腳本。而事實上并沒有那么簡單。
區分自動化測試所需要的技巧與手工測試所需要的技巧是非常重要的。最重要的是,自動化測試工程師需要掌握軟件開發技巧,沒有接受任何培訓的手工測試人員,或者沒有編程背景的手工測試人員,在實施自動化測試時會碰到很多困難。
陷阱10:忘記了測試的最終目標:找到BUG
在自動化測試中,同樣要注意把邊界值分析、等價類分析、基于風險的測試方法、挑選最合適的測試用例等技術應用起來。
通常在自動化測試過程中,我們都忙著搭建自動化框架和編寫測試腳本,但是我們往往忘記了測試的本來目的:找bug。
項目經理可能雇傭了最好的自動化開發人員來搭建框架,使用了最新最好的自動化開發技術,創建了成千上萬的自動化測試腳本。但是如果BUG仍然被遺漏了,那些本該被自動化測試腳本捕捉到的BUG,結果沒有被捕捉到,那么你的自動化測試仍然會被認為是失敗的。
小結
正在你憂心重重,擔心項目經理一步步邁向自動化測試的陷阱的時候,你看到了這篇文章,你決定拿給項目經理看看,希望他在看完這篇文章之后,對自動化測試有一個新的認識,從而把那只即將踏入陷阱的腳抽回來!
文章來源于領測軟件測試網 http://www.kjueaiud.com/