十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
白盒測(cè)試也稱結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試,它是按照程序內(nèi)部的結(jié)構(gòu)測(cè)試程序,通過(guò)測(cè)試來(lái)檢測(cè)產(chǎn)品內(nèi)部動(dòng)作是否按照設(shè)計(jì)規(guī)格說(shuō)明書(shū)的規(guī)定正常進(jìn)行,檢驗(yàn)程序中的每條通路是否都能按預(yù)定要求正確工作。下面介紹靜態(tài)白盒測(cè)試,關(guān)于檢驗(yàn)代碼的一些問(wèn)題。

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比東興網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式東興網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋東興地區(qū)。費(fèi)用合理售后完善,十年實(shí)體公司更值得信賴。
1. 說(shuō)出靜態(tài)白盒測(cè)試的幾點(diǎn)好處。
靜態(tài)白盒測(cè)試在開(kāi)發(fā)過(guò)程早期發(fā)現(xiàn)軟件缺陷,使修復(fù)的時(shí)間和費(fèi)用大幅度降低。軟件測(cè)試員可以得到軟件如何運(yùn)作的信息,存在哪些弱點(diǎn)和危險(xiǎn),而且可以與程序員建立良好的伙伴關(guān)系。項(xiàng)目狀態(tài)可以傳達(dá)給參與測(cè)試的所有小組成員。
2. 靜態(tài)白盒測(cè)試可以找出遺漏之處和問(wèn)題?
對(duì)。遺漏的問(wèn)題比普通的問(wèn)題更重要,通過(guò)靜態(tài)白盒測(cè)試可以發(fā)現(xiàn)。當(dāng)根據(jù)公布的標(biāo)準(zhǔn)和規(guī)范檢查代碼,在正式審查中仔細(xì)分析時(shí),遺漏的問(wèn)題就顯而易見(jiàn)了。
3. 正式審查由哪些關(guān)鍵要素組成?
過(guò)程。按照過(guò)程進(jìn)行是正式檢查和兩個(gè)程序員之間互查代碼的區(qū)別。
4. 除了更正式外,檢驗(yàn)與其他審查類型有什么重大差別?
主要區(qū)別是,檢驗(yàn)時(shí)在場(chǎng)的不是代碼的原創(chuàng)者。這迫使另一個(gè)人完全理解要檢查的軟件。這比讓其他人只是審查軟件尋找軟件缺陷更有效。
5. 緩沖區(qū)溢出錯(cuò)誤作為一個(gè)常見(jiàn)的安全問(wèn)題術(shù)語(yǔ)哪一級(jí)錯(cuò)誤?是由什么原因引起的?
數(shù)據(jù)引用。它們是由于使用了未正確聲明或未進(jìn)行初始化的變量、常量、數(shù)組、字符串或記錄。
通用代碼審查清單:
在代碼審查時(shí),我們可以運(yùn)用代碼審查清單,將以往所有可能發(fā)生的常見(jiàn)錯(cuò)誤羅列出來(lái),供與會(huì)者對(duì)照檢查,從而提高會(huì)審效率。
(1)數(shù)據(jù)引用錯(cuò)誤
數(shù)據(jù)引用錯(cuò)誤是指使用未經(jīng)正確地初始化的變量、常量、數(shù)組、字符串或記錄。
* 是否引用了未初始化的變量?
* 數(shù)組和字符串的下標(biāo)是整數(shù)值嗎?下標(biāo)總是在數(shù)組和字符串大小范圍之內(nèi)嗎?
* 在檢索操作或者應(yīng)用數(shù)組下標(biāo)時(shí)是否包含“丟掉一個(gè)”這樣的潛在錯(cuò)誤?
* 是否在應(yīng)該使用常量的地方使用了變量?
* 變量是否被賦予不同類型的值?
* 為引用的指針?lè)峙鋬?nèi)存了嗎?
* 一個(gè)數(shù)據(jù)結(jié)構(gòu)是否在多個(gè)函數(shù)或者子程序中引用,在每一個(gè)引用中明確定義結(jié)構(gòu)了嗎?
(2)數(shù)據(jù)聲明錯(cuò)誤
數(shù)據(jù)聲明錯(cuò)誤是指不正確地聲明或使用變量和常量。
* 所有變量都賦予正確的長(zhǎng)度、類型和存儲(chǔ)類了嗎?
* 變量是否在聲明的同時(shí)進(jìn)行了初始化?是否正確初始化并與其類型一致?
* 變量有相似的名稱嗎?
* 存在聲明過(guò)、但從未引用或者只引用過(guò)一次的變量嗎?
* 在特定模塊中所有變量都顯式地聲明了嗎?
(3)計(jì)算錯(cuò)誤
計(jì)算錯(cuò)誤是指基本的數(shù)學(xué)邏輯問(wèn)題。
* 計(jì)算中是否使用了不同數(shù)據(jù)類型的變量,如整數(shù)與浮點(diǎn)數(shù)相加?
* 計(jì)算中是否使用了數(shù)據(jù)類型相同但字節(jié)長(zhǎng)度不同的變量?
* 計(jì)算時(shí)是否了解和考慮到編譯器對(duì)類型或長(zhǎng)度不一致的變量的轉(zhuǎn)換規(guī)則?
* 賦值的目的變量是否小于賦值表達(dá)式的值?
* 在數(shù)值計(jì)算過(guò)程中是否可能出現(xiàn)溢出?
* 除數(shù)或模是否可能為零?
* 對(duì)于整型算術(shù)運(yùn)算或某些計(jì)算,特別是除法的代碼處理是否會(huì)丟失精度?
* 變量的值是否超過(guò)有意義的范圍?
* 對(duì)于包含多個(gè)操作的表達(dá)式,求值次序是否混亂,運(yùn)算優(yōu)先級(jí)對(duì)嗎?需要加括號(hào)使其清晰嗎?
(4)比較錯(cuò)誤
小于、大于、等于、不等于、真、假、比較和判斷錯(cuò)誤很可能是邊界條件問(wèn)題。
* 比較得正確嗎?
* 存在分?jǐn)?shù)或者浮點(diǎn)數(shù)之間的比較嗎?如果有,精度問(wèn)題會(huì)影響比較嗎?1.00000001和1.00000002極其接近,它們相等嗎?
* 每一個(gè)邏輯表達(dá)式都正確地表達(dá)了嗎?邏輯計(jì)算如期進(jìn)行了嗎?求值次序有疑問(wèn)嗎?
* 邏輯表達(dá)式的操作數(shù)是邏輯值嗎?
(5)控制流程錯(cuò)誤
控制流程錯(cuò)誤是指編程語(yǔ)言中循環(huán)等控制結(jié)構(gòu)未按預(yù)期方式工作,通常由計(jì)算或者比較錯(cuò)誤直接或間接造成。
* 程序中的語(yǔ)句組是否對(duì)應(yīng)?
* 程序、模塊、子程序和循環(huán)能否終止?如果不能,可以接受嗎?
* 可能存在永遠(yuǎn)不停的循環(huán)嗎?
* 循環(huán)可能從不執(zhí)行嗎?如果是這樣,可能接受嗎?
* 對(duì)于多分支語(yǔ)句,索引變量能超出可能的分支數(shù)目嗎?如果超出,該情況能正確處理嗎?
* 是否存在“丟掉一個(gè)”錯(cuò)誤,導(dǎo)致意外進(jìn)入循環(huán)?
(6)子程序參數(shù)錯(cuò)誤
子程序參數(shù)錯(cuò)誤的來(lái)源是軟件子程序不正確地傳遞數(shù)據(jù)。
* 子程序接收的參數(shù)類型和大小與調(diào)用代碼發(fā)送的匹配嗎?次序正確嗎?
* 如果子程序有多個(gè)入口點(diǎn),引用的參數(shù)是否與當(dāng)前入口點(diǎn)沒(méi)有關(guān)系?
* 常量是否當(dāng)作形參傳遞,意外在子程序中改動(dòng)?
* 子程序是更改了僅作為輸入值的參數(shù)?
* 每一個(gè)參數(shù)的單位是否與相應(yīng)的形參匹配?
* 如果存在全局變量,在所有引用子程序中是否有相似的定義和屬性?
(7)輸入/輸出錯(cuò)誤
輸入/輸出錯(cuò)誤包括文件讀取、接受鍵盤(pán)或鼠標(biāo)輸入以及向輸出設(shè)備寫(xiě)入錯(cuò)誤等。
* 軟件是否嚴(yán)格遵守外設(shè)讀寫(xiě)數(shù)據(jù)的專用格式?
* 文件或者外設(shè)不存在或者未準(zhǔn)備好的錯(cuò)誤情況有處理嗎?
* 軟件是否處理外設(shè)未連接、不可用、或者讀寫(xiě)過(guò)程中存儲(chǔ)空間占滿等情況?
* 軟件以預(yù)期的方式處理預(yù)計(jì)的錯(cuò)誤嗎?
* 檢查錯(cuò)誤提示信息的準(zhǔn)確性、正確性、語(yǔ)法和拼寫(xiě)了嗎?
(8)其他錯(cuò)誤
* 軟件是否使用其他外語(yǔ)?是否處理擴(kuò)展ASCII字符?是否需用統(tǒng)一編碼取代ASCII?
* 軟件是否需要移植到其他編譯器?
* 是否考慮了兼容性,以使軟件能夠運(yùn)行于不同數(shù)量的可用內(nèi)存、不同的內(nèi)部硬件、不同的外設(shè)等?
* 程序編譯是否產(chǎn)生“警告”或者“提示”信息?這些信息通常指示語(yǔ)句有疑問(wèn)。
但在項(xiàng)目小組驗(yàn)證代碼時(shí),并不能簡(jiǎn)單地以這些代碼審查清單未標(biāo)準(zhǔn),因?yàn)檫@只是用做一個(gè)通用的示例。其中雖然有謝好的測(cè)試用例應(yīng)該在測(cè)試代碼時(shí)考慮,但是,英愛(ài)研讀其他公開(kāi)的標(biāo)準(zhǔn)之后再采用自己的標(biāo)準(zhǔn)。
【編輯推薦】