《精通自動化測試框架設計》 第1章 1 6節再啟航

2021-09-23 15:48:06 字數 1999 閱讀 3322

1.6 再啟航

儘管面臨這樣或者那樣的問題,一些測試團隊仍然成功獲得了開發團隊的信任,建立起了雙方每週對話的機制,在周例會上溝通彼此遇到的技術問題,並決定自動化測試任務的優先順序。也有些測試團隊的成員,開始代替開發人員著手修復或者新建框架中的類,並提交**進**庫而不再只作為缺陷描述中的補充。這樣做所取得的直接效果就是降低了與自動化測試框架相關的缺陷的修復時間。

在測試組織內部,也通過這兩年的鍛鍊,吸引了一些熟練掌握框架api並且熟悉產品知識的自動化測試人員,他們通過bco牽頭,成立了乙個虛擬的自動化測試團隊。

在這個背景下,終於有人喊出了測試組織需要拿回框架所有權的口號,並逐步運用上述團隊的力量實施這一戰略。而開發團隊也終於越來越意識到加大投資自動化測試的必要性。於是整個工程部門召開了一次由相關方參與的自動化測試峰會。會議上基於自動化測試金字塔方針,提出了「做更有效的自動化測試」的策略。

1.6.1 自動化測試金字塔與冰淇淋

lisa crispin在其廣為流傳的《敏捷軟體測試:測試人員與敏捷團隊的實踐指南》一書中提到了自動化測試金字塔[4]。依據圖1.8所示的金字塔,自動化測試的資源投入或者收益額度從大到小的分別是單元測試、api測試、ui測試。

隨著敏捷這一軟體工程實踐日益成為主流,這一模式目前已經被行業遵守,甚至還演化出了其他不同的形式。例如,alister scott 提出了冰激凌模式[5],這也是目前很多從ui開始自動化測試實踐的測試團隊的現狀。

在這種自動化測試的反模式下,如圖 1.9 所示,單元測試在冰激凌杯的底部,表示其數量或者投入很少,甚至有可能完全沒有。接著中間部分是整合測試,其情況略好於下部的單元測試。冰激凌杯的最上部,也就是體積最大的杯口部分,則是 ui 自動化測試。而在這個冰激凌杯裡面所盛放的,是一塊超級大的冰淇淋,名字叫做手工測試。冰淇淋是一種讓人產生愉悅感覺的食物,而這款自動化測試冰激凌,估計吃過的人很少會感覺好吃並且願意推薦給其他人。

1.6.2 橄欖形的自動化測試

自動化測試金字塔看似美好卻很難達到,而更多的自動化測試團隊,則是吃著自動化測試冰激凌大餐並且難以下嚥。為了解決這一挑戰,an君從自身所經歷的經驗教訓出發,認為自動化測試首先要達到橄欖形的自動化模式。如圖1.10所示,介面測試位於中間,且佔比最大,ui測試和單元測試位於橄欖的兩端。建議在測試組織的自動化測試達到這個穩定的橄欖形之後,再另行考慮自動化金字塔的可達到性。

從面向業務的角度來說,介面測試同樣可以覆蓋業務邏輯的測試需求,並且相比於ui自動化測試其執行效率、穩定性和可靠性更高。從面向技術的角度來說,介面測試比單元測試進入的門檻更低,並且單個測試用例的覆蓋範圍更廣,單位收益也更高。

從投資收益的角度考慮,也可以得出類似的結論。按照邊際效用遞減法則的原理,在進行自動化投資的初期,邊際效用會增加,自動化投資的總收益也隨之增加。隨著自動化投資的持續,其邊際效用會逐漸減少。而當邊際效用遞減至0時,表示總收益達到最大。如果此後再進行投資,反而會因為負的邊際效益而使總收益降低。

顯而易見,ui 自動化測試雖然覆蓋範圍最廣,卻因為後期的高維護成本,ui 自動化測試投資的邊際效用是最早遞減至0的。單元測試卻因為前期的高投入,以及關注**自身,而不是業務的緣故,限制了其後期的總收益。因此,在各型別的自動化測試中,介面測試的綜合收益最高。

綜合來說,建議測試組織在自動化測試的發展路徑圖的初期,最大限度集中可投入的有限資源,首先實施介面測試或者整合測試,而後再涉及部分的ui/端到端自動化測試。而單元測試則可以交由開發人員自行完成,並交由整合團隊收集並執行,成為版本整合的前置測試的方式納入測試組織的用例庫。

這也是本書取名《自動化測試框架設計再入門》的緣由。讀者在讀完本書之後,會發現這裡假借webdriver自動化之名,卻是將讀者帶入到了統一自動化測試框架這扇門之前。由反式脂肪酸造出的自動化測試冰激凌即使好吃也不健康,是時候出來運動運動,打一場自動化測試橄欖球了。

自動化測試框架 設計的重構

最近對測試框架進行了重構,也對其中原有的一些設計進行了反思。其中不免有一些自我感覺得意之處,因此寫出來和大家分享。這是乙個重構的過程,所以將以重構的思路來講述。重構對於乙個系統來說,往往是必要的。他的必要性往往不在於重構的好處,而在於系統的成長的趨勢。乙個好的系統在初步階段,在很多方面都會存在成長的...

自動化測試框架 設計的重構

最近對測試框架進行了重構,也對其中原有的一些設計進行了反思。其中不免有一些自我感覺得意之處,因此寫出來和大家分享。這是乙個重構的過程,所以將以重構的思路來講述。重構對於乙個系統來說,往往是必要的。他的必要性往往不在於重構的好處,而在於系統的成長的趨勢。乙個好的系統在初步階段,在很多方面都會存在成長的...

demo的自動化測試框架設計

準備環境 pycharm 思路 python request unittest htmltestrunner 框架 框架的可讀性需要強 公共方法提取 可變引數需要提取放入配置檔案 做好日誌記錄 單個指令碼能執行成功,前後指令碼資料無依賴 結構是 結構說明 config 配置資訊 data 存放資料資...