在設計架構之前,首先要熟悉測試系統以及這個測試系統需要測試的功能有哪些類型,每種測試類型在測試架構中是否都可以滿足。在設計架構時,可以選擇覆蓋系統基本功能的smoke test測試用例來做基本的測試用例,在實現這些基本的測試用例的自動化測試過程中,對架構進行完善?;镜淖詣踊瘻y試框架實現之后,再回顧一下是否測試系統中需要實現自動化的測試用例,測試架構都可以滿足需求,如果不可以滿足則需要繼續做進一步的開發,如果測試架構可以滿足需求,接下來可以讓其他的同事使用,收集改進的建議對測試架構進行完善和改進。好的測試架構,是要使用的人覺得舒服。
自動化測試架構設計的時候的一些基本的策略:
1、 自動化測試腳本與自動化測試架構的代碼分離,自動化測試架構的代碼實現自動化測試的基本功能,自動化測試腳本包含業務邏輯。
2、 設計清晰的腳本和配置文件的存放目錄。
3、 數據驅動
1) 測試系統相關的配置、模擬器的配置等系統級的配置用系統級配置文件存放,不要把這些值寫死在腳本或代碼中,否則當測試系統的環境變化的時候相應的維護成本也會很高。
2) 測試系統所使用到的一些規范定義取值,定義在配置文件中,在腳本中需要使用的時候引用變量定義,這樣即使規范定義改變了也不需要修改腳本,只要簡單的修改配置文件即可;如果外部規范定義和內部的定義取值不一樣,最好有對應的mapping定義表。
3) 測試數據的數據模型如果比較復雜,最好也在配置文件中對數據模型以及字段的取值進行定義,方便在腳本中創建數據時使用。
4) 協議或Schema或話單的格式,在配置文件中定義,當協議的格式改動的時候,只需要修改配置文件即可。
5) 腳本中盡量少用常量,輸入參數、腳本運行時提取的值、測試結果的對比等,都可以使用變量,避免腳本的常量寫死后引起的維護工作。
4、 測試數據準備
1) 測試數據準備,有兩種類型,一類是腳本運行前事先可以準備好的數據,這種類型的數據,可以在自動化測試前自動創建好并保存到文件中提供給測試腳本使用;另一類是腳本運行時要創建的特殊數據,這些數據可以在腳本運行的過程中調用基礎腳本進行創建。
2) 公用的數據,如果在腳本運行的過程中被修改,在該腳本運行結束后需要恢復到原樣,避免因為公用數據的修改引起其它腳本運行失敗。
5、 模塊化:對基礎腳本進行封裝,一些可以公用的腳本單獨封裝給其余的測試腳本調用,當公用的業務邏輯改變的時候,只需要修改基礎腳本,而不需要對所有的測試腳本進行改動。
6、 提供自動化腳本編寫模版,新寫的腳本只需要在模版的基礎上做很小的改動就可以實現功能,可以節省腳本編寫的時間和降低腳本編寫的門檻。
3.4 自動化測試腳本編寫
自動化測試腳本的編寫功力很重要,寫得好的腳本,可以減少維護的工作量。自動化測試腳本一般由測試的輸入、業務邏輯、測試輸出和測試結果驗證幾部分組成。自動化腳本的編寫,要注意全局的把握和review,不同的人會有不同的風格,稍不注意就會問題多多。在自動化腳本編寫前,給相關同事提供技術和架構的培訓,培訓的內容包括被測試系統的基本功能介紹、自動化測試工具的架構、自動化測試的配置說明、自動化測試的編寫原則、自動化腳本編寫示例等。自動化測試腳本的例子也很重要,建議在腳本編寫前對系統準備實現自動化測試的功能進行分類,由資深的自動化測試工程師根據每個分類都先寫一個例子并且review通過后作為這些功能的自動化測試腳本的編寫模板,其余的同事可以參照例子按照自動測試架構編寫規范寫腳本。
編寫腳本時應該注意腳本的可重用性和可維護性,如果腳本中充滿了硬編碼的值,這些值應該被參數化,否則腳本僅僅適用于一個測試情況,腳本還應該加入條件判斷、循環等結構,以便增強測試腳本的靈活性。
在編寫腳本的時候必然會遇到技術問題或業務問題,需要有資深的工程師或TL協助解決,并且在整體的架構上全局把握。腳本編寫完成后,需要有一個抽查Review的過程,挑幾個典型的腳本review一下,看看是否存在不足的地方,然后改進。
3.5 自動化測試腳本測試
當每一個測試用例所形成的腳本通過測試后,并不意味著執行多個甚至所有的測試用例就不會出錯。輸入數據以及測試環境的改變,都會導致測試結果受到影響甚至失敗。而如果只是一個個執行測試用例,也僅能被稱作是半自動化測試,這會極大的影響自動化測試的效率,甚至不能滿足夜間自動執行的特殊要求。
自動化測試腳本最基本的原則是測試結果可信,也就是在批處理運行這些腳本的時候,該測試通過的就測試通過,該測試失敗的就測試失敗,如果出現本應該失敗的腳本在運行的時候通過了或本應該通過的腳本在運行時失敗了,測試結果就變得不可信了,自動化測試也就失去它本應該有的意義。
因此,腳本的測試與試運行極為重要,它需要檢查多個腳本不能依計劃執行的原因,并保證其得到修復。同時他也需要經過多輪的腳本試運行,以保證測試結果得一致性與精確性。
3.6 自動化測試腳本執行
自動化腳本主要有三個用途:功能測試、為手工測試做數據準備和回歸測試。在功能測試的階段,可以利用自動化測試腳本進行數據的準備,也可以利用自動化腳本進行功能測試。在項目穩定之后自動化測試的最大價值就是回歸測試。
腳本可以分為三個級別:基本流程測試腳本,用于每次出新build安裝后做smoke test;關鍵功能測試腳本,每次出新build后對所有重要功能進行回歸測試,確保改動不會對原有功能的造成影響;全面回歸測試腳本,系統經過比較大的修改或系統上線前作回歸測試。自動測試腳本在回歸測試中發揮了出色的作用,特別是系統在上線前夕,為了適應客戶的需求,功能不斷修改,對于原有的功能,自然不可能都手工測試,腳本在這個時候的意義特別大。
3.7 自動化測試的持續集成
自動化測試可以做到持續集成,從編譯到測試,任何一步都可以自動化:
1、將所有的源代碼存放在服務器,持續集成任務起來后到源代碼管理服務器上進行自動編譯,對編譯的結果進行分析,并將編譯成功的軟件版本放到發布服務器;