關於對測試金字塔的理解收穫共享
前段時間去了
51testing聽了2
天課,講課老師是從微軟外聘的,中間提到乙個測試金字塔的問題,把我原來的一些疑惑、觀點進行了很好的解釋和印證,道理很簡單,但不是每個測試人員都能理解透,故把收穫共享一下。
金字塔的結構如下:
金字塔分為
5層,最一層的是單元測試,是針對類庫和程式集來進行測試;第二層為元件級的測試,我的理解是
dll和介面級的測試;第三層為服務級的測試,像我們做
gis的,可以理解為地圖服務,定位服務等;第四層為介面級的測試(如自動化
ui測試);最上面一層為手動測試,執行已經整合的系統,手工對系統的執行結果和預期結果比較。
(基於敏捷開發的大型軟體自動化測試架構
)觀點一:測試越往下面測試的效率越高,測試質量保障程度越高,如下圖示:
越往底層,測試的效率更高,程式的
bug歸根結底需要落到每個類上面,當保證了每個類的穩定後,越往上層就是整合的問題了。邏輯性
bug在類庫做元件內部解決。
舉例說明:
我曾經參與乙個專案,某個系統每次一測試,都能發現大量的
bug,對這個系統幾乎快喪失信心,後來我把這個事情反饋給專案組的開發經理,這個開發經理把它的**拿到後,直接看底層**的邏輯,重新整理了各個類庫之間的邏輯,加強單元測試的覆蓋率。然後把系統給我的時候,發現原來很多
bug自然沒有了,質量很快就上來了,對系統有信心得多,有些地方我也偷了懶(不測也是提高測試效率的手段嘛)。
越往底層測試,測試效率更高的還有乙個方面最能體現,就是自動化測試。像單元測試,只要
class
中的方法引數不變,類庫的名稱不變(這些一般也是不會變的),這樣自動化的測試指令碼就不需要變化。而越往上層,自動化測試效果不會太好,尤其是系統介面經常變化的,造成自動化測試指令碼的維護工作量非常大。據我所知,在介面層的自動化測試,除了
office
軟體做得好的外,其他好的案例非常少。
觀點二:測試越往下面測試的成本越低。
bug越早發現,損失就越小,成本也越低,這個應該是測試人員的共識了。同樣道理,從這個金字塔也符合這個規則,也就是說這個金字塔是符合軟體開發流程的,按照瀑布模型來說,單元測試往往是專案測試最前期的,到了介面測試了手工測試階段,系統已經整合了。這個時候發現問題,如果這個系統很大的話,可能在問題定位上就得發不少時間,比在乙個類中定位問題,花費的時間絕對多的多。
我自己也經歷過乙個事件,某住房補貼軟體在刻了
5000
張光碟後,被測試人員發現了乙個嚴重
bug,這個直接影像到補貼金額的準確性,導致
5000
張光碟重新燒錄。好在光碟還沒有發出去,否則後面的麻煩事估計公司得專門成立乙個部門來解決了。
觀點三:測試越往下面,職業發展前景越好,同時也回答了測試人員是否需要開發功底的問題:
越往金字塔底層,測試的技術含量要求更高,測試人員的核心競爭力更大,薪酬當然要高一些,如果從技術方向來說,可以做高階測試工程師、測試架構師都有可能。老師給我們講了乙個微軟測試人員人數變化的例子,在微軟早期,也有不少手工測試的人員,這些人員也是不需要編寫**的,由於微軟從事的產品為主的公司,這些手工測試人員根本無法滿足測試工作要求,逐步推行自動化測試,隨著自動化測試的深入,到了
2003
年左右,不懂開發的測試員已經遠遠少於有開發功底了,到了
2008
年左右,不懂開發的測試員已經消失了。
隨著自動化趨勢的加強,希望網上對於測試人員是否需要懂開發的爭論希望少一些吧,也希望認為因為測試比開發簡單的才加入測試隊伍的,如果你到現在還一直這麼認為的話,我奉勸你盡早放棄測試工作。
需要補充說明的是,手工測試並不是完全丟棄的,因為測試一定要站在使用者的角度,站在業務層的角度。越往金字塔的上層,在測試時越能體會到使用者感受,特別是專案型公司,我這裡強調的只是從測試比重分布不同而已(要加重底層的測試比例)。
我理解的學習金字塔
我們先簡單介紹一下學習金字塔 最早是由美國學者 著名的學習專家愛德加 戴爾1946年首先發現並提出的。它用數字形式形象顯示了 採用不同的學習方式,學習者在兩周以後還能記住內容 平均學習保持率 的多少。它是一種現代學習方式的理論。最終總結一下學習的過程 學 辯 授。我們大部分都在閉門造車,學習的時候都...
金字塔池化系列的理解SPP ASPP
在spp出來之前,所有神經網路都是要輸入固定尺寸的,比如經常遇到的224 224,輸入網路前都要resize到224 224,導致變形,其中的資訊也變形了,從而限制了識別精度。而spp和aspp就是為了解決這個問題,它可以讓網路輸入原圖而不必resize。剛看到這張結構圖,很多同學可能和我一樣懵 原...
自動化測試的金字塔模式是什麼?
追求敏捷開發導致許多團隊採用金字塔測試策略。金字塔測試策略要求在3個不同級別進行自動化測試,具體如圖所示 自動化測試金字塔策略 上圖中展示的金字塔要求自動化測試從3個不同級別進行,最底部的單元測試佔據了自動化測試的最大百分比,其次是介面測試和u測試。將自動化測試重點工作放在單元測試和介面測試階段有助...