-中國軟件測試的軟肋在哪里? 08/05/2009 軟件測試作者:慕容嫣然 編者注:前段時間在電子創新網上看貼,謝謝對測試熱衷的網友為我提出一些寶貴的意見。也有人說我的內容和題目沒關聯了,因為已經寫到測試了,所以就要硬著頭皮寫下去了,感覺還有很多不足的地方,望大家多提建議互動,希望軟件測試越來越受到關注。 近期國家對軟件行業也給出了很多鼓勵政策,軟件及相關行業在中國得到了很大的發展,我們也看到了一大批軟件企業在國際中也占據了很重要的地位。不過我們發現很多軟件公司在重視代碼開發的同時,卻沒有把代碼質量跟上去,忽略了測試在整個項目工程的重要性。 可是測試真的是不重要,只是開發的附屬品嗎?我們列舉一個例子說明:美國微軟,該公司的開發人員和測試人員的比例是1:1,也就是說每個開發人員會配備一名測試人員,而且這名測試人員都是具有和開發人員一樣的開發能力的,可以進行大規模自動化測試。微軟重視測試的原因也很簡單,因為在寬帶普及以前,很多更新都是靠郵寄光盤完成的,更新的成本非常高,一定要在出廠前嚴把質量關。對于一個純軟件公司是如此,那么我們的一些有硬件產品的公司,如果產品是因為軟件上面出現了重大缺陷,大規模硬件召回的成本是不是會更高呢?目前在國內,很多的企業也認識到了測試的重要性,可是只是停留在認識階段,只是做做簡單的黑盒測試,功能性測試等。有的負責人也許會談到,我們的產品是基于互聯網產品,軟件大部分都是在服務器端,更新的成本大幅降低。那么我們就更應該做好產品,讓廣大的客戶端用戶對產品有更好的用戶體驗,給網友們更好的服務,而不是一味的借助于網絡更新,在使用中發現錯誤后去彌補。最近一次的暴風影音的“召回門”就是一個很好的說明。 對于一些正在成長中的中小企業,由于人力資源有限,目前還沒有比較正規的測試,我們還可以理解。可是一些已經形成規模,有一定研發力量的大型企業,是很有必要建立一整套完整的測試流程來完善公司的產品。但是在和大公司負責人溝通得知和我們的期望值還是有一定差距的。他們可能花了大量的人力,物力來通過CMM,ISO認證,卻不能踏實的做好測試。在他們眼里,認證才是一個公司的硬實力體現,測試則是一個可有可無的過程。這一點讓人有點黯然,在中國的快餐市場上,我們該如何推動我們軟件測試,不是靠你和我,而是靠全民總動員,大家要培養這個意識,把這個意識和行動穿叉在我們研發的全部過程中,難道我們還做不出好的產品嗎? 這讓我馬上我想到了已經和聯通簽約馬上進入中國的IPhone,可以說這一款手機改變了整個世界對手機的使用習慣。IPhone的成功,個人觀點,軟件質量的穩定性可靠性是最為關鍵的一票。 在我們和客戶聊到測試的時候,他們說也是有心無力,只能通過人為的做一些簡單的測試來應付。于是我們會給他們介紹一些自動化的測試工具的時候來協助測試,這些企業普遍表現了對這次測試工具的興趣。不過,這些工具的價格立即扼殺了他們抓測試的信心,他們無法接受一張光盤的叫價超過一輛汽車,他們更喜歡實物。可是他們忘了,軟件的價值不是體現在一張光盤上面,而且體現在這個軟件能給企業,給人們生活帶來的益處。 誠然,價格,技術和企業愿望是目前測試在中國走的很艱難的原因。目前一些測試培訓機構也是在積極培養專門的測試人才。我們也希望有國內的企業能做出我們自己比較好的測試工具來打破測試工具昂貴的價格堅冰。我相信有那么一天中國的軟件質量一定會在世界上有屬于自己的一席之地。 在這里,也結合我個人的經驗,按照開發V模型來分別講講幾個對應的自動化測試工具。 在軟件開發初級階段,對應于代碼做靜態分析。目前很多的企業都沒有做靜態分析,甚至還有企業不太明確靜態分析。在這里給大家推薦的工具是QAC和PC-lint。 PC-lint在國內的用戶基礎比較好,這個工具出來的比較早,由一個大學教授編寫,而且價格也不貴,只有命令行模式是它的局限性,檢查的代碼規則不多。目前有部分企業用這個工具做代碼靜態分析。 QAC這個工具進入國內也有一段時間,不過推廣力度不是很大,目前這個工具在外資企業的研發部門的推廣的比較好,國內的一些大企業和一些測試評測中心也在使用該工具,該工具使用起來比較方便,界面形式,也支持命令行模式,還有是MISR的標準制定者之一,所以比較有權威性,專業性很強,在國內也有很好的技術支持。價格相對來說就比較貴了。 然后動態單元測試這塊,可以看看parasoft旗下的幾款產品,有分別針對java語言的,C++語言的版本。該工具使用起來還比較方便,是基于Eclipse框架開發的,界面友好,功能也比較強大,在上海有office.當然就是價格不太讓人接受。 當然如果只是要做內存泄露這塊,可以了解一下parasoft旗下的一個工具insure++。這個工具可以實施監控內存的一個使用情況。 如果是做嵌入式這塊單元/集成測試,用戶與也可以使用IPL的Cantata++和IBM的RTRT,這兩個工具在針對嵌入式這塊的單元/集成測試比較強大,特別是Cantata++還支持自動的打樁,封裝,這個也是該工具的一個亮點。 上篇中提到要對這幾個概念做說明的,這這里作個補充:就CANTATA++舉例: 1)打樁是對被測函數外部調用的替代,是用來對沒有開發的或用戶開發的模塊進行模擬。對系統函數,由于Cantata++已經作了移植,都可直接使用,不用也不能打樁。不能打樁時,接口數據無法驗證。 2)使用封裝的before功能,可檢測對外部調用的參數數據、全局數據是否滿足測試時的要求;并且可以修改參數、全局數據的值,使得外部函數按照測試的要求運行。例如嵌入式應用中經常將一個數據轉換為指針,然后使用指針操作相關的內存數據,但在主機環境測試時,由于內存保護,指針指向的地址為空,程序就飛了。在這種情況下就可以使用before功能定義變量,將變量的地址傳送給被調用的函數,從而完整地驗證功能和覆蓋率。 3)使用封裝的after功能迫使外部調用返回很難實現或無法達到的條件,從而使被測模塊的功能和分支都得到驗證。如在主機環境下對malloc函數封裝,在一般情況下是無法實現返回空指針的結果。利用Cantata++封裝的after功能修改返malloc函數返回值為NULL指針,這樣被測函數的錯誤處理功能得到驗證。 如果需要對代碼做一個質量度量,推薦使用一個質量度量工具McCabe,這個工具不需要執行代碼就可以完成代碼走查,對代碼有一個深層次的代碼度量,提供多達幾十種度量。操作起來很方便,只是要熟悉這個產品,需要對產品有一定的理解,對項目管理有很大的幫助。 至于后面的版本管理工具,CVS,VSS,我在這里就不做太多的介紹。 如果朋友們有興趣,也可以去上網找代理商去索取試用版本。 作者簡介 慕容嫣然慕容嫣然,某商學院畢業,現供職于某嵌入式企業,從事2年以上嵌入式方案推廣。 |