2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩79頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、軟件測試技術(shù)與測試實訓教程黎連業(yè) 王華 李龍 黎照北京:機械工業(yè)出版社 2012.05,,軟件測試課程是計算機軟件專業(yè)、計算機應用專業(yè)、計算機信息管理專業(yè)高年級學生重要的一門專業(yè)課。是計算機軟件開發(fā)與測試、軟件測試專業(yè)高年級學生必修的一門專業(yè)課。軟件測試課程是一門實踐性、應用性很強的課程,主要任務(wù)是使學生掌握目的是使學生在學習“軟件工程”、“程序設(shè)計語言”和“軟件

2、測試與測試技術(shù)”等課程的基礎(chǔ)上,通過實訓,從而進一步鞏固和消化所學的專業(yè)知識、熟悉軟件測試的崗位工作職責、軟件測試的方法和原則、規(guī)范以及管理等技能,掌握軟件測試工作流程、測試技能。培養(yǎng)學生的實際動手操作能力和專業(yè)實踐能力,為就業(yè)打下扎實的基礎(chǔ)。,,《軟件測試技術(shù)與測試實訓教程》一書分別從理論、實踐的角度介紹了軟件測試與測試技術(shù)。介紹的是當前軟件測試行業(yè)所使用的技術(shù),他基于軟件測試和測試技術(shù)所需要的知識而展開的。本書所敘述的內(nèi)容是新鮮的,

3、基本上反映了當前軟件測試技術(shù),是作者測試的總結(jié)。作者認為:測試人員在掌握軟件測試的基本概念、技術(shù)基礎(chǔ)上,測試大綱、測試計劃、測試用例設(shè)計、測試文檔寫作是重要的,是具有獨立承擔實施測試項目能力的基礎(chǔ)。本書分四部分:第一部分 軟件測試的基本知識。詳細介紹:軟件測試的基本知識; 軟件測試的質(zhì)量要求;自動化測試技術(shù);軟件測試工作概述和測試工作指南。第二部分 軟件測試的核心技術(shù)。詳細介紹:白盒測試的實用技術(shù);黑盒測試技術(shù);測試用例設(shè)計方法。

4、第三部分 軟件測試的實用技術(shù)與測試實訓。詳細介紹: 對本書測試模型的介紹;數(shù)值計算程序測試的實訓;單元測試和測試實訓;功能測試和功能測試實訓;性能測試和性能測試實訓;集成測試的實用技術(shù);系統(tǒng)測試的實用技術(shù);驗收測試的實用技術(shù);回歸測試的實用技術(shù);軟件的其他測試技術(shù);配置測試的實用技術(shù);軟件缺陷測試和測試評估;軟件測試管理。第四部分 軟件測試文檔寫作與測試所需的常用模板。詳細介紹:測試文檔的寫作;軟件測試所需的常用模板。,,掌握軟件測

5、試的基本概念;掌握軟件測試相關(guān)技術(shù)、工具、方法;掌握關(guān)鍵實施技巧的技術(shù)、方法;具有獨立承擔實施測試項目的能力。軟件開發(fā)人員可快速加入到測試行業(yè), 成為一名合格的軟件測試工程師。 內(nèi)容上系統(tǒng)全面、重點突出;敘述由淺入深、循序漸進;概念上清楚易懂;實用性強。測試用例、實訓部分、測試文檔部分和管理部分的內(nèi)容,方便讀者,直接參考使用。作者認為:這是一本國內(nèi)外非常好的、實用的教學書籍。,第一部分 軟件測試的基本知識,第1講:第1章

6、 軟件測試基礎(chǔ)知識概述 軟件測試是信息系統(tǒng)開發(fā)中不可缺少的一個重要步驟,隨著軟件變得日益復雜,軟件測試也變得越來越重要。 軟件的基礎(chǔ)知識,軟件測試的概念(方法、目標和任務(wù)),軟件測試的術(shù)語定義是軟件測試的基礎(chǔ)。本章重點討論以下內(nèi)容:★ 軟件的基本知識概述;★ 軟件測試的概念、方法和任務(wù);★ 軟件測試的流程;★ 軟件測試的組織結(jié)構(gòu)和人員的要求;★ 軟件測試的前景;★ 軟件測試的術(shù)語定義。,,1.1 軟件的基本

7、知識概述 軟件測試的對象就是軟件,為了進行軟件測試,我們應了解什么是軟件?它的基本知識。1.1.1 軟件的概念、特點和分類1. 軟件的概念軟件是計算機系統(tǒng)中與硬件相互依存的一部分,它是包括程序、數(shù)據(jù)及其相關(guān)文檔的完整集合。其中,程序是按事先設(shè)計的功能和性能要求執(zhí)行的指令序列;數(shù)據(jù)是使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu);文檔是與程序開發(fā),維護和使用有關(guān)的圖文材料。,,2. 軟件的特點 軟件具有

8、8個特點:(1) 軟件是一種邏輯實體,而不是具體的物理實體。因而它具有抽象性。(2) 軟件的生產(chǎn)與硬件不同,它沒有明顯的制造過程。對軟件的質(zhì)量控制,必須著重在軟件開發(fā)方面下功夫。(3) 在軟件的運行和使用期間,沒有硬件那樣的機械磨損,老化問題。然而它存在退化問題,必須要對其進行多次的修改與維護。(4) 軟件的開發(fā)和運行常常受到計算機系統(tǒng)的制約,對計算機系統(tǒng)有著不同程度的依賴性。為了解除這種依賴性,在軟件開發(fā)中提出了軟件移植的問題

9、。(5) 軟件的開發(fā)至今尚未擺脫人工的開發(fā)方式。(6) 軟件本身是復雜的。軟件的復雜性可能來自它所反映的實際問題的復雜性,也可能來自程序邏輯結(jié)構(gòu)的復雜性。(7) 軟件成本相當昂貴。軟件的研制工作需要投入大量的、復雜的、高強度的腦力勞動,它的成本是比較高的。(8) 相當多的軟件工作涉及到社會因素。許多軟件的開發(fā)和運行涉及機構(gòu)、體制及管理方式等問題,它直接影響到項目的成敗。,,3.軟件的分類方法 軟件的分類方法有如下 4種:

