




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
游戲軟件測試主講人:徐麗.4.7可測性4.7.1要有一套一致打印函數(shù)及詳細的闡明在同一工程組或產(chǎn)品組內(nèi),要有一套一致的為集成測試與系統(tǒng)聯(lián)調(diào)預(yù)備的調(diào)測開關(guān)及相應(yīng)打印函數(shù),并且要有詳細的闡明。闡明:本規(guī)那么是針對工程組或產(chǎn)品組的。4.7.2信息串的格式要一致在同一工程組或產(chǎn)品組內(nèi),調(diào)測打印出的信息串的格式要有一致的方式。信息串中至少要有所在模塊名〔或源文件名〕及行號。闡明:一致的調(diào)測信息格式便于集成測試。.4.7.3選擇恰當(dāng)?shù)臏y試點編程的同時要為單元測試選擇恰當(dāng)?shù)臏y試點,并仔細構(gòu)造測試代碼、測試用例,同時給出明確的注釋闡明。測試代碼部分應(yīng)作為〔模塊中的〕一個子模塊,以方便測試代碼在模塊中的安裝與裝配〔經(jīng)過調(diào)測開關(guān)〕。闡明:為單元測試而預(yù)備。4.7.4集成測試/系統(tǒng)聯(lián)調(diào)之前的預(yù)備在進展集成測試/系統(tǒng)聯(lián)調(diào)之前,要構(gòu)造好測試環(huán)境、測試工程及測試用例,同時仔細分析并優(yōu)化測試用例,以提高測試效率。闡明:好的測試用例應(yīng)盡能夠模擬出程序所遇到的邊境值、各種復(fù)雜環(huán)境及一些極端情況等。.4.7.5運用斷言來發(fā)現(xiàn)軟件問題運用斷言來發(fā)現(xiàn)軟件問題,提高代碼可測性。闡明:斷言是對某種假設(shè)條件進展檢查〔可了解為假設(shè)條件成立那么無動作,否那么應(yīng)報告〕,它可以快速發(fā)現(xiàn)并定位軟件問題,同時對系統(tǒng)錯誤進展自動報警。斷言可以對在系統(tǒng)中隱藏很深,用其它手段極難發(fā)現(xiàn)的問題進展定位,從而縮短軟件問題定位時間,提高系統(tǒng)的可測性。實踐運用時,可根據(jù)詳細情況靈敏地設(shè)計斷言。.4.7.6運用斷言檢查非法情況用斷言來檢查程序正常運轉(zhuǎn)時不應(yīng)發(fā)生但在調(diào)測時有能夠發(fā)生的非法情況。4.7.7斷言的正確運用不能用斷言來檢查最終產(chǎn)品一定會出現(xiàn)且必需處置的錯誤情況。闡明:斷言是用來處置不應(yīng)該發(fā)生的錯誤情況的,對于能夠會發(fā)生的且必需處置的情況要寫防錯程序,而不是斷言。如某模塊收到其它模塊或鏈路上的音訊后,要對音訊的合理性進展檢查,此過程為正常的錯誤檢查,不能用斷言來實現(xiàn)。.4.7.8對較復(fù)雜的斷言加上明確的注釋闡明:為復(fù)雜的斷言加注釋,可廓清斷言含義并減少不用要的誤用。4.7.9用斷言確認(rèn)函數(shù)的參數(shù)例如:假設(shè)某函數(shù)參數(shù)中有一個指針,那么運用指針前可對它檢查,如下。intExamFun(unsignedchar*str){EXAM_ASSERT(str!=NULL);//用斷言檢查“假設(shè)指針不為空〞這個條件 ...//otherprogramcode}.4.7.10確保不運用沒有定義的特性或功能用斷言保證沒有定義的特性或功能不被運用。例如:假設(shè)某通訊模塊在設(shè)計時,預(yù)備提供“無銜接〞和“銜接〞這兩種業(yè)務(wù)。但當(dāng)前的版本中僅實現(xiàn)了“無銜接〞業(yè)務(wù),且在此版本的正式發(fā)行版中,用戶〔上層模塊〕不應(yīng)產(chǎn)生“銜接〞業(yè)務(wù)的懇求,那么在測試時可用斷言檢查用戶能否運用“銜接〞業(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è)務(wù)
...//otherprogramcode}.4.7.11用斷言對程序開發(fā)環(huán)境的假設(shè)進展檢查用斷言對程序開發(fā)環(huán)境〔OS/Compiler/Hardware〕的假設(shè)進展檢查。闡明:程序運轉(zhuǎn)時所需的軟硬件環(huán)境及配置要求,不能用斷言來檢查,而必需由一段專門代碼處置。用斷言僅可對程序開發(fā)環(huán)境中的假設(shè)及所配置的某版本軟硬件能否具有某種功能的假設(shè)進展檢查。如某網(wǎng)卡能否在系統(tǒng)運轉(zhuǎn)環(huán)境中配置了,應(yīng)由程序中正式代碼來檢查;而此網(wǎng)卡能否具有某想象的功能,那么可由斷言來檢查。.對編譯器提供的功能及特性假設(shè)可用斷言檢查,緣由是軟件最終產(chǎn)品〔即運轉(zhuǎn)代碼或機器碼〕與編譯器已沒有任何直接關(guān)系,即軟件運轉(zhuǎn)過程中〔留意不是編譯過程中〕不會也不應(yīng)該對編譯器的功能提出任何需求。例如:用斷言檢查編譯器的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)掉〕。闡明:加快軟件運轉(zhuǎn)速度。.4.7.13不能影響軟件實現(xiàn)的功能在軟件系統(tǒng)中設(shè)置與取消有關(guān)測試手段,不能對軟件實現(xiàn)的功能等產(chǎn)生影響。闡明:即有測試代碼的軟件和關(guān)掉測試代碼的軟件,在功能行為上應(yīng)一致。4.7.14減少維護的難度用調(diào)測開關(guān)來切換軟件的DEBUG版和正式版,而不要同時存在正式版本和DEBUG版本的不同源文件,以減少維護的難度。.4.7.15確保軟件版本在實現(xiàn)功能上的一致性軟件的DEBUG版本和發(fā)行版本應(yīng)該一致維護,不允許分家,并且要時辰留意保證兩個版本在實現(xiàn)功能上的一致性。4.7.16編寫代碼之前要留意的事項在編寫代碼之前,應(yīng)預(yù)先設(shè)計好程序調(diào)試與測試的方法和手段,并設(shè)計好各種調(diào)測開關(guān)及相應(yīng)測試代碼如打印函數(shù)等。闡明:程序的調(diào)試與測試是軟件生存周期中很重要的一個階段,如何對軟件進展較全面、高率的測試并盡能夠地找出軟件中的錯誤就成為很關(guān)鍵的問題。因此在編寫源代碼之前,除了要有一套比較完善的測試方案外,還應(yīng)設(shè)計出一系列代碼測試手段,為單元測試、集成測試及系統(tǒng)聯(lián)調(diào)提供方便。.4.7.17調(diào)測開關(guān)應(yīng)分為不同級別和類型調(diào)測開關(guān)應(yīng)分為不同級別和類型。闡明:調(diào)測開關(guān)的設(shè)置及分類應(yīng)從以下幾方面思索:針對模塊或系統(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ù)角度上的效率;時間效率是程序處置輸入義務(wù)所需的時間長短;空間效率是程序所需內(nèi)存空間,如機器代碼空間大小、數(shù)據(jù)空間大小、??臻g大小等。4.8.2提高代碼效率在保證軟件系統(tǒng)的正確性、穩(wěn)定性、可讀性及可測性的前提下,提高代碼效率。闡明:不能一味地追求代碼效率,而對軟件的正確性、穩(wěn)定性、可讀性及可測性呵斥影響。.4.8.3部分效率與全局效率部分效率應(yīng)為全局效率效力,不能由于提高部分效率而對全局效率呵斥影響。4.8.4提高空間效率經(jīng)過對系統(tǒng)數(shù)據(jù)構(gòu)造的劃分與組織的改良,以及對程序算法的優(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ò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)仔細思索循環(huán)體內(nèi)的語句能否可以放在循環(huán)體之外,使循環(huán)體內(nèi)任務(wù)量最小,從而提高程序的時間效率。例如:如下代碼效率不高。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)及模塊處置輸入的方式仔細調(diào)查、分析系統(tǒng)及模塊處置輸入〔如事務(wù)、音訊等〕的方式,并加以改良。4.8.8提高程序效率對模塊中函數(shù)的劃分及組織方式進展分析、優(yōu)化,改良模塊中函數(shù)的組織構(gòu)造,提高程序效率。闡明:軟件系統(tǒng)的效率主要與算法、處置義務(wù)方式、系統(tǒng)功能及函數(shù)構(gòu)造有很大關(guān)系,僅在代碼上下功夫普通不能處理根本問題。.4.8.9留心代碼效率編程時,要隨時留心代碼效率;優(yōu)化代碼時,要思索周全。4.8.10恰當(dāng)優(yōu)化代碼提高效率不應(yīng)花過多的時間拼命地提高伐用不很頻繁的函數(shù)代碼效率。闡明:對代碼優(yōu)化可提高效率,但假設(shè)思索不周很有能夠引起嚴(yán)重后果。4.8.11慎重運用匯編嵌入方式要仔細地構(gòu)造或直接用匯編編寫調(diào)用頻繁或性能要求極高的函數(shù)。闡明:只需對編譯系統(tǒng)產(chǎn)活力器碼的方式以及硬件系統(tǒng)較為熟習(xí)時,才可運用匯編嵌入方式。嵌入?yún)R編可提高時間及空間效率,但也存在一定風(fēng)險。.4.8.12提高空間效率在保證程序質(zhì)量的前提下,經(jīng)過緊縮代碼量、去掉不用要代碼以及減少不用要的部分和全局變量,來提高空間效率。闡明:這種方式對提高空間效率可起到一定作用,但往往不能處理根本問題。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)體外,要視程序的詳細情況而言,普通情況,與循環(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);
應(yīng)如下把浮點除法改為浮點乘法。#definePAI_RECIPROCAL(1/3.1416)//編譯器編譯時,將生成詳細浮點數(shù)radius=circleLength*PAI_RECIPROCAL/2;
4.8.17不要一味追求緊湊的代碼闡明:由于緊湊的代碼并不代表高效的機器碼。.4.9宏4.9.1用宏定義表達式時,要運用完備的括號例如:如下定義的宏都存在一定的風(fēng)險。#defineRECTANGLE_AREA(a,b)a*b#defineRECTANGLE_AREA(a,b)(a
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 兒童眼科個案護理
- 二零二五年度超詳細!新能源汽車充電設(shè)施建設(shè)合同
- 2025年特殊場合電梯安裝與安全保障合同范本
- 2025版建筑工程質(zhì)量標(biāo)準(zhǔn)違約索賠與監(jiān)理服務(wù)合同
- 2025版?zhèn)€人汽車貸款擔(dān)保合同范本編寫與執(zhí)行規(guī)范解讀
- 二零二五版電廠煤炭采購合同與智能化支付結(jié)算
- 2025版股權(quán)轉(zhuǎn)讓顧問服務(wù)及投資分析協(xié)議
- 2025版知識產(chǎn)權(quán)保護擔(dān)保及保證合同
- 二零二五年度常年法律顧問合同(國際貿(mào)易專版)
- 二零二五年電視臺主持人配音作品版權(quán)及收益分配合同
- 塑料再生料質(zhì)量控制-洞察分析
- 旅行社安全培訓(xùn)課件
- 2025年廣西交通投資集團招聘筆試參考題庫含答案解析
- 《金屬非金屬礦山尾礦庫建設(shè)項目安全設(shè)施重大變更范圍》
- 住房和城鄉(xiāng)建設(shè)領(lǐng)域施工現(xiàn)場專業(yè)人員職業(yè)培訓(xùn)機構(gòu)申報表
- 《蛋白質(zhì)的變性》課件
- 2024-2025學(xué)年廣東省肇慶市肇慶中學(xué)高二(上)期中考試物理試卷(含答案)
- 水平定向鉆施工技術(shù)方案
- TCUWA40055-2023排水管道工程自密實回填材料應(yīng)用技術(shù)規(guī)程
- 松材線蟲病防控宣傳
- 2024年天翼云從業(yè)者認(rèn)證考試題庫
評論
0/150
提交評論