游戲軟件測試培訓資料_第1頁
游戲軟件測試培訓資料_第2頁
游戲軟件測試培訓資料_第3頁
游戲軟件測試培訓資料_第4頁
游戲軟件測試培訓資料_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

游戲軟件測試主講人:徐麗第一頁,共三十二頁。4.7可測性4.7.1要有一套統(tǒng)一打印函數(shù)及詳細的說明在同一項目組或產(chǎn)品組內(nèi),要有一套統(tǒng)一的為集成測試與系統(tǒng)聯(lián)調(diào)準備的調(diào)測開關(guān)及相應打印函數(shù),并且要有詳細的說明。說明:本規(guī)則是針對項目組或產(chǎn)品組的。4.7.2信息串的格式要統(tǒng)一在同一項目組或產(chǎn)品組內(nèi),調(diào)測打印出的信息串的格式要有統(tǒng)一的形式。信息串中至少要有所在模塊名(或源文件名)及行號。說明:統(tǒng)一的調(diào)測信息格式便于集成測試。第二頁,共三十二頁。4.7.3選擇恰當?shù)臏y試點編程的同時要為單元測試選擇恰當?shù)臏y試點,并仔細構(gòu)造測試代碼、測試用例,同時給出明確的注釋說明。測試代碼部分應作為(模塊中的)一個子模塊,以方便測試代碼在模塊中的安裝與拆卸(通過調(diào)測開關(guān))。說明:為單元測試而準備。4.7.4集成測試/系統(tǒng)聯(lián)調(diào)之前的準備在進行集成測試/系統(tǒng)聯(lián)調(diào)之前,要構(gòu)造好測試環(huán)境、測試項目及測試用例,同時仔細分析并優(yōu)化測試用例,以提高測試效率。說明:好的測試用例應盡可能模擬出程序所遇到的邊界值、各種復雜環(huán)境及一些極端情況等。第三頁,共三十二頁。4.7.5使用斷言來發(fā)現(xiàn)軟件問題使用斷言來發(fā)現(xiàn)軟件問題,提高代碼可測性。說明:斷言是對某種假設條件進行檢查(可理解為若條件成立則無動作,否則應報告),它可以快速發(fā)現(xiàn)并定位軟件問題,同時對系統(tǒng)錯誤進行自動報警。斷言可以對在系統(tǒng)中隱藏很深,用其它手段極難發(fā)現(xiàn)的問題進行定位,從而縮短軟件問題定位時間,提高系統(tǒng)的可測性。實際應用時,可根據(jù)具體情況靈活地設計斷言。第四頁,共三十二頁。4.7.6使用斷言檢查非法情況用斷言來檢查程序正常運行時不應發(fā)生但在調(diào)測時有可能發(fā)生的非法情況。4.7.7斷言的正確使用不能用斷言來檢查最終產(chǎn)品肯定會出現(xiàn)且必須處理的錯誤情況。說明:斷言是用來處理不應該發(fā)生的錯誤情況的,對于可能會發(fā)生的且必須處理的情況要寫防錯程序,而不是斷言。如某模塊收到其它模塊或鏈路上的消息后,要對消息的合理性進行檢查,此過程為正常的錯誤檢查,不能用斷言來實現(xiàn)。第五頁,共三十二頁。4.7.8對較復雜的斷言加上明確的注釋說明:為復雜的斷言加注釋,可澄清斷言含義并減少不必要的誤用。4.7.9用斷言確認函數(shù)的參數(shù)示例:假設某函數(shù)參數(shù)中有一個指針,那么使用指針前可對它檢查,如下。intExamFun(unsignedchar*str){EXAM_ASSERT(str!=NULL);//用斷言檢查“假設指針不為空”這個條件 ...//otherprogramcode}第六頁,共三十二頁。4.7.10確保不使用沒有定義的特性或功能用斷言保證沒有定義的特性或功能不被使用。示例:假設某通信模塊在設計時,準備提供“無連接”和“連接”這兩種業(yè)務。但當前的版本中僅實現(xiàn)了“無連接”業(yè)務,且在此版本的正式發(fā)行版中,用戶(上層模塊)不應產(chǎn)生“連接”業(yè)務的請求,那么在測試時可用斷言檢查用戶是否使用“連接”業(yè)務。第七頁,共三十二頁。#defineEXAM_CONNECTIONLESS0//無連接業(yè)務#defineEXAM_CONNECTION1//連接業(yè)務

intMsgProcess(EXAM_MESSAGE*msg){unsignedcharservice;/*messageserviceclass*/

EXAM_ASSERT(msg!=NULL);

service=GetMsgServiceClass(msg);

EXAM_ASSERT(service!=EXAM_CONNECTION);//假設不使用連接業(yè)務

...//otherprogramcode}第八頁,共三十二頁。4.7.11用斷言對程序開發(fā)環(huán)境的假設進行檢查用斷言對程序開發(fā)環(huán)境(OS/Compiler/Hardware)的假設進行檢查。說明:程序運行時所需的軟硬件環(huán)境及配置要求,不能用斷言來檢查,而必須由一段專門代碼處理。用斷言僅可對程序開發(fā)環(huán)境中的假設及所配置的某版本軟硬件是否具有某種功能的假設進行檢查。如某網(wǎng)卡是否在系統(tǒng)運行環(huán)境中配置了,應由程序中正式代碼來檢查;而此網(wǎng)卡是否具有某設想的功能,則可由斷言來檢查。第九頁,共三十二頁。對編譯器提供的功能及特性假設可用斷言檢查,原因是軟件最終產(chǎn)品(即運行代碼或機器碼)與編譯器已沒有任何直接關(guān)系,即軟件運行過程中(注意不是編譯過程中)不會也不應該對編譯器的功能提出任何需求。示例:用斷言檢查編譯器的int型數(shù)據(jù)占用的內(nèi)存空間是否為2,如下。EXAM_ASSERT(sizeof(int)==2);4.7.12正式軟件產(chǎn)品中應把斷言及其它調(diào)測代碼去掉正式軟件產(chǎn)品中應把斷言及其它調(diào)測代碼去掉(即把有關(guān)的調(diào)測開關(guān)關(guān)掉)。說明:加快軟件運行速度。第十頁,共三十二頁。4.7.13不能影響軟件實現(xiàn)的功能在軟件系統(tǒng)中設置與取消有關(guān)測試手段,不能對軟件實現(xiàn)的功能等產(chǎn)生影響。說明:即有測試代碼的軟件和關(guān)掉測試代碼的軟件,在功能行為上應一致。4.7.14減少維護的難度用調(diào)測開關(guān)來切換軟件的DEBUG版和正式版,而不要同時存在正式版本和DEBUG版本的不同源文件,以減少維護的難度。第十一頁,共三十二頁。4.7.15確保軟件版本在實現(xiàn)功能上的一致性軟件的DEBUG版本和發(fā)行版本應該統(tǒng)一維護,不允許分家,并且要時刻注意保證兩個版本在實現(xiàn)功能上的一致性。4.7.16編寫代碼之前要注意的事項在編寫代碼之前,應預先設計好程序調(diào)試與測試的方法和手段,并設計好各種調(diào)測開關(guān)及相應測試代碼如打印函數(shù)等。說明:程序的調(diào)試與測試是軟件生存周期中很重要的一個階段,如何對軟件進行較全面、高率的測試并盡可能地找出軟件中的錯誤就成為很關(guān)鍵的問題。因此在編寫源代碼之前,除了要有一套比較完善的測試計劃外,還應設計出一系列代碼測試手段,為單元測試、集成測試及系統(tǒng)聯(lián)調(diào)提供方便。第十二頁,共三十二頁。4.7.17調(diào)測開關(guān)應分為不同級別和類型調(diào)測開關(guān)應分為不同級別和類型。說明:調(diào)測開關(guān)的設置及分類應從以下幾方面考慮:針對模塊或系統(tǒng)某部分代碼的調(diào)測;針對模塊或系統(tǒng)某功能的調(diào)測;出于某種其它目的,如對性能、容量等的測試。這樣做便于軟件功能的調(diào)測,并且便于模塊的單元測試、系統(tǒng)聯(lián)調(diào)等。4.7.18用斷言宣布發(fā)生錯誤編寫防錯程序,然后在處理錯誤之后可用斷言宣布發(fā)生錯誤。第十三頁,共三十二頁。4.8程序效率4.8.1編程時要經(jīng)常注意代碼的效率說明:代碼效率分為全局效率、局部效率、時間效率及空間效率。全局效率是站在整個系統(tǒng)的角度上的系統(tǒng)效率;局部效率是站在模塊或函數(shù)角度上的效率;時間效率是程序處理輸入任務所需的時間長短;空間效率是程序所需內(nèi)存空間,如機器代碼空間大小、數(shù)據(jù)空間大小、??臻g大小等。4.8.2提高代碼效率在保證軟件系統(tǒng)的正確性、穩(wěn)定性、可讀性及可測性的前提下,提高代碼效率。說明:不能一味地追求代碼效率,而對軟件的正確性、穩(wěn)定性、可讀性及可測性造成影響。第十四頁,共三十二頁。4.8.3局部效率與全局效率局部效率應為全局效率服務,不能因為提高局部效率而對全局效率造成影響。4.8.4提高空間效率通過對系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的劃分與組織的改進,以及對程序算法的優(yōu)化來提高空間效率。說明:這種方式是解決軟件空間效率的根本辦法。第十五頁,共三十二頁。示例:如下記錄學生學習成績的結(jié)構(gòu)不合理。typedefunsignedcharBYTE;typedefunsignedshortWORD;

typedefstructSTUDENT_SCORE_STRU{ BYTEname[8]; BYTEage; BYTEsex; BYTEclass; BYTEsubject; floatscore;}STUDENT_SCORE;第十六頁,共三十二頁。因為每位學生都有多科學習成績,故如上結(jié)構(gòu)將占用較大空間。應如下改進(分為兩個結(jié)構(gòu)),總的存貯空間將變小,操作也變得更方便。typedefstructSTUDENT_STRU{ BYTEname[8]; BYTEage; BYTEsex; BYTEclass;}STUDENT;

typedefstructSTUDENT_SCORE_STRU{ WORDstudentIndex; BYTEsubject; floatscore;}STUDENT_SCORE;第十七頁,共三十二頁。4.8.5循環(huán)體內(nèi)工作量最小化說明:應仔細考慮循環(huán)體內(nèi)的語句是否可以放在循環(huán)體之外,使循環(huán)體內(nèi)工作量最小,從而提高程序的時間效率。示例:如下代碼效率不高。for(ind=0;ind<MAX_ADD_NUMBER;ind++){ sum+=ind; backSum=sum;/*backupsum*/}

第十八頁,共三十二頁。4.8.6算法的優(yōu)化仔細分析有關(guān)算法,并進行優(yōu)化。4.8.7改進系統(tǒng)及模塊處理輸入的方式仔細考查、分析系統(tǒng)及模塊處理輸入(如事務、消息等)的方式,并加以改進。4.8.8提高程序效率對模塊中函數(shù)的劃分及組織方式進行分析、優(yōu)化,改進模塊中函數(shù)的組織結(jié)構(gòu),提高程序效率。說明:軟件系統(tǒng)的效率主要與算法、處理任務方式、系統(tǒng)功能及函數(shù)結(jié)構(gòu)有很大關(guān)系,僅在代碼上下功夫一般不能解決根本問題。第十九頁,共三十二頁。4.8.9留心代碼效率編程時,要隨時留心代碼效率;優(yōu)化代碼時,要考慮周全。4.8.10恰當優(yōu)化代碼提高效率不應花過多的時間拼命地提高調(diào)用不很頻繁的函數(shù)代碼效率。說明:對代碼優(yōu)化可提高效率,但若考慮不周很有可能引起嚴重后果。4.8.11慎重使用匯編嵌入方式要仔細地構(gòu)造或直接用匯編編寫調(diào)用頻繁或性能要求極高的函數(shù)。說明:只有對編譯系統(tǒng)產(chǎn)生機器碼的方式以及硬件系統(tǒng)較為熟悉時,才可使用匯編嵌入方式。嵌入?yún)R編可提高時間及空間效率,但也存在一定風險。第二十頁,共三十二頁。4.8.12提高空間效率在保證程序質(zhì)量的前提下,通過壓縮代碼量、去掉不必要代碼以及減少不必要的局部和全局變量,來提高空間效率。說明:這種方式對提高空間效率可起到一定作用,但往往不能解決根本問題。4.8.13在多重循環(huán)中,應將最忙的循環(huán)放在最內(nèi)層說明:減少CPU切入循環(huán)層的次數(shù)。第二十一頁,共三十二頁。示例:如下代碼效率不高。for(row=0;row<100;row++){ for(col=0;col<5;col++) { sum+=a[row][col]; }}可以改為如下方式,以提高效率。for(col=0;col<5;col++){ for(row=0;row<100;row++) { sum+=a[row][col]; }}第二十二頁,共三十二頁。4.8.14盡量減少循環(huán)嵌套層次4.8.15避免循環(huán)體內(nèi)含判斷語句避免循環(huán)體內(nèi)含判斷語句,應將循環(huán)語句置于判斷語句的代碼塊之中。說明:目的是減少判斷次數(shù)。循環(huán)體中的判斷語句是否可以移到循環(huán)體外,要視程序的具體情況而言,一般情況,與循環(huán)變量無關(guān)的判斷語句可以移到循環(huán)體外,而有關(guān)的則不可以。第二十三頁,共三十二頁。示例:如下代碼效率稍低。for(ind=0;ind<MAX_RECT_NUMBER;ind++){ if(dataType==RECT_AREA) { areaSum+=rectArea[ind]; } else {rectLengthSum+=rect[ind].length;rectWidthSum+=rect[ind].width; }}第二十四頁,共三十二頁。因為判斷語句與循環(huán)變量無關(guān),故可如下改進,以減少判斷次數(shù)。if(dataType==RECT_AREA){for(ind=0;ind<MAX_RECT_NUMBER;ind++){areaSum+=rectArea[ind];}}else{for(ind=0;ind<MAX_RECT_NUMBER;ind++){rectLengthSum+=rect[ind].length;rectWidthSum+=rect[ind].width;}}第二十五頁,共三十二頁。4.8.16用乘法或其它方法代替除法盡量用乘法或其它方法代替除法,特別是浮點運算中的除法。說明:浮點運算除法要占用較多CPU資源。示例:如下表達式運算可能要占較多CPU資源。#definePAI3.1416

radius=circleLength/(2*PAI);

應如下把浮點除法改為浮點乘法。#definePAI_RECIPROCAL(1/3.1416)//編譯器編譯時,將生成具體浮點數(shù)radius=circleLength*PAI_RECIPROCAL/2;

4.8.17不要一味追求緊湊的代碼說明:因為緊湊的代碼并不代表高效的機器碼。第二十六頁,共三十二頁。4.9宏4.9.1用宏定義表達式時,要使用完備的括號示例:如下定義的宏都存在一定的風險。#defineRECTANGLE_AREA(a,b)a*b#defineRECTANGLE_AREA(a,b)(a*b)#defineRECTANGLE_AREA(a,b)(a)*(b)正確的定義應為:#defineRECTANGLE_AREA(a,b)((a)*(b))第二十七頁,共三十二頁。4.9.2將宏所定義的多條表達式放在大括號中示例:下面的語句只有宏的第一條表達式被執(zhí)行。為了說明問題,for語句的書寫稍不符規(guī)范。#defineINTI_RECT_VALUE(a,b)\ a=0;\ b=0;

for(index=0;index<RECT_TOTAL_NUM;index++)

INTI_RECT

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論