10、(1)按軟件的功能分類(2)按軟件服務(wù)對象的范圍分類(3)按軟件規(guī)模分類(4)按軟件工作方式分類,1.1.2 軟件的內(nèi)容、目標和問題,軟件工程研究的主要內(nèi)容是軟件開發(fā)技術(shù)和軟件開發(fā)管理兩個方面。在軟件開發(fā)技術(shù)中,主要研究軟件工程方法、軟件工程過程、軟件開發(fā)工具和環(huán)境。其中:(1)軟件工程方法為軟件開發(fā)提供了“如何做”的技術(shù)。它包括了多方面的任務(wù),如項目計劃與估算、軟件系統(tǒng)需求分析、數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)總體結(jié)構(gòu)的設(shè)計、算法的設(shè)計、編碼、

11、測試以及維護等。軟件工程方法常采用某種特殊的語言或圖形的表達方法,及一套質(zhì)量保證標準。,,(2)軟件工程過程是將軟件工程的方法和工具綜合起來以達到合理、及時地進行計算機軟件開發(fā)的目的。過程定義了方法使用的順序、要求交付的文檔資料,為保證質(zhì)量和協(xié)調(diào)變更所需要的管理。(3)軟件開發(fā)工具和環(huán)境為軟件工程方法提供了自動的或半自動的軟件支撐環(huán)境。目前,已經(jīng)開發(fā)出了許多軟件工具,已經(jīng)能夠支持上述的軟件工程方法。而且已經(jīng)有人把諸多軟件工具集成起來,

12、使得一種工具產(chǎn)生的信息可以為其他的工具所使用,這樣建立起一種稱之為計算機輔助軟件工程(CASE)的軟件開發(fā)支撐系統(tǒng)。CASE將各種軟件工具、開發(fā)機器和一個存放開發(fā)過程信息的工程數(shù)據(jù)庫組合起來形成一個軟件工程環(huán)境。,,軟件工程項目的目標 軟件工程項目是一門工程性學科,目的是成功地建造一個大型軟件系統(tǒng),所謂成功是要達到以下幾個目標:★ 付出較低的開發(fā)成本;★ 達到要求的軟件功能;★ 取得較好的軟件性能;★ 開發(fā)的軟件易于移植;

13、★ 需要較低的維護費用;★ 能按時完成開發(fā)任務(wù),及時交付使用;★ 開發(fā)的軟件可靠性高。,,在實際開發(fā)的具體項目中,要想讓以上幾個目標都達到理想的程度往往是非常困難的,而且上述目標很可能是互相沖突的,若只降低開發(fā)成本,很可能同時也降低了軟件的可靠性。另一方面,如果過于追求提高軟件的性能,可能造成開發(fā)出的軟件對硬件有較大的依賴,從而直接影響到軟件的可移植性。,,軟件工程項目之間的相互關(guān)系如圖1-1 所示。,,★ 易于維護和高可靠性之間

14、,低開發(fā)成本與按時交付之間為互補關(guān)系;★ 低開發(fā)成本和易于維護、低開發(fā)成本和高可靠性、低開發(fā)成本和高性能、高可靠性和高性能、高性能和按時交付之間為互斥關(guān)系。,,軟件工程面臨的問題 軟件工程面臨的問題有:軟件費用、軟件可靠性、軟件可維護性、軟件生產(chǎn)率和軟件重用等。軟件費用 軟件是知識高度密集的技術(shù)的綜合產(chǎn)物,軟件人力資源不能適應軟件迅速增長的社會要求;因此,軟件費用上升是必然趨勢。軟件可靠性 軟件

15、可靠性是指軟件系統(tǒng)能否在既定的環(huán)境條件下運行并實現(xiàn)所期望的結(jié)果。在軟件開發(fā)中,通常要花費40%的代價進行測試和排錯,為了提高軟件可靠性,就要付出足夠的代價。軟件維護 軟件維護費用占整個軟件系統(tǒng)費用的2/3,而軟件開發(fā)費用只占整個軟件系統(tǒng)費用的1/3。這是因為已經(jīng)運行的軟件還需排除隱含的錯誤,新增加的功能要加入進去,維護工作又是非常困難的,效率較低。因此,如何提高軟件的可維護性,減少軟件維護的工作量,也是軟件工程面臨的主要問題

16、之一。軟件生產(chǎn)率 計算機的廣泛應用使得軟件的需求量大幅度上升,而軟件的生產(chǎn)又處于手工開發(fā)的狀態(tài),軟件生產(chǎn)率低下,使得軟件開發(fā)人員嚴重不足,所以,如何提高軟件生產(chǎn)率是軟件工程又一重要問題。軟件重用 提高軟件的重用性,對于提高軟件生產(chǎn)率、降低軟件成本有重要意義。當前的軟件開發(fā)存在著大量重復的勞動,耗費了不少的人力資源。軟件重用有各種級別,軟件規(guī)格說明、軟件模塊、軟件代碼、軟件文檔等都可以是軟件重用的單位。軟件重用

17、是軟件工程中一個重要研究課題。,1.1.3 軟件的生存周期,軟件的生存周期是指一個軟件從提出開發(fā)要求開始直到該軟件報廢為止的整個時期,軟件生存周期概念的出現(xiàn)可以幫助我們較為全面地認識軟件開發(fā)。在1998年制訂和公布的國家標準《GB8566-88計算機軟件開發(fā)規(guī)范》中,將軟件生存周期劃分為八個階段,即:可行性研究和計劃、需求分析、概要設(shè)計、詳細設(shè)計、實現(xiàn)、組裝測試、確認測試、使用和維護。該標準為每個階段規(guī)定了任務(wù)、實施步驟、實施要求以及完

