《軟件測(cè)試的藝術(shù)》讀書筆記

本文主要記錄的是《軟件測(cè)試的藝術(shù)》一書的讀書筆記以及相關(guān)的知識(shí)瞳步,歡迎大家提出自己的觀點(diǎn)堰氓,進(jìn)行討論與分享。持續(xù)更新...

1阵翎,前言

1.軟件測(cè)試為什么變得更加困難?涌現(xiàn)出大量的編程語(yǔ)言/操作系統(tǒng)以及硬件平臺(tái)等之剧。

2.所謂軟件測(cè)試郭卫,就是一個(gè)過程或一系列過程,用來確認(rèn)計(jì)算機(jī)代碼完成了其該完成的功能背稼,不執(zhí)行其不該有的操作贰军。軟件應(yīng)當(dāng)是可預(yù)測(cè)且穩(wěn)定的,不會(huì)給用戶帶來意外驚奇雇庙。


2谓形,軟件測(cè)試的心理學(xué)和經(jīng)濟(jì)學(xué)

2.1.軟件測(cè)試的心理學(xué)

人類行為總是傾向于具有高度目標(biāo)性,確立一個(gè)正確的目標(biāo)有著重要的影響疆前。

1.我們每當(dāng)要測(cè)試一個(gè)程序時(shí)寒跳,應(yīng)當(dāng)想到要為程序增加一些價(jià)值。而通過測(cè)試來增加程序的價(jià)值是指提高程序的可靠性或質(zhì)量竹椒,提高可靠性是指找出并最終修改程序的錯(cuò)誤童太。

2.定義:測(cè)試是為發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程。并且軟件測(cè)試是一個(gè)破壞性的過程,甚至是一個(gè)施虐的過程书释。

3.不成功的測(cè)試用例翘贮,會(huì)看到程序輸出正確的結(jié)果而沒發(fā)現(xiàn)任何錯(cuò)誤。爆惧?狸页??測(cè)試用例沒發(fā)現(xiàn)錯(cuò)誤就認(rèn)為該測(cè)試用例是不成功的測(cè)試用例嗎扯再?

4.軟件測(cè)試更適宜被視為試圖發(fā)現(xiàn)程序中錯(cuò)誤(假設(shè)其存在)的破壞性的過程芍耘。軟件做了其應(yīng)該做的,未做其不應(yīng)該做的熄阻。

2.2 軟件測(cè)試的經(jīng)濟(jì)學(xué)

窮舉測(cè)試是不切實(shí)際的斋竞。

1. 黑盒測(cè)試又被稱為數(shù)據(jù)驅(qū)動(dòng)的測(cè)試或輸入/輸出驅(qū)動(dòng)的測(cè)試。窮舉測(cè)試用例不可能實(shí)現(xiàn)秃殉。

2.測(cè)試投入的目標(biāo)在于通過有限的測(cè)試用例坝初,最大限度地提高發(fā)現(xiàn)問題的數(shù)量,以取得好的測(cè)試效果钾军。

2.白盒測(cè)試又稱為邏輯驅(qū)動(dòng)的測(cè)試鳄袍。

3.窮舉路徑測(cè)試也并非是完全的測(cè)試。第一巧颈,即使窮舉畦木,也不能保證程序符合其設(shè)計(jì)規(guī)范,比如編寫升序排序卻寫成降序砸泛。第二十籍,程序可能會(huì)因?yàn)槿鄙倌承┞窂蕉嬖趩栴}。第三唇礁,窮舉路徑測(cè)試可能不會(huì)暴露數(shù)據(jù)敏感錯(cuò)誤勾栗。

2.3 軟件測(cè)試的原則

1.測(cè)試用例中一個(gè)必須部分是對(duì)預(yù)期輸出或結(jié)果的定義。

? ?測(cè)試用例包含兩個(gè)部分:1盏筐,對(duì)程序輸入數(shù)據(jù)的描述围俘;2,對(duì)程序在上述輸入數(shù)據(jù)下的正確輸出結(jié)果的精確描述琢融。

2.程序員應(yīng)當(dāng)避免測(cè)試自己編寫的程序界牡。

3.編寫軟件的組織部應(yīng)當(dāng)測(cè)試自己的編寫的軟件。

4.應(yīng)當(dāng)徹底檢查每個(gè)測(cè)試的結(jié)果漾抬。

