版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
游戲軟件測(cè)試主講人:徐麗.4.7可測(cè)性4.7.1要有一套一致打印函數(shù)及詳細(xì)的闡明在同一工程組或產(chǎn)品組內(nèi),要有一套一致的為集成測(cè)試與系統(tǒng)聯(lián)調(diào)預(yù)備的調(diào)測(cè)開(kāi)關(guān)及相應(yīng)打印函數(shù),并且要有詳細(xì)的闡明。闡明:本規(guī)那么是針對(duì)工程組或產(chǎn)品組的。4.7.2信息串的格式要一致在同一工程組或產(chǎn)品組內(nèi),調(diào)測(cè)打印出的信息串的格式要有一致的方式。信息串中至少要有所在模塊名〔或源文件名〕及行號(hào)。闡明:一致的調(diào)測(cè)信息格式便于集成測(cè)試。.4.7.3選擇恰當(dāng)?shù)臏y(cè)試點(diǎn)編程的同時(shí)要為單元測(cè)試選擇恰當(dāng)?shù)臏y(cè)試點(diǎn),并仔細(xì)構(gòu)造測(cè)試代碼、測(cè)試用例,同時(shí)給出明確的注釋闡明。測(cè)試代碼部分應(yīng)作為〔模塊中的〕一個(gè)子模塊,以方便測(cè)試代碼在模塊中的安裝與裝配〔經(jīng)過(guò)調(diào)測(cè)開(kāi)關(guān)〕。闡明:為單元測(cè)試而預(yù)備。4.7.4集成測(cè)試/系統(tǒng)聯(lián)調(diào)之前的預(yù)備在進(jìn)展集成測(cè)試/系統(tǒng)聯(lián)調(diào)之前,要構(gòu)造好測(cè)試環(huán)境、測(cè)試工程及測(cè)試用例,同時(shí)仔細(xì)分析并優(yōu)化測(cè)試用例,以提高測(cè)試效率。闡明:好的測(cè)試用例應(yīng)盡能夠模擬出程序所遇到的邊境值、各種復(fù)雜環(huán)境及一些極端情況等。.4.7.5運(yùn)用斷言來(lái)發(fā)現(xiàn)軟件問(wèn)題運(yùn)用斷言來(lái)發(fā)現(xiàn)軟件問(wèn)題,提高代碼可測(cè)性。闡明:斷言是對(duì)某種假設(shè)條件進(jìn)展檢查〔可了解為假設(shè)條件成立那么無(wú)動(dòng)作,否那么應(yīng)報(bào)告〕,它可以快速發(fā)現(xiàn)并定位軟件問(wèn)題,同時(shí)對(duì)系統(tǒng)錯(cuò)誤進(jìn)展自動(dòng)報(bào)警。斷言可以對(duì)在系統(tǒng)中隱藏很深,用其它手段極難發(fā)現(xiàn)的問(wèn)題進(jìn)展定位,從而縮短軟件問(wèn)題定位時(shí)間,提高系統(tǒng)的可測(cè)性。實(shí)踐運(yùn)用時(shí),可根據(jù)詳細(xì)情況靈敏地設(shè)計(jì)斷言。.4.7.6運(yùn)用斷言檢查非法情況用斷言來(lái)檢查程序正常運(yùn)轉(zhuǎn)時(shí)不應(yīng)發(fā)生但在調(diào)測(cè)時(shí)有能夠發(fā)生的非法情況。4.7.7斷言的正確運(yùn)用不能用斷言來(lái)檢查最終產(chǎn)品一定會(huì)出現(xiàn)且必需處置的錯(cuò)誤情況。闡明:斷言是用來(lái)處置不應(yīng)該發(fā)生的錯(cuò)誤情況的,對(duì)于能夠會(huì)發(fā)生的且必需處置的情況要寫(xiě)防錯(cuò)程序,而不是斷言。如某模塊收到其它模塊或鏈路上的音訊后,要對(duì)音訊的合理性進(jìn)展檢查,此過(guò)程為正常的錯(cuò)誤檢查,不能用斷言來(lái)實(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)用沒(méi)有定義的特性或功能用斷言保證沒(méi)有定義的特性或功能不被運(yùn)用。例如:假設(shè)某通訊模塊在設(shè)計(jì)時(shí),預(yù)備提供“無(wú)銜接〞和“銜接〞這兩種業(yè)務(wù)。但當(dāng)前的版本中僅實(shí)現(xiàn)了“無(wú)銜接〞業(yè)務(wù),且在此版本的正式發(fā)行版中,用戶〔上層模塊〕不應(yīng)產(chǎn)生“銜接〞業(yè)務(wù)的懇求,那么在測(cè)試時(shí)可用斷言檢查用戶能否運(yùn)用“銜接〞業(yè)務(wù)。.#defineEXAM_CONNECTIONLESS0//無(wú)銜接業(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ì)程序開(kāi)發(fā)環(huán)境的假設(shè)進(jìn)展檢查用斷言對(duì)程序開(kāi)發(fā)環(huán)境〔OS/Compiler/Hardware〕的假設(shè)進(jìn)展檢查。闡明:程序運(yùn)轉(zhuǎn)時(shí)所需的軟硬件環(huán)境及配置要求,不能用斷言來(lái)檢查,而必需由一段專門代碼處置。用斷言僅可對(duì)程序開(kāi)發(fā)環(huán)境中的假設(shè)及所配置的某版本軟硬件能否具有某種功能的假設(shè)進(jìn)展檢查。如某網(wǎng)卡能否在系統(tǒng)運(yùn)轉(zhuǎn)環(huán)境中配置了,應(yīng)由程序中正式代碼來(lái)檢查;而此網(wǎng)卡能否具有某想象的功能,那么可由斷言來(lái)檢查。.對(duì)編譯器提供的功能及特性假設(shè)可用斷言檢查,緣由是軟件最終產(chǎn)品〔即運(yùn)轉(zhuǎn)代碼或機(jī)器碼〕與編譯器已沒(méi)有任何直接關(guān)系,即軟件運(yùn)轉(zhuǎn)過(guò)程中〔留意不是編譯過(guò)程中〕不會(huì)也不應(yīng)該對(duì)編譯器的功能提出任何需求。例如:用斷言檢查編譯器的int型數(shù)據(jù)占用的內(nèi)存空間能否為2,如下。EXAM_ASSERT(sizeof(int)==2);4.7.12正式軟件產(chǎn)品中應(yīng)把斷言及其它調(diào)測(cè)代碼去掉正式軟件產(chǎn)品中應(yīng)把斷言及其它調(diào)測(cè)代碼去掉〔即把有關(guān)的調(diào)測(cè)開(kāi)關(guān)關(guān)掉〕。闡明:加快軟件運(yùn)轉(zhuǎn)速度。.4.7.13不能影響軟件實(shí)現(xiàn)的功能在軟件系統(tǒng)中設(shè)置與取消有關(guān)測(cè)試手段,不能對(duì)軟件實(shí)現(xiàn)的功能等產(chǎn)生影響。闡明:即有測(cè)試代碼的軟件和關(guān)掉測(cè)試代碼的軟件,在功能行為上應(yīng)一致。4.7.14減少維護(hù)的難度用調(diào)測(cè)開(kāi)關(guān)來(lái)切換軟件的DEBUG版和正式版,而不要同時(shí)存在正式版本和DEBUG版本的不同源文件,以減少維護(hù)的難度。.4.7.15確保軟件版本在實(shí)現(xiàn)功能上的一致性軟件的DEBUG版本和發(fā)行版本應(yīng)該一致維護(hù),不允許分家,并且要時(shí)辰留意保證兩個(gè)版本在實(shí)現(xiàn)功能上的一致性。4.7.16編寫(xiě)代碼之前要留意的事項(xiàng)在編寫(xiě)代碼之前,應(yīng)預(yù)先設(shè)計(jì)好程序調(diào)試與測(cè)試的方法和手段,并設(shè)計(jì)好各種調(diào)測(cè)開(kāi)關(guān)及相應(yīng)測(cè)試代碼如打印函數(shù)等。闡明:程序的調(diào)試與測(cè)試是軟件生存周期中很重要的一個(gè)階段,如何對(duì)軟件進(jìn)展較全面、高率的測(cè)試并盡能夠地找出軟件中的錯(cuò)誤就成為很關(guān)鍵的問(wèn)題。因此在編寫(xiě)源代碼之前,除了要有一套比較完善的測(cè)試方案外,還應(yīng)設(shè)計(jì)出一系列代碼測(cè)試手段,為單元測(cè)試、集成測(cè)試及系統(tǒng)聯(lián)調(diào)提供方便。.4.7.17調(diào)測(cè)開(kāi)關(guān)應(yīng)分為不同級(jí)別和類型調(diào)測(cè)開(kāi)關(guān)應(yīng)分為不同級(jí)別和類型。闡明:調(diào)測(cè)開(kāi)關(guān)的設(shè)置及分類應(yīng)從以下幾方面思索:針對(duì)模塊或系統(tǒng)某部分代碼的調(diào)測(cè);針對(duì)模塊或系統(tǒng)某功能的調(diào)測(cè);出于某種其它目的,如對(duì)性能、容量等的測(cè)試。這樣做便于軟件功能的調(diào)測(cè),并且便于模塊的單元測(cè)試、系統(tǒng)聯(lián)調(diào)等。4.7.18用斷言宣布發(fā)生錯(cuò)誤編寫(xiě)防錯(cuò)程序,然后在處置錯(cuò)誤之后可用斷言宣布發(fā)生錯(cuò)誤。.4.8程序效率4.8.1編程時(shí)要經(jīng)常留意代碼的效率闡明:代碼效率分為全局效率、部分效率、時(shí)間效率及空間效率。全局效率是站在整個(gè)系統(tǒng)的角度上的系統(tǒng)效率;部分效率是站在模塊或函數(shù)角度上的效率;時(shí)間效率是程序處置輸入義務(wù)所需的時(shí)間長(zhǎng)短;空間效率是程序所需內(nèi)存空間,如機(jī)器代碼空間大小、數(shù)據(jù)空間大小、??臻g大小等。4.8.2提高代碼效率在保證軟件系統(tǒng)的正確性、穩(wěn)定性、可讀性及可測(cè)性的前提下,提高代碼效率。闡明:不能一味地追求代碼效率,而對(duì)軟件的正確性、穩(wěn)定性、可讀性及可測(cè)性呵斥影響。.4.8.3部分效率與全局效率部分效率應(yīng)為全局效率效力,不能由于提高部分效率而對(duì)全局效率呵斥影響。4.8.4提高空間效率經(jīng)過(guò)對(duì)系統(tǒng)數(shù)據(jù)構(gòu)造的劃分與組織的改良,以及對(duì)程序算法的優(yōu)化來(lái)提高空間效率。闡明:這種方式是處理軟件空間效率的根本方法。.例如:如下記錄學(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)的語(yǔ)句能否可以放在循環(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)系,僅在代碼上下功夫普通不能處理根本問(wèn)題。.4.8.9留心代碼效率編程時(shí),要隨時(shí)留心代碼效率;優(yōu)化代碼時(shí),要思索周全。4.8.10恰當(dāng)優(yōu)化代碼提高效率不應(yīng)花過(guò)多的時(shí)間拼命地提高伐用不很頻繁的函數(shù)代碼效率。闡明:對(duì)代碼優(yōu)化可提高效率,但假設(shè)思索不周很有能夠引起嚴(yán)重后果。4.8.11慎重運(yùn)用匯編嵌入方式要仔細(xì)地構(gòu)造或直接用匯編編寫(xiě)調(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)過(guò)緊縮代碼量、去掉不用要代碼以及減少不用要的部分和全局變量,來(lái)提高空間效率。闡明:這種方式對(duì)提高空間效率可起到一定作用,但往往不能處理根本問(wèn)題。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)含判別語(yǔ)句防止循環(huán)體內(nèi)含判別語(yǔ)句,應(yīng)將循環(huán)語(yǔ)句置于判別語(yǔ)句的代碼塊之中。闡明:目的是減少判別次數(shù)。循環(huán)體中的判別語(yǔ)句能否可以移到循環(huán)體外,要視程序的詳細(xì)情況而言,普通情況,與循環(huán)變量無(wú)關(guān)的判別語(yǔ)句可以移到循環(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; }}.由于判別語(yǔ)句與循環(huán)變量無(wú)關(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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)優(yōu)考核試卷含答案
- 油品儲(chǔ)運(yùn)調(diào)合工變革管理強(qiáng)化考核試卷含答案
- 風(fēng)箏工沖突解決評(píng)優(yōu)考核試卷含答案
- 自輪運(yùn)轉(zhuǎn)設(shè)備檢修工操作強(qiáng)化考核試卷含答案
- 丙烷脫氫裝置操作工崗前工作合規(guī)考核試卷含答案
- 轉(zhuǎn)爐煉鋼工風(fēng)險(xiǎn)識(shí)別模擬考核試卷含答案
- 球拍球網(wǎng)制作工操作規(guī)程考核試卷含答案
- 1,4-丁二醇裝置操作工常識(shí)評(píng)優(yōu)考核試卷含答案
- 工藝美術(shù)品設(shè)計(jì)師崗前內(nèi)部控制考核試卷含答案
- 煙機(jī)電工復(fù)測(cè)競(jìng)賽考核試卷含答案
- 《電動(dòng)汽車充電基礎(chǔ)設(shè)施建設(shè)技術(shù)規(guī)程》(DBJT15-150-2018)
- 傳感器技術(shù)-武漢大學(xué)
- GB 28008-2024家具結(jié)構(gòu)安全技術(shù)規(guī)范
- MOOC 國(guó)際貿(mào)易實(shí)務(wù)-上海對(duì)外經(jīng)貿(mào)大學(xué) 中國(guó)大學(xué)慕課答案
- JJF1030-2023溫度校準(zhǔn)用恒溫槽技術(shù)性能測(cè)試規(guī)范
- 安全生產(chǎn)節(jié)前安全教育培訓(xùn)
- Windows Server 2012 R2系統(tǒng)管理與服務(wù)器配置教案 項(xiàng)目1、2(第1-3周)
- 【年產(chǎn)5000噸氯化苯的工藝設(shè)計(jì)11000字(論文)】
- 基于內(nèi)部控制視角的長(zhǎng)生生物疫苗案例研究
- 山東省濟(jì)南市萊蕪區(qū)蓮河學(xué)校片區(qū)聯(lián)盟2023-2024學(xué)年(五四學(xué)制)六年級(jí)上學(xué)期12月月考語(yǔ)文試題
- 正高級(jí)會(huì)計(jì)師答辯面試資料
評(píng)論
0/150
提交評(píng)論