18、成的標志。 20世紀90年代初提出了軟件工程過程的概念。軟件工程過程規(guī)定了獲取、供應、開發(fā)、操作和維護軟件時,要實施的過程、活動和任務(wù)。其目的是為各種人員提供一個公共的框架,以便用相同的語言進行交流。這框架由幾個重要的過程組成,這些主要過程含有用來獲取、供應、開發(fā)、操作和維護軟件所用的基本的、一致的要求。該框架還有用來控制和管理軟件過程。各種組織和開發(fā)機構(gòu)可以根據(jù)具體情況進行選擇和剪裁??稍谝粋€機構(gòu)的內(nèi)部或外部實施。,,1995年國際

19、標準化組織在此基礎(chǔ)上對生存期過程作了調(diào)整,公布了新的國際標準,即《ISO/IEC 12207信息技術(shù)----軟件生存期過程》。該標準全面、系統(tǒng)地闡述了軟件生存期的過程、活動和任務(wù)。標準定義的17個過程分別屬于:主要過程,支持過程和組織過程。我們可以通過圖1-2 看出它的結(jié)構(gòu)。,,,,軟件生存期過程的主要活動和任務(wù)描述如表1-1所示。 請參見機械工業(yè)出版社《軟件測試技術(shù)與測試實訓教程》( 2012.01)第1版第1 章表1-1的內(nèi)容

20、,,在表1-1中給出了17個過程的主要活動和任務(wù)的描述。以下對該標準提出的軟件生存期過程給予簡要說明。 主要生存期過程(primary process)主要生存期包括5個過程,這些過程供各主要當事方(如需方、供方、開發(fā)者、運行者和維護者)在參與或完成軟件產(chǎn)品開發(fā)、運行或維護時使用,它們是:獲取過程:需方獲取系統(tǒng)、軟件產(chǎn)品或軟件服務(wù)的活動。供應過程:供方向需方提供系統(tǒng)、軟件產(chǎn)品或軟件服務(wù)的活動。開發(fā)過程:開發(fā)者定義并開發(fā)軟

21、件產(chǎn)品的活動。運行過程:運行者在規(guī)定的環(huán)境中為其用戶提供計算機系統(tǒng)服務(wù)的活動。維護過程:維護者提供維護軟件產(chǎn)品服務(wù)的活動。,,支持生存期過程(supporting process) 支持生存期包括8個過程,其每個過程均有明確的目的支持其他過程,幫助軟件項目獲得成功及良好的產(chǎn)品質(zhì)量。它們是:文檔編制過程:記錄生存期過程中產(chǎn)生的信息所需的活動。配置管理過程:實施配置管理活動。質(zhì)量保證過程:為確保軟件產(chǎn)品和軟件過程符合

22、規(guī)定的需求并能堅持既定計劃所需的活動。聯(lián)合評審、審核、驗證與確認可作為質(zhì)量保證技術(shù)使用。驗證過程:為確保一個活動的產(chǎn)品滿足前一活動對它的要求和條件的活動。確認過程:為確保最終產(chǎn)品滿足預期使用要求的活動。聯(lián)合評審過程:評審方與被評審方共同對某一活動的狀態(tài)和產(chǎn)品進行評審的活動。審核過程:審核項目是否按要求、計劃、合同完成的活動。問題解決過程:分析和解決在開發(fā)、運行、維護或其他過程中出現(xiàn)的總是不論其性質(zhì)和來源如何的活動。,,組織生存

23、期過程(organizational process) 組織生存期包括4個過程,這些過程被某個機構(gòu)用來建立和實現(xiàn)與生存期過程相關(guān)的基礎(chǔ)結(jié)構(gòu),甚至人事制度,并使其不斷得到改進。它們是:管理過程:規(guī)定生存期過程中的基本管理活動,包括項目管理?;A(chǔ)設(shè)施過程:建立生存期過程基礎(chǔ)結(jié)構(gòu)的基本活動。改進過程:某一機構(gòu)(需用、供方、開發(fā)者、運行者、維護者或其他過程的管理者)為建立、測量、控制和改進其生存期過程需開展的基本活動。培訓

24、過程:對人員進行適當培訓所需的活動。,1.2 軟件測試的概念、方法和任務(wù),1.2.1 軟件測試的概念軟件測試是軟件工程中的一個環(huán)節(jié),是開發(fā)項目整體的一部分。軟件測試是有計劃有組織的,是保證軟件質(zhì)量的一種手段,它是軟件工程中一個非常重要的環(huán)節(jié)。因此,可以認為它是伴隨軟件工程的誕生而誕生的,伴隨著軟件復雜程度的增加、規(guī)模的增大,軟件測試作為一種能夠保證軟件質(zhì)量的有效手段,越來越受到人們的重視,軟件測試最終目的是使產(chǎn)品達到完美。軟件測試方

25、法沒有完全標準化和統(tǒng)一化,因為軟件產(chǎn)業(yè)的產(chǎn)品到軟件測試有各式各樣的軟件,這里介紹的軟件測試方法可用于多數(shù)應用軟件的測試。軟件測試可分人工測試和自動化測試工具測試。軟件測試不是萬能的,不可能發(fā)現(xiàn)全部的軟件缺陷,而且軟件的功能和性能不是由測試決定的,軟件測試是有局限性的。軟件測試是在完成程序設(shè)計階段工作后,經(jīng)程序編碼員測試已初步奠定了基礎(chǔ),進一步完成的測試工作。我們都知道軟件要投入運行是否正確無誤,這一點極其重要,所以軟件要在投入運行前

26、施行測試。未經(jīng)周密測試的軟件貿(mào)然投入運行,將會造成難以想象的后果。盡管各個程序在設(shè)計完畢以后都一一作過調(diào)試,但能否發(fā)揮整個系統(tǒng)的功能尚不清楚。例如:某一程序運行與后續(xù)的程序運行是否矛盾?能否順利連續(xù)?整個系統(tǒng)的總測試要等全部程序設(shè)計結(jié)束且能連續(xù)測試時才可進行。,,由于軟件錯誤的復雜性,長期以來,人們對軟件測試的認識一直是模糊的。許多科學家從不同的角度給出了軟件測試的不同定義,但總體來看,都是不全面的。給軟件帶來錯誤的原因很多,具體地說

