1. 程式人生 > >對UI自動化測試的一些感悟

對UI自動化測試的一些感悟

不斷髮掘自動化測試對各個團隊的附加價值,這樣才能得到來自四面八方的支援

沒有將自動化加入專案過程的自動化都達不到預期的效果

UI自動化框架

把UI自動化框架設計成一個拼圖性質的架構。把每個特性都設計成一個獨立的部分,然後組裝成UI自動化框架:
(appium/webdriver)底層操作封裝特性
Page Object特性
測試用例管理特性
測試執行引擎特性
測試報告管理特性
測試資料管理特性
keyword特性

自動化原則:

1.選擇重點業務
2.選擇較穩定的版本業務
3.目標是保證主要功能業務完整正常,而不是為了發現更多的bug
4.並不能減少人力成本,主要作用是加快測試反饋,提高測試質量
5.錄製回放,關鍵字驅動,視覺化等一般不是好的選擇,因為他們會增加6.指令碼維護的難度,增加維護成本
7.任何增加維護成本的自動化工作都是在耍流氓

如何減少自動化維護成本?

1、清晰、方便的日誌檢視
2、清晰整潔的測試報告
3、快速的指令碼除錯
4、快速的錯誤定位方式:如截圖、錯誤日誌、錄屏
5、嚴格的指令碼規範
6、在策略上,指令碼慢慢上,要非常穩定了才能上線到正式環境
7、定時開展培訓分享工作,提升大家的能力。寫UI自動化不只是工作任務,更是自我提升的過程
8、要有穩定的環境、穩定網路,可以進行網路監控、定時重啟等等

UI自動化框架優化方案:(在不增加維護成本前提下)

1.UI自動化框架加入錄屏模組
2.UI自動化框架加入介面請求報錯模組
3.UI自動化框架加入介面流程對比模組
4.UI自動化框架加入用例成功率、用例增長率等圖表展示度量模組
5.UI自動化框架加入web平臺支援,如用例集管理,非同步執行
6.UI自動化框架加入監控核心場景的效能,如網路、啟動速度、記憶體消耗等
7.UI自動化框架加入報錯時取記憶體快照、報錯堆疊等資訊
8.自動化測試環境一鍵搭建部署

UI自動化指令碼可分為3種:

1、監控指令碼,監控伺服器是否正常,監控每個頁面是否能正常顯示
2、主流程指令碼,監控主流程是否能正常執行
3、模組指令碼,優先順序較低,一般也是重點業務模組先做

已經實現自動化的模組可以不做手工測試了嗎?

為了不做手工測試,就要多加很多驗證點,特別是UI的驗證點。驗證點越多,就會導致自動化越不穩定,自動化的維護成本就會越高,
你對自動化的信心就會越低,自動化的成效也會越低。所以已經實現自動化的模組還是可能需要做手工測試。
那麼自動化測試的意義何在呢?
- 自動化用執行次數來增加價值,執行次數越多,自動化價值越大。比如執行5次剛好成本和價值等價,那麼每多執行一次,自動化的價值就越多。
- 特別是那些需要重複進行UI操作,比如適配測試,需要適配幾十個機型,是自動化去執行好呢還是一個個的手工執行好呢。
- 我們不使用自動化去保證UI的準確性,而是去進行邏輯功能的測試。比如QQ的登入功能,我們只要驗證點選登入後打開了好友列表,就說明登入成功了。就是要怎麼穩定怎麼弄。
- UI自動化主要作用是保證業務流程的貫通
- UI自動化能夠幫助我們確保不會出現一些死人的問題,比如登入不成功,頁面打不開等等。

UI自動化公式:

自動化收益 = 有效迭代次數 x 手工測試成本
自動化成本 = 指令碼建立成本 + 維護次數 x 維護除錯成本 + 指令碼失敗次數 x 指令碼排錯成本

其他

1.測試工具、框架和自動化測試指令碼本身的質量是最需要保證的,需要對測試工具、框架做單元測試
2.自動化可以模擬使用者真實的場景,如讓使用者在一個頁面等待10分鐘或鎖屏、解鎖,該app是否還生存
3.把手工用例與指令碼生成的用例文件進行對比,提示當前有哪些用例需要維護
4.在程式碼整合到主幹之前或之後先執行自動化,只要用例失敗(可以設閾值),則不能整合或回滾
5.持續整合並不能消除bug,而是讓它們非常容易被發現和修復
6.自動化要整合到持續整合過程中,目的是加快測試反饋,降低測試引入、發現到修復之間的時間間隔
7.速度是評估測試價值的最重要考慮因素之一