5.測(cè)試用例的編寫不僅應(yīng)當(dāng)根據(jù)有效和預(yù)期的輸入情況宿亡,而且也應(yīng)當(dāng)根據(jù)無效和未預(yù)料到的輸入情況。

6.檢查程序是否“未做其應(yīng)該做的”僅是測(cè)試的一般纳令,測(cè)試的另一半是檢查程序是否“做了不應(yīng)該做的”挽荠。

7.應(yīng)避免測(cè)試用例用后即棄克胳,除非軟件本身就是一個(gè)一次性的軟件。

對(duì)程序的更改容易導(dǎo)致程序先前可以執(zhí)行的部分發(fā)生故障圈匆,而這種故障是不容易被發(fā)現(xiàn)的漠另,保留測(cè)試用例用作回歸測(cè)試。

8.計(jì)劃測(cè)試工作時(shí)不應(yīng)默許假定不會(huì)發(fā)現(xiàn)錯(cuò)誤跃赚。

9.程序某部分存在更多錯(cuò)誤的可能性與該部分已發(fā)現(xiàn)錯(cuò)誤的數(shù)量成正比笆搓。

10.軟件測(cè)試是一項(xiàng)極富創(chuàng)造性,極具智力挑戰(zhàn)的工作来累。?


3.代碼檢查砚作、走查與評(píng)審

人工測(cè)試:非基于計(jì)算機(jī)測(cè)試的過程,在程序開始編碼之后嘹锁,基于計(jì)算機(jī)的測(cè)試開始之前進(jìn)行。有代碼檢查着裹,代碼走查领猾,桌面檢查,同行評(píng)審以及可用性測(cè)試骇扇。

3.1 代碼檢查與走查

1.代碼檢查和走查都需要人們組成一個(gè)小組來閱讀或者直觀檢查特定的程序摔竿,進(jìn)行頭腦風(fēng)暴,目標(biāo)是找出錯(cuò)誤少孝,但不是改正錯(cuò)誤继低。換句話說是測(cè)試而不是調(diào)試。

2.代碼走查的另一個(gè)優(yōu)點(diǎn)是一旦發(fā)現(xiàn)錯(cuò)誤通常就能在代碼中對(duì)其進(jìn)行精確定位稍走,這就降低了調(diào)試的成本袁翁。

3.代碼檢查和走查通常會(huì)有效的查出30%-70%的邏輯設(shè)計(jì)和編碼錯(cuò)誤,和基于計(jì)算機(jī)的測(cè)試是互補(bǔ)的婿脸。

3.2 代碼檢查

1.通常四個(gè)人:協(xié)調(diào)人員(非編碼人員)粱胜,編碼人員,測(cè)試專家等狐树。

2.代碼檢查要將注意力集中在發(fā)現(xiàn)錯(cuò)誤上焙压,而不是糾正錯(cuò)誤。

3.對(duì)事不對(duì)人

4.代碼檢查可以提升編程人員的編碼技術(shù)

5.代碼檢查錯(cuò)誤列表:數(shù)據(jù)引用錯(cuò)誤抑钟、數(shù)據(jù)聲明錯(cuò)誤涯曲、運(yùn)算錯(cuò)誤、比較錯(cuò)誤在塔、控制流錯(cuò)誤幻件、接口錯(cuò)誤、輸入/輸出錯(cuò)誤心俗、其他檢查

3.3 代碼走查

跟代碼檢查相似傲武,但規(guī)程稍微不同蓉驹,錯(cuò)誤檢查技術(shù)也不一樣。

走查小組建議包括:一個(gè)經(jīng)驗(yàn)豐富的程序員揪利,一個(gè)程序設(shè)計(jì)語(yǔ)言專家态兴,一個(gè)程序員新手(可以給出新穎不帶偏見的觀點(diǎn)),最終維護(hù)程序的人員疟位,一位來自其他不同項(xiàng)目的人員瞻润,一位來自該軟件編程小組的程序員。

3.4 桌面檢查

一個(gè)人閱讀程序甜刻,對(duì)照錯(cuò)誤檢查表檢查程序绍撞,對(duì)程序推演測(cè)試數(shù)據(jù)。

3.5 同行評(píng)審

讓程序員對(duì)自身的編程技術(shù)進(jìn)行自我評(píng)價(jià)得院。


4.測(cè)試用例的設(shè)計(jì)

由于成本和時(shí)間的約束傻铣,軟件測(cè)試最關(guān)心的問題是:在所有可能的測(cè)試用例中,哪個(gè)子集最有可能發(fā)現(xiàn)最多的錯(cuò)誤祥绞?