27、,主要有如下幾點: ★ 交流不夠、交流上有誤解或者根本不進行交流;★ 應用需求不清晰的情況下進行開發(fā);   ★ 軟件復雜性    軟件復雜性(圖形用戶界面,客戶/服務(wù)器結(jié)構(gòu),分布式應用,數(shù)據(jù)通信,關(guān)系型數(shù)據(jù)庫使得軟件及系統(tǒng)的復雜性呈指數(shù)增長); ★ 程序設(shè)計錯誤 ; ★ 需求變化 ;  ★ 代碼文檔貧乏等 。 軟件測試可認為:★ 軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程;★ 使用人工或自動手段來運行或測定某

28、個系統(tǒng)的過程,其目的在于檢驗它是否滿足規(guī)定的需求或是弄清楚預期結(jié)果與實際結(jié)果之間的差別;★ 測試是為了證明程序有錯,而不是證明程序無錯誤;★ 一個好的測試用例是在于它能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤;★ 一個成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯誤的測試;★ 測試是以查找錯誤為中心,而不是演示軟件的正確功能;★ 測試并不僅僅是為了要找出錯誤,而是通過錯誤分析錯誤產(chǎn)生的原因和錯誤的分布特征,可以幫助項目管理者發(fā)現(xiàn)當前所采用的軟件過程的缺陷,以便

29、改進。,,測試為軟件工程師提供了一個既興奮又擔心的問題,興奮的是將軟件工程師們的抽象概念提出的構(gòu)造軟件,現(xiàn)在得以實現(xiàn),并且到了測試階段。擔心的是,軟件在測試過程會出現(xiàn)哪些問題?尤其是自己編制的那一部份會不會給整個系統(tǒng)帶來影響?如果別人編的程序都沒有問題,就是“我”編的程序出了問題,那又是多么的難看等等。其實系統(tǒng)測試不是針對哪一個人的,而是從整個系統(tǒng)出發(fā),考查設(shè)計是否合理,任何一個人都不能把所有問題考慮得面面俱到,總是或多或少地發(fā)生差錯。

30、對系統(tǒng)而言,就不能有差錯。所以測試是非常重要的。測試可以說就是“尋找錯誤”,特點是尋找不經(jīng)常出現(xiàn)的錯誤。盡量把系統(tǒng)中隱藏著的錯誤消滅在調(diào)試期間,測試還要對系統(tǒng)的容錯能力、操作錯誤進行測試。通過測試要達到這樣的一個目的,尋找問題,發(fā)現(xiàn)問題,糾正錯誤,提高系統(tǒng)技術(shù)能力,使系統(tǒng)早日投入運行。,1.2.2 軟件測試的目的,軟件測試的不同機構(gòu)會有不同的測試目的,相同的機構(gòu)也可能有不同測試目的?! ≤浖y試的目的決定了如何去組織測試。如果測試的

31、目的是為了盡可能多地找出錯誤,那么測試就應該直接針對軟件比較復雜的部分或是以前出錯比較多的位置。如果測試目的是為了給最終用戶提供具有一定可信度的質(zhì)量評價,那么測試就應該直接針對在實際應用中會經(jīng)常用到的商業(yè)假設(shè)?!?測試可視為分析、設(shè)計和編碼3個階段的"最終復審",在軟件質(zhì)量保證中具有重要地位。為了確保軟件的質(zhì)量,較理想的做法應該是對軟件的開發(fā)過程,按軟件工程各階段形成的結(jié)果,分別進行嚴格的審查。,,軟件測試的目的

32、可認為:★ 幫助開發(fā)人員、測試工程師,發(fā)現(xiàn)問題、分析問題;★ 減少軟件的缺陷數(shù)目或者降低軟件的缺陷密度;★ 提高軟件的可靠性;★ 評估軟件的性能指標;★ 增加用戶對軟件的信心;★ 測試的最終目的是為了避免錯誤的發(fā)生,確保應用程序能夠正常高效的運行。,,對于軟件測試目的,Grenford J.Myers提出以下觀點:1) 軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程; 2) 測試是為了證明程序有錯,而不是證明程序無錯誤。

33、3) 一個好的測試用例是在于它能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤; 4) 一個成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯誤的測試。這種觀點可以提醒人們測試要以查找錯誤為中心,而不是為了演示軟件的正確功能。但是僅憑字面意思理解這一觀點可能會產(chǎn)生誤導,認為發(fā)現(xiàn)錯誤是軟件測試的唯一目,查找不出錯誤的測試就是沒有價值的,事實并非如此。首先,測試并不僅僅是為了要找出錯誤。通過分析錯誤產(chǎn)生的原因和錯誤的分布特征,可以幫助項目管理者發(fā)現(xiàn)當前所采用的軟件過程的缺陷

34、,以便改進。同時,這種分析也能幫助我們設(shè)計出有針對性地檢測方法,改善測試的有效性。其次,沒有發(fā)現(xiàn)錯誤的測試也是有價值的,完整的測試是評定測試質(zhì)量的一種方法。詳細而嚴謹?shù)目煽啃栽鲩L模型可以證明這一點。例如 Bev Littlewood發(fā)現(xiàn)一個經(jīng)過測試而正常運行了n小時的系統(tǒng)有繼續(xù)正常運行n小時的概率。,1.2.3 軟件測試過程V模型,V模型是在快速應用開發(fā) (RAD,Rap Application Development)模型基礎(chǔ)上演變

35、而來,由于將整個開發(fā)過程構(gòu)造成一個V字形而得名,如圖1-3 所示。V模型強調(diào)軟件開發(fā)的協(xié)作和速度,主要反映測試活動與分析設(shè)計關(guān)系,將軟件實現(xiàn)和驗證有機地結(jié)合起來,在保證較高的軟件質(zhì)量情況下縮短開發(fā)周期。,,,圖1—3從水平對應關(guān)系看:左邊是策劃測試活動;右邊是對左邊的測試結(jié)果。需求分析對應驗收測試:說明在做需求分析的同時,測試人員就可以閱讀、審查需求分析的結(jié)果,從而了解產(chǎn)品的設(shè)計特性、用戶的真正需求,確定測試目標,準備測試用例并策劃測

