關(guān)鍵字:軟件測試
引言 軟件測試作為保證軟件質(zhì)量和可靠性的關(guān)鍵技術(shù)手段正日益受到廣泛的重視。但如何進(jìn)行測試,如何提高測試的質(zhì)量和效率,從而確保軟件產(chǎn)品的質(zhì)量和可靠性,仍是令許多人深感困繞的問(wèn)題。本文僅根據筆者多年從事軟件測試研究與實(shí)踐的體會(huì ),簡(jiǎn)要介紹軟件測試的基本過(guò)程,以及一些常用的技術(shù)手段、測試策略和準則,并介紹兩個(gè)很有特色并具有代表性的軟件測試支持工具,以期愈來(lái)愈多的人在認識到軟件測試的重要性的同時(shí),能夠進(jìn)一步了解應如何正確地選擇和有效地運用各種各樣的測試方法、技術(shù)和工具,來(lái)提高軟件的質(zhì)量和可靠性。
一、軟件測試的基本過(guò)程
軟件測試是一個(gè)極為復雜的過(guò)程。如圖一所示,一個(gè)規范化的軟件測試過(guò)程通常須包括以下基本的測試活動(dòng)。
·擬定軟件測試計劃
·編制軟件測試大綱
·設計和生成測試用例
·實(shí)施測試
·生成軟件問(wèn)題報告
對整個(gè)測試過(guò)程進(jìn)行有效的管理實(shí)際上,軟件測試過(guò)程與整個(gè)軟件開(kāi)發(fā)過(guò)程基本上是平行進(jìn)行的。測試計劃早在需求分析階段即應開(kāi)始制定,其它相關(guān)工作,包括測試大綱的制定、測試數據的生成、測試工具的選擇和開(kāi)發(fā)等也應在測試階段之前進(jìn)行。充分的準備工作可以有效地克服測試的盲目性,縮短測試周期,提高測試效率,并且起到測試文檔與開(kāi)發(fā)文檔互查的作用。
此外,軟件測試的實(shí)施階段是由一系列的測試周期(Test Cycle)組成的。在每個(gè)測試周期中,軟件測試工程師將依據預先編制好的測試大綱和準備好的測試用例,對被測軟件進(jìn)行完整的測試。測試與糾錯通常是反復交替進(jìn)行的。當使用專(zhuān)業(yè)測試人員時(shí),測試與糾錯甚至是平行進(jìn)行的,從而壓縮總的開(kāi)發(fā)時(shí)間。更重要的是,由于專(zhuān)業(yè)測試人員豐富的測試經(jīng)驗、所采用的系統化的測試方法、全時(shí)的投入,特別是獨立于開(kāi)發(fā)人員的思維,使得他們能夠更有效地發(fā)現許多單靠開(kāi)發(fā)人員很難發(fā)現的錯誤和問(wèn)題。
軟件測試大綱是軟件測試的依據。它明確詳盡地規定了在測試中針對系統的每一項功能或特性所必須完成的基本測試項目和測試完成的標準。無(wú)論是自動(dòng)測試還是手動(dòng)測試,都必須滿(mǎn)足測試大綱的要求。
一般而言,測試用例是指為實(shí)施一次測試而向被測系統提供的輸入數據、操作或各種環(huán)境設置。測試用例控制著(zhù)軟件測試的執行過(guò)程,它是對測試大綱中每個(gè)測試項目的進(jìn)一步實(shí)例化。已有許多著(zhù)名的論著(zhù)總結了設計測試用例的各種規則和策略。從工程實(shí)踐的角度講有幾條基本準則:
1.測試用例的代表性:能夠代表各種合理和不合理的、合法的和非法的、邊界和越界的,以及極限的輸入數據、操作和環(huán)境設置等;
2.測試結果的可判定性:即測試執行結果的正確性是可判定的或可評估的;
3.測試結果的可再現性:即對同樣的測試用例,系統的執行結果應當是相同的。
二、測試方法
軟件測試的方法和技術(shù)是多種多樣的。從測試是否針對系統的內部結構和具體實(shí)現算法的角度看,通?煞譃閮深(lèi):白盒子方法(結構測試)和黑盒子方法(功能測試)。前者是針對系統內部實(shí)現的測試,而后者側重于系統的外部功能和特性。
三、軟件測試工具
一些受軟件開(kāi)發(fā)人員歡迎的軟件測試工具為軟件測試提供了強有力的支持。本文將介紹美國Rational公司的著(zhù)名套裝軟件SQA和Pure Atria公司極具特色的Purify。
SQA SuiteSQA直接支持對客戶(hù)/服務(wù)器應用軟件的測試,它的一個(gè)重要特點(diǎn)是可以自動(dòng)驅動(dòng)被測程序的運行。SQA可以自動(dòng)記錄和重放程序執行過(guò)程,從而實(shí)現了對測試進(jìn)行"復查"的自動(dòng)化。
由于測試是一個(gè)需要反復進(jìn)行的過(guò)程,常常要數十次甚至數百次地重復。因此,這一特性大大地提高了軟件"再測試"(Re-Test)和"回歸測試"(Regression)的自動(dòng)化程度,把測試人員從繁雜的、重復性的手工測試中解脫出來(lái),從而顯著(zhù)地提高軟件測試效率。
除了這個(gè)最基本的自動(dòng)錄放功能外,它還提供了一系列的輔助支持功能,比如,
· 被錄制的程序執行過(guò)程可以被自動(dòng)轉換成具有良好可讀性的高級語(yǔ)言程序,從而使這個(gè)測試驅動(dòng)程序可以由測試人員根據測試需要進(jìn)行必要的修改,甚至完全用手工方式編制。
·自動(dòng)記錄和分析比較測試的執行結果。不論是簡(jiǎn)單的正文方式的輸出結果,還是任意的圖表、聲音、動(dòng)畫(huà)、圖形用戶(hù)界面(GUI)中的任一構件,都可以根據測試人員的指定被自動(dòng)記錄在測試結果庫中,并可對兩次測試的結果自動(dòng)地進(jìn)行比較,指出其差異部分。此項功能無(wú)疑對"自動(dòng)查找錯誤"很有幫助。
·調節和設定事件的發(fā)生時(shí)間和速度。
·基本的測試庫管理功能。
此外,SQA還支持軟件測試人員進(jìn)行以下工作:
·制定測試計劃和測試大綱,并將這些文檔按照自然的樹(shù)狀結構分層地管理起來(lái),并據此控制和驅動(dòng)整個(gè)測試過(guò)程。
·不僅能夠自動(dòng)記錄各類(lèi)測試結果,而且對其進(jìn)行修改,從而使得測試人員可以在程序運行結果尚有許多錯誤的情況下,通過(guò)對所記錄下的結果做適當修正來(lái)獲得理想的"期望結果" ,為測試結果的自動(dòng)比較奠定基礎。
·測試問(wèn)題報告的記錄與管理。
總之,SQA Suite提供了一個(gè)比較完整的測試平臺,以支持軟件測試的各種基本活動(dòng),包括測試計劃與測試大綱的制定、回歸測試的自動(dòng)化、測試結果的分析比較、軟件問(wèn)題報告的生成與自動(dòng)分發(fā)和控制等。對于許多應用軟件的開(kāi)發(fā)無(wú)疑是個(gè)有力的測試支持工具。
Purify是原PureAtria公司(現已經(jīng)與美國Rational公司合并,改名為美國Rational公司)于90年代初率先推出的專(zhuān)門(mén)用于檢測程序中種種內存使用錯誤的軟件工具。幾乎所有使用過(guò)C語(yǔ)言開(kāi)發(fā)軟件的程序員都會(huì )有這樣的體會(huì ),C語(yǔ)言中使用極為靈活的指針給程序員帶來(lái)了很大便利,但同時(shí)也制造了許多的麻煩。由于指針使用不當而引起的錯誤通常是最難發(fā)現的,同時(shí)也是最難定位的一類(lèi)錯誤。而Purify對多種常見(jiàn)的內存使用錯誤的檢錯能力和準確的定位,受到廣大軟件開(kāi)發(fā)人員的青睞。
Purify可以自動(dòng)識別出二十多種內存使用錯誤,包括
·未初始化的局部變量
·未申請的內存
·使用已釋放的內存
·數組越界
·內存丟失
·文件描述問(wèn)題
·棧溢出問(wèn)題
·棧結構邊界錯誤等
在下面的例子中,暗藏著(zhù)兩個(gè)內存使用錯誤。第一行為指針數組pp申請的空間尺寸不對。這類(lèi)錯誤往往不易發(fā)現,因為在C語(yǔ)言中,一些"輕微"的內存越界可能被系統所容忍。但這往往是導致更嚴重錯誤的根源。例如,可能破壞其它數據區等。最后一行的錯誤是在釋放pp 之前沒(méi)有釋放賦予它的字符串空間,從而把它們"丟失"了。這類(lèi)錯誤猶如慢性自殺,它會(huì )逐漸消耗掉內存,降低系統的運行效率,直到完全崩潰。而真正的問(wèn)題在于,這些程序中的"惡性腫瘤"用常規的測試手段和調試工具是極難發(fā)現和加以定位的。Purify則在此充分顯示了它的強大功效,所到之處,即對所測試過(guò)的情況,上述各種常見(jiàn)的內存錯誤都可以被一一揭露出來(lái),并且準確地指出錯誤的類(lèi)型和位置。從而大大地提高了測試和糾錯的效率,提高了軟件的可靠性。
…/"to get 10 words and print them out"/
if(!(pp=(char**)malloc(10))){
/*Size should be 10*sizeof(char*)*/
printf("Out of memory.\n");
exit(-1);
}
for(i=0;i<10;i++){
scanf("%s",buffer);
if(!(pp[i]=(char*)malloc(strlen(buffer)+1))){
print("Out of Memory.\ n");
exit(-1);
}
strcpy(pp[i],buffer);
printf(pp[i]);
}
free(pp);/*all the strings pointed by it are lost!*/
………
今年以來(lái),原PureAtria公司陸續推出了其系列產(chǎn)品?/FONT>Pure,包括支持內存檢測的Purify ,支持路徑覆蓋的PureCoverage,支持多線(xiàn)程應用程序性能測試的Quantify,以及用以提高測試期間連接編譯被測程序效率的PureLink等。Pure系列現已支持C、C++、FORTRAN語(yǔ)言,以及UNIX和Window NT等操作系統,如Sun OS、Solaris 2.3,HP-UX,Windows NT Server以及IBM A/ X等。
四、結束語(yǔ)
充分認識軟件測試的重要性和復雜性,合理地選擇測試方法,有效地組織測試人員和安排測試任務(wù),并且盡量使用軟件測試工具增強軟件測試的自動(dòng)化程度,無(wú)疑可以幫助軟件開(kāi)發(fā)和測試人員大大提高測試效率和軟件的質(zhì)量。
延伸閱讀
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/