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