36、試活動;系統(tǒng)設(shè)計對應系統(tǒng)測試,說明在做系統(tǒng)設(shè)計的同時,測試人員可以了解系統(tǒng)是如何實現(xiàn)的,設(shè)計系統(tǒng)的測試方案和測試計劃,并事先準備系統(tǒng)的測試環(huán)境;詳細設(shè)計對應集成測試,說明在做詳細設(shè)計的同時,測試人員可以參與設(shè)計,對詳細設(shè)計進行評審,設(shè)計測試用例;編碼對應單元測試,說明在編碼的同時,設(shè)計測試用例,進行單元測試,盡快找出程序中的錯誤。,,V模型的價值在于他很明確地標明了測試過程中存在的不同級別,并且清楚地描述了這些測試階段和研發(fā)過程期

37、間各階段的對應關(guān)系。V模型適合企業(yè)級的軟件開發(fā),它清楚地揭示了軟件開發(fā)過程的特性及其本質(zhì):★ 單元和集成測試應檢測程序的執(zhí)行是否滿足軟件設(shè)計的要求;★ 系統(tǒng)測試應檢測系統(tǒng)功能、性能的質(zhì)量特性是否達到系統(tǒng)要求的指標;★ 驗收測試確定軟件的實現(xiàn)是否滿足用戶需要或合同的要求。但V模型存在一定的局限性,它僅僅把測試作為在編碼之后的一個階段,是針對程序進行的尋找錯誤的活動,而忽視了測試活動對需求分析、系統(tǒng)設(shè)計等活動的驗證和確認的功能。軟

38、件測試過程V模型特點:非常明確地表明測試的不同過程要寫作的文檔,清晰地展示了軟件測試與開發(fā)之間的關(guān)系。,1.2.4 軟件測試的基本原則,為了提高測試的質(zhì)量,軟件測試需要遵循下面的原則: (1) 應當把“盡早地和不斷地進行軟件測試”作為軟件開發(fā)者的座右銘。由于原始問題的復雜性,軟件的復雜性和抽象性,軟件開發(fā)各個階段工作的多樣性,以及參加開發(fā)各種層次人員之間工作的配合關(guān)系等因素,使得開發(fā)的每個環(huán)節(jié)都可能產(chǎn)生錯誤。所以不應把軟件測試僅僅

39、看作是軟件開發(fā)的一個獨立階段,而應當把它貫穿到軟件開發(fā)的各個階段中。堅持在軟件開發(fā)的各個階段的技術(shù)評審,這樣才能在開發(fā)過程中盡早發(fā)現(xiàn)和預防錯誤,把出現(xiàn)的錯誤克服在早期,杜絕某些隱患,提高軟件質(zhì)量。,,(2) 測試用例應由測試輸入數(shù)據(jù)和與之對應的預期輸出結(jié)果這兩部分組成。測試以前應當根據(jù)測試的要求選擇在測試過程中使用的測試用例(Test case)。測試用例主要用來檢驗程序員編制的程序,因此不但需要測試的輸入數(shù)據(jù),而且需要針對這些輸入數(shù)

40、據(jù)的預期輸出結(jié)果。如果對測試輸入數(shù)據(jù)沒有給出預期的程序輸出結(jié)果,那么就缺少了檢驗實測結(jié)果的基準,就有可能把一個似是而非的錯誤結(jié)果當成正確結(jié)果。,,(3) 程序員應避免測試自己的程序。測試工作需要嚴格的作風,客觀的態(tài)度和冷靜的情緒。人們常由于各種原因具有一種不愿否定自己工作的心理,認為揭露自己程序中的問題總不是一件愉快的事。這一心理狀態(tài)就成為測試自己程序的障礙。另外,程序員對軟件規(guī)格說明理解錯誤而引入的錯誤則更難發(fā)現(xiàn)。如果由別人來測試程

41、序員編寫的程序,可能會更客觀,更有效,并更容易取得成功。要注意的是,測試不能與程序的調(diào)試相混淆。調(diào)試由程序員自己來做。,,(4) 在設(shè)計測試用例時,應當包括合理的輸入條件和不合理的輸入條件。合理的輸入條件是指能驗證程序正確的輸入條件,而不合理的輸入條件是指異常的,臨界的,可能引起問題異變的輸入條件。在測試程序時,人們常常傾向于過多地考慮合法的和期望的輸入條件,以檢查程序是否做了它應該做的事情,而忽視了不合法的和預想不到的輸入條件。事實

42、上,軟件在投入運行以后,用戶的使用往往不遵循事先的約定,使用了一些意外的輸入,如用戶在鍵盤上按錯了鍵或打入了非法的命令。如果開發(fā)的軟件遇到這種情況時不能做出適當?shù)姆磻?,給出相應的信息,那么就容易產(chǎn)生故障,輕則給出錯誤的結(jié)果,重則導致軟件失效。因此,軟件系統(tǒng)處理非法命令的能力也必須在測試時受到檢驗。用不合理的輸入條件測試程序時,往往比用合理的輸入條件進行測試能發(fā)現(xiàn)更多的錯誤。,,(5) 制定嚴格的測試計劃 制定嚴格的測試計劃,并把測

43、試時間安排得盡量寬松,不要希望在極短的時間內(nèi)完成一個高水平的測試。測試計劃應包括:測試軟件的功能、輸入和輸出,各項測試的進度安排,資源要求,測試資料,測試工具,測試用例的選擇等。,,(6) 嚴格執(zhí)行測試計劃,排除測試的隨意性測試計劃應包括:所測軟件的功能,輸入和輸出,測試內(nèi)容,各項測試的進度安排,資源要求,測試資料,測試工具,測試用例的選擇,測試的控制方式和過程,系統(tǒng)組裝方式,跟蹤規(guī)程,調(diào)試規(guī)程,以及回歸測試的規(guī)定等以及評價標準。對于

