軟件測(cè)試及常用的策略和方法(完整版)實(shí)用資料_第1頁
軟件測(cè)試及常用的策略和方法(完整版)實(shí)用資料_第2頁
軟件測(cè)試及常用的策略和方法(完整版)實(shí)用資料_第3頁
軟件測(cè)試及常用的策略和方法(完整版)實(shí)用資料_第4頁
軟件測(cè)試及常用的策略和方法(完整版)實(shí)用資料_第5頁
已閱讀5頁,還剩62頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

軟件測(cè)試及常用的策略和方法(完整版)實(shí)用資料(可以直接使用,可編輯完整版實(shí)用資料,歡迎下載)

軟件測(cè)試分類軟件測(cè)試及常用的策略和方法(完整版)實(shí)用資料(可以直接使用,可編輯完整版實(shí)用資料,歡迎下載)一.黑盒測(cè)試與白盒測(cè)試1.黑盒測(cè)試:black-boxtesting:只關(guān)心軟件的輸入數(shù)據(jù)和輸出結(jié)果。包括功能測(cè)試與性能測(cè)試。2.白盒測(cè)試:white-boxtesting:研究源代碼與程序結(jié)構(gòu)二.靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試1.靜態(tài)測(cè)試:不實(shí)際運(yùn)行被測(cè)軟件,只靜態(tài)地檢查程序代碼,界面或文檔中可能存在的錯(cuò)誤的過程。包括:代碼測(cè)試(測(cè)試標(biāo)準(zhǔn)和規(guī)范,界面測(cè)試(實(shí)際界面與需求中的說明是否相符,文檔測(cè)試(用戶手冊(cè)與需求說明是否真正符合用戶的實(shí)際要求2.動(dòng)態(tài)測(cè)試:實(shí)際運(yùn)行被測(cè)程序,輸入相應(yīng)的測(cè)試數(shù)據(jù),檢查實(shí)際輸出結(jié)果和預(yù)期結(jié)果是否相符過程三.單元測(cè)試,集成測(cè)試,系統(tǒng)測(cè)試和驗(yàn)收測(cè)試1.單元測(cè)試:對(duì)軟件中的最小可測(cè)試單元進(jìn)行檢查和驗(yàn)證。A.單元測(cè)試需要在項(xiàng)目前期進(jìn)行,在程序員編碼之后,代碼已經(jīng)通過編譯后進(jìn)行;B.由白盒測(cè)試員或者開發(fā)人員來測(cè)試,開發(fā)人員需要交叉測(cè)試,避免測(cè)試自己的代碼C.測(cè)試的依據(jù)是:源程序本身,包括代碼和注釋;還項(xiàng)目的《詳細(xì)設(shè)計(jì)》文檔D.通過的標(biāo)準(zhǔn):程序通過所有單元測(cè)試的用例。語句的覆蓋率達(dá)到百分百;分支的覆蓋率達(dá)到85%E.需要檢查代碼是否符合規(guī)范,動(dòng)態(tài)運(yùn)行代碼,檢查其實(shí)際運(yùn)行結(jié)果。F.樁模塊和驅(qū)動(dòng)模塊樁模塊:STUB指模擬被測(cè)模塊所調(diào)用的模塊驅(qū)動(dòng)模塊:DRIVER指模擬被測(cè)模塊的上級(jí)模塊,用來接收測(cè)試數(shù)據(jù),啟動(dòng)被測(cè)模塊并輸出結(jié)果2.集成測(cè)試A.integrationtesting:將通過測(cè)試的單元模塊組裝成系統(tǒng)或者子系統(tǒng),再進(jìn)行測(cè)試,重點(diǎn)測(cè)試不同模塊的接口部分B.單元與集成同步進(jìn)行。測(cè)試參數(shù)傳遞。C.由開發(fā)人員或者白盒測(cè)試員測(cè)試D.依據(jù)是單元測(cè)試的模塊以及《概要設(shè)計(jì)》文檔3.系統(tǒng)測(cè)試與驗(yàn)收測(cè)試A.系統(tǒng)測(cè)試:systemtesting將整個(gè)軟件系統(tǒng)看做一個(gè)整體進(jìn)行測(cè)試,包括對(duì)功能,性能以及軟件所運(yùn)行的軟硬件環(huán)境進(jìn)行測(cè)試系統(tǒng)測(cè)試由黑盒測(cè)試員來完成,前期主要測(cè)試系統(tǒng)的功能是否滿足需求,后期主要測(cè)試系統(tǒng)運(yùn)行的性能是否滿足需求,以及在不同的軟硬件環(huán)境中的兼容性;主要依據(jù)是《系統(tǒng)需求規(guī)格說明》文檔B.驗(yàn)收測(cè)試α測(cè)試:由用戶,測(cè)試人員,開發(fā)人員共同參與的內(nèi)部測(cè)試β測(cè)試:內(nèi)測(cè)后的公測(cè),完全交給最終用戶的測(cè)試4.功能測(cè)試與性能測(cè)試A.功能測(cè)試:functiontesting檢查實(shí)際軟件的功能是否符合用戶的需求邏輯功能測(cè)試(logicfunctiontesting:計(jì)算器界面測(cè)試(uitesting:窗口,下拉式菜單和鼠標(biāo)操作,數(shù)據(jù)項(xiàng)易用性測(cè)試(usabilitytesting:合理性與方便性進(jìn)行測(cè)試安裝測(cè)試(installationtesting:安裝與缷載兼容性測(cè)試(compatibilitytesting:包括硬件兼容性測(cè)試與軟件兼容性測(cè)試。5.性能測(cè)試(performancetestingA.軟件性能主要有時(shí)間性能與空間性能兩種。一般需要用到自動(dòng)化的測(cè)試工具。B.軟件測(cè)試分為:一般性能測(cè)試,穩(wěn)定性測(cè)試(reliabilitytesting,負(fù)載測(cè)試(loadtesting和壓力測(cè)試(stresstesting6.回歸測(cè)試,冒煙測(cè)試,隨機(jī)測(cè)試A.regressiontesting:對(duì)軟件的新的版本測(cè)試時(shí),重復(fù)執(zhí)行上一個(gè)版本測(cè)試時(shí)的用例B.smocktesting:在對(duì)一個(gè)新版本進(jìn)行系統(tǒng)大規(guī)模的測(cè)試之前,先驗(yàn)證一下軟件的基本功能是否實(shí)現(xiàn),是否具備可測(cè)性C.randomtesting:在測(cè)試中所有的輸入數(shù)據(jù)都是隨機(jī)生成的,目的是模擬用戶的真實(shí)操作,并發(fā)現(xiàn)一些邊緣性的錯(cuò)誤。也叫猴子測(cè)試。功能測(cè)試常用的策略和方法黑盒測(cè)試(Black-boxTesting,又稱為功能測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試是把測(cè)試對(duì)象看作一個(gè)黑盒子。利用黑盒測(cè)試法進(jìn)行動(dòng)態(tài)測(cè)試時(shí),需要測(cè)試軟件產(chǎn)品的功能,不需測(cè)試軟件產(chǎn)品的內(nèi)部結(jié)構(gòu)和處理過程。采用黑盒技術(shù)設(shè)計(jì)測(cè)試用例的方法有:等價(jià)類劃分、邊界值分析、錯(cuò)誤推測(cè)、因果圖和綜合策略。黑盒測(cè)試注重于測(cè)試軟件的功能性需求,也即黑盒測(cè)試使軟件工程師派生出執(zhí)行程序所有功能需求的輸入條件。黑盒測(cè)試并不是白盒測(cè)試的替代品,而是用于輔助白盒測(cè)試發(fā)現(xiàn)其他類型的錯(cuò)誤。黑盒測(cè)試試圖發(fā)現(xiàn)以下類型的錯(cuò)誤:1功能錯(cuò)誤或遺漏;2界面錯(cuò)誤;3數(shù)據(jù)結(jié)構(gòu)或外部數(shù)據(jù)庫訪問錯(cuò)誤;4性能錯(cuò)誤;5初始化和終止錯(cuò)誤。一、黑盒測(cè)試的測(cè)試用例設(shè)計(jì)方法·等價(jià)類劃分方法·邊界值分析方法·錯(cuò)誤推測(cè)方法·因果圖方法·判定表驅(qū)動(dòng)分析方法·正交實(shí)驗(yàn)設(shè)計(jì)方法·功能圖分析方法等價(jià)類劃分:是把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分(子集,然后從每一個(gè)子集中選取少數(shù)具有代表性的數(shù)據(jù)作為測(cè)試用例。該方法是一種重要的,常用的黑盒測(cè)試用例設(shè)計(jì)方法。1劃分等價(jià)類:等價(jià)類是指某個(gè)輸入域的子集合。在該子集合中,各個(gè)輸入數(shù)據(jù)對(duì)于揭露程序中的錯(cuò)誤都是等效的。并合理地假定:測(cè)試某等價(jià)類的代表值就等于對(duì)這一類其它值的測(cè)試。因此,可以把全部輸入數(shù)據(jù)合理劃分為若干等價(jià)類,在每一個(gè)等價(jià)類中取一個(gè)數(shù)據(jù)作為測(cè)試的輸入條件,就可以用少量代表性的測(cè)試數(shù)據(jù)。取得較好的測(cè)試結(jié)果。等價(jià)類劃分可有兩種不同的情況:有效等價(jià)類和無效等價(jià)類。有效等價(jià)類:是指對(duì)于程序的規(guī)格說明來說是合理的,有意義的輸入數(shù)據(jù)構(gòu)成的集合。利用有效等價(jià)類可檢驗(yàn)程序是否實(shí)現(xiàn)了規(guī)格說明中所規(guī)定的功能和性能。無效等價(jià)類:與有效等價(jià)類的定義恰巧相反。設(shè)計(jì)測(cè)試用例時(shí),要同時(shí)考慮這兩種等價(jià)類。因?yàn)?軟件不僅要能接收合理的數(shù)據(jù),也要能經(jīng)受意外的考驗(yàn)。這樣的測(cè)試才能確保軟件具有更高的可靠性。2劃分等價(jià)類的方法:下面給出六條確定等價(jià)類的原則。①在輸入條件規(guī)定了取值范圍或值的個(gè)數(shù)的情況下,則可以確立一個(gè)有效等價(jià)類和兩個(gè)無效等價(jià)類。②在輸入條件規(guī)定了輸入值的集合或者規(guī)定了“必須如何”的條件的情況下,可確立一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類。③在輸入條件是一個(gè)布爾量的情況下,可確定一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類。④在規(guī)定了輸入數(shù)據(jù)的一組值(假定n個(gè),并且程序要對(duì)每一個(gè)輸入值分別處理的情況下,可確立n個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類。⑤在規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則的情況下,可確立一個(gè)有效等價(jià)類(符合規(guī)則和若干個(gè)無效等價(jià)類(從不同角度違反規(guī)則。⑥在確知已劃分的等價(jià)類中各元素在程序處理中的方式不同的情況下,則應(yīng)再將該等價(jià)類進(jìn)一步的劃分為更小的等價(jià)類。3設(shè)計(jì)測(cè)試用例:在確立了等價(jià)類后,可建立等價(jià)類表,列出所有劃分出的等價(jià)類:輸入條件有效等價(jià)類無效等價(jià)類然后從劃分出的等價(jià)類中按以下三個(gè)原則設(shè)計(jì)測(cè)試用例:①為每一個(gè)等價(jià)類規(guī)定一個(gè)唯一的編號(hào)。②設(shè)計(jì)一個(gè)新的測(cè)試用例,使其盡可能多地覆蓋尚未被覆蓋地有效等價(jià)類,重復(fù)這一步。直到所有的有效等價(jià)類都被覆蓋為止。③設(shè)計(jì)一個(gè)新的測(cè)試用例,使其僅覆蓋一個(gè)尚未被覆蓋的無效等價(jià)類,重復(fù)這一步。直到所有的無效等價(jià)類都被覆蓋為止。邊界值分析法邊界值分析方法是對(duì)等價(jià)類劃分方法的補(bǔ)充。(1邊界值分析方法的考慮:長(zhǎng)期的測(cè)試工作經(jīng)驗(yàn)告訴我們,大量的錯(cuò)誤是發(fā)生在輸入或輸出范圍的邊界上,而不是發(fā)生在輸入輸出范圍的內(nèi)部。因此針對(duì)各種邊界情況設(shè)計(jì)測(cè)試用例,可以查出更多的錯(cuò)誤。使用邊界值分析方法設(shè)計(jì)測(cè)試用例,首先應(yīng)確定邊界情況。通常輸入和輸出等價(jià)類的邊界,就是應(yīng)著重測(cè)試的邊界情況。應(yīng)當(dāng)選取正好等于,剛剛大于或剛剛小于邊界的值作為測(cè)試數(shù)據(jù),而不是選取等價(jià)類中的典型值或任意值作為測(cè)試數(shù)據(jù)。(2基于邊界值分析方法選擇測(cè)試用例的原則:1如果輸入條件規(guī)定了值的范圍,則應(yīng)取剛達(dá)到這個(gè)范圍的邊界的值,以及剛剛超越這個(gè)范圍邊界的值作為測(cè)試輸入數(shù)據(jù)。2如果輸入條件規(guī)定了值的個(gè)數(shù),則用最大個(gè)數(shù),最小個(gè)數(shù),比最小個(gè)數(shù)少一,比最大個(gè)數(shù)多一的數(shù)作為測(cè)試數(shù)據(jù)。3根據(jù)規(guī)格說明的每個(gè)輸出條件,使用前面的原則1。4根據(jù)規(guī)格說明的每個(gè)輸出條件,應(yīng)用前面的原則2。5如果程序的規(guī)格說明給出的輸入域或輸出域是有序集合,則應(yīng)選取集合的第一個(gè)元素和最后一個(gè)元素作為測(cè)試用例。6如果程序中使用了一個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu),則應(yīng)當(dāng)選擇這個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu)的邊界上的值作為測(cè)試用例。7分析規(guī)格說明,找出其它可能的邊界條件。錯(cuò)誤推測(cè)法錯(cuò)誤推測(cè)法:基于經(jīng)驗(yàn)和直覺推測(cè)程序中所有可能存在的各種錯(cuò)誤,從而有針對(duì)性的設(shè)計(jì)測(cè)試用例的方法。錯(cuò)誤推測(cè)方法的基本思想:列舉出程序中所有可能有的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特殊情況,根據(jù)他們選擇測(cè)試用例。例如,在單元測(cè)試時(shí)曾列出的許多在模塊中常見的錯(cuò)誤。以前產(chǎn)品測(cè)試中曾經(jīng)發(fā)現(xiàn)的錯(cuò)誤等,這些就是經(jīng)驗(yàn)的總結(jié)。還有,輸入數(shù)據(jù)和輸出數(shù)據(jù)為0的情況。輸入表格為空格或輸入表格只有一行。這些都是容易發(fā)生錯(cuò)誤的情況。可選擇這些情況下的例子作為測(cè)試用例。因果圖方法前面介紹的等價(jià)類劃分方法和邊界值分析方法,都是著重考慮輸入條件,但未考慮輸入條件之間的聯(lián)系,相互組合等??紤]輸入條件之間的相互組合,可能會(huì)產(chǎn)生一些新的情況。但要檢查輸入條件的組合不是一件容易的事情,即使把所有輸入條件劃分成等價(jià)類,他們之間的組合情況也相當(dāng)多。因此必須考慮采用一種適合于描述對(duì)于多種條件的組合,相應(yīng)產(chǎn)生多個(gè)動(dòng)作的形式來考慮設(shè)計(jì)測(cè)試用例。這就需要利用因果圖(邏輯模型。因果圖方法最終生成的就是判定表。它適合于檢查程序輸入條件的各種組合情況。利用因果圖生成測(cè)試用例的基本步驟:(1分析軟件規(guī)格說明描述中,那些是原因(即輸入條件或輸入條件的等價(jià)類,那些是結(jié)果(即輸出條件,并給每個(gè)原因和結(jié)果賦予一個(gè)標(biāo)識(shí)符。(2分析軟件規(guī)格說明描述中的語義。找出原因與結(jié)果之間,原因與原因之間對(duì)應(yīng)的關(guān)系。根據(jù)這些關(guān)系,畫出因果圖。(3由于語法或環(huán)境限制,有些原因與原因之間,原因與結(jié)果之間的組合情況不不可能出現(xiàn)。為表明這些特殊情況,在因果圖上用一些記號(hào)表明約束或限制條件。(4把因果圖轉(zhuǎn)換為判定表。(5把判定表的每一列拿出來作為依據(jù),設(shè)計(jì)測(cè)試用例。從因果圖生成的測(cè)試用例(局部,組合關(guān)系下的包括了所有輸入數(shù)據(jù)的取TRUE與取FALSE的情況,構(gòu)成的測(cè)試用例數(shù)目達(dá)到最少,且測(cè)試用例數(shù)目隨輸入數(shù)據(jù)數(shù)目的增加而線性地增加。前面因果圖方法中已經(jīng)用到了判定表。判定表(DECisionTable是分析和表達(dá)多邏輯條件下執(zhí)行不同操作的情況下的工具。在程序設(shè)計(jì)發(fā)展的初期,判定表就已被當(dāng)作編寫程序的輔助工具了。由于它可以把復(fù)雜的邏輯關(guān)系和多種條件組合的情況表達(dá)得既具體又明確。判定表驅(qū)動(dòng)分析方法判定表通常由四個(gè)部分組成。條件樁(ConDItionSTub:列出了問題得所有條件。通常認(rèn)為列出得條件的次序無關(guān)緊要。動(dòng)作樁(ActionStub:列出了問題規(guī)定可能采取的操作。這些操作的排列順序沒有約束。條件項(xiàng)(ConditionEntry:列出針對(duì)它左列條件的取值。在所有可能情況下的真假值。動(dòng)作項(xiàng)(ActionEntry:列出在條件項(xiàng)的各種取值情況下應(yīng)該采取的動(dòng)作。規(guī)則:任何一個(gè)條件組合的特定取值及其相應(yīng)要執(zhí)行的操作。在判定表中貫穿條件項(xiàng)和動(dòng)作項(xiàng)的一列就是一條規(guī)則。顯然,判定表中列出多少組條件取值,也就有多少條規(guī)則,既條件項(xiàng)和動(dòng)作項(xiàng)有多少列。判定表的建立步驟:(根據(jù)軟件規(guī)格說明①確定規(guī)則的個(gè)數(shù)。假如有n個(gè)條件。每個(gè)條件有兩個(gè)取值(0,1,故有種規(guī)則。②列出所有的條件樁和動(dòng)作樁。③填入條件項(xiàng)。④填入動(dòng)作項(xiàng)。等到初始判定表。⑤簡(jiǎn)化、合并相似規(guī)則(相同動(dòng)作。B.Beizer指出了適合使用判定表設(shè)計(jì)測(cè)試用例的條件:①規(guī)格說明以判定表形式給出,或很容易轉(zhuǎn)換成判定表。②條件的排列順序不會(huì)也不影響執(zhí)行哪些操作。③規(guī)則的排列順序不會(huì)也不影響執(zhí)行哪些操作。④每當(dāng)某一規(guī)則的條件已經(jīng)滿足,并確定要執(zhí)行的操作后,不必檢驗(yàn)別的規(guī)則。⑤如果某一規(guī)則得到滿足要執(zhí)行多個(gè)操作,這些操作的執(zhí)行順序無關(guān)緊要。黑盒測(cè)試的優(yōu)點(diǎn)1、基本上不用人管著,如果程序停止運(yùn)行了一般就是被測(cè)試程序CRASh了2、設(shè)計(jì)完測(cè)試?yán)?下來的工作就是爽了,當(dāng)然更苦悶的是確定crash原因黑盒測(cè)試的缺點(diǎn)1、結(jié)果取決于測(cè)試?yán)脑O(shè)計(jì),測(cè)試?yán)脑O(shè)計(jì)部分來勢(shì)來源于經(jīng)驗(yàn),OUSPG的東西很值得借鑒2、沒有狀態(tài)轉(zhuǎn)換的概念,目前一些成功的例子基本上都是針對(duì)PDU來做的,還做不到針對(duì)被測(cè)試程序的狀態(tài)轉(zhuǎn)換來作3、就沒有狀態(tài)概念的測(cè)試來說,尋找和確定造成程序crash的測(cè)試?yán)莻€(gè)麻煩事情,必須把周圍可能的測(cè)試?yán)龁为?dú)確認(rèn)一遍。而就有狀態(tài)的測(cè)試來說,就更麻煩了,尤其不是一個(gè)單獨(dú)的tEStcase造成的問題。這些在堆的問題中表現(xiàn)的更為突出。黑盒測(cè)試(功能測(cè)試工具的選擇那么,如何高效地完成功能測(cè)試?選擇一款合適的功能測(cè)試工具并培訓(xùn)一支高素質(zhì)的工具使用隊(duì)伍無疑是至關(guān)重要的。盡管現(xiàn)階段存在少數(shù)不采用任何功能測(cè)試工具,從事功能測(cè)試外包項(xiàng)目的軟件服務(wù)企業(yè)。短期來看,這類企業(yè)盈利狀況尚可,但長(zhǎng)久來看,它們極有可能被自動(dòng)化程度較高的軟件服務(wù)企業(yè)取代。目前,用于功能測(cè)試的工具軟件有很多,針對(duì)不同架構(gòu)軟件的工具也不斷推陳出新。這里重點(diǎn)介紹的是其中一個(gè)較為典型自動(dòng)化測(cè)試工具,即Mercury公司的WinRunner。WinRunner是一種用于檢驗(yàn)應(yīng)用程序能否如期運(yùn)行的企業(yè)級(jí)軟件功能測(cè)試工具。通過自動(dòng)捕獲、檢測(cè)和模擬用戶交互操作,WinRunner能識(shí)別出絕大多數(shù)軟件功能缺陷,從而確保那些跨越了多個(gè)功能點(diǎn)和數(shù)據(jù)庫的應(yīng)用程序在發(fā)布時(shí)盡量不出現(xiàn)功能性故障。WinRunner的特點(diǎn)在于:與傳統(tǒng)的手工測(cè)試相比,它能快速、批量地完成功能點(diǎn)測(cè)試;能針對(duì)相同測(cè)試腳本,執(zhí)行相同的動(dòng)作,從而消除人工測(cè)試所帶來的理解上的誤差;此外,它還能重復(fù)執(zhí)行相同動(dòng)作,測(cè)試工作中最枯燥的部分可交由機(jī)器完成;它支持程序風(fēng)格的測(cè)試腳本,一個(gè)高素質(zhì)的測(cè)試工程師能借助它完成流程極為復(fù)雜的測(cè)試,通過使用通配符、宏、條件語句、循環(huán)語句等,還能較好地完成測(cè)試腳本的重用;它針對(duì)于大多數(shù)編程語言和Windows技術(shù),提供了較好的集成、支持環(huán)境,這對(duì)基于Windows平臺(tái)的應(yīng)用程序?qū)嵤┕δ軠y(cè)試而言帶來了極大的便利。WinRunner的工作流程大致可以分為以下六個(gè)步驟:1.識(shí)別應(yīng)用程序的GUI在WinRunner中,我們可以使用GUISpy來識(shí)別各種GUI對(duì)象,識(shí)別后,WinRunner會(huì)將其存儲(chǔ)到GUIMapFile中。它提供兩種GUIMapFile模式:GlobalGUIMapFile和GUIMapFileperTest。其最大區(qū)別是后者對(duì)每個(gè)測(cè)試腳本產(chǎn)生一個(gè)GUI文件,它能自動(dòng)建立、存儲(chǔ)、加載,推薦初學(xué)者選用這種模式。但是,這種模式不易于描述對(duì)象的改變,其效率比較低,因此對(duì)于一個(gè)有經(jīng)驗(yàn)的測(cè)試人員來說前者不失為一種更好的選擇,它只產(chǎn)生一個(gè)共享的GUI文件,這使得測(cè)試腳本更容易維護(hù),且效率更高。2.建立測(cè)試腳本在建立測(cè)試腳本時(shí),一般先進(jìn)行錄制,然后在錄制形成的腳本中手工加入需要的TSL(與C語言類似的測(cè)試腳本語言。錄制腳本有兩種模式:ContextSensitive和Analog,選擇依據(jù)主要在于是否對(duì)鼠標(biāo)軌跡進(jìn)行模擬,在需要回放時(shí)一般選用Analog。在錄制過程中這兩種模式可以通過F2鍵相互切換。只要看看現(xiàn)代軟件的規(guī)模和功能點(diǎn)數(shù)就可以明白,功能測(cè)試早已跨越了單靠手工敲敲鍵盤、點(diǎn)點(diǎn)鼠標(biāo)就可以完成的階段。而性能測(cè)試則是控制系統(tǒng)性能的有效手段,在軟件的能力驗(yàn)證、能力規(guī)劃、性能調(diào)優(yōu)、缺陷修復(fù)等方面都發(fā)揮著重要作用。3.對(duì)測(cè)試腳本除錯(cuò)(debug在WinRunner中有專門一個(gè)DebugTOOlbar用于測(cè)試腳本除錯(cuò)??梢允褂胹tep、pause、breakpoint等來控制和跟蹤測(cè)試腳本和查看各種變量值。4.在新版應(yīng)用程序執(zhí)行測(cè)試腳本當(dāng)應(yīng)用程序有新版本發(fā)布時(shí),我們會(huì)對(duì)應(yīng)用程序的各種功能包括新增功能進(jìn)行測(cè)試,這時(shí)當(dāng)然不可能再來重新錄制和編寫所有的測(cè)試腳本。我們可以使用已有的腳本,批量運(yùn)行這些測(cè)試腳本測(cè)試舊的功能點(diǎn)是否正常工作??梢允褂靡粋€(gè)call命令來加載各測(cè)試腳本。還可在call命令中加各種TSL腳本來增加批量能力。5.分析測(cè)試結(jié)果分析測(cè)試結(jié)果在整個(gè)測(cè)試過程中最重要,通過分析可以發(fā)現(xiàn)應(yīng)用程序的各種功能性缺陷。當(dāng)運(yùn)行完某個(gè)測(cè)試腳本后,會(huì)產(chǎn)生一個(gè)測(cè)試報(bào)告,從這個(gè)測(cè)試報(bào)告中我們能發(fā)現(xiàn)應(yīng)用程序的功能性缺陷,能看到實(shí)際結(jié)果和期望結(jié)果之間的差異,以及在測(cè)試過程中產(chǎn)生的各類對(duì)話框等。6.回報(bào)缺陷(defect在分析完測(cè)試報(bào)告后,按照測(cè)試流程要回報(bào)應(yīng)用程序的各種缺陷,然后將這些缺陷發(fā)給指定人,以便進(jìn)行修改和維護(hù)。常用的功能測(cè)試方法功能測(cè)試就是對(duì)產(chǎn)品的各功能進(jìn)行驗(yàn)證,根據(jù)功能測(cè)試用例,逐項(xiàng)測(cè)試,檢查產(chǎn)品是否達(dá)到用戶要求的功能。常用的測(cè)試方法如下:1、頁面鏈接檢查:每一個(gè)鏈接是否都有對(duì)應(yīng)的頁面,并且頁面之間切換正確。2、相關(guān)性檢查:刪除/增加一項(xiàng)會(huì)不會(huì)對(duì)其他項(xiàng)產(chǎn)生影響,如果產(chǎn)生影響,這些影響是否都正確。3、檢查按鈕的功能是否正確:如update,cancel,delete,SAve等功能是否正確。4、字符串長(zhǎng)度檢查:輸入超出需求所說明的字符串長(zhǎng)度的內(nèi)容,看系統(tǒng)是否檢查字符串長(zhǎng)度,會(huì)不會(huì)出錯(cuò)。5、字符類型檢查:在應(yīng)該輸入指定類型的內(nèi)容的地方輸入其他類型的內(nèi)容(如在應(yīng)該輸入整型的地方輸入其他字符類型,看系統(tǒng)是否檢查字符類型,會(huì)否報(bào)錯(cuò)。6、標(biāo)點(diǎn)符號(hào)檢查:輸入內(nèi)容包括各種標(biāo)點(diǎn)符號(hào),特別是空格,各種引號(hào),回車鍵??聪到y(tǒng)處理是否正確。7、中文字符處理:在可以輸入中文的系統(tǒng)輸入中文,看會(huì)否出現(xiàn)亂碼或出錯(cuò)。8、檢查帶出信息的完整性:在查看信息和update信息時(shí),查看所填寫的信息是不是全部帶出。,帶出信息和添加的是否一致9、信息重復(fù):在一些需要命名,且名字應(yīng)該唯一的信息輸入重復(fù)的名字或ID,看系統(tǒng)有沒有處理,會(huì)否報(bào)錯(cuò),重名包括是否區(qū)分大小寫,以及在輸入內(nèi)容的前后輸入空格,系統(tǒng)是否作出正確處理。10、檢查刪除功能:在一些可以一次刪除多個(gè)信息的地方,不選擇任何信息,按”delete”,看系統(tǒng)如何處理,會(huì)否出錯(cuò);然后選擇一個(gè)和多個(gè)信息,進(jìn)行刪除,看是否正確處理。11、檢查添加和修改是否一致:檢查添加和修改信息的要求是否一致,例如添加要求必填的項(xiàng),修改也應(yīng)該必填;添加規(guī)定為整型的項(xiàng),修改也必須為整型。12、檢查修改重名:修改時(shí)把不能重名的項(xiàng)改為已存在的內(nèi)容,看會(huì)否處理,報(bào)錯(cuò)。同時(shí),也要注意,會(huì)不會(huì)報(bào)和自己重名的錯(cuò)。13、重復(fù)提交表單:一條已經(jīng)成功提交的紀(jì)錄,back后再提交,看看系統(tǒng)是否做了處理。14、檢查多次使用back鍵的情況:在有back的地方,back,回到原來頁面,再back,重復(fù)多次,看會(huì)否出錯(cuò)。15、search檢查:在有search功能的地方輸入系統(tǒng)存在和不存在的內(nèi)容,看search結(jié)果是否正確。如果可以輸入多個(gè)search條件,可以同時(shí)添加合理和不合理的條件,看系統(tǒng)處理是否正確。16、輸入信息位置:注意在光標(biāo)停留的地方輸入信息時(shí),光標(biāo)和所輸入的信息會(huì)否跳到別的地方。17、上傳下載文件檢查:上傳下載文件的功能是否實(shí)現(xiàn),上傳文件是否能打開。對(duì)上傳文件的格式有何規(guī)定,系統(tǒng)是否有解釋信息,并檢查系統(tǒng)是否能夠做到。18、必填項(xiàng)檢查:應(yīng)該填寫的項(xiàng)沒有填寫時(shí)系統(tǒng)是否都做了處理,對(duì)必填項(xiàng)是否有提示信息,如在必填項(xiàng)前加*19、快捷鍵檢查:是否支持常用快捷鍵,如Ctrl+CCtrl+VBackspace等,對(duì)一些不允許輸入信息的字段,如選人,選日期對(duì)快捷方式是否也做了限制。20、回車鍵檢查:在輸入結(jié)束后直接按回車鍵,看系統(tǒng)處理如何,會(huì)否報(bào)錯(cuò)。再談黑盒測(cè)試和白盒測(cè)試黑盒測(cè)試(Black-boxTesting,又稱為功能測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試是把測(cè)試對(duì)象看作一個(gè)黑盒子。利用黑盒測(cè)試法進(jìn)行動(dòng)態(tài)測(cè)試時(shí),需要測(cè)試軟件產(chǎn)品的功能,不需測(cè)試軟件產(chǎn)品的內(nèi)部結(jié)構(gòu)和處理過程。采用黑盒技術(shù)設(shè)計(jì)測(cè)試用例的方法有:等價(jià)類劃分、邊界值分析、錯(cuò)誤推測(cè)、因果圖和綜合策略。黑盒測(cè)試注重于測(cè)試軟件的功能性需求,也即黑盒測(cè)試使軟件工程師派生出執(zhí)行程序所有功能需求的輸入條件。黑盒測(cè)試并不是白盒測(cè)試的替代品,而是用于輔助白盒測(cè)試發(fā)現(xiàn)其他類型的錯(cuò)誤。黑盒測(cè)試試圖發(fā)現(xiàn)以下類型的錯(cuò)誤:1功能錯(cuò)誤或遺漏;2界面錯(cuò)誤;3數(shù)據(jù)結(jié)構(gòu)或外部數(shù)據(jù)庫訪問錯(cuò)誤;4性能錯(cuò)誤;5初始化和終止錯(cuò)誤。一、黑盒測(cè)試的測(cè)試用例設(shè)計(jì)方法·等價(jià)類劃分方法·邊界值分析方法·錯(cuò)誤推測(cè)方法·因果圖方法·判定表驅(qū)動(dòng)分析方法·正交實(shí)驗(yàn)設(shè)計(jì)方法·功能圖分析方法等價(jià)類劃分:是把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分(子集,然后從每一個(gè)子集中選取少數(shù)具有代表性的數(shù)據(jù)作為測(cè)試用例.該方法是一種重要的,常用的黑盒測(cè)試用例設(shè)計(jì)方法.1劃分等價(jià)類:等價(jià)類是指某個(gè)輸入域的子集合.在該子集合中,各個(gè)輸入數(shù)據(jù)對(duì)于揭露程序中的錯(cuò)誤都是等效的.并合理地假定:測(cè)試某等價(jià)類的代表值就等于對(duì)這一類其它值的測(cè)試.因此,可以把全部輸入數(shù)據(jù)合理劃分為若干等價(jià)類,在每一個(gè)等價(jià)類中取一個(gè)數(shù)據(jù)作為測(cè)試的輸入條件,就可以用少量代表性的測(cè)試數(shù)據(jù).取得較好的測(cè)試結(jié)果.等價(jià)類劃分可有兩種不同的情況:有效等價(jià)類和無效等價(jià)類.有效等價(jià)類:是指對(duì)于程序的規(guī)格說明來說是合理的,有意義的輸入數(shù)據(jù)構(gòu)成的集合.利用有效等價(jià)類可檢驗(yàn)程序是否實(shí)現(xiàn)了規(guī)格說明中所規(guī)定的功能和性能.無效等價(jià)類:與有效等價(jià)類的定義恰巧相反.設(shè)計(jì)測(cè)試用例時(shí),要同時(shí)考慮這兩種等價(jià)類.因?yàn)?軟件不僅要能接收合理的數(shù)據(jù),也要能經(jīng)受意外的考驗(yàn).這樣的測(cè)試才能確保軟件具有更高的可靠性.2劃分等價(jià)類的方法:下面給出六條確定等價(jià)類的原則.①在輸入條件規(guī)定了取值范圍或值的個(gè)數(shù)的情況下,則可以確立一個(gè)有效等價(jià)類和兩個(gè)無效等價(jià)類.②在輸入條件規(guī)定了輸入值的集合或者規(guī)定了“必須如何”的條件的情況下,可確立一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類.③在輸入條件是一個(gè)布爾量的情況下,可確定一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類.④在規(guī)定了輸入數(shù)據(jù)的一組值(假定n個(gè),并且程序要對(duì)每一個(gè)輸入值分別處理的情況下,可確立n個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類.⑤在規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則的情況下,可確立一個(gè)有效等價(jià)類(符合規(guī)則和若干個(gè)無效等價(jià)類(從不同角度違反規(guī)則.⑥在確知已劃分的等價(jià)類中各元素在程序處理中的方式不同的情況下,則應(yīng)再將該等價(jià)類進(jìn)一步的劃分為更小的等價(jià)類.3設(shè)計(jì)測(cè)試用例:在確立了等價(jià)類后,可建立等價(jià)類表,列出所有劃分出的等價(jià)類:輸入條件有效等價(jià)類無效等價(jià)類..................然后從劃分出的等價(jià)類中按以下三個(gè)原則設(shè)計(jì)測(cè)試用例:①為每一個(gè)等價(jià)類規(guī)定一個(gè)唯一的編號(hào).②設(shè)計(jì)一個(gè)新的測(cè)試用例,使其盡可能多地覆蓋尚未被覆蓋地有效等價(jià)類,重復(fù)這一步.直到所有的有效等價(jià)類都被覆蓋為止.③設(shè)計(jì)一個(gè)新的測(cè)試用例,使其僅覆蓋一個(gè)尚未被覆蓋的無效等價(jià)類,重復(fù)這一步.直到所有的無效等價(jià)類都被覆蓋為止.邊界值分析法邊界值分析方法是對(duì)等價(jià)類劃分方法的補(bǔ)充.(1邊界值分析方法的考慮:長(zhǎng)期的測(cè)試工作經(jīng)驗(yàn)告訴我們,大量的錯(cuò)誤是發(fā)生在輸入或輸出范圍的邊界上,而不是發(fā)生在輸入輸出范圍的內(nèi)部.因此針對(duì)各種邊界情況設(shè)計(jì)測(cè)試用例,可以查出更多的錯(cuò)誤.使用邊界值分析方法設(shè)計(jì)測(cè)試用例,首先應(yīng)確定邊界情況.通常輸入和輸出等價(jià)類的邊界,就是應(yīng)著重測(cè)試的邊界情況.應(yīng)當(dāng)選取正好等于,剛剛大于或剛剛小于邊界的值作為測(cè)試數(shù)據(jù),而不是選取等價(jià)類中的典型值或任意值作為測(cè)試數(shù)據(jù).(2基于邊界值分析方法選擇測(cè)試用例的原則:1如果輸入條件規(guī)定了值的范圍,則應(yīng)取剛達(dá)到這個(gè)范圍的邊界的值,以及剛剛超越這個(gè)范圍邊界的值作為測(cè)試輸入數(shù)據(jù).2如果輸入條件規(guī)定了值的個(gè)數(shù),則用最大個(gè)數(shù),最小個(gè)數(shù),比最小個(gè)數(shù)少一,比最大個(gè)數(shù)多一的數(shù)作為測(cè)試數(shù)據(jù).3根據(jù)規(guī)格說明的每個(gè)輸出條件,使用前面的原則1.4根據(jù)規(guī)格說明的每個(gè)輸出條件,應(yīng)用前面的原則2.5如果程序的規(guī)格說明給出的輸入域或輸出域是有序集合,則應(yīng)選取集合的第一個(gè)元素和最后一個(gè)元素作為測(cè)試用例.6如果程序中使用了一個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu),則應(yīng)當(dāng)選擇這個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu)的邊界上的值作為測(cè)試用例.7分析規(guī)格說明,找出其它可能的邊界條件.錯(cuò)誤推測(cè)法錯(cuò)誤推測(cè)法:基于經(jīng)驗(yàn)和直覺推測(cè)程序中所有可能存在的各種錯(cuò)誤,從而有針對(duì)性的設(shè)計(jì)測(cè)試用例的方法.錯(cuò)誤推測(cè)方法的基本思想:列舉出程序中所有可能有的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特殊情況,根據(jù)他們選擇測(cè)試用例.例如,在單元測(cè)試時(shí)曾列出的許多在模塊中常見的錯(cuò)誤.以前產(chǎn)品測(cè)試中曾經(jīng)發(fā)現(xiàn)的錯(cuò)誤等,這些就是經(jīng)驗(yàn)的總結(jié).還有,輸入數(shù)據(jù)和輸出數(shù)據(jù)為0的情況.輸入表格為空格或輸入表格只有一行.這些都是容易發(fā)生錯(cuò)誤的情況.可選擇這些情況下的例子作為測(cè)試用例.因果圖方法前面介紹的等價(jià)類劃分方法和邊界值分析方法,都是著重考慮輸入條件,但未考慮輸入條件之間的聯(lián)系,相互組合等.考慮輸入條件之間的相互組合,可能會(huì)產(chǎn)生一些新的情況.但要檢查輸入條件的組合不是一件容易的事情,即使把所有輸入條件劃分成等價(jià)類,他們之間的組合情況也相當(dāng)多.因此必須考慮采用一種適合于描述對(duì)于多種條件的組合,相應(yīng)產(chǎn)生多個(gè)動(dòng)作的形式來考慮設(shè)計(jì)測(cè)試用例.這就需要利用因果圖(邏輯模型.因果圖方法最終生成的就是判定表.它適合于檢查程序輸入條件的各種組合情況.利用因果圖生成測(cè)試用例的基本步驟:(1分析軟件規(guī)格說明描述中,那些是原因(即輸入條件或輸入條件的等價(jià)類,那些是結(jié)果(即輸出條件,并給每個(gè)原因和結(jié)果賦予一個(gè)標(biāo)識(shí)符.(2分析軟件規(guī)格說明描述中的語義.找出原因與結(jié)果之間,原因與原因之間對(duì)應(yīng)的關(guān)系.根據(jù)這些關(guān)系,畫出因果圖.(3由于語法或環(huán)境限制,有些原因與原因之間,原因與結(jié)果之間的組合情況不不可能出現(xiàn).為表明這些特殊情況,在因果圖上用一些記號(hào)表明約束或限制條件.(4把因果圖轉(zhuǎn)換為判定表.(5把判定表的每一列拿出來作為依據(jù),設(shè)計(jì)測(cè)試用例.從因果圖生成的測(cè)試用例(局部,組合關(guān)系下的包括了所有輸入數(shù)據(jù)的取TRUE與取FALSE的情況,構(gòu)成的測(cè)試用例數(shù)目達(dá)到最少,且測(cè)試用例數(shù)目隨輸入數(shù)據(jù)數(shù)目的增加而線性地增加.前面因果圖方法中已經(jīng)用到了判定表.判定表(DecisionTable是分析和表達(dá)多邏輯條件下執(zhí)行不同操作的情況下的工具.在程序設(shè)計(jì)發(fā)展的初期,判定表就已被當(dāng)作編寫程序的輔助工具了.由于它可以把復(fù)雜的邏輯關(guān)系和多種條件組合的情況表達(dá)得既具體又明確.判定表通常由四個(gè)部分組成.條件樁(ConditionStub:列出了問題得所有條件.通常認(rèn)為列出得條件的次序無關(guān)緊要.動(dòng)作樁(ActionStub:列出了問題規(guī)定可能采取的操作.這些操作的排列順序沒有約束.條件項(xiàng)(ConditionEntry:列出針對(duì)它左列條件的取值.在所有可能情況下的真假值.動(dòng)作項(xiàng)(ActionEntry:列出在條件項(xiàng)的各種取值情況下應(yīng)該采取的動(dòng)作.規(guī)則:任何一個(gè)條件組合的特定取值及其相應(yīng)要執(zhí)行的操作.在判定表中貫穿條件項(xiàng)和動(dòng)作項(xiàng)的一列就是一條規(guī)則.顯然,判定表中列出多少組條件取值,也就有多少條規(guī)則,既條件項(xiàng)和動(dòng)作項(xiàng)有多少列.判定表的建立步驟:(根據(jù)軟件規(guī)格說明①確定規(guī)則的個(gè)數(shù).假如有n個(gè)條件.每個(gè)條件有兩個(gè)取值(0,1,故有種規(guī)則.②列出所有的條件樁和動(dòng)作樁.③填入條件項(xiàng).④填入動(dòng)作項(xiàng).等到初始判定表.⑤簡(jiǎn)化.合并相似規(guī)則(相同動(dòng)作.B.Beizer指出了適合使用判定表設(shè)計(jì)測(cè)試用例的條件:①規(guī)格說明以判定表形式給出,或很容易轉(zhuǎn)換成判定表.②條件的排列順序不會(huì)也不影響執(zhí)行哪些操作.③規(guī)則的排列順序不會(huì)也不影響執(zhí)行哪些操作.④每當(dāng)某一規(guī)則的條件已經(jīng)滿足,并確定要執(zhí)行的操作后,不必檢驗(yàn)別的規(guī)則.⑤如果某一規(guī)則得到滿足要執(zhí)行多個(gè)操作,這些操作的執(zhí)行順序無關(guān)緊要.黑盒測(cè)試的優(yōu)點(diǎn)1.基本上不用人管著,如果程序停止運(yùn)行了一般就是被測(cè)試程序crash了2.設(shè)計(jì)完測(cè)試?yán)?下來的工作就是爽了,當(dāng)然更苦悶的是確定crash原因黑盒測(cè)試的缺點(diǎn)1.結(jié)果取決于測(cè)試?yán)脑O(shè)計(jì),測(cè)試?yán)脑O(shè)計(jì)部分來勢(shì)來源于經(jīng)驗(yàn),OUSPG的東西很值得借鑒2.沒有狀態(tài)轉(zhuǎn)換的概念,目前一些成功的例子基本上都是針對(duì)PDU來做的,還做不到針對(duì)被測(cè)試程序的狀態(tài)轉(zhuǎn)換來作3.就沒有狀態(tài)概念的測(cè)試來說,尋找和確定造成程序crash的測(cè)試?yán)莻€(gè)麻煩事情,必須把周圍可能的測(cè)試?yán)龁为?dú)確認(rèn)一遍。而就有狀態(tài)的測(cè)試來說,就更麻煩了,尤其不是一個(gè)單獨(dú)的testcase造成的問題。這些在堆的問題中表現(xiàn)的更為突出。黑盒測(cè)試(功能測(cè)試工具的選擇那么,如何高效地完成功能測(cè)試?選擇一款合適的功能測(cè)試工具并培訓(xùn)一支高素質(zhì)的工具使用隊(duì)伍無疑是至關(guān)重要的。盡管現(xiàn)階段存在少數(shù)不采用任何功能測(cè)試工具,從事功能測(cè)試外包項(xiàng)目的軟件服務(wù)企業(yè)。短期來看,這類企業(yè)盈利狀況尚可,但長(zhǎng)久來看,它們極有可能被自動(dòng)化程度較高的軟件服務(wù)企業(yè)取代。目前,用于功能測(cè)試的工具軟件有很多,針對(duì)不同架構(gòu)軟件的工具也不斷推陳出新。這里重點(diǎn)介紹的是其中一個(gè)較為典型自動(dòng)化測(cè)試工具,即Mercury公司的WinRunner。WinRunner是一種用于檢驗(yàn)應(yīng)用程序能否如期運(yùn)行的企業(yè)級(jí)軟件功能測(cè)試工具。通過自動(dòng)捕獲、檢測(cè)和模擬用戶交互操作,WinRunner能識(shí)別出絕大多數(shù)軟件功能缺陷,從而確保那些跨越了多個(gè)功能點(diǎn)和數(shù)據(jù)庫的應(yīng)用程序在發(fā)布時(shí)盡量不出現(xiàn)功能性故障。WinRunner的特點(diǎn)在于:與傳統(tǒng)的手工測(cè)試相比,它能快速、批量地完成功能點(diǎn)測(cè)試;能針對(duì)相同測(cè)試腳本,執(zhí)行相同的動(dòng)作,從而消除人工測(cè)試所帶來的理解上的誤差;此外,它還能重復(fù)執(zhí)行相同動(dòng)作,測(cè)試工作中最枯燥的部分可交由機(jī)器完成;它支持程序風(fēng)格的測(cè)試腳本,一個(gè)高素質(zhì)的測(cè)試工程師能借助它完成流程極為復(fù)雜的測(cè)試,通過使用通配符、宏、條件語句、循環(huán)語句等,還能較好地完成測(cè)試腳本的重用;它針對(duì)于大多數(shù)編程語言和Windows技術(shù),提供了較好的集成、支持環(huán)境,這對(duì)基于Windows平臺(tái)的應(yīng)用程序?qū)嵤┕δ軠y(cè)試而言帶來了極大的便利。WinRunner的工作流程大致可以分為以下六個(gè)步驟:1.識(shí)別應(yīng)用程序的GUI在WinRunner中,我們可以使用GUISpy來識(shí)別各種GUI對(duì)象,識(shí)別后,WinRunner會(huì)將其存儲(chǔ)到GUIMapFile中。它提供兩種GUIMapFile模式:GlobalGUIMapFile和GUIMapFileperTest。其最大區(qū)別是后者對(duì)每個(gè)測(cè)試腳本產(chǎn)生一個(gè)GUI文件,它能自動(dòng)建立、存儲(chǔ)、加載,推薦初學(xué)者選用這種模式。但是,這種模式不易于描述對(duì)象的改變,其效率比較低,因此對(duì)于一個(gè)有經(jīng)驗(yàn)的測(cè)試人員來說前者不失為一種更好的選擇,它只產(chǎn)生一個(gè)共享的GUI文件,這使得測(cè)試腳本更容易維護(hù),且效率更高。2.建立測(cè)試腳本在建立測(cè)試腳本時(shí),一般先進(jìn)行錄制,然后在錄制形成的腳本中手工加入需要的TSL(與C語言類似的測(cè)試腳本語言。錄制腳本有兩種模式:ContextSensitive和Analog,選擇依據(jù)主要在于是否對(duì)鼠標(biāo)軌跡進(jìn)行模擬,在需要回放時(shí)一般選用Analog。在錄制過程中這兩種模式可以通過F2鍵相互切換。只要看看現(xiàn)代軟件的規(guī)模和功能點(diǎn)數(shù)就可以明白,功能測(cè)試早已跨越了單靠手工敲敲鍵盤、點(diǎn)點(diǎn)鼠標(biāo)就可以完成的階段。而性能測(cè)試則是控制系統(tǒng)性能的有效手段,在軟件的能力驗(yàn)證、能力規(guī)劃、性能調(diào)優(yōu)、缺陷修復(fù)等方面都發(fā)揮著重要作用。3.對(duì)測(cè)試腳本除錯(cuò)(debug在WinRunner中有專門一個(gè)DebugToolbar用于測(cè)試腳本除錯(cuò)??梢允褂胹tep、pause、breakpoint等來控制和跟蹤測(cè)試腳本和查看各種變量值。4.在新版應(yīng)用程序執(zhí)行測(cè)試腳本當(dāng)應(yīng)用程序有新版本發(fā)布時(shí),我們會(huì)對(duì)應(yīng)用程序的各種功能包括新增功能進(jìn)行測(cè)試,這時(shí)當(dāng)然不可能再來重新錄制和編寫所有的測(cè)試腳本。我們可以使用已有的腳本,批量運(yùn)行這些測(cè)試腳本測(cè)試舊的功能點(diǎn)是否正常工作??梢允褂靡粋€(gè)call命令來加載各測(cè)試腳本。還可在call命令中加各種TSL腳本來增加批量能力。5.分析測(cè)試結(jié)果分析測(cè)試結(jié)果在整個(gè)測(cè)試過程中最重要,通過分析可以發(fā)現(xiàn)應(yīng)用程序的各種功能性缺陷。當(dāng)運(yùn)行完某個(gè)測(cè)試腳本后,會(huì)產(chǎn)生一個(gè)測(cè)試報(bào)告,從這個(gè)測(cè)試報(bào)告中我們能發(fā)現(xiàn)應(yīng)用程序的功能性缺陷,能看到實(shí)際結(jié)果和期望結(jié)果之間的差異,以及在測(cè)試過程中產(chǎn)生的各類對(duì)話框等。6.回報(bào)缺陷(defect在分析完測(cè)試報(bào)告后,按照測(cè)試流程要回報(bào)應(yīng)用程序的各種缺陷,然后將這些缺陷發(fā)給指定人,以便進(jìn)行修改和維護(hù)。白盒測(cè)試作為測(cè)試人員常用的一種測(cè)試方法,越來越受到測(cè)試工程師的重視。白盒測(cè)試并不是簡(jiǎn)單的按照代碼設(shè)計(jì)用例,而是需要根據(jù)不同的測(cè)試需求,結(jié)合不同的測(cè)試對(duì)象,使用適合的方法進(jìn)行測(cè)試。因?yàn)閷?duì)于不同復(fù)雜度的代碼邏輯,可以衍生出許多種執(zhí)行路徑,只有適當(dāng)?shù)臏y(cè)試方法,才能幫助我們從代碼的迷霧森林中找到正確的方向。本文介紹六種白盒子測(cè)試方法:語句覆蓋、判定覆蓋、條件覆蓋、判定條件覆蓋、條件組合覆蓋、路徑覆蓋。白盒測(cè)試的概述由于邏輯錯(cuò)誤和不正確假設(shè)與一條程序路徑被運(yùn)行的可能性成反比。由于我們經(jīng)常相信某邏輯路徑不可能被執(zhí)行,而事實(shí)上,它可能在正常的情況下被執(zhí)行。由于代碼中的筆誤是隨機(jī)且無法杜絕的,因此我們要進(jìn)行白盒測(cè)試。白盒測(cè)試又稱結(jié)構(gòu)測(cè)試,透明盒測(cè)試、邏輯驅(qū)動(dòng)測(cè)試或基于代碼的測(cè)試。白盒測(cè)試是一種測(cè)試用例設(shè)計(jì)方法,盒子指的是被測(cè)試的軟件,白盒指的是盒子是可視的,你清楚盒子內(nèi)部的東西以及里面是如何運(yùn)作的。白盒的測(cè)試用例需要做到:·保證一個(gè)模塊中的所有獨(dú)立路徑至少被使用一次·對(duì)所有邏輯值均需測(cè)試true和false·在上下邊界及可操作范圍內(nèi)運(yùn)行所有循環(huán)·檢查內(nèi)部數(shù)據(jù)結(jié)構(gòu)以確保其有效性白盒測(cè)試的目的:通過檢查軟件內(nèi)部的邏輯結(jié)構(gòu),對(duì)軟件中的邏輯路徑進(jìn)行覆蓋測(cè)試;在程序不同地方設(shè)立檢查點(diǎn),檢查程序的狀態(tài),以確定實(shí)際運(yùn)行狀態(tài)與預(yù)期狀態(tài)是否一致。白盒測(cè)試的特點(diǎn):依據(jù)軟件設(shè)計(jì)說明書進(jìn)行測(cè)試、對(duì)程序內(nèi)部細(xì)節(jié)的嚴(yán)密檢驗(yàn)、針對(duì)特定條件設(shè)計(jì)測(cè)試用例、對(duì)軟件的邏輯路徑進(jìn)行覆蓋測(cè)試。白盒測(cè)試的實(shí)施步驟:1.測(cè)試計(jì)劃階段:根據(jù)需求說明書,制定測(cè)試進(jìn)度。2.測(cè)試設(shè)計(jì)階段:依據(jù)程序設(shè)計(jì)說明書,按照一定規(guī)范化的方法進(jìn)行軟件結(jié)構(gòu)劃分和設(shè)計(jì)測(cè)試用例。3.測(cè)試執(zhí)行階段:輸入測(cè)試用例,得到測(cè)試結(jié)果。4.測(cè)試總結(jié)階段:對(duì)比測(cè)試的結(jié)果和代碼的預(yù)期結(jié)果,分析錯(cuò)誤原因,找到并解決錯(cuò)誤。白盒測(cè)試的方法:總體上分為靜態(tài)方法和動(dòng)態(tài)方法兩大類。靜態(tài)分析是一種不通過執(zhí)行程序而進(jìn)行測(cè)試的技術(shù)。靜態(tài)分析的關(guān)鍵功能是檢查軟件的表示和描述是否一致,沒有沖突或者沒有歧義。動(dòng)態(tài)分析的主要特點(diǎn)是當(dāng)軟件系統(tǒng)在模擬的或真實(shí)的環(huán)境中執(zhí)行之前、之中和之后,對(duì)軟件系統(tǒng)行為的分析。動(dòng)態(tài)分析包含了程序在受控的環(huán)境下使用特定的期望結(jié)果進(jìn)行正式的運(yùn)行。它顯示了一個(gè)系統(tǒng)在檢查狀態(tài)下是正確還是不正確。在動(dòng)態(tài)分析技術(shù)中,最重要的技術(shù)是路徑和分支測(cè)試。下面要介紹的六種覆蓋測(cè)試方法屬于動(dòng)態(tài)分析方法。白盒測(cè)試的優(yōu)缺點(diǎn)1.優(yōu)點(diǎn)·迫使測(cè)試人員去仔細(xì)思考軟件的實(shí)現(xiàn)·可以檢測(cè)代碼中的每條分支和路徑·揭示隱藏在代碼中的錯(cuò)誤·對(duì)代碼的測(cè)試比較徹底·最優(yōu)化2.缺點(diǎn)·昂貴·無法檢測(cè)代碼中遺漏的路徑和數(shù)據(jù)敏感性錯(cuò)誤·不驗(yàn)證規(guī)格的正確性六種覆蓋方法3優(yōu)點(diǎn):可以很直觀地從源代碼得到測(cè)試用例,無須細(xì)分每條判定表達(dá)式。4缺點(diǎn):由于這種測(cè)試方法僅僅針對(duì)程序邏輯中顯式存在的語句,但對(duì)于隱藏的條件和可能到達(dá)的隱式邏輯分支,是無法測(cè)試的。在本例中去掉了語句1—〉T去掉,那么就少了一條測(cè)試路徑。在if結(jié)構(gòu)中若源代碼沒有給出else后面的執(zhí)行分支,那么語句覆蓋測(cè)試就不會(huì)考慮這種情況。但是我們不能排除這種以外的分支不會(huì)被執(zhí)行,而往往這種錯(cuò)誤會(huì)經(jīng)常出現(xiàn)。再如,在Do-While結(jié)構(gòu)中,語句覆蓋執(zhí)行其中某一個(gè)條件分支。那么顯然,語句覆蓋對(duì)于多分支的邏輯運(yùn)算是無法全面反映的,它只在乎運(yùn)行一次,而不考慮其他情況。3優(yōu)點(diǎn):顯然條件覆蓋比判定覆蓋,增加了對(duì)符合判定情況的測(cè)試,增加了測(cè)試路徑。3優(yōu)點(diǎn):這種測(cè)試方法可以對(duì)程序進(jìn)行徹底的測(cè)試,比前面五種的覆蓋面都廣。4缺點(diǎn):由于路徑覆蓋需要對(duì)所有可能的路徑進(jìn)行測(cè)試(包括循環(huán)、條件組合、分支選擇等,那么需要設(shè)計(jì)大量、復(fù)雜的測(cè)試用例,使得工作量呈指數(shù)級(jí)增長(zhǎng)。而在有些情況下,一些執(zhí)行路徑是不可能被執(zhí)行的,如:If(!AB++;If(!AD--;這兩個(gè)語句實(shí)際只包括了2條執(zhí)行路徑,即A為真或假時(shí)候?qū)和D的處理,真或假不可能都存在,而路徑覆蓋測(cè)試則認(rèn)為是包含了真與假的4條執(zhí)行路徑。這樣不僅降低了測(cè)試效率,而且大量的測(cè)試結(jié)果的累積,也為排錯(cuò)帶來麻煩??偨Y(jié)白盒測(cè)試是一種被廣泛使用的邏輯測(cè)試方法,是由程序內(nèi)部邏輯驅(qū)動(dòng)的一種單元測(cè)試方法。只有對(duì)程序內(nèi)部十分了解才能進(jìn)行適度有效的白盒測(cè)試。但是貫穿在程序內(nèi)部的邏輯存在著不確定性和無窮性,尤其對(duì)于大規(guī)模復(fù)雜軟件。因此我們不能窮舉所有的邏輯路徑,即使窮舉也未必會(huì)帶來好運(yùn)(窮舉不能查出程序邏輯規(guī)則錯(cuò)誤,不能查出數(shù)據(jù)相關(guān)錯(cuò)誤,不能查出程序遺漏的路徑。那么正確使用白盒測(cè)試,就要先從代碼分析入手,根據(jù)不同的代碼邏輯規(guī)則、語句執(zhí)行情況,選用適合的覆蓋方法。任何一個(gè)高效的測(cè)試用例,都是針對(duì)具體測(cè)試場(chǎng)景的。邏輯測(cè)試不是片面的測(cè)試正確的結(jié)果或是測(cè)試錯(cuò)誤的結(jié)果,而是盡可能全面地覆蓋每一個(gè)邏輯路徑。常用的功能測(cè)試方法功能測(cè)試就是對(duì)產(chǎn)品的各功能進(jìn)行驗(yàn)證,根據(jù)功能測(cè)試用例,逐項(xiàng)測(cè)試,檢查產(chǎn)品是否達(dá)到用戶要求的功能。常用的測(cè)試方法如下:1.頁面鏈接檢查:每一個(gè)鏈接是否都有對(duì)應(yīng)的頁面,并且頁面之間切換正確。2.相關(guān)性檢查:刪除/增加一項(xiàng)會(huì)不會(huì)對(duì)其他項(xiàng)產(chǎn)生影響,如果產(chǎn)生影響,這些影響是否都正確。3.檢查按鈕的功能是否正確:如update,cancel,delete,save等功能是否正確。4.字符串長(zhǎng)度檢查:輸入超出需求所說明的字符串長(zhǎng)度的內(nèi)容,看系統(tǒng)是否檢查字符串長(zhǎng)度,會(huì)不會(huì)出錯(cuò).5.字符類型檢查:在應(yīng)該輸入指定類型的內(nèi)容的地方輸入其他類型的內(nèi)容(如在應(yīng)該輸入整型的地方輸入其他字符類型,看系統(tǒng)是否檢查字符類型,會(huì)否報(bào)錯(cuò).6.標(biāo)點(diǎn)符號(hào)檢查:輸入內(nèi)容包括各種標(biāo)點(diǎn)符號(hào),特別是空格,各種引號(hào),回車鍵.看系統(tǒng)處理是否正確.7.中文字符處理:在可以輸入中文的系統(tǒng)輸入中文,看會(huì)否出現(xiàn)亂碼或出錯(cuò).8.檢查帶出信息的完整性:在查看信息和update信息時(shí),查看所填寫的信息是不是全部帶出.,帶出信息和添加的是否一致9.信息重復(fù):在一些需要命名,且名字應(yīng)該唯一的信息輸入重復(fù)的名字或ID,看系統(tǒng)有沒有處理,會(huì)否報(bào)錯(cuò),重名包括是否區(qū)分大小寫,以及在輸入內(nèi)容的前后輸入空格,系統(tǒng)是否作出正確處理.10.檢查刪除功能:在一些可以一次刪除多個(gè)信息的地方,不選擇任何信息,按”delete”,看系統(tǒng)如何處理,會(huì)否出錯(cuò);然后選擇一個(gè)和多個(gè)信息,進(jìn)行刪除,看是否正確處理.11.檢查添加和修改是否一致:檢查添加和修改信息的要求是否一致,例如添加要求必填的項(xiàng),修改也應(yīng)該必填;添加規(guī)定為整型的項(xiàng),修改也必須為整型.12.檢查修改重名:修改時(shí)把不能重名的項(xiàng)改為已存在的內(nèi)容,看會(huì)否處理,報(bào)錯(cuò).同時(shí),也要注意,會(huì)不會(huì)報(bào)和自己重名的錯(cuò).13.重復(fù)提交表單:一條已經(jīng)成功提交的紀(jì)錄,back后再提交,看看系統(tǒng)是否做了處理。14.檢查多次使用back鍵的情況:在有back的地方,back,回到原來頁面,再back,重復(fù)多次,看會(huì)否出錯(cuò).15.search檢查:在有search功能的地方輸入系統(tǒng)存在和不存在的內(nèi)容,看search結(jié)果是否正確.如果可以輸入多個(gè)search條件,可以同時(shí)添加合理和不合理的條件,看系統(tǒng)處理是否正確.16.輸入信息位置:注意在光標(biāo)停留的地方輸入信息時(shí),光標(biāo)和所輸入的信息會(huì)否跳到別的地方.17.上傳下載文件檢查:上傳下載文件的功能是否實(shí)現(xiàn),上傳文件是否能打開。對(duì)上傳文件的格式有何規(guī)定,系統(tǒng)是否有解釋信息,并檢查系統(tǒng)是否能夠做到。18.必填項(xiàng)檢查:應(yīng)該填寫的項(xiàng)沒有填寫時(shí)系統(tǒng)是否都做了處理,對(duì)必填項(xiàng)是否有提示信息,如在必填項(xiàng)前加*19.快捷鍵檢查:是否支持常用快捷鍵,如Ctrl+CCtrl+VBackspace等,對(duì)一些不允許輸入信息的字段,如選人,選日期對(duì)快捷方式是否也做了限制。20.回車鍵檢查:在輸入結(jié)束后直接按回車鍵,看系統(tǒng)處理如何,會(huì)否報(bào)錯(cuò).白盒測(cè)試(White-boxTesting,又稱邏輯驅(qū)動(dòng)測(cè)試,結(jié)構(gòu)測(cè)試是把測(cè)試對(duì)象看作一個(gè)打開的盒子。利用白盒測(cè)試法進(jìn)行動(dòng)態(tài)測(cè)試時(shí),需要測(cè)試軟件產(chǎn)品的內(nèi)部結(jié)構(gòu)和處理過程,不需測(cè)試軟件產(chǎn)品的功能。白盒測(cè)試又稱為結(jié)構(gòu)測(cè)試和邏輯驅(qū)動(dòng)測(cè)試。白盒測(cè)試法的覆蓋標(biāo)準(zhǔn)有邏輯覆蓋、循環(huán)覆蓋和基本路徑測(cè)試。其中邏輯覆蓋包括語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋。六種覆蓋標(biāo)準(zhǔn):語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋發(fā)現(xiàn)錯(cuò)誤的能力呈由弱至強(qiáng)的變化。語句覆蓋每條語句至少執(zhí)行一次。判定覆蓋每個(gè)判定的每個(gè)分支至少執(zhí)行一次。條件覆蓋每個(gè)判定的每個(gè)條件應(yīng)取到各種可能的值。判定/條件覆蓋同時(shí)滿足判定覆蓋條件覆蓋。條件組合覆蓋每個(gè)判定中各條件的每一種組合至少出現(xiàn)一次。路徑覆蓋使程序中每一條可能的路徑至少執(zhí)行一次。白盒測(cè)試也稱結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試,它是知道產(chǎn)品內(nèi)部工作過程,可通過測(cè)試來檢測(cè)產(chǎn)品內(nèi)部動(dòng)作是否按照規(guī)格說明書的規(guī)定正常進(jìn)行,按照程序內(nèi)部的結(jié)構(gòu)測(cè)試程序,檢驗(yàn)程序中的每條通路是否都有能按預(yù)定要求正確工作,而不顧它的功能,白盒測(cè)試的主要方法有邏輯驅(qū)動(dòng)、基路測(cè)試等,主要用于軟件驗(yàn)證。"白盒"法全面了解程序內(nèi)部邏輯結(jié)構(gòu)、對(duì)所有邏輯路徑進(jìn)行測(cè)試。"白盒"法是窮舉路徑測(cè)試。在使用這一方案時(shí),測(cè)試者必須檢查程序的內(nèi)部結(jié)構(gòu),從檢查程序的邏輯著手,得出測(cè)試數(shù)據(jù)。貫穿程序的獨(dú)立路徑數(shù)是天文數(shù)字。但即使每條路徑都測(cè)試了仍然可能有錯(cuò)誤。第一,窮舉路徑測(cè)試決不能查出程序違反了設(shè)計(jì)規(guī)范,即程序本身是個(gè)錯(cuò)誤的程序。第二,窮舉路徑測(cè)試不可能查出程序中因遺漏路徑而出錯(cuò)。第三,窮舉路徑測(cè)試可能發(fā)現(xiàn)不了一些與數(shù)據(jù)相關(guān)的錯(cuò)誤。如何挑選白盒測(cè)試工具白盒測(cè)試目前主要用在具有高可靠性要求的軟件領(lǐng)域,例如:軍工軟件、航天航空軟件、工業(yè)控制軟件等等。白盒測(cè)試工具在選購(gòu)時(shí)應(yīng)當(dāng)主要是對(duì)開發(fā)語言的支持、代碼覆蓋的深度、嵌入式軟件的測(cè)試、測(cè)試的可視化等。對(duì)開發(fā)語言的支持:白盒測(cè)試工具是對(duì)源代碼進(jìn)行的測(cè)試,測(cè)試的主要內(nèi)容包括詞法分析與語法分析、靜態(tài)錯(cuò)誤分析、動(dòng)態(tài)檢測(cè)等。但是對(duì)于不同的開發(fā)語言,測(cè)試工具實(shí)現(xiàn)的方式和內(nèi)容差別是較大的。目前測(cè)試工具主要支持的開發(fā)語言包括:標(biāo)準(zhǔn)C、C++、VisualC++、Java、VisualJ++等。代碼的覆蓋深度:從覆蓋源程序語句的詳盡程度分析,邏輯覆蓋標(biāo)準(zhǔn)包括以下不同的覆蓋標(biāo)準(zhǔn):語句覆蓋、判定覆蓋、條件覆蓋、條件判定組合覆蓋、多條件覆蓋和修正判定條件覆蓋?!ふZ句覆蓋為了暴露程序中的錯(cuò)誤,程序中的每條語句至少應(yīng)該執(zhí)行一次。因此語句覆蓋(StatementCoverage)的含義是:選擇足夠多的測(cè)試數(shù)據(jù),使被測(cè)程序中每條語句至少執(zhí)行一次。語句覆蓋是很弱的邏輯覆蓋。·判定覆蓋比語句覆蓋稍強(qiáng)的覆蓋標(biāo)準(zhǔn)是判定覆蓋(DecisionCoverage)。判定覆蓋的含義是:設(shè)計(jì)足夠的測(cè)試用例,使得程序中的每個(gè)判定至少都獲得一次“真值”或“假值”,或者說使得程序中的每一個(gè)取“真”分支和取“假”分支至少經(jīng)歷一次,因此判定覆蓋又稱為分支覆蓋。·條件覆蓋在設(shè)計(jì)程序中,一個(gè)判定語句是由多個(gè)條件組合而成的復(fù)合判定。為了更徹底地實(shí)現(xiàn)邏輯覆蓋,可以采用條件覆蓋(ConditionCoverage)的標(biāo)準(zhǔn)。條件覆蓋的含義是:構(gòu)造一組測(cè)試用例,使得每一判定語句中每個(gè)邏輯條件的可能值至少滿足一次?!ざ鄺l件覆蓋多條件覆蓋也稱條件組合覆蓋,它的含義是:設(shè)計(jì)足夠的測(cè)試用例,使得每個(gè)判定中條件的各種可能組合都至少出現(xiàn)一次。顯然滿足多條件覆蓋的測(cè)試用例是一定滿足判定覆蓋、條件覆蓋和條件判定組合覆蓋的?!ば拚龡l件判定覆蓋修正條件判定覆蓋是由歐美的航空/航天制造廠商和使用單位聯(lián)合制定的“航空運(yùn)輸和裝備系統(tǒng)軟件認(rèn)證標(biāo)準(zhǔn)”,目前在國(guó)外的國(guó)防、航空航天領(lǐng)域應(yīng)用廣泛。這個(gè)覆蓋度量需要足夠的測(cè)試用例來確定各個(gè)條件能夠影響到包含的判定的結(jié)果。它要求滿足兩個(gè)條件:首先,每一個(gè)程序模塊的入口和出口點(diǎn)都要考慮至少要被調(diào)用一次,每個(gè)程序的判定到所有可能的結(jié)果值要至少轉(zhuǎn)換一次;其次,程序的判定被分解為通過邏輯操作符(and、or)連接的布爾條件,每個(gè)條件對(duì)于判定的結(jié)果值是獨(dú)立的。不同的測(cè)試工具對(duì)于代碼的覆蓋能力也是不同的,通常能夠支持修正條件判定覆蓋的測(cè)試工具價(jià)格是極其昂貴的。嵌入式軟件的測(cè)試:對(duì)于嵌入式軟件的測(cè)試,我們還需要一方面進(jìn)一步考慮測(cè)試工具對(duì)于嵌入式操作系統(tǒng)的支持能力,例如DOS、Vxworks、Neculeus、Linux和WindowsCE等;另一方面還需要考慮測(cè)試工具對(duì)于硬件平臺(tái)的支持能力,包括是否支持所有64/32/16位CPU和MCU,是否可以支持PCI/VME/CPCI總線。測(cè)試的可視化:白盒測(cè)試是工作量巨大并且枯燥的工作,可視化的設(shè)計(jì)對(duì)于測(cè)試來說是十分重要的。在選購(gòu)白盒測(cè)試工具時(shí),應(yīng)當(dāng)考慮該款測(cè)試工具的可視化是否良好,例如:測(cè)試過程中是否可以顯示覆蓋率的函數(shù)分布圖和上升趨勢(shì)圖,是否使用不同的顏色區(qū)分已執(zhí)行和未執(zhí)行的代碼段顯示分配內(nèi)存情況實(shí)時(shí)圖表等,這些對(duì)于測(cè)試效率和測(cè)試質(zhì)量的提高是具有很大的作用的。求遞推數(shù)列通項(xiàng)的常用方法河北省河間市第一中學(xué)張金池(062450)數(shù)列是初等數(shù)學(xué)與高等數(shù)學(xué)的重要銜接點(diǎn)之一,遞推公式是給出數(shù)列的一種方法,近幾年數(shù)學(xué)高考命題,全國(guó)卷和許多省的試卷都以數(shù)列遞推式為內(nèi)容作為能力型試題,形式多變、解法靈活、綜合行強(qiáng)、能力要求高,本文介紹幾種常用求數(shù)列通項(xiàng)的方法,供參考。(一)利用遞推公式通過疊加法和疊乘法,求數(shù)列的通項(xiàng)公式例1(2003年全國(guó))已知數(shù)列滿足,(),(1)求(2)證明:解析:(1)易知(2)由于∴∴……(+=……=例2(2002全國(guó)卷)數(shù)列是首項(xiàng)為1的正項(xiàng)數(shù)列且滿足:……),求數(shù)列的通項(xiàng)。解析:由于得由,∴∴(n+1)即∴…………又如(2004全國(guó)卷)已知數(shù)列滿足,+……+則數(shù)列的通項(xiàng)解析:時(shí),+……+……+∴即,∴……==n﹗(二)化歸思想在解決利用遞推關(guān)系求數(shù)列通項(xiàng)的問題中具有十分重要的作用,根據(jù)遞推公式的特征,通過構(gòu)造新數(shù)列,實(shí)現(xiàn)問題的轉(zhuǎn)化,從而使問題得到解決。形如(為不等于0的常數(shù))的數(shù)列,可令即與比較得,從而構(gòu)造一個(gè)以為首項(xiàng)以為公比的等比數(shù)列例3(2005重慶卷)數(shù)列滿足且記求的值求數(shù)列的通項(xiàng)及數(shù)列的前項(xiàng)和解析:(1)由于得代入遞推關(guān)系整理得即由有所以由∴∴是以為首項(xiàng)以為公比的等比數(shù)列故即由得故……=……==又如(第十三屆希望杯)設(shè)函數(shù)與函數(shù)的圖象交于點(diǎn),對(duì)任意()將過點(diǎn)(0,3)和點(diǎn)的直線與直線交點(diǎn)坐標(biāo)記為,則坐標(biāo)依次為_______解析:過點(diǎn)(0,3)和點(diǎn)直線方程為,將它與聯(lián)立,得,取倒數(shù)即數(shù)列是公差為的等差數(shù)列又由與聯(lián)立,得因而,故于是得(三)根據(jù)數(shù)列的遞推公式,先寫出數(shù)列的前幾項(xiàng),由此猜測(cè)是等差數(shù)列或等比數(shù)列,或猜想出數(shù)列的一個(gè)通項(xiàng)公式,最后根據(jù)定義或用數(shù)學(xué)歸納法加以證明,如上例3解析:(1)故,故,故,故,(2)因,又∴故猜想是首項(xiàng)為,公比的等比數(shù)列由(否則代入遞推公式會(huì)導(dǎo)致矛盾)故由又故確是公比的等比數(shù)列以下同例3(四)利用數(shù)列的周期及與關(guān)系例四(第十四屆希望杯)已知數(shù)列中,且對(duì)于大于的正整數(shù),總有,則等于()A.-5B.-2c.2D.3解析:故數(shù)列是以6為周期的周期數(shù)列,∴,故選A例五(2005湖北卷)設(shè)數(shù)列的前n項(xiàng)和為,為等比數(shù)列且,求數(shù)列和的通項(xiàng)公式設(shè),求數(shù)列的前項(xiàng)和.解析:(1)因?yàn)楫?dāng)n=1時(shí),,,故的通項(xiàng)公式為,即是,公差的等差數(shù)列,從而可求出及(利用錯(cuò)位相減法)(詳解略)求遞推數(shù)列通項(xiàng)的特征根法-----07、08廣東卷壓軸題深圳東升學(xué)校陳勝華內(nèi)容摘要:針對(duì)07、08年廣東高考題絕大部分同學(xué)感覺很難,無從下手!對(duì)其思路、方法分析、歸納,以共參考.關(guān)鍵詞:特征方程一、形如是常數(shù))的數(shù)列形如是常數(shù))的二階遞推數(shù)列都可用特征根法求得通項(xiàng),其特征方程為…①若①有二異根,則可令是待定常數(shù))若①有二重根,則可令是待定常數(shù))再利用可求得,進(jìn)而求得下面以08廣東卷理科21題來看其應(yīng)用:設(shè)為實(shí)數(shù),是方程的兩個(gè)實(shí)根,數(shù)列滿足,,(…).(1)證明:,;(2)求數(shù)列的通項(xiàng)公式;(3)若,,求的前項(xiàng)和.解析:(1)由是方程的兩個(gè)實(shí)根,則;故,(2)設(shè),則,由得,消去,得,是方程的根,由題意可知,①當(dāng)時(shí),此時(shí)方程組的解記為即、分別是公比為、的等比數(shù)列,由等比數(shù)列性質(zhì)可得,,兩式相減,得,,,,即,②當(dāng)時(shí),由①可知,,即,等式兩邊同時(shí)除以,得,即數(shù)列是以1為公差的等差數(shù)列,,綜上所述,(3)把,代入,得,解得二、形如的數(shù)列(不動(dòng)點(diǎn)法)對(duì)于數(shù)列,是常數(shù))其特征方程為,變形為…②若②有二異根,則有,再進(jìn)一步求得.如07廣東卷理科21題:已知函數(shù),是方程f(x)=0的兩個(gè)根,是f(x)的導(dǎo)數(shù);設(shè),(n=1,2,……)(1)求的值;(2)證明:對(duì)任意的正整數(shù)n,都有;;(3)記(n=1,2,……),求數(shù)列{bn}的前n項(xiàng)和Sn。解析:(1)∵,是方程f(x)=0的兩個(gè)根,∴;(2),,其特征根方程為,即由.,∴,則.(3),同理,,又.參考文獻(xiàn)《奧林匹克數(shù)學(xué)中的代數(shù)問題》湖南師范大學(xué)出版社第二版學(xué)海導(dǎo)航專題輔導(dǎo)利用遞推關(guān)系求數(shù)列通項(xiàng)1.形如型,用累加法.方法如下:由得:時(shí),,,所以各式相加得時(shí),,=.例1.已知數(shù)列{an}滿足, 證明證明:由已知得:=.2.已知前n項(xiàng)和求通項(xiàng)公式,用公式例2.已知數(shù)列中,且,求數(shù)列的通項(xiàng)公式.解:由已知得,化簡(jiǎn)有,由類型(1)有,又得,所以,又,,則3.形如型,用累乘法.由得時(shí),,=f(n)f(n-1).例3.設(shè)是首項(xiàng)為1的正項(xiàng)數(shù)列,且(=1,2,3,…),則它的通項(xiàng)公式是=________.解:已知等式可化為:()(n+1),即時(shí),==.3.轉(zhuǎn)化法。通過對(duì)數(shù)列遞推關(guān)系式的恰當(dāng)恒等變形,如配方(適合題型:an+1=pan+q、an+1=pan+f(n))、因式分解、取對(duì)數(shù)、取倒數(shù)、平方等常用手段,將其轉(zhuǎn)化為等比數(shù)列或等差數(shù)列。例4已知數(shù)列{an}滿足a1=1,2an+1=an+6n+3。求an。解(配方法)設(shè)2[an+1+k(n+1)+b]=an+kn+b2an+1=an–kn-2k-bk=-6,b=9∴2[an+1–6(n+1)+9]=an-6n+9∴{an-6n+9}是以4為首相1/2為公比的等比數(shù)列∴an-6n+9=4∴an=4+6n-9例5.已知,求an解:對(duì)兩邊平方,得,且an0不妨設(shè)+q=2(+q)(配方法)q=1+1=2(+1),又,∴數(shù)列是以2為首項(xiàng),公比為2的等比數(shù)列,=,∴an=()4.歸納法。先計(jì)算數(shù)列的前若干項(xiàng),通過觀察規(guī)律,猜想通項(xiàng)公式,進(jìn)而用數(shù)學(xué)歸納法證之。例6對(duì)例5的數(shù)學(xué)歸納法求解:易求出a1=1,a2=,a3=,a4=,a5=,猜想:an=,下面用數(shù)學(xué)歸納法證明:①當(dāng)n=1時(shí),a1=結(jié)論成立;②假設(shè)當(dāng)n=k時(shí)結(jié)論成立,即ak=,當(dāng)n=k+1時(shí),===,即n=k+1時(shí)結(jié)論成立。由①②知an=對(duì)所有的正整數(shù)都成立。∴an=()三.已知三相以上的數(shù)列的遞推公式求數(shù)列的通項(xiàng)公式,只能運(yùn)用“觀察,歸納,猜想,證明”的步驟和方法加以解決。例7.已知數(shù)列{an}滿足a1=1,a2=6,an+2=an+1–an,求a2004解:a1=1,a2=6,a3=5,a4=-1,a5=-6,a6=-5,a7=1,a8=6,a9=5,a10=-1...猜想數(shù)列{an}是以6為周期的周期數(shù)列。事實(shí)上,an+2=an+1–an=an-an-1–an=-an-1∴an+3=-an∴an+6=-an+3=an。即{an}是以6為周期的周期數(shù)列。∴a2004=a6*334=a6=-5。專題二數(shù)列的通項(xiàng)遞推數(shù)列的題型多樣,求遞推數(shù)列的通項(xiàng)公式的方法也非常靈活,往往可以通過適當(dāng)?shù)牟呗詫栴}化歸為等差數(shù)列或等比數(shù)列問題加以解決(即構(gòu)造等差、等比的輔助數(shù)列),因而求遞推數(shù)列的通項(xiàng)公式問題成為了高考命題中頗受青睞的考查內(nèi)容。常見的求法有:1、公式法:由等差,等比定義,寫出通項(xiàng)公式(一般求,再用通項(xiàng)或變形公式)2、累加法:型;累乘法:型;迭代法3、待定系數(shù)法:型;型(為常數(shù),且)特別提醒:一階遞推,我們通常將其化為{bn}的等比數(shù)列(??疾椋?、不動(dòng)點(diǎn)法:與的遞推公式中,不含。5、特征根的方法:(其中p,q均為常數(shù))。6、對(duì)數(shù)變換法:7、換元法:對(duì)含an與Sn的題,利用消去,轉(zhuǎn)換為的推公式,再用前面的方法特別提醒:對(duì)含an與Sn的題,在求和的問題時(shí),也可以用這樣的方法消去,得到關(guān)于的遞推公式,同樣采用上述求通項(xiàng)地方法求出8、周期數(shù)列:9、數(shù)學(xué)歸納法:(以后學(xué))說明:①仔細(xì)辨析遞推關(guān)系式的特征,準(zhǔn)確選擇恰當(dāng)?shù)姆椒ǎ茄杆偾蟪鐾?xiàng)公式的關(guān)鍵。②其中方法3、4、5、6、7都屬于構(gòu)造輔助數(shù)列:構(gòu)造為等差(等比)數(shù)列,求出,然后就可以求出了。③重點(diǎn)掌握:公式法、累加(乘)法、型、型、型、周期數(shù)列求法。一、公式法:(略)要求:【熟練運(yùn)用】二、類型1、累加法:【熟練運(yùn)用】解法:把原遞推公式轉(zhuǎn)化為,利用累加法(逐差相加法求解。例1:已知數(shù)列滿足,,求。解:由條件知:分別令,代入上式得個(gè)等式累加之,即所以,評(píng)注:本題解題的關(guān)鍵是把遞推關(guān)系式轉(zhuǎn)化為,進(jìn)而求出,即得數(shù)列的通項(xiàng)公式。練習(xí)1:已知數(shù)列滿足,求數(shù)列的通項(xiàng)公式。練習(xí)2:已知數(shù)列滿足,求數(shù)列的通項(xiàng)公式。類型2、累乘法:【熟練運(yùn)用】解法:把原遞推公式轉(zhuǎn)化為,利用累乘法(逐商相乘法求解。例2:已知數(shù)列滿足,,求。解:由條件知,分別令,代入上式得個(gè)等式累乘之,即又,練習(xí):已知,,求。解:。三、待定系數(shù)法:類型1(其中p,q均為常數(shù),)?!臼炀氝\(yùn)用】解法:(待定系數(shù)法):把原遞推公式轉(zhuǎn)化為:,其中,再利用換元法轉(zhuǎn)化為等比數(shù)列求解。例3:已知數(shù)列中,,,求.解:設(shè)遞推公式可以轉(zhuǎn)化為即.故遞推公式為,令,則,.所以是以為首項(xiàng),2為公比的等比數(shù)列,則,所以.練習(xí):(2006,重慶,文,14)在數(shù)列中,若,則該數(shù)列的通項(xiàng)類型2,【不重點(diǎn)掌握】解法:方法和類型1相似,把原遞推公式轉(zhuǎn)化為:,再利用換元法轉(zhuǎn)化為等比數(shù)列求解。例4:已知數(shù)列中,,,求.解:設(shè)遞推公式可以轉(zhuǎn)化為即.故遞推公式為,令,則,.所以是以為首項(xiàng),2為公比的等比數(shù)列,則,所以.練習(xí):已知數(shù)列滿足,求數(shù)列的通項(xiàng)公式。類型3、(其中p,q均為常數(shù),)。(或,其中p,q,r均為常數(shù))【不重點(diǎn)掌握】解法:一般地,要先在原遞推公式兩邊同除以,得:引入輔助數(shù)列(其中),得:再待定系數(shù)法解決。例5:已知數(shù)列中,,,求。解:在兩邊乘以得:令,則,解之得:所以練習(xí):已知數(shù)列滿足,求數(shù)列的通項(xiàng)公式。五、??碱}型:型【熟練運(yùn)用】解法:這種類型一般是等式兩邊取倒數(shù)后換元轉(zhuǎn)化為。例6:已知數(shù)列{an}滿足:,求數(shù)列{an}的通項(xiàng)公式。解:取倒數(shù):是等差數(shù)列,變式1:(2006,江西,理,22)已知數(shù)列{an}滿足:a1=,且an=求數(shù)列{an}的通項(xiàng)公式;解:(1)將條件變?yōu)椋?-=,因此{1-}為一個(gè)等比數(shù)列,其首項(xiàng)為1-=,公比,從而1-=,據(jù)此得an=(n1)練習(xí):已知數(shù)列中=,。不動(dòng)點(diǎn)法:由型變形【不需要掌握】?jī)H作了解例7、已知數(shù)列滿足,求數(shù)列的通項(xiàng)公式。解:令,得,則是函數(shù)的兩個(gè)不動(dòng)點(diǎn)。因?yàn)?。,所以?shù)列是以為首項(xiàng),以為公比的等比數(shù)列,故,則。評(píng)注:本題解題的關(guān)鍵是先求出函數(shù)的不動(dòng)點(diǎn),即方程的兩個(gè)根,進(jìn)而可推出,從而可知數(shù)列為等比數(shù)列,再求出數(shù)列的通項(xiàng)公式,最后求出數(shù)列的通項(xiàng)公式。例8已知數(shù)列滿足,求數(shù)列的通項(xiàng)公式。解:令,得,則x=1是函數(shù)的不動(dòng)點(diǎn)。因?yàn)?,所以,所以?shù)列是以為首項(xiàng),以為公差的等差數(shù)列,則,故。評(píng)注:本題解題的關(guān)鍵是先求出函數(shù)的不動(dòng)點(diǎn),即方程的根,進(jìn)而可推出,從而可知數(shù)列為等差數(shù)列,再求出數(shù)列的通項(xiàng)公式,最后求出數(shù)列的通項(xiàng)公式。五、特征根法:【不需要掌握】遞推公式為(其中p,q均為常數(shù))。解(特征根法:對(duì)于由遞推公式,給出的數(shù)列,方程,叫做數(shù)列的特征方程。若是特征方程的兩個(gè)根,當(dāng)時(shí),數(shù)列的通項(xiàng)為,其中A,B由決定(即把和,代入,得到關(guān)于A、B的方程組);當(dāng)時(shí),數(shù)列的通項(xiàng)為,其中A,B由決定(即把和,代入,得到關(guān)于A、B的方程組)。例9:數(shù)列:,,求解(特征根法):的特征方程是:。,。又由,于是故練習(xí)1:已知數(shù)列中,,,,求。練習(xí)2:(2006,福建,文,22)已知數(shù)列滿足求數(shù)列的通項(xiàng)公式;解:六、對(duì)數(shù)變換法:【不重點(diǎn)掌握】解法:這種類型一般是等式兩邊取對(duì)數(shù)后轉(zhuǎn)化為,再利用待定系數(shù)法求解。例10:已知數(shù)列{}中,,求數(shù)列解:由兩邊取對(duì)數(shù)得,令,則,再利用待定系數(shù)法解得:。七、換元法:遞推公式為與的關(guān)系式。(或【熟練運(yùn)用】解法:利用與消去或與消去進(jìn)行求解。例11:數(shù)列前n項(xiàng)和.(1)求與的關(guān)系;(2)求通項(xiàng)公式.解:(1)由得:于是所以.(2)應(yīng)用待定系數(shù)法((其中p,q均為常數(shù),))的方法,上式兩邊同乘以得:由.于是數(shù)列是以2為首項(xiàng),2為公差的等差數(shù)列,所以特別提醒:若求,除了因,采用錯(cuò)位相減法求以外,還可以對(duì)消去,得到,變?yōu)樵儆们懊娴拇ㄏ禂?shù)法(類型3)例12:(2004,全國(guó)I,理15.)已知數(shù)列{an},滿足a1=1,(n≥2,則{an}的通項(xiàng)解:由已知,得,用此式減去已知式,得當(dāng)時(shí),,即,又,,由n個(gè)式子相乘,得注意:例12也是運(yùn)用了的方法八、周期型數(shù)列【熟練運(yùn)用】解法:由遞推式計(jì)算出前幾項(xiàng),尋找周期。例10:若數(shù)列滿足,若,則的值為___________。解:帶值可知:;;;,故T=3,練習(xí):已知數(shù)列滿足,則=()A.0B.C.D.由遞推公式求數(shù)列的通項(xiàng)(說課稿)青浦一中葉志豐一、學(xué)情分析和教法設(shè)計(jì):1、學(xué)情分析:學(xué)生在前一階段的學(xué)習(xí)中已經(jīng)基本掌握了等差、等比數(shù)列這兩類最基本的數(shù)列的定義、通項(xiàng)公式、求和公式,同時(shí)也掌握了與等差、等比數(shù)列相關(guān)的綜合問題的一般解決方法。本節(jié)課作為一節(jié)專題探究課,將會(huì)根據(jù)遞推公式求出數(shù)列的項(xiàng),并能運(yùn)用累加、累乘、化歸等方法求數(shù)列的通項(xiàng)公式,從而培養(yǎng)學(xué)生觀察、分析、歸納、猜想的能力、邏輯思維能力以及演繹推理的能力。2、教法設(shè)計(jì):本節(jié)課設(shè)計(jì)的指導(dǎo)思想是:講究效率,加強(qiáng)變式訓(xùn)練、合作學(xué)習(xí)。采用以問題情景為切入點(diǎn),引導(dǎo)學(xué)生進(jìn)行探索、討論,注重分析、啟發(fā)、反饋。先引出相應(yīng)的知識(shí)點(diǎn),然后剖析需要解決的問題,在例題及變式中鞏固相應(yīng)方法,再?gòu)挠懻?、反饋中深化?duì)問題和方法的理解,從而較好地完成知識(shí)的建構(gòu),更好地鍛煉學(xué)生探索和解決問題的能力。在教學(xué)過程中采取如下方法:①誘導(dǎo)思維法:使學(xué)生對(duì)知識(shí)進(jìn)行主動(dòng)建構(gòu),有利于調(diào)動(dòng)學(xué)生的主動(dòng)性和積極性,發(fā)揮其創(chuàng)造性;②分組討論法:有利于學(xué)生進(jìn)行交流,及時(shí)發(fā)現(xiàn)問題,解決問題,調(diào)動(dòng)學(xué)生的積極性;③講練結(jié)合法:可以及時(shí)鞏固所學(xué)內(nèi)容,抓住重點(diǎn),突破難點(diǎn)。二、教學(xué)設(shè)計(jì):1、教材的地位與作用:遞推公式是認(rèn)識(shí)數(shù)列的一種重要形式,是給出數(shù)列的基本方式之一。對(duì)數(shù)列的遞推公式的考查是近幾年高考的熱點(diǎn)內(nèi)容之一,屬于高考命題中??汲P碌膬?nèi)容;另一個(gè)面,數(shù)學(xué)思想方法的考查在高考中逐年加大了它的份量。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論