4.1 白盒測(cè)試

白盒測(cè)試關(guān)注的是測(cè)試用例執(zhí)行的程度或覆蓋程序邏輯結(jié)構(gòu)(源代碼)的程度非洲。

邏輯覆蓋測(cè)試:

1.語(yǔ)句覆蓋:程序中的每條語(yǔ)句至少被執(zhí)行一次。

2.判定(分支)覆蓋:使得每一個(gè)判斷都至少有一個(gè)為真和為假的輸出結(jié)果蜕径。

3.條件覆蓋:確保將一個(gè)判斷中的每個(gè)條件的所有可能的結(jié)果至少執(zhí)行一次两踏。

4.判定/條件覆蓋:將一個(gè)判斷中的每個(gè)條件的所有可能的結(jié)果至少執(zhí)行一次,將每個(gè)判斷的所有可能的結(jié)果至少執(zhí)行一次兜喻,將每個(gè)入口點(diǎn)都至少調(diào)用一次梦染。

5.多重條件覆蓋:將每個(gè)判定中的所有可能的條件結(jié)果的組合,以及所有的入口點(diǎn)都至少執(zhí)行一次朴皆。

4.2 黑盒測(cè)試

1.等價(jià)類劃分:確定等價(jià)類->生成測(cè)試用例帕识。等價(jià)類劃分是一個(gè)啟發(fā)式的過程,需要根據(jù)實(shí)際情況進(jìn)行劃分车荔,但一般情況下要?jiǎng)澐譃閮蓚€(gè)不同的組:有效等價(jià)類和無效等價(jià)類渡冻。(可以參考一些等價(jià)類劃分的指導(dǎo)原則)

2.邊界值分析:考慮邊界值分析會(huì)獲得更高的測(cè)試回報(bào)率。邊界值分析不僅要考慮輸入空間的邊界值忧便,還要考慮輸出空間的的邊界值族吻。(參考一些通用指南和規(guī)則)

3.因果圖分析:因果圖有助于用一個(gè)系統(tǒng)的方法選擇出高效的測(cè)試用例集,還可以指出規(guī)格說明的不完整和不明確之處珠增。是根據(jù)條件的組合生成測(cè)試用例的系統(tǒng)性的方法超歌,將規(guī)格說明轉(zhuǎn)換為一個(gè)布爾邏輯網(wǎng)絡(luò)。

確定規(guī)格說明中的因果關(guān)系蒂教,因指一個(gè)明確的輸入條件或輸入條件的等價(jià)類巍举,果指一個(gè)輸出條件或系統(tǒng)轉(zhuǎn)換(輸入對(duì)程序或系統(tǒng)狀態(tài)的延續(xù)影響)

4.錯(cuò)誤猜測(cè):利用直覺和經(jīng)驗(yàn)猜測(cè)出錯(cuò)的可能類型,然后編寫測(cè)試用例還暴露這些錯(cuò)誤凝垛。

4.3 測(cè)試策略

1.如果規(guī)格說明里面包含條件組合的情況懊悯,應(yīng)首先使用因果分析方法

2.在任何情況下都應(yīng)該使用邊界值分析方法蜓谋,對(duì)輸入和輸出邊界都要進(jìn)行測(cè)試

3.應(yīng)該為輸入和輸出確定有效和無效等價(jià)類,必要的情況下對(duì)上面的測(cè)試用例進(jìn)行補(bǔ)充

4.使用錯(cuò)誤猜測(cè)技術(shù)增加更多的測(cè)試用例

5.針對(duì)上述的測(cè)試用例集檢查程序的邏輯結(jié)構(gòu)炭分,應(yīng)考慮使用邏輯覆蓋準(zhǔn)則


5.模塊(單元)測(cè)試

模塊測(cè)試中測(cè)試用例的設(shè)計(jì)過程:使用一種或多種白盒測(cè)試方法分析模塊的邏輯桃焕,然后使用黑盒測(cè)試方法對(duì)照模塊的規(guī)格說明以補(bǔ)充測(cè)試用例。它是大規(guī)模的白盒測(cè)試捧毛。

5.1 增量測(cè)試

1. 驅(qū)動(dòng)模塊:用來將測(cè)試用例驅(qū)動(dòng)或傳輸?shù)奖粶y(cè)模塊中观堂。