44、測試計劃,要明確規(guī)定,不要隨意解釋。,,(7) 應當對每一個測試結(jié)果做全面檢查這是一條最明顯的原則,但常常被忽視。有些錯誤的征兆在輸出實測結(jié)果時已經(jīng)明顯地出現(xiàn)了,但是如果不仔細地全面地檢查測試結(jié)果,就會使這些錯誤被遺漏掉。所以必須對預期的輸出結(jié)果明確定義,對實測的結(jié)果仔細分析檢查,抓住征候,暴露錯誤。(8) 妥善保存測試計劃,測試用例,測試過程文檔,出錯統(tǒng)計和最終分析報告,為維護提供方便。(9) 應盡可能早地開始測試在軟件生

45、命周期中,1個錯誤發(fā)現(xiàn)的越晚,修復錯誤的費用越高。如表1-2所示。,,(10) 測試應從“小規(guī)?!遍_始,逐步轉(zhuǎn)向“大規(guī)?!薄W畛醯臏y試通常把焦點放在單個程序模塊上,進一步測試的焦點則轉(zhuǎn)向在集成的模塊簇中尋找錯誤,最后在整個系統(tǒng)中尋找錯誤。(11) 測試用例應由測試輸入數(shù)據(jù)、測試執(zhí)行步驟和與之對應的預期輸出結(jié)果三部分組成。(12) 按照組件和功能特征的優(yōu)先級從高到低的順序進行測試 (13) 重點放在處理多語言字符串的直接

46、或間接的輸入/輸出(I/O) (14) 對測試錯誤結(jié)果一定要有一個確認的過程(15) 回歸測試的關(guān)聯(lián)性回歸測試的關(guān)聯(lián)性一定要引起充分的注意,修改一個錯誤而引起更多錯誤出現(xiàn)的現(xiàn)象并不少見。(16) 在設(shè)計測試用例時,應當包括合理的輸入條件和不合理的輸入條件。合理的輸入條件是指能驗證程序正確的輸入條件,不合理的輸入條件是指異常的,臨界的,可能引起問題異變的輸入條件。軟件系統(tǒng)處理非法命令的能力必須在測試時受到檢驗。用不合理的輸

47、入條件測試程序時,往往比用合理的輸入條件進行測試能發(fā)現(xiàn)更多的錯誤。,,1.2.5 軟件測試步驟區(qū)分軟件測試步驟,并明確定義其資源(人/物/時間)的安排,是保障軟件測試工作有序開展、有效管理的關(guān)鍵。軟件測試步驟一般可按表1-3方式進行。,,1.2.6軟件錯誤的分類軟件錯誤存在于軟件生存期的各個階段,凡是和預期的狀態(tài)或行為不相符合的統(tǒng)稱為軟件錯誤。例如,制定的計劃和實際不相符合的、需求說明書有問題的、設(shè)計說明書有問題的、程序編碼有問題的

48、、測試有問題的、運行結(jié)果不正確的、維護有問題的等等,都是軟件錯誤。軟件的錯誤是非常復雜的,凡是人們能夠想到的軟件錯誤都是可能發(fā)生的。到目前為止,人們對軟件錯誤的認識尚停留在表面上,其內(nèi)在規(guī)律有待進一步研究。這也是目前軟件測試技術(shù)發(fā)展比較緩慢的原因之一。,,(1) 軟件的錯誤按性質(zhì)分類 軟件的錯誤按性質(zhì)可分為: 功能錯誤 系統(tǒng)錯誤 加工錯誤 數(shù)據(jù)錯誤 代碼錯誤,,(2) 軟

49、件的錯誤按生存期階段分類軟件在生存期的每個階段都可能存在錯誤,即計劃錯誤、需求分析錯誤、設(shè)計錯誤、編碼錯誤、測試錯誤、運行與維護錯誤。由于生存期的每一個階段又是下一個階段的先導,也就是說,前一個階段正確的設(shè)計是保證下一個階段設(shè)計正確的必要條件。因此,要求一旦發(fā)現(xiàn)某個階段存在錯誤,就要盡快將其排除。軟件的錯誤按軟件生存期階段可分為:需求分析錯誤,規(guī)格說明錯誤,設(shè)計錯誤,編碼錯誤等。1)需求分析錯誤2) 規(guī)格說明錯誤 3)設(shè)計錯誤

50、4) 編碼錯誤,,軟件的錯誤百分比如表1-4所示。,,1.2.7 軟件測試的任務(wù)軟件測試階段有幾方面的任務(wù): (1) 制定測試大綱; (2) 制作測試數(shù)據(jù); (3) 單元測試(程序測試);(4)功能測試;(5)性能測試;(6)集成測試(子系統(tǒng)測試);(7)系統(tǒng)測試;(8)驗收測試;(9)寫出測試報告書;(10)向下階段工作提交系統(tǒng)運行、維護手冊的草案。,,制定測試大綱測試大綱是測試工作的依據(jù),

51、主要有:檢查每個模塊在程序設(shè)計中是否已測試過,測試的數(shù)據(jù)和輸出結(jié)果是否正確?檢查每個子系統(tǒng)和功能在程序設(shè)計中是否已測試過,測試的數(shù)據(jù)和輸出結(jié)果是否正確?檢查上一階段交來的工作文檔是否齊全?確定本階段測試目標。制定本階段測試內(nèi)容。編寫向下階段工作提交的文檔資料。,,制作測試數(shù)據(jù)數(shù)據(jù)制作好壞,直接影響系統(tǒng)測試的結(jié)果,制作測試數(shù)據(jù)時應注意:由用戶和程序管理組的人員制作,程序編碼人員不應介入。要盡可能多的提供數(shù)據(jù),供檢測。尤

