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