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