52、其是交接口數(shù)據(jù)。提供的數(shù)據(jù)應分三類:★ 沒有錯誤的數(shù)據(jù),以檢查功能實現(xiàn)?!?各種各機關(guān)報錯誤數(shù)據(jù),以檢查程序?qū)﹀e誤數(shù)據(jù)處理能力?!?提供程序與程序交接口數(shù)據(jù)(正確的、不正確的),以檢查交接口情況。,1.2.8軟件測試的方法,軟件的測試方法分為人工測試和軟件測試自動化工具測試,人工測試即用試題測試、用新舊兩個系統(tǒng)作平行處理測試、人工測試。用試題檢查法此方法是先建立輸入數(shù)據(jù)的模型,并事先用人工求得其預計輸出,然后送入模型,與新系統(tǒng)

53、所得結(jié)果進行核對,進行測試。用新舊兩個系統(tǒng)作平行處理檢查通過舊系統(tǒng)的處理結(jié)果與新系統(tǒng)的結(jié)果相比較進行檢查。3.軟件自動化測試工具測試,1.2.9 軟件測試工具,軟件測試工具是提高軟件測試效率的重要手段,是軟件理論和技術(shù)發(fā)展的重要標志。目前,應用比較廣泛的軟件測試工具有下列幾種類型:(1)測試設(shè)計工具測試設(shè)計工具有助于準備測試輸入或測試數(shù)據(jù)。測試設(shè)計工具包括邏輯設(shè)計工具和物理設(shè)計工具。邏輯設(shè)計工具涉及到說明、接口或代碼邏輯,有時

54、也叫做測試用例生成器。物理設(shè)計工具操作已有的數(shù)據(jù)或產(chǎn)生測試數(shù)據(jù)。如可以隨機從數(shù)據(jù)庫中抽取記錄的工具就是物理設(shè)計工具。從說明中獲取測試數(shù)據(jù)的工具就是邏輯設(shè)計工具。(2)測試管理工具測試管理工具是指幫助完成測試計劃,跟蹤測試運行結(jié)果等的工具。這類工具還包括有助于需求、設(shè)計、編碼測試及缺陷跟蹤的工具。(3)靜態(tài)分析工具靜態(tài)分析工具直接對代碼進行分析,不需要運行代碼,也不需要對代碼編譯鏈接,生成可執(zhí)行文件。靜態(tài)分析工具一般是對代碼進行語

55、法掃描,找出不符合編碼規(guī)范的地方,根據(jù)某種質(zhì)量模型評價代碼的質(zhì)量,生成系統(tǒng)的調(diào)用關(guān)系圖等。(4)動態(tài)分析工具動態(tài)分析工具與靜態(tài)分析工具不同,動態(tài)測試工具的一般采用“插樁”的方式,向代碼生成的可執(zhí)行文件中插入一些監(jiān)測代碼,用來統(tǒng)計程序運行時的數(shù)據(jù)。其與靜態(tài)分析工具最大的不同就是動態(tài)分析工具要求被測系統(tǒng)實際運行。(5)覆蓋測試工具覆蓋工具評估通過一系列的測試,測試軟件被測試執(zhí)行的程度。覆蓋工具大量的用于單元測試中。例如,對于安全性要

56、求高或與安全有關(guān)的系統(tǒng),則要求的覆蓋程度也較高。覆蓋工具還可以度量設(shè)計層次結(jié)構(gòu),如調(diào)用樹結(jié)構(gòu)的覆蓋率。(6)負載和性能測試工具性能測試工具檢測每個事件所需要的時間。例如,性能測試工具可以測定典型或負載條件下的響應時間。負載測試可以產(chǎn)生系統(tǒng)流量。例如產(chǎn)生許多代表典型情況或最大情況下的事物。這種類型的測試工具用于容量和壓力測試。(7)GUI測試驅(qū)動和捕獲/回放工具這類測試工具可使測試自動執(zhí)行,然后將測試輸出結(jié)果與期望輸出進行比較。此

57、類測試工具可在任何層次中執(zhí)行測試:單元測試、集成測試、系統(tǒng)測試或驗收測試。捕獲回放工具是目前使用的測試工具中最流行的一種。 (8)基于故障的測試工具首先給出軟件的故障模型,在此故障模型下,給出基于該故障模型的軟件測試工具。這是目前一種有很好發(fā)展前景的軟件測試工具。隨著人們對軟件故障認識的不斷深入,軟件的故障模型也會越來越完備,并更加符合實際?;诠收系能浖y試工具有三個需要研究的問題:一是故障模型的準確程度,二是測試的準確程度,三是

58、測試的自動化程度。,1.3 軟件測試的流程,1.3.1 軟件測試 軟件測試實際是由確認、驗證、測試三個方面組成。確認:是評估將要開發(fā)的軟件產(chǎn)品是否是正確無誤、可行和有價值的。驗證:是檢測軟件開發(fā)的每個階段、每個步驟的結(jié)果是否正確無誤,是否與軟件開發(fā)各階段的要求或期望的結(jié)果相一致。驗證意味著確保軟件是會正確無誤的實現(xiàn)軟件的需求,開發(fā)過程是沿著正確的方向在進行。 測試:通常是經(jīng)過單元測試、集成測試、系統(tǒng)測試等。軟件測試的流程

59、分為測試流程和測試階段流程。,,1. 3.2 軟件測試流程軟件測試流程是組織領(lǐng)導軟件測試的管理方案。軟件測試流程分測試項目整體流程、測試項目確認流程、測試執(zhí)行流程、測試策劃流程、問題跟蹤與測試關(guān)閉流程、嵌入式軟件測試流程、軟件整體測試流程。,,1. 測試項目整體流程測試項目整體流程如圖1-5示。,,測試項目確認流程測試項目確認流程如圖1-6所示。,,測試執(zhí)行流程測試執(zhí)行流程如圖1-7所示。,,測試策劃流程測試策劃流程如圖1

60、-8所示。,,問題跟蹤與測試關(guān)閉流程問題跟蹤與測試關(guān)閉流程如圖1-9所示。,,嵌入式軟件測試流程嵌入式軟件測試流程如圖1-10所示。,,軟件整體測試流程軟件整體測試流程圖如圖1-11所示。,1.3.3 測試階段流程,測試階段流程是針對軟件在實際測試時的階段執(zhí)行方案。軟件測試階段流程分為軟件測試階段總體流程圖、需求階段測試流程、設(shè)計與編碼階段測試流程、集成測試和系統(tǒng)測試階段流程圖。如圖1-12,圖1-13,圖1-14,圖1-15所

