測試矩陣

迷陣

“單元測試,集成測試,端到端測試,安全測試,性能測試,壓力測試,契約測試,冒煙測試,驗收測試,API測試,UI測試,兼容性測試……”

不知道你是不是像我一樣,曾被這些各種各樣的“測試”搞得暈頭轉(zhuǎn)向。作為一個有追求的開發(fā)人員,保證所寫的程序,所構(gòu)建的系統(tǒng)具備良好的質(zhì)量自然是分內(nèi)之事。但是面對這些千奇百怪的測試自然望而卻步,只能勸自己一句“專業(yè)的事情還是交給專業(yè)的人去做吧”,然后把測試的工作一把推給QA,悶頭寫自己的代碼去了。

不光是測試種類眾多,對于某一個測試的理解,每個人也都不一樣。就拿大家最熟悉的“單元測試(unit testing)”來舉例,問題的關(guān)鍵就被聚焦到了到底如何才算是一個單元(unit)?有人說是一個方法,有的人說是一個類,有的人說都不對,應該是一個最小的業(yè)務單元(至少是API級別的)。還有人提出了Integration Unit Test的概念,即集成級別的單元測試。

不光是我等軟件小輩,就連很多IT界的神級人物也常常為此爭論不休。

古話說的好,一千個人心中有一千種單元測試,看來說的是有道理的。

列表法

列表法

這是昨天陪閨女寫作業(yè)的時候,看到她使用了一種被稱作“列表法”的方法去解一個小學2年級的邏輯題。閨女說,這種方法很神奇,原本看起來彎彎繞的問題,畫個表勾勾叉叉就解決了。

隨后我也查了一下:“列表法是小學數(shù)學學科中經(jīng)常使用的一種方法,使用列表法可以解決許多復雜而有趣的問題。運用列出表格來分析思考、尋找思路、求解問題,經(jīng)常用來解決類似于雞兔同籠的經(jīng)典問題……”

雖然我一直沒有搞清楚為啥要把雞和兔子放到一個籠子里,但回到測試迷陣的問題,好像這種小學3年級就教授的方法也能適用。

測試矩陣

測試矩陣

測試的種類繁多,難于理解,難于溝通。我覺得主要是在于我們將兩個測試分類的維度混雜在了一起。

其中第一個維度是測試實現(xiàn)的層次或叫粒度,說白了就是在哪個層次上的測試,也可以理解成測試到底測的是哪兒。是方法?是類?是API?是單個Service?是兩兩Service?還是應用?還是系統(tǒng)?還是平臺?

我們常說的單元測試,API測試,端到端測試,UI測試都是側(cè)重于按照這種唯獨去分類不同的測試種類的。

但是我們在談論這些測試的時候,其實隱含了一個概念就是他們測得是什么?也就是測試的目標。例如當我們提到上邊的單元測試,API測試,端到端測試的時候其實隱含的想表達的是單元級別的功能測試,API級別的功能測試和端到端級別的功能測試。

這時候你肯定會想,這不廢話么,不測功能我測什么?

這就是我想說的第二個測試分類的維度:我們測試的標的,或是說測試的目標。如果說第一種測試維度是根據(jù)“測哪兒”區(qū)分的,那第二個維度就是根據(jù)“測什么”區(qū)分的。

例如,我們常常提到的:功能測試,集成測試,性能測試,安全測試,壓力測試,兼容性測試,契約測試都是這種按照這個維度去區(qū)分不同的測試種類的,他們都不是關(guān)注于我們要測哪兒,而是更側(cè)重于我們到底要測什么:業(yè)務功能是否正確?是否能按預期集成?是契約是否被保證?是安全能否達到要求?性能是否滿足預期和要求?

只不過我們?nèi)粘9ぷ髦?,大多?shù)情況下測試都是在驗證功能是否正確,所以我們常常忽略了第二個維度,只關(guān)注于測哪兒。只有當我們?nèi)y試像性能和安全這種非功能需求的時候才會想到第二個維度,但有趣的是往往我們這時候又會忽略第一個維度,例如當我們聽到有人提及性能測試的時候,并沒有明確的表達倒是是測的是方法的性能,API的性能,還是UI的性能,從而導致了理解的不一致和混亂。

換個叫法

可見,之前困擾我很久的測試迷陣,其本質(zhì)原因就是并沒有明確區(qū)分開這兩個維度,甚至將之混為一談,從而使我們對于“XX測試”的定位和理解包括溝通都變得模糊而不準確。

如果我們不再提“單元測試”、“性能測試”這種含糊不清的概念,而是通過測試矩陣上的二維定位法,改稱“方法級別的功能測試”和“API級別的性能測試”,我想我們對于測試的溝通討論甚至學習實現(xiàn)將明確的多,也簡單的多。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容