




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
游戲軟件測試主講人:徐麗.4.7可測性4.7.1要有一套一致打印函數(shù)及詳細的闡明在同一工程組或產品組內,要有一套一致的為集成測試與系統(tǒng)聯(lián)調預備的調測開關及相應打印函數(shù),并且要有詳細的闡明。闡明:本規(guī)那么是針對工程組或產品組的。4.7.2信息串的格式要一致在同一工程組或產品組內,調測打印出的信息串的格式要有一致的方式。信息串中至少要有所在模塊名〔或源文件名〕及行號。闡明:一致的調測信息格式便于集成測試。.4.7.3選擇恰當?shù)臏y試點編程的同時要為單元測試選擇恰當?shù)臏y試點,并仔細構造測試代碼、測試用例,同時給出明確的注釋闡明。測試代碼部分應作為〔模塊中的〕一個子模塊,以方便測試代碼在模塊中的安裝與裝配〔經過調測開關〕。闡明:為單元測試而預備。4.7.4集成測試/系統(tǒng)聯(lián)調之前的預備在進展集成測試/系統(tǒng)聯(lián)調之前,要構造好測試環(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ā)生但在調測時有能夠發(fā)生的非法情況。4.7.7斷言的正確運用不能用斷言來檢查最終產品一定會出現(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ā)行版中,用戶〔上層模塊〕不應產生“銜接〞業(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)境中的假設及所配置的某版本軟硬件能否具有某種功能的假設進展檢查。如某網卡能否在系統(tǒng)運轉環(huán)境中配置了,應由程序中正式代碼來檢查;而此網卡能否具有某想象的功能,那么可由斷言來檢查。.對編譯器提供的功能及特性假設可用斷言檢查,緣由是軟件最終產品〔即運轉代碼或機器碼〕與編譯器已沒有任何直接關系,即軟件運轉過程中〔留意不是編譯過程中〕不會也不應該對編譯器的功能提出任何需求。例如:用斷言檢查編譯器的int型數(shù)據(jù)占用的內存空間能否為2,如下。EXAM_ASSERT(sizeof(int)==2);4.7.12正式軟件產品中應把斷言及其它調測代碼去掉正式軟件產品中應把斷言及其它調測代碼去掉〔即把有關的調測開關關掉〕。闡明:加快軟件運轉速度。.4.7.13不能影響軟件實現(xiàn)的功能在軟件系統(tǒng)中設置與取消有關測試手段,不能對軟件實現(xiàn)的功能等產生影響。闡明:即有測試代碼的軟件和關掉測試代碼的軟件,在功能行為上應一致。4.7.14減少維護的難度用調測開關來切換軟件的DEBUG版和正式版,而不要同時存在正式版本和DEBUG版本的不同源文件,以減少維護的難度。.4.7.15確保軟件版本在實現(xiàn)功能上的一致性軟件的DEBUG版本和發(fā)行版本應該一致維護,不允許分家,并且要時辰留意保證兩個版本在實現(xiàn)功能上的一致性。4.7.16編寫代碼之前要留意的事項在編寫代碼之前,應預先設計好程序調試與測試的方法和手段,并設計好各種調測開關及相應測試代碼如打印函數(shù)等。闡明:程序的調試與測試是軟件生存周期中很重要的一個階段,如何對軟件進展較全面、高率的測試并盡能夠地找出軟件中的錯誤就成為很關鍵的問題。因此在編寫源代碼之前,除了要有一套比較完善的測試方案外,還應設計出一系列代碼測試手段,為單元測試、集成測試及系統(tǒng)聯(lián)調提供方便。.4.7.17調測開關應分為不同級別和類型調測開關應分為不同級別和類型。闡明:調測開關的設置及分類應從以下幾方面思索:針對模塊或系統(tǒng)某部分代碼的調測;針對模塊或系統(tǒng)某功能的調測;出于某種其它目的,如對性能、容量等的測試。這樣做便于軟件功能的調測,并且便于模塊的單元測試、系統(tǒng)聯(lián)調等。4.7.18用斷言宣布發(fā)生錯誤編寫防錯程序,然后在處置錯誤之后可用斷言宣布發(fā)生錯誤。.4.8程序效率4.8.1編程時要經常留意代碼的效率闡明:代碼效率分為全局效率、部分效率、時間效率及空間效率。全局效率是站在整個系統(tǒng)的角度上的系統(tǒng)效率;部分效率是站在模塊或函數(shù)角度上的效率;時間效率是程序處置輸入義務所需的時間長短;空間效率是程序所需內存空間,如機器代碼空間大小、數(shù)據(jù)空間大小、棧空間大小等。4.8.2提高代碼效率在保證軟件系統(tǒng)的正確性、穩(wěn)定性、可讀性及可測性的前提下,提高代碼效率。闡明:不能一味地追求代碼效率,而對軟件的正確性、穩(wěn)定性、可讀性及可測性呵斥影響。.4.8.3部分效率與全局效率部分效率應為全局效率效力,不能由于提高部分效率而對全局效率呵斥影響。4.8.4提高空間效率經過對系統(tǒng)數(shù)據(jù)構造的劃分與組織的改良,以及對程序算法的優(yōu)化來提高空間效率。闡明:這種方式是處理軟件空間效率的根本方法。.例如:如下記錄學生學習成果的構造不合理。typedefunsignedcharBYTE;typedefunsignedshortWORD;
typedefstructSTUDENT_SCORE_STRU{ BYTEname[8]; BYTEage; BYTEsex; BYTEclass; BYTEsubject; floatscore;}STUDENT_SCORE;.由于每位學生都有多科學習成果,故如上構造將占用較大空間。應如下改良〔分為兩個構造〕,總的存貯空間將變小,操作也變得更方便。typedefstructSTUDENT_STRU{ BYTEname[8]; BYTEage; BYTEsex; BYTEclass;}STUDENT;
typedefstructSTUDENT_SCORE_STRU{ WORDstudentIndex; BYTEsubject; floatscore;}STUDENT_SCORE;.4.8.5循環(huán)體內任務量最小化闡明:應仔細思索循環(huán)體內的語句能否可以放在循環(huán)體之外,使循環(huán)體內任務量最小,從而提高程序的時間效率。例如:如下代碼效率不高。for(ind=0;ind<MAX_ADD_NUMBER;ind++){ sum+=ind; backSum=sum;/*backupsum*/}
.4.8.6算法的優(yōu)化仔細分析有關算法,并進展優(yōu)化。4.8.7改良系統(tǒng)及模塊處置輸入的方式仔細調查、分析系統(tǒng)及模塊處置輸入〔如事務、音訊等〕的方式,并加以改良。4.8.8提高程序效率對模塊中函數(shù)的劃分及組織方式進展分析、優(yōu)化,改良模塊中函數(shù)的組織構造,提高程序效率。闡明:軟件系統(tǒng)的效率主要與算法、處置義務方式、系統(tǒng)功能及函數(shù)構造有很大關系,僅在代碼上下功夫普通不能處理根本問題。.4.8.9留心代碼效率編程時,要隨時留心代碼效率;優(yōu)化代碼時,要思索周全。4.8.10恰當優(yōu)化代碼提高效率不應花過多的時間拼命地提高伐用不很頻繁的函數(shù)代碼效率。闡明:對代碼優(yōu)化可提高效率,但假設思索不周很有能夠引起嚴重后果。4.8.11慎重運用匯編嵌入方式要仔細地構造或直接用匯編編寫調用頻繁或性能要求極高的函數(shù)。闡明:只需對編譯系統(tǒng)產活力器碼的方式以及硬件系統(tǒng)較為熟習時,才可運用匯編嵌入方式。嵌入匯編可提高時間及空間效率,但也存在一定風險。.4.8.12提高空間效率在保證程序質量的前提下,經過緊縮代碼量、去掉不用要代碼以及減少不用要的部分和全局變量,來提高空間效率。闡明:這種方式對提高空間效率可起到一定作用,但往往不能處理根本問題。4.8.13在多重循環(huán)中,應將最忙的循環(huán)放在最內層闡明:減少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)體內含判別語句防止循環(huán)體內含判別語句,應將循環(huán)語句置于判別語句的代碼塊之中。闡明:目的是減少判別次數(shù)。循環(huán)體中的判別語句能否可以移到循環(huán)體外,要視程序的詳細情況而言,普通情況,與循環(huán)變量無關的判別語句可以移到循環(huá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)變量無關,故可如下改良,以減少判別次數(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
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 五年級上冊數(shù)學教案 除數(shù)是整數(shù)的小數(shù)除法(二) 西師大版
- 二年級下冊數(shù)學教案 第1課時 東西南北 北師大版
- 三年級數(shù)學下冊教學設計-1.6集郵北師大版
- 六年級下冊數(shù)學教案-7.2 圖形與位置 ∣蘇教版
- 三年級下冊數(shù)學教案-5.5 求簡單的經過時間丨蘇教版
- 2025年房地產經紀公司補充協(xié)議反饋 副本
- 2025年學習雷鋒精神62周年主題活動實施方案 (3份)
- 湖南省2024年普通高等學校【對口】招生考試【師范類】專業(yè)【綜合知識】試題及答案
- 3-乘法-北師大版三年級下冊數(shù)學單元測試卷(含答案)
- 《晚春》歷年中考古詩欣賞試題匯編(截至2023年)
- 鹽霧試驗過程記錄表
- 小學校務監(jiān)督委員會實施方案
- Q∕SY 13006-2016 招標項目標段(包)劃分指南
- 《大學英語教學大綱詞匯表》(1~4級,5~6級)
- DB11-T1630-2019城市綜合管廊工程施工及質量驗收規(guī)范
- 醫(yī)院消毒供應中心清洗、消毒、滅菌質控評分表
- 27供應室清洗消毒及滅菌效果監(jiān)測制度
- 金色大氣教師節(jié)頒獎典禮頒獎盛典PPT模板
- OECD Good laboratory practice (GLP)中英文對照版
- 生化工程,第七章反應器放大與設計
- 1開學第一節(jié)班會課
評論
0/150
提交評論