61、示。,,集成測試是將已經(jīng)分別通過測試的單元按設(shè)計要求組合起來再進行測試,以檢查這些單元接口是否存在問題。系統(tǒng)測試一般由若干個不同測試組成,目的是充分運行系統(tǒng),驗證系統(tǒng)各部件能否正常工作并完成所賦予的任務(wù)。,,軟件測試的各個階段有著密切的聯(lián)系, 如圖1-16所示。,,1.4 軟件測試的組織結(jié)構(gòu)和人員的要求軟件測試是在有關(guān)測試組織領(lǐng)導下進行的具體工作,對組織結(jié)構(gòu)和人員有具體的要求。,,1.4.1 軟件測試的組織結(jié)構(gòu)軟件測試的具體組織

62、結(jié)構(gòu)如圖1-17所示。,,1.4.2 系統(tǒng)測試組的人員結(jié)構(gòu)組成軟件測試的時候人員分配如圖1-18所示。圖1-18軟件測試的時候人員分配圖,,軟件測試人員最好具有軟件開發(fā)經(jīng)驗,理解軟件工程的知識。軟件測試過程中,必須要合理地組織人員。將軟件測試的人員分成三部分。一部分上機測試人員(測試執(zhí)行者),一部分測試結(jié)果檢查核對人員(測試工具軟件開發(fā)工程師),還有一部分是制作測試數(shù)據(jù)制作人員(高級軟件測試工程師)。這三方面人員應該緊密配合,互相

63、協(xié)調(diào),保證軟件測試工作的順利進行?!?上機測試人員 負責理解產(chǎn)品的功能要求,然后根據(jù)測試規(guī)范和測試案例對其進行測試,檢查軟件有沒有錯誤,決定軟件是否具有穩(wěn)定性,屬于最低級的執(zhí)行角色?!?測試結(jié)果檢查核對人員 負責寫測試工具代碼,并利用測試工具對軟件進行測試;或者開發(fā)測試工具為軟件測試工程師服務(wù)。★ 制作測試數(shù)據(jù)制作人員 要具備寫程序的技術(shù)?!耙驗椴煌a(chǎn)品的特性不一樣,對測試工具要求也是不同的,就像Windows的測試工具不能用于O

64、ffice,office的也不能用于SQLserver,微軟很多測試工程師就是負責專門為某個產(chǎn)品寫測試程序的?!餃y試經(jīng)理 測試經(jīng)理主要負責測試內(nèi)部管理以及與其他外部人員,客戶的交流等,測試經(jīng)理需要具有項目經(jīng)理的知識和技能。同時測試工作開始前項目經(jīng)理需要書寫《測試計劃書》,測試結(jié)束需要書寫《測試總結(jié)報告》?!?測試文檔審核師 測試文檔審核師主要負責前置測試,包括在需求期與設(shè)計期間產(chǎn)生的文檔進行審核,如《需求規(guī)格說明書》,《概要設(shè)計

65、書》,《詳細設(shè)計書》等等。審核需要進行書寫審核報告。當文檔確定后,需要整理文檔報告,并且反映介紹給測試工程師?!铩y試工程師 測試工程師主要根據(jù)需求期與設(shè)計期間產(chǎn)生的文檔設(shè)計制作測試數(shù)據(jù)和各個測試階段的測試用例。(測試文檔審核師,測試工程師可以有一人相同的一組人來完成)按照測試用例,來完成測試工作?!?操作人員,1.4.3 軟件測試需要的知識結(jié)構(gòu),軟件測試不是很快入門的職業(yè),門檻高,需要的知識多,具有編程經(jīng)驗的程序員不一定是一名

66、優(yōu)秀的測試工程師。軟件測試已經(jīng)形成了一個獨立的技術(shù)學科,軟件測試技術(shù)不斷更新和完善,新工具,新流程,新測試設(shè)計方法都在不斷更新,沒有一個合格的測試人員,測試是不可能實現(xiàn)高質(zhì)高效的。軟件測試人員需要的知識結(jié)構(gòu):★ 需要具有懂得計算機的基本理論,又有一定開發(fā)經(jīng)驗的人員;★ 需要具有了解軟件開發(fā)的基本過程和特征,對軟件有良好的理解能力,掌握軟件測試相關(guān)理論及技術(shù)的人員;★ 需要具有軟件業(yè)務(wù)經(jīng)驗的人員;★ 需要根據(jù)測試計劃和方案進行軟件

67、測試;針對軟件需求開發(fā)測試模型,制定測試方案,安排測試計劃,搭建測試環(huán)境, 進行基本測試,設(shè)計簡單的測試用例?!?需要具有規(guī)劃設(shè)計環(huán)境;編制測試大綱并設(shè)計測試用例;對軟件進行全面測試工作的人員★ 需要具有編制測試計劃;評審測試方案,規(guī)范測試流程及測試文檔;分析測試結(jié)果,管理測試項目?!?需要會操作軟件測試工具的人員。,1.4.4 軟件測試人員需要的能力素質(zhì),1. 溝通能力 2. 技術(shù)能力 3. 自信心 4. 洞察力5.做測

68、試時要細心,6.測試人員測試的時間分配應該是, 30%讀程序,20%寫測試程序,50%寫Test Cases和運行Test Cases. 好的測試員的工作重點應該放在理解要求,理解客戶需要,思考在什么條件下程序會出錯,而不是思考如何去自動化。 7. 探索精神8. 不懈努力9. 創(chuàng)造性10. 追求完美11. 判斷準確12. 老練穩(wěn)重和說服力,1.5 軟件測試的前景,1.軟件測試學科 軟件測試一門非常嶄新的學科,目前仍然還

溫馨提示

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

評論

0/150

提交評論