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

下載本文檔

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

文檔簡介

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

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

EXAM_ASSERT(msg!=NULL);

service=GetMsgServiceClass(msg);

EXAM_ASSERT(service!=EXAM_CONNECTION);//假設(shè)不運(yùn)用銜接業(yè)務(wù)

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

typedefstructSTUDENT_SCORE_STRU{ BYTEname[8]; BYTEage; BYTEsex; BYTEclass; BYTEsubject; floatscore;}STUDENT_SCORE;.由于每位學(xué)生都有多科學(xué)習(xí)成果,故如上構(gòu)造將占用較大空間。應(yīng)如下改良〔分為兩個(gè)構(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)任務(wù)量最小化闡明:應(yīng)仔細(xì)思索循環(huán)體內(nèi)的語句能否可以放在循環(huán)體之外,使循環(huán)體內(nèi)任務(wù)量最小,從而提高程序的時(shí)間效率。例如:如下代碼效率不高。for(ind=0;ind<MAX_ADD_NUMBER;ind++){ sum+=ind; backSum=sum;/*backupsum*/}

.4.8.6算法的優(yōu)化仔細(xì)分析有關(guān)算法,并進(jìn)展優(yōu)化。4.8.7改良系統(tǒng)及模塊處置輸入的方式仔細(xì)調(diào)查、分析系統(tǒng)及模塊處置輸入〔如事務(wù)、音訊等〕的方式,并加以改良。4.8.8提高程序效率對(duì)模塊中函數(shù)的劃分及組織方式進(jìn)展分析、優(yōu)化,改良模塊中函數(shù)的組織構(gòu)造,提高程序效率。闡明:軟件系統(tǒng)的效率主要與算法、處置義務(wù)方式、系統(tǒng)功能及函數(shù)構(gòu)造有很大關(guān)系,僅在代碼上下功夫普通不能處理根本問題。.4.8.9留心代碼效率編程時(shí),要隨時(shí)留心代碼效率;優(yōu)化代碼時(shí),要思索周全。4.8.10恰當(dāng)優(yōu)化代碼提高效率不應(yīng)花過多的時(shí)間拼命地提高伐用不很頻繁的函數(shù)代碼效率。闡明:對(duì)代碼優(yōu)化可提高效率,但假設(shè)思索不周很有能夠引起嚴(yán)重后果。4.8.11慎重運(yùn)用匯編嵌入方式要仔細(xì)地構(gòu)造或直接用匯編編寫調(diào)用頻繁或性能要求極高的函數(shù)。闡明:只需對(duì)編譯系統(tǒng)產(chǎn)活力器碼的方式以及硬件系統(tǒng)較為熟習(xí)時(shí),才可運(yùn)用匯編嵌入方式。嵌入?yún)R編可提高時(shí)間及空間效率,但也存在一定風(fēng)險(xiǎn)。.4.8.12提高空間效率在保證程序質(zhì)量的前提下,經(jīng)過緊縮代碼量、去掉不用要代碼以及減少不用要的部分和全局變量,來提高空間效率。闡明:這種方式對(duì)提高空間效率可起到一定作用,但往往不能處理根本問題。4.8.13在多重循環(huán)中,應(yīng)將最忙的循環(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)含判別語句,應(yīng)將循環(huán)語句置于判別語句的代碼塊之中。闡明:目的是減少判別次數(shù)。循環(huán)體中的判別語句能否可以移到循環(huán)體外,要視程序的詳細(xì)情況而言,普通情況,與循環(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用乘法或其它方法替代除法盡量用乘法或其它方法替代除法,特別是浮點(diǎn)運(yùn)算中的除法。闡明:浮點(diǎn)運(yùn)算除法要占用較多CPU資源。例如:如下表達(dá)式運(yùn)算能夠要占較多CPU資源。#definePAI3.1416

radius=circleLength/(2*PAI);

應(yīng)如下把浮點(diǎn)除法改為浮點(diǎn)乘法。#definePAI_RECIPROCAL(1/3.1416)//編譯器編譯時(shí),將生成詳細(xì)浮點(diǎn)數(shù)radius=circleLength*PAI_RECIPROCAL/2;

4.8.17不要一味追求緊湊的代碼闡明:由于緊湊的代碼并不代表高效的機(jī)器碼。.4.9宏4.9.1用宏定義表達(dá)式時(shí),要運(yùn)用完備的括號(hào)例如:如下定義的宏都存在一定的風(fēng)險(xiǎn)。#defineRECTANGLE_AREA(a,b)a*b#defineRECTANGLE_AREA(a,b)(a

溫馨提示

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

評(píng)論

0/150

提交評(píng)論