freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

軟件危機與軟件工程要點匯編-資料下載頁

2025-04-13 02:02本頁面
  

【正文】 階段:通常在編寫出每一個模塊之后就對它做必要的測試(稱為單元測試)。模塊的編寫者與測試者是同一個人。編碼與單元測試屬于軟件生存期中的同一個階段。在這個階段結(jié)束之后,對軟件系統(tǒng)還要進行各種綜合測試,這是軟件生存期的另一個獨立的階段,即測試階段,通常由專門的測試人員承擔(dān)這項工作。2.軟件測試的原則① 應(yīng)當(dāng)把“盡早地和不斷地進行軟件測試”作為軟件開發(fā)者的座右銘。② 測試用例應(yīng)由測試輸入數(shù)據(jù)和與之對應(yīng)的預(yù)期輸出結(jié)果這兩部分組成。③ 程序員應(yīng)避免檢查自己的程序。④ 在設(shè)計測試用例時,應(yīng)當(dāng)包括合理的輸入條件和不合理的輸入條件。⑤ 充分注意測試中的群集現(xiàn)象。⑥ 嚴格執(zhí)行測試計劃,排除測試的隨意性。⑦ 應(yīng)當(dāng)對每一個測試結(jié)果做全面檢查。⑧ 妥善保存測試計劃,測試用例,出錯統(tǒng)計和最終分析報告,為維護提供方便。3.確認和驗證的關(guān)系確認(Validation)是一系列的活動和過程,其目的是想證實在一個給定的外部環(huán)境中軟件的邏輯正確性。它包括需求規(guī)格說明的確認和程序的確認,而程序的確認又分為靜態(tài)確認與動態(tài)確認。靜態(tài)確認一般不在計算機上實際執(zhí)行程序,而是通過人工分析或者程序正確性證明來確認程序的正確性; 動態(tài)確認主要通過動態(tài)分析和程序測試來檢查程序的執(zhí)行狀態(tài),以確認程序是否有問題。驗證(Verification),則試圖證明在軟件生存期各個階段,以及階段間的邏輯協(xié)調(diào)性、完備性和正確性。確認與驗證工作都屬于軟件測試。在對需求理解與表達的正確性、設(shè)計與表達的正確性、實現(xiàn)的正確性以及運行的正確性的驗證中,任何一個環(huán)節(jié)上發(fā)生了問題都可能在軟件測試中表現(xiàn)出來。4.測試與軟件開發(fā)各階段的關(guān)系軟件開發(fā)過程是一個自頂向下,逐步細化的過程,而測試過程則是依相反的順序安排的 自底向上,逐步集成的過程。低一級測試為上一級測試準備條件。,首先對每一個程序模塊進行單元測試,消除程序模塊內(nèi)部在邏輯上和功能上的錯誤和缺陷。再對照軟件設(shè)計進行集成測試,檢測和排除子系統(tǒng)(或系統(tǒng))結(jié)構(gòu)上的錯誤。隨后再對照需求,進行確認測試。最后從系統(tǒng)全體出發(fā),運行系統(tǒng),看是否滿足要求。 軟件測試與軟件開發(fā)過程的關(guān)系5. 軟件測試的過程與策略測試過程按4個步驟進行,即單元測試、組裝測試、確認測試和系統(tǒng)測試。單元測試集中對用源代碼實現(xiàn)的每一個程序單元進行測試,檢查各個程序模塊是否正確地實現(xiàn)了規(guī)定的功能。然后,進行集成測試,根據(jù)設(shè)計規(guī)定的軟件體系結(jié)構(gòu),把已測試過的模塊組裝起來,在組裝過程中,檢查程序結(jié)構(gòu)組裝的正確性。確認測試則是要檢查已實現(xiàn)的軟件是否滿足了需求規(guī)格說明中確定了的各種需求,以及軟件配置是否完全、正確。最后是系統(tǒng)測試,把已經(jīng)經(jīng)過確認的軟件納入實際運行環(huán)境中,與其它系統(tǒng)成份組合在一起進行測試。嚴格地說,系統(tǒng)測試已超出了軟件工程的范圍。 軟件測試的過程(1) 單元測試單元測試針對程序模塊,進行正確性檢驗的測試。其目的在于發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種差錯。單元測試需要從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計測試用例。多個模塊可以平行地獨立進行單元測試。(2) 集成測試在單元測試的基礎(chǔ)上,需要將所有模塊按照設(shè)計要求組裝成為系統(tǒng)。這時需要考慮:167。 在把各個模塊連接起來的時侯,穿越模塊接口的數(shù)據(jù)是否會丟失;167。 一個模塊的功能是否會對另一個模塊的功能產(chǎn)生不利的影響;167。 各個子功能組合起來,能否達到預(yù)期要求的父功能;167。 全局數(shù)據(jù)結(jié)構(gòu)是否有問題;167。 單個模塊的誤差累積起來,是否會放大,從而達到不能接受的程度。167。 單個模塊的錯誤是否會導(dǎo)致數(shù)據(jù)庫錯誤。(3) 確認測試確認測試又稱有效性測試。它的任務(wù)是驗證軟件的有效性,即驗證軟件的功能和性能及其它特性是否與用戶的要求一致。在軟件需求規(guī)格說明書描述了全部用戶可見的軟件屬性,其中有一節(jié)叫做有效性準則,它包含的信息就是軟件確認測試的基礎(chǔ)。(4) 系統(tǒng)測試所謂系統(tǒng)測試,是將通過確認測試的軟件,作為整個基于計算機系統(tǒng)的一個元素,與計算機硬件、外設(shè)、某些支持軟件、數(shù)據(jù)和人員等其它系統(tǒng)元素結(jié)合在一起,在實際運行(使用)環(huán)境下,對計算機系統(tǒng)進行一系列的組裝測試和確認測試。系統(tǒng)測試的目的在于通過與系統(tǒng)的需求定義作比較,發(fā)現(xiàn)軟件與系統(tǒng)定義不符合或與之矛盾的地方。系統(tǒng)測試的測試用例應(yīng)根據(jù)需求分析規(guī)格說明來設(shè)計,并在實際使用環(huán)境下來運行。6. 測試用例設(shè)計(1) 測試方法概述軟件測試的種類大致可以分為人工測試和基于計算機的測試。而基于計算機的測試由可以分為白盒測試和黑盒測試。① 黑盒測試根據(jù)軟件產(chǎn)品的功能設(shè)計規(guī)格,在計算機上進行測試,以證實每個實現(xiàn)了的功能是否符合要求。這種測試方法就是黑盒測試。黑盒測試意味著測試要在軟件的接口處進行。就是說,這種方法是把測試對象看做一個黑盒子,測試人員完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程序的需求分析規(guī)格說明,檢查程序的功能是否符合它的功能說明。用黑盒測試發(fā)現(xiàn)程序中的錯誤,必須在所有可能的輸入條件和輸出條件中確定測試數(shù)據(jù),來檢查程序是否都能產(chǎn)生正確的輸出。② 白盒測試根據(jù)軟件產(chǎn)品的內(nèi)部工作過程,在計算機上進行測試,以證實每種內(nèi)部操作是否符合設(shè)計規(guī)格要求,所有內(nèi)部成分是否已經(jīng)過檢查。這種測試方法就是白盒測試。白盒測試把測試對象看做一個打開的盒子,允許測試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息,設(shè)計或選擇測試用例,對程序所有邏輯路徑進行測試。通過在不同點檢查程序的狀態(tài),確定實際的狀態(tài)是否與預(yù)期的狀態(tài)一致。不論是黑盒測試,還是白盒測試,都不可能把所有可能的輸入數(shù)據(jù)都拿來進行所謂的窮舉測試。因為可能的測試輸入數(shù)據(jù)數(shù)目往往達到天文數(shù)字。下面讓我們看兩個例子。(2) 邏輯覆蓋邏輯覆蓋是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的設(shè)計測試用例的技術(shù)。屬白盒測試。這一方法要求測試人員對程序的邏輯結(jié)構(gòu)有清楚的了解,甚至要能掌握源程序的所有細節(jié)。由于覆蓋測試的目標不同,邏輯覆蓋又可分為:語句覆蓋、判定覆蓋、判定-條件覆蓋、條件組合覆蓋及路徑覆蓋。① 語句覆蓋 :語句覆蓋就是設(shè)計若干個測試用例,運行被測程序,使得每一可執(zhí)行語句至少執(zhí)行一次。這種覆蓋又稱為點覆蓋,它使得程序中每個可執(zhí)行語句都得到執(zhí)行,但它是最弱的邏輯覆蓋準,效果有限,必須與其它方法交互使用。② 判定覆蓋 :判定覆蓋就是設(shè)計若干個測試用例,運行被測程序,使得程序中每個判斷的取真分支和取假分支至少經(jīng)歷一次。判定覆蓋又稱為分支覆蓋。判定覆蓋只比語句覆蓋稍強一些,但實際效果表明,只是判定覆蓋,還不能保證一定能查出在判斷的條件中存在的錯誤。因此,還需要更強的邏輯覆蓋準則去檢驗判斷內(nèi)部條件。③ 條件覆蓋 :條件覆蓋就是設(shè)計若干個測試用例,運行被測程序,使得程序中每個判斷的每個條件的可能取值至少執(zhí)行一次。條件覆蓋深入到判定中的每個條件,但可能不能滿足判定覆蓋的要求。④ 判定-條件覆蓋 :判定-條件覆蓋就是設(shè)計足夠的測試用例,使得判斷中每個條件的所有可能取值至少執(zhí)行一次,同時每個判斷本身的所有可能判斷結(jié)果至少執(zhí)行一次。換言之,即是要求各個判斷的所有可能的條件取值組合至少執(zhí)行一次。判定-條件覆蓋有缺陷。從表面上來看,它測試了所有條件的取值。但是事實并非如此。往往某些條件掩蓋了另一些條件。會遺漏某些條件取值錯誤的情況。為徹底地檢查所有條件的取值,需要將判定語句中給出的復(fù)合條件表達式進行分解,形成由多個基本判定嵌套的流程圖。這樣就可以有效地檢查所有的條件是否正確了。(b) 改為單個條件判定的嵌套結(jié)構(gòu)的例子(a) 復(fù)合判定的例子 ⑤ 多重條件覆蓋 :多重條件覆蓋就是設(shè)計足夠的測試用例,運行被測程序,使得每個判斷的所有可能的條件取值組合至少執(zhí)行一次。 這是一種相當(dāng)強的覆蓋準則,可以有效地檢查各種可能的條件取值的組合是否正確。它不但可覆蓋所有條件的可能取值的組合,還可覆蓋所有判斷的可取分支,但可能有的路徑會遺漏掉。測試還不完全。 ⑤ 路徑測試 :路徑測試就是設(shè)計足夠的測試用例,覆蓋程序中所有可能的路徑。這是最強的覆蓋準則。但在路徑數(shù)目很大時,真正做到完全覆蓋是很困難的,必須把覆蓋路徑數(shù)目壓縮到一定限度。下面我們做一分析。(4) 基本路徑測試如果把覆蓋的路徑數(shù)壓縮到一定限度內(nèi),例如,程序中的循環(huán)體只執(zhí)行零次和一次,就成為基本路徑測試。它是在程序控制流圖的基礎(chǔ)上,通過分析控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí)行路徑集合,從而設(shè)計測試用例的方法。設(shè)計出的測試用例要保證在測試中,程序的每一個可執(zhí)行語句至少要執(zhí)行一次。① 程序的控制流圖控制流圖是描述程序控制流的一種圖示方法。符號○稱為控制流圖的一個結(jié)點,一組順序處理框可以映射為一個單一的結(jié)點??刂屏鲌D中的箭頭稱為邊,它表示了控制流的方向,在選擇或多分支結(jié)構(gòu)中分支的匯聚處,即使沒有執(zhí)行語句也應(yīng)該有一個匯聚結(jié)點。邊和結(jié)點圈定的區(qū)域叫做區(qū)域,當(dāng)對區(qū)域計數(shù)時,圖形外的區(qū)域也應(yīng)記為一個區(qū)域。 控制流圖的各種圖形符號如果判定中的條件表達式是復(fù)合條件時,即條件表達式是由一個或多個邏輯運算符(OR,AND,NAND,NOR)連接的邏輯表達式,則需要改復(fù)合條件的判定為一系列只有單個條件的嵌套的判定。 (a) 的復(fù)合條件的判定, (b) 所示的控制流圖。 條件語句 if a OR b 中條件a和條件b各有一個只有單個條件的判定結(jié)點。 復(fù)合邏輯下的控制流圖② 計算程序環(huán)路復(fù)雜性 進行程序的基本路徑測試時,程序的環(huán)路復(fù)雜性給出了程序基本路徑集合中的獨立路徑條數(shù),這是確保程序中每個可執(zhí)行語句至少執(zhí)行一次所必需的測試用例數(shù)目的上界。所謂獨立路徑,是指包括一組以前沒有處理的語句或條件的一條路徑。(b)所示的控制流圖中,一組獨立的路徑是 path1:1 11 path2:1 2 3 4 5 10 1 11 path3:1 2 3 6 8 9 10 1 11 path4:1 2 3 6 7 9 10 1 11路徑path1,path2,path3, (b) 所示控制流圖的一個基本路徑集。只要設(shè)計出的測試用例能夠確保這些基本路徑的執(zhí)行,就可以使得程序中的每個可執(zhí)行語句至少執(zhí)行一次,每個條件的取真和取假分支也能得到測試。基本路徑集不是唯一的,對于給定的控制流圖,可以得到不同的基本路徑集。 (a) 程序流程圖 (b) 控制流圖 程序流程圖與對應(yīng)的控制流圖 通常環(huán)路復(fù)雜性可用以下三種方法求得。167。 將環(huán)路復(fù)雜性定義為控制流圖中的區(qū)域數(shù)。167。 設(shè)E為控制流圖的邊數(shù),N為圖的結(jié)點數(shù),則定義環(huán)路復(fù)雜性為 V(G)=E-N+2。167。 若設(shè)P為控制流圖中的判定結(jié)點數(shù),則有 V(G)=P+1。(b)所示控制流圖有4個區(qū)域。其環(huán)路復(fù)雜性為4。 它是構(gòu)成基本路徑集的獨立路徑數(shù)的上界??梢該?jù)此得到應(yīng)該設(shè)計的測試用例的數(shù)目。③ 導(dǎo)出測試用例利用邏輯覆蓋方法生成測試用例,確保基本路徑集中每條路徑的執(zhí)行。(5) 等價類劃分等價類劃分是一種典型的黑盒測試方法。使用這一方法時,完全不考慮程序的內(nèi)部結(jié)構(gòu),只依據(jù)程序的規(guī)格說明來設(shè)計測試用例。由于不可能用所有可以輸入的數(shù)據(jù)來測試程序,而只能從全部可供輸入的數(shù)據(jù)中選擇一個子集進行測試。如何選擇適當(dāng)?shù)淖蛹?,使其盡可能多地發(fā)現(xiàn)錯誤。解決的辦法之一就是等價類劃分。等價類的劃分有兩種不同的情況:167。 有效等價類:是指對于程序規(guī)格說明來說,是合理的,有意義的輸入數(shù)據(jù)構(gòu)成的集合。利用它,可以檢驗程序是否實現(xiàn)了規(guī)格說明預(yù)先規(guī)定的功能和性能。167。 無效等價類:是指對于程序規(guī)格說明來說,是不合理的,無意義的輸入數(shù)據(jù)構(gòu)成的集合。利用它,可以檢查程序中功能和性能的實現(xiàn)是否有不符合規(guī)格說明要求的地方。在設(shè)計測試用例時,要同時考慮有效等價類和無效等價類的設(shè)計。軟件不能都只接收合理的數(shù)據(jù),還要經(jīng)受意外的考驗,接受無效的或不合理的數(shù)據(jù),這樣獲得的軟件才能具有較高的可靠性。劃分等價類的原則如下:167。 按區(qū)間劃分:如果可能的輸入數(shù)據(jù)屬于一個取值范圍或值的個數(shù)限制范圍,則可以確立一個有效等價類和兩個無效等價類。167。 按數(shù)值劃分:如果規(guī)定了輸入數(shù)據(jù)的一組值,而且程序要對每個輸入值分別進行處理。則可為每一個輸入值確立一個有效等價類,此外針對這組值確立一個無效等價類,它是所有不允許的輸入值的集合。167。 按數(shù)值集合劃分:如果可能的輸入數(shù)據(jù)屬于一個值的集合,或者須滿足“必須如何”的條件,這時可確立一個有效等價類和一個無效等價類。167。 按限制條件或規(guī)則劃分:如果規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則或限制條件,則可以確立一個有效等價類(符合規(guī)則)和若干個無效等價類(從不同角度違反規(guī)則)。② 確立測試用例在確立了等價類之后,建立等價類表,列出所有劃分出的等價類:再從劃分出的等價類中按以下原則選擇測試用例:167。 設(shè)計盡可能少的測試用例,覆蓋所有的有效等價類;167。 針對每一個無效等價類,設(shè)計一個測試用例來覆蓋它。(6) 邊界值分析人們從長期的測試工作經(jīng)驗得知,大量的錯誤是發(fā)生在輸入或輸出范圍的邊界上,而不是在輸入范圍的內(nèi)部。因此針對各種邊界情況設(shè)計測試用例,可以查出更多的錯誤。比如,在做三角形計算時,要輸入三角形的三個邊長:A、B和C。 我們應(yīng)注意到這三個數(shù)值應(yīng)當(dāng)滿足A>0、B>0、C>0、A+B>C、A+C>B、B+C>A,才能構(gòu)成三角形。但如果把六個不等式中的任何一個大于號“>”錯寫成大于等于號“≥”,那就不能構(gòu)成三角形。問題恰出現(xiàn)在容易被疏忽的邊界附近。這里所說的邊界是指,相當(dāng)于輸入等價類和輸出等價類而言,稍高于其邊界值及稍低于其邊界值的一些特定情況。使用邊界值分析方法設(shè)計測試用例,首先應(yīng)確定邊界情況。通常輸入等價類與輸出等價類的邊界,就是應(yīng)著重測試的邊界情況。應(yīng)當(dāng)選取正好等于,剛剛大于,或剛剛小于邊界的值做為測試數(shù)據(jù),而不是選取等價類中的典型值或任意值做為測試數(shù)據(jù)。 邊界值分析方法是最有效的黑盒測試方法,但當(dāng)邊界情況很復(fù)雜的時候,要找出適當(dāng)?shù)臏y試用例還需針對問題的輸入域、輸出
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1