2.樁模塊:測(cè)試上層模塊時(shí)用來模擬下層模塊的的模塊。

3.自頂向下測(cè)試:缺點(diǎn):必須開發(fā)樁模塊呀忧,創(chuàng)建測(cè)試環(huán)境可能很難师痕,甚至無法執(zhí)行...

4.自底向上測(cè)試:缺點(diǎn):必須開發(fā)驅(qū)動(dòng)模塊,知道最后一個(gè)模塊添加進(jìn)去而账,程序才形成一個(gè)整體胰坟。

5.2 工具

單元測(cè)試有很多測(cè)試用具,最出名的就是xUnit泞辐,這本書沒講腕铸。


6.更高級(jí)別的測(cè)試

當(dāng)程序無法實(shí)現(xiàn)其最終用戶要求的合理功能時(shí),就發(fā)生了一個(gè)錯(cuò)誤铛碑。

根據(jù)軟件開發(fā)的過程,對(duì)應(yīng)的測(cè)試是模塊測(cè)試虽界、集成測(cè)試汽烦、功能測(cè)試、系統(tǒng)測(cè)試莉御、驗(yàn)收測(cè)試和安裝測(cè)試撇吞。

6.1 功能測(cè)試

1.功能測(cè)試是一個(gè)試圖發(fā)現(xiàn)程序與其外部規(guī)格說明之間存在不一致的過程。外部規(guī)格說明是一份從最終用戶角度對(duì)程序行為的精確描述礁叔。

2.功能測(cè)試通常是一項(xiàng)黑盒操作牍颈,等價(jià)類劃分,邊界值分析琅关,因果圖分析和錯(cuò)誤猜測(cè)很適合功能測(cè)試煮岁。

6.2 系統(tǒng)測(cè)試

系統(tǒng)測(cè)試目的:將系統(tǒng)或程序與其初始目標(biāo)進(jìn)行比較,也就是說比較程序涣易、程序目標(biāo)和用戶文檔之間的不一致性画机。

1. 能力測(cè)試:逐條語(yǔ)句地檢查目標(biāo)文檔,判斷程序是否滿足新症。(利用好問題清單)

2.容量測(cè)試:使程序經(jīng)受大容量數(shù)據(jù)的檢驗(yàn)步氏。目的是為了證明程序不能處理目標(biāo)文檔中規(guī)定的數(shù)據(jù)容量。(考慮到該測(cè)試需要耗費(fèi)大量的資源徒爹,所以不可進(jìn)行過多的容量測(cè)試荚醒,但每個(gè)程序至少應(yīng)該進(jìn)行幾次容量測(cè)試)

3.強(qiáng)度測(cè)試:使程序承受高負(fù)載或強(qiáng)度的檢驗(yàn)芋类,所謂高強(qiáng)度是指在很短的時(shí)間間隔內(nèi)達(dá)到的數(shù)據(jù)或操作的數(shù)量峰值。(有些也叫做壓力測(cè)試)

4.可用性測(cè)試:又叫用戶體驗(yàn)測(cè)試界阁,通過發(fā)動(dòng)最終用戶在真是環(huán)境下對(duì)應(yīng)用程序進(jìn)行測(cè)試侯繁。

5.安全性測(cè)試:設(shè)計(jì)測(cè)試用例來突破程序安全檢查的過程。

6.性能測(cè)試:測(cè)試軟件在特定負(fù)載和配置環(huán)境下程序的響應(yīng)時(shí)間和吞吐率不滿足要求铺董。

7.存儲(chǔ)測(cè)試:設(shè)計(jì)測(cè)試用例來證明軟件的存儲(chǔ)目標(biāo)(內(nèi)存或輔助存儲(chǔ))沒有達(dá)到巫击。

8.配置測(cè)試:測(cè)試軟件在不同配置環(huán)境下(操作系統(tǒng),瀏覽器等)程序不同的反應(yīng)精续。

9.兼容性/轉(zhuǎn)換測(cè)試:測(cè)試軟件在不同版本或者環(huán)境下的反應(yīng)坝锰。

10.安裝測(cè)試:發(fā)現(xiàn)軟件在安裝過程中出現(xiàn)的各種問題。

11.可靠性測(cè)試:可靠性測(cè)試是為了提高軟件的可靠性重付,如果軟件的目標(biāo)中包含了對(duì)可靠性的特別描述顷级,就必須設(shè)計(jì)專門的可靠性測(cè)試。

