本文主要記錄的是《軟件測(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)行閱讀。