總之,SQA Suite提供了一個比較完整的測試平臺,以支持軟件測試的各種基本活動,包括測試計劃與測試大綱的制定、回歸測試的自動化、測試結果的分析比較、軟件問題報告的生成與自動分發和控制等。對于許多應用軟件的開發無疑是個有力的測試支持工具。
Purify是原PureAtria公司(現已經與美國Rational公司合并,改名為美國Rational公司)于90年代初率先推出的專門用于檢測程序中種種內存使用錯誤的軟件工具。幾乎所有使用過C語言開發軟件的程序員都會有這樣的體會,C語言中使用極為靈活的指針給程序員帶來了很大便利,但同時也制造了許多的麻煩。由于指針使用不當而引起的錯誤通常是最難發現的,同時也是最難定位的一類錯誤。而Purify對多種常見的內存使用錯誤的檢錯能力和準確的定位,受到廣大軟件開發人員的青睞。
Purify可以自動識別出二十多種內存使用錯誤,包括
·未初始化的局部變量
·未申請的內存
·使用已釋放的內存
·數組越界
·內存丟失
·文件描述問題
·棧溢出問題
·棧結構邊界錯誤等
在下面的例子中,暗藏著兩個內存使用錯誤。第一行為指針數組pp申請的空間尺寸不對。這類錯誤往往不易發現,因為在C語言中,一些"輕微"的內存越界可能被系統所容忍。但這往往是導致更嚴重錯誤的根源。例如,可能破壞其它數據區等。最后一行的錯誤是在釋放pp 之前沒有釋放賦予它的字符串空間,從而把它們"丟失"了。這類錯誤猶如慢性自殺,它會逐漸消耗掉內存,降低系統的運行效率,直到完全崩潰。而真正的問題在于,這些程序中的"惡性腫瘤"用常規的測試手段和調試工具是極難發現和加以定位的。Purify則在此充分顯示了它的強大功效,所到之處,即對所測試過的情況,上述各種常見的內存錯誤都可以被一一揭露出來,并且準確地指出錯誤的類型和位置。從而大大地提高了測試和糾錯的效率,提高了軟件的可靠性。
…/"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!*/
………
今年以來,原PureAtria公司陸續推出了其系列產品?/FONT>Pure,包括支持內存檢測的Purify ,支持路徑覆蓋的PureCoverage,支持多線程應用程序性能測試的Quantify,以及用以提高測試期間連接編譯被測程序效率的PureLink等。Pure系列現已支持C、C++、FORTRAN語言,以及UNIX和Window NT等操作系統,如Sun OS、Solaris 2.3,HP-UX,Windows NT Server以及IBM A/ X等。
四、結束語
充分認識軟件測試的重要性和復雜性,合理地選擇測試方法,有效地組織測試人員和安排測試任務,并且盡量使用軟件測試工具增強軟件測試的自動化程度,無疑可以幫助軟件開發和測試人員大大提高測試效率和軟件的質量。
//
文章來源于領測軟件測試網 http://www.kjueaiud.com/