12.可恢復(fù)性測(cè)試:證明系統(tǒng)的恢復(fù)機(jī)制不能夠正確發(fā)揮作用确垫」保恢復(fù)機(jī)制是當(dāng)系統(tǒng)發(fā)生故障時(shí),如何從程序錯(cuò)誤删掀、硬件失效和數(shù)據(jù)錯(cuò)誤中恢復(fù)過來翔冀。

13.服務(wù)/可維護(hù)性測(cè)試:測(cè)試軟件的服務(wù)和可維護(hù)性目標(biāo)。

14.文檔測(cè)試:檢車用戶文檔的正確性披泪,主要方法是根據(jù)文檔來確定系統(tǒng)測(cè)試用例的形式纤子,用戶文檔作為審查的對(duì)象。

15.過程測(cè)試:對(duì)已規(guī)定的人工過程(如系統(tǒng)操作員款票、數(shù)據(jù)庫(kù)管理員或最終用戶的操作過程進(jìn)行測(cè)試)

16.系統(tǒng)測(cè)試的執(zhí)行:不能由程序員來進(jìn)行測(cè)試控硼;不能由該程序開發(fā)的機(jī)構(gòu)來執(zhí)行測(cè)試。執(zhí)行系統(tǒng)測(cè)試的人思考問題的方式必須與最終用戶相同艾少,必須充分了解最終用戶的態(tài)度和應(yīng)用環(huán)境以及程序的使用方式卡乾。

6.3驗(yàn)收測(cè)試

將程序與其最初的需求及最終用戶當(dāng)前的需要進(jìn)行比較的過程。通常由程序的客戶或最終用戶來進(jìn)行缚够,但明智的開發(fā)者會(huì)引導(dǎo)客戶在開發(fā)過程和產(chǎn)品發(fā)布之前進(jìn)行用戶測(cè)試幔妨。

6.4測(cè)試的計(jì)劃與控制

一個(gè)良好的測(cè)試計(jì)劃應(yīng)該包括:目標(biāo)、結(jié)束準(zhǔn)則潮瓶、進(jìn)度陶冷、責(zé)任、測(cè)試用例庫(kù)及標(biāo)準(zhǔn)毯辅、工具埂伦、計(jì)算機(jī)時(shí)間、硬件配置思恐、集成沾谜、跟蹤步驟膊毁、調(diào)試步驟、回歸測(cè)試基跑。

6.5測(cè)試結(jié)束準(zhǔn)則

1.(不是最佳)測(cè)試用例來源于(1)滿足多重條件覆蓋準(zhǔn)則婚温,(2)對(duì)模塊接口規(guī)格說明進(jìn)行邊界值分析,產(chǎn)生的多有測(cè)試用例最終都是不成功的媳否。

2.(也許是最有價(jià)值的準(zhǔn)則)以確切的數(shù)量來描述結(jié)束測(cè)試的條件栅螟。

3.(涉及到許多判斷和直覺)在測(cè)試過程中記錄每個(gè)單位時(shí)間內(nèi)發(fā)現(xiàn)的錯(cuò)誤的數(shù)量,通過檢查統(tǒng)計(jì)曲線的形狀篱竭,常沉ν迹可以決定究竟是繼續(xù)該階段的測(cè)試還是結(jié)束它并來時(shí)下一測(cè)試階段。

最佳的可能是三種的組合掺逼。


7.可用性(用戶體驗(yàn))測(cè)試

可用性就像軟件的臉蛋吃媒。

7.1可用性測(cè)試的基本要素

1.是否考慮到最終用戶的理解力、教育背景以及環(huán)境壓力吕喘。

2.程序的輸出是否有意義赘那、沒有侮辱性的詞語(yǔ)以及是否含糊不清?

3.錯(cuò)誤診斷的提示信息是否清晰易懂還是需要計(jì)算機(jī)博士才可讀懂氯质?

4.用戶界面上是否保持與概念一致募舟、內(nèi)部的連貫性、語(yǔ)法的一致性闻察?是否符合約定的使用習(xí)慣/語(yǔ)義和句法規(guī)律胃珍、格式、樣式以及縮寫習(xí)慣蜓陌?

5.需要高精確性和準(zhǔn)確度的軟件系統(tǒng)是否提供足夠有效的輸入驗(yàn)證?

6.系統(tǒng)是不是包含了太多選項(xiàng)或者包含的一些選項(xiàng)不會(huì)被使用吩蔑,是不是符合人的思維和邏輯钮热?

