1. 程式人生 > >[觀點]軟體測試的核心價值是什麼?

[觀點]軟體測試的核心價值是什麼?

導讀:這篇文章是淘寶測試團隊天彤寫的一篇關於探討軟體測試核心價值的文章,以下是全文:

既然是“核心價值”,就應該能用一句話說清楚。關於軟體測試的核心價值是什麼,各種觀點爭論了很久,似乎很難得出一個明確的結論。這裡有個很重要的原因,就是我們都深陷在測試工作的細節裡面,沒辦法看清自己的位置和價值。不識廬山真面目,只緣身在此山中。

要想搞清楚這個問題,我們必須走出圍城來進行分析,如果把軟體測試看成一種服務,那麼從客戶的視角來評判,最合適不過了。下面講一件真實的事情。

有一次我回家跟老友一起吃飯,聊起最近的工作。老友的單位是一家大企業,幾個月前委託一家軟體開發公司,開發了一套很大的企業管理軟體。現在軟體已經開發完成,進入了驗收階段。現在問題來了,負責驗收軟體的是信管部,部門老大非常擔心軟體的質量,希望能在驗收簽字前,把軟體的嚴重質量問題都找出來,可是又不知道該從哪下手,如果能有一個權威的軟體評測機構,對軟體進行專業的測試,就最好了。

“你們淘寶的軟體測試,應該做的很專業吧,能不能幫我們來測試一下這個軟體?你們接這種業務麼?”老友提出這個問題。

雖然淘寶測試現在還沒有這種外接服務,不過這是一個難得的,饒有趣味的話題。

“那你想要我們來測試哪些東西呢?哪些地方最擔心?”

“主要是效能吧,如果全公司人一起來用,不知道會不會出問題。還有就是資料的安全方面,公司的重要資料一定要絕對安全,不能被挖走。”

“那軟體的功能呢,功能需不需要我們來測一下?”

“功能就不用了,我讓我們部門的人來點點就行了。”

聽到這話我有點覺得不爽,不過想想倒也沒必要跟老友去爭辯這個問題,其實這確實是很多人對軟體測試的看法。後來這個話題被岔開,沒有繼續談下去了。

所以下面的談話並沒有真實發生,是我用推理的方式,把討論繼續了下去,非常有趣。

“功能測試並不是隨便點點這麼簡單,淘寶的測試非常專業的,因為我們…”

大家注意,精彩的地方到了,當我說出一個原因,並且能讓老友信服,那就說明,這就是軟體測試的核心價值了。

“…我們的工程師對需求理解得很透徹,對業務很精通。”

“我們部門的人對需求也很清楚的,因為他們就是最終的使用者。”在平時的專案裡我們也發現,無論需求分析做得多細緻,軟體交付以後,使用者總能提出很多問題和改進意見,這是正常的,大可不必因此責怪測試工程師,因為沒有人比使用者更瞭解需求。最重要的是,不要讓使用者發現既嚴重又初級的Bug。

“…我們編寫的測試用例、文件非常專業非常完整,能夠保證測試的質量。”

“很好啊,你們很專業,不過這是你們內部的工作方式,我不是很關注的。”這裡並不是否定測試文件的作用,只不過測試文件是測試團隊的過程產物,無法直接給使用者帶來價值。

“…我們對軟體的架構設計非常瞭解,可以提前發現軟體設計中的重要缺陷,避免返工。”

“嗯,這個非常好,不過現在他們已經開發完了,要是在他們編碼之前,請你們來對設計方案把把關,就好了。”使用者非常希望能控制軟體開發的全過程,而軟體設計是最重要的里程碑,設計是否合格,直接影響後面的工作。

“…我們能看懂程式碼,找出程式碼裡的問題,不僅如此,我們還能修復Bug。”

“好是好,不過程式碼量那麼多,你們需要多少人來做啊?至於修復Bug,還是讓他們自己改吧,不然我花那麼多錢請他們幹嗎?”

“…我們現在用的最好的測試管理工具,還有最好的自動化測試工具,可以把測試完全自動化。”

“挺好,不過我還是擔心需要的資源太多,自動化測試是挺好,你說說具體好在哪裡呢?如果比手工測試成本低,就行。”同樣的,使用者對我們用什麼方式測試並不特別關注,成本才是關鍵。

“…我們的工程師工作效率很高,測試速度非常快,比你們部門的人要快50%。”

“厲害!不過我們這裡的薪水都比較低的,你們都是高薪IT,人月成本這麼高,如果測的結果差不多,還是我自己找人來做吧。”

“…我們的工程師都是專業人員,你的人只能發現一些表面的Bug,而我們能找出隱藏很深,並且很嚴重的Bug,這些Bug提早發現,能減少很多損失。”

“有道理,其實我也擔心他們這樣點點,有些深層次問題發現不了,要是上線一段時間以後,大家才發現,那改都來不及了。”

好了,這段虛擬的對話就到此為止,下面我們來做一些分析。先看一下最開始提到的效能測試和安全測試,這兩個測試型別有一定的技術壁壘,因此效能和安全的Bug,不是每個人隨便就能發現的。另外虛擬對話中提到,發現軟體設計方案中的問題,也非常有難度。而功能測試的門檻相對較低,即使沒受過訓練,一般人也能發現一些初級的Bug,這讓很多人產生一個錯覺:“一般人”都能做功能測試。

要證明這個錯覺不成立,其實也挺容易,那就是看測試人員所發現的Bug,與“一般人”有哪些不同。如果找不到明顯的不同,那錯覺就變成了現實,如果測試人員沒發現的Bug,讓一般人或者使用者發現,那就更杯具了。由此我們推理出測試的核心價值:

能發現一般人發現不了的Bug!

這句話看起來非常簡單樸實,但是包含了很多因素。目前淘寶測試團隊所設定的金Bug大獎(Gold Bug Award),就是為了鼓勵測試工程師體現這一核心價值。

有的測試工程師,由於專案時間太緊,開發匆忙趕出的程式碼質量又不合格,所以大部分時間都糾纏在初級的Bug裡面,根本沒時間、沒精力去關注深層次Bug,雖然做的很辛苦,也做了很多專案,但是成長很慢,原因就在這裡。

要解決這個問題,測試工程師一方面要加強對開發技術的學習,瞭解軟體程式的內部結構,為發現深層Bug創造必要條件;另一方面,要想辦法推動開發提高程式碼質量,讓自己從初級Bug裡解脫出來,為自己贏得更多的時間,來尋找深層Bug,並且總結髮現Bug的技巧和經驗。

到這裡我們對測試核心價值的討論可以告一段落了,軟體測試要體現核心價值,自說自話是沒有意義的,只有把測試作為一種服務提供給客戶,讓客戶來評判,測試才能發展得更好。現在淘寶測試團隊也專門成立了TAAS團隊(Testing As A Service),在測試服務化上進一步探索。這篇文章送給淘寶測試團隊,也特別送給文朗,與你討論總有很多收穫。