【正文】
上午 4時(shí) 8分 計(jì)算錯(cuò)誤舉例 int Get_Ave_Value( int start, int iNum, short *p ) { int ave = 0。 // The first value evaluate to max for(int i=start+1。 //推薦 a++?!? ? 標(biāo)準(zhǔn)比較嚴(yán)格,有些標(biāo)準(zhǔn)帶有強(qiáng)制性 ? 規(guī)范( Specification) ——某一范疇內(nèi)以明文規(guī)定或約定俗成的形式規(guī)定的規(guī)則 ? 規(guī)范相對(duì)標(biāo)準(zhǔn)而言比較放松一些,不具有強(qiáng)制性 上午 4時(shí) 8分 堅(jiān)持編碼標(biāo)準(zhǔn)和規(guī)范的原因 ? 堅(jiān)持符合標(biāo)準(zhǔn)和規(guī)范編碼的三個(gè)重要原因: 1. 可靠性 ——嚴(yán)格按照某種標(biāo)準(zhǔn)或規(guī)范編寫的代碼比不這樣做的代碼更加可靠,缺陷更少 2. 可讀性 /維護(hù)性 ——符合標(biāo)準(zhǔn)和規(guī)范的代碼易于閱讀、理解和維護(hù) 3. 可移植性 ——代碼經(jīng)常在不同的硬件上運(yùn)行,或者使用不同的編譯器,如果代碼遵循設(shè)備標(biāo)準(zhǔn),將更容易使軟件具有移植性 ? 軟件審查小組在開始審查前需要了解相應(yīng)的標(biāo)準(zhǔn)和規(guī)范 上午 4時(shí) 8分 標(biāo)準(zhǔn)或規(guī)范的格式 ? 軟件標(biāo)準(zhǔn)通常由 4個(gè)部分組成 1. 標(biāo)題 :描述標(biāo)準(zhǔn)包含的主題 2. 內(nèi)容 :描述標(biāo)準(zhǔn)或規(guī)范內(nèi)容 3. 解釋說明 :給出標(biāo)準(zhǔn)背后的原因,以使程序員理解采用標(biāo)準(zhǔn)的原因 4. 示例 :給出如何使用標(biāo)準(zhǔn)的簡(jiǎn)單程序示例,這是可選擇的 上午 4時(shí) 8分 標(biāo)準(zhǔn)或規(guī)范的示例 TOPIC: ControlRestriction on control structures STANDARD The go to statement (and hence labels as well) should not be used. The while loop should be used instead of the dowhile loop, except where the logic of the problem explicit requires doing the body at least once regardless of loop condition. If a single ifelse can replace a continue, and ifelse should be used JUSTIFICATION The go to statement is prohibited for the empirical reason that its use is highly correlated with errors and haretoread code, and for the abstract reason that algorithms should be expressed in structures that facilitate checking the program against the … 上午 4時(shí) 8分 標(biāo)準(zhǔn)或規(guī)范的示例 1 TOPIC: C_problems – problem areas from C GUIDELINE Try to avoid C language features if a conflict with programming in C++ 1. Do not mix Cstyle FILE I/O (using ) with C++ style I/O (using or ) on the same file. 2. Avoid using C functions like memcpy or memcmp for copying or paring objects of a type other than arrayofchar or justastruct. 3. Avoid the C macro NULL。如果正確進(jìn)行正式審查,這將是早期發(fā)現(xiàn)軟件缺陷的好方法 上午 4時(shí) 8分 正式審查的 4個(gè)要素 1. 審查準(zhǔn)備 每一個(gè)合作者都要精心準(zhǔn)備,他們?cè)趯彶橹邪缪莶煌巧?,比如程序員,測(cè)試員,管理員等,明確自己的責(zé)任和義務(wù)。 /// 翻轉(zhuǎn)負(fù)數(shù) } 上午 4時(shí) 8分 白盒測(cè)試過程 ? 通用的白盒測(cè)試過程如下: 1. 分析測(cè)試軟件的內(nèi)部實(shí)現(xiàn) 2. 識(shí)別被測(cè)軟件的工作路徑 3. 選擇輸入,執(zhí)行被測(cè)路徑,并確定期望的測(cè)試結(jié)果 4. 運(yùn)行測(cè)試 5. 比較真實(shí)輸出和期望輸出的異同 6. 作出被測(cè)軟件功能正確性的判斷 上午 4時(shí) 8分 白盒測(cè)試的應(yīng)用范圍 ? 白盒測(cè)試能夠應(yīng)用到所有的系統(tǒng)開發(fā)階段,包括單元測(cè)試,集成測(cè)試和系統(tǒng)測(cè)試 ? 白盒測(cè)試通常進(jìn)行路徑測(cè)試,我們可以通過這種方法測(cè)試單元內(nèi)部,單元之間,子系統(tǒng)之間以及系統(tǒng)內(nèi)部的各種執(zhí)行路徑 ? 路徑(測(cè)試路徑) :從開始到結(jié)束執(zhí)行之間運(yùn)行的語句序列 Unit Integration System 白盒測(cè)試的應(yīng)用 x x( ) y( ) x( ) y( ) main( ) … 上午 4時(shí) 8分 白盒測(cè)試的優(yōu)點(diǎn) ?迫使測(cè)試人員去思考軟件的實(shí)現(xiàn) ?可以識(shí)別和測(cè)試代碼中的每條分支路徑,對(duì)代碼的測(cè)試比較徹底 ?揭示隱藏在代碼中的錯(cuò)誤或缺陷 ?根據(jù)內(nèi)部結(jié)果進(jìn)行最優(yōu) 化測(cè)試 上午 4時(shí) 8分 白盒測(cè)試的缺點(diǎn) 1. 執(zhí)行路徑可能非常多造成無法進(jìn)行完全測(cè)試 2. 白盒測(cè)試假設(shè)控制流是正確的,因此測(cè)試人員只基于存在的路徑進(jìn)行測(cè)試,而對(duì)于不存在的路徑則無法測(cè)試 3. 測(cè)試員必須具備編程知識(shí),可能有很多測(cè)試員不具備這種知識(shí),將無法進(jìn)行白盒測(cè)試,比如財(cái)會(huì)人員無法對(duì)財(cái)務(wù)軟件進(jìn)行白盒測(cè)試 上午 4時(shí) 8分 白盒測(cè)試的發(fā)展歷程 項(xiàng)目 代數(shù) 是否評(píng)估測(cè)試效果 是否自動(dòng)測(cè)試 是否持續(xù)測(cè)試 是否調(diào)測(cè)一體 第一代 否 否 否 否 第二代 是 是 否 否 第三代 是 是 是 否 第四代 是 是 是 是 第 1代到第 4代白盒測(cè)試方法的主要差別 上午 4時(shí) 8分 ? 第 1代白盒測(cè)試方法屬于無組織、無約束的測(cè)試方法,典型情況是拿調(diào)試當(dāng)測(cè)試,或者簡(jiǎn)單的在被測(cè)代碼中加入 print、 assert等語句 ? 第 2代白盒測(cè)試方法主要克服第 1代方法的兩大缺陷:一是沒有測(cè)試評(píng)估(比如覆蓋率),二是未對(duì)測(cè)試操作進(jìn)行重用,重用測(cè)試操作必然以某種形式化語言描述測(cè)試過程 。 if( x 0 ) x = x。遵循第 4代白盒測(cè)試方法的測(cè)試工具主要以VcTester為代表 上午 4時(shí) 8分 2 靜態(tài)白盒測(cè)試 ? 靜態(tài)白盒測(cè)試概述 ? 正式審查 ? 編碼標(biāo)準(zhǔn)和規(guī)范 ? 通用代碼審查清單 上午 4時(shí) 8分 靜態(tài)白盒測(cè)試概述 ?靜態(tài)白盒測(cè)試 是指在不