7.對(duì)于來自用戶的輸入,系統(tǒng)是否能夠及時(shí)做出反應(yīng)烛芬?比如鼠標(biāo)點(diǎn)擊會(huì)不會(huì)表現(xiàn)出被按壓/彈起的狀態(tài)隧期。

8.程序的操作是否很容易上手?

9.軟件的設(shè)計(jì)是否有助于用戶準(zhǔn)確輸入赘娄?

10.用戶的操作可以輕松重復(fù)嗎嗎仆潮?

11.用戶是否確定能夠在眾多的功能和菜單中來回切換而不發(fā)生意外?用戶會(huì)不會(huì)推薦給其他用戶遣臼?

12.軟件的功能實(shí)現(xiàn)是否達(dá)到了設(shè)計(jì)的規(guī)格要求性置?

可用性測(cè)試基本上屬于黑盒測(cè)試的范疇。

7.2可用性測(cè)試流程

1.測(cè)試用戶的選擇:需要同一組用戶完成多個(gè)測(cè)試以及不同組用戶完成多個(gè)測(cè)試揍堰。有經(jīng)驗(yàn)的測(cè)試專家以及外行人鹏浅,合理性選擇嗅义。與時(shí)候局外人或許可以給出不一樣的見解。

2.需要多少用戶進(jìn)行測(cè)試:并不是越多越好隐砸,是情況而定之碗,主要原則就是用最少的成本達(dá)到最高的測(cè)試回報(bào)。

3.數(shù)據(jù)采集方法:錄制測(cè)試過程并使用“發(fā)聲思考”可以很好的記錄可用性測(cè)試數(shù)據(jù)以及用戶對(duì)軟件的使用感受季希⊥誓牵“眼球追蹤”技術(shù)很復(fù)雜但卻很有用,可以使用在武器導(dǎo)航式塌,機(jī)器人控制博敬,車輛控制以及其他隊(duì)速讀和響應(yīng)有特別要求的系統(tǒng)。

4.可用性調(diào)查問卷:可以學(xué)學(xué)問卷調(diào)查設(shè)計(jì)技巧珊搀,一個(gè)原則:盡量不要讓用戶做過主觀的回答冶忱,減少用戶輸入。主要采取三個(gè)形式:是否問題/真假問題/某種程度的同意反對(duì)

5.何時(shí)收工:沒有一定的原則境析,根據(jù)經(jīng)驗(yàn)來看囚枪。


8.調(diào)試

調(diào)試是執(zhí)行一次成功的測(cè)試之后所有進(jìn)行的工作。

8.1 調(diào)試方法

1.蠻力法調(diào)試:利用內(nèi)存信息輸出來調(diào)試劳淆、根據(jù)一般的“在程序中插入打印語(yǔ)句”建議來調(diào)試链沼、使用自動(dòng)化的調(diào)試工具。蠻力法調(diào)試忽略了思考的過程沛鸵,效率比較低下括勺。

2.歸納法調(diào)試:從細(xì)節(jié)轉(zhuǎn)到全局,從線索出發(fā)曲掰,尋找線索之間的聯(lián)系疾捍。步驟如下:確定相關(guān)數(shù)據(jù)->組織數(shù)據(jù)->做出假設(shè)->證明假設(shè)->證明假設(shè)->解決問題/

3.演繹法調(diào)試:從一些普遍的理論或前提出發(fā),使用排除和精煉的過程栏妖,達(dá)到一個(gè)結(jié)論乱豆。步驟如下:列舉出所有可能的原因或假設(shè)->利用數(shù)據(jù)排除可能的原因->提煉剩下的假設(shè)->證明剩下的假設(shè)->修復(fù)問題。其中有一個(gè)循環(huán)的過程吊趾。

4.回溯法調(diào)試:沿著程序的邏輯結(jié)構(gòu)回溯不正確的結(jié)果宛裕,直到找出程序邏輯出錯(cuò)的位置。

5.測(cè)試法調(diào)試:當(dāng)發(fā)現(xiàn)了某個(gè)被懷疑的錯(cuò)誤的癥狀之后论泛,我們需要編寫與原先有所變化的測(cè)試用例揩尸,盡量確定錯(cuò)誤的位置。

8.2 調(diào)試的原則

