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