1.定位錯(cuò)誤的原則:動(dòng)腦筋/遇到僵局留到稍后解決/遇到問題把問題描述給其他人聽/僅將調(diào)試工具作為第二種手段/避免能使用實(shí)驗(yàn)法-僅將其作為最后的手段

2.修改錯(cuò)誤的技術(shù):存在一個(gè)缺陷的地方有可能還存在其他缺陷屁奏;/應(yīng)糾正錯(cuò)誤本身而非其癥狀岩榆;/正確糾正錯(cuò)誤的可能性并非100%;/隨著程序規(guī)模的增加正確修改錯(cuò)誤的可能性反而降低;/應(yīng)該意識(shí)到糾正錯(cuò)誤會(huì)引入新錯(cuò)誤的可能性朗恳;/修改錯(cuò)誤的過程也是臨時(shí)回到設(shè)計(jì)階段的過程湿颅;/應(yīng)修改源代碼而不是目標(biāo)代碼。

敏捷開發(fā)模式下的測(cè)試粥诫、互聯(lián)網(wǎng)應(yīng)用測(cè)試和移動(dòng)應(yīng)用測(cè)試目前不打算精讀油航,到時(shí)候分主題進(jìn)行閱讀。

總體框架結(jié)構(gòu)圖



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末怀浆,一起剝皮案震驚了整個(gè)濱河市谊囚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌执赡,老刑警劉巖镰踏,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異沙合,居然都是意外死亡奠伪,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門首懈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绊率,“玉大人,你說我怎么就攤上這事究履÷朔瘢” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵最仑,是天一觀的道長(zhǎng)藐俺。 經(jīng)常有香客問我,道長(zhǎng)泥彤,這世上最難降的妖魔是什么欲芹? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮吟吝,結(jié)果婚禮上耀石,老公的妹妹穿的比我還像新娘。我一直安慰自己爸黄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布揭鳞。 她就那樣靜靜地躺著炕贵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪野崇。 梳的紋絲不亂的頭發(fā)上称开,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼鳖轰。 笑死清酥,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蕴侣。 我是一名探鬼主播焰轻,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼昆雀!你這毒婦竟也來了辱志?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤狞膘,失蹤者是張志新(化名)和其女友劉穎揩懒,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挽封,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡已球,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辅愿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片智亮。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖渠缕,靈堂內(nèi)的尸體忽然破棺而出鸽素,到底是詐尸還是另有隱情,我是刑警寧澤亦鳞,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布馍忽,位于F島的核電站,受9級(jí)特大地震影響燕差,放射性物質(zhì)發(fā)生泄漏遭笋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一徒探、第九天 我趴在偏房一處隱蔽的房頂上張望瓦呼。 院中可真熱鬧,春花似錦测暗、人聲如沸央串。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)质和。三九已至,卻和暖如春稚字,著一層夾襖步出監(jiān)牢的瞬間饲宿,已是汗流浹背厦酬。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瘫想,地道東北人仗阅。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像国夜,于是被迫代替她去往敵國(guó)和親减噪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 文章來自:http://blog.csdn.net/mj813/article/details/52451355 ...
    好大一只鵬閱讀 9,191評(píng)論 2 126
  • 1.測(cè)試與軟件模型 軟件開發(fā)生命周期模型指的是軟件開發(fā)全過程支竹、活動(dòng)和任務(wù)的結(jié)構(gòu)性框架旋廷。軟件項(xiàng)目的開發(fā)包括:需求、設(shè)...
    Mr希靈閱讀 21,957評(píng)論 7 278
  • 1.測(cè)試與軟件模型 軟件開發(fā)生命周期模型指的是軟件開發(fā)全過程礼搁、活動(dòng)和任務(wù)的結(jié)構(gòu)性框架饶碘。軟件項(xiàng)目的開發(fā)包括:需求、設(shè)...
    宇文臭臭閱讀 6,723評(píng)論 5 100
  • 明明早班開鋪 去了超市回到家去Nick家繞了一圈回來 再做完晚飯洗完澡 竟然已經(jīng)過了十一點(diǎn)了 John和Nick去...
    西瓜在唱歌閱讀 325評(píng)論 2 1
  • 人的一輩子很短馒吴,如果不能忠于自己的內(nèi)心扎运,那還可以做什么? 覺得這個(gè)人不錯(cuò)饮戳,相處看看豪治,你會(huì)發(fā)現(xiàn),原來你倆并不合適扯罐。如...
    瑟舞一秀閱讀 119評(píng)論 0 0