999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

淺談軟件測試技術

2008-12-31 00:00:00陳意剛
電腦知識與技術 2008年35期

摘要:隨著計算機的普及,軟件系統已經深入到生活的各個方面,從普通的計算機軟件,到銀行或超市的終端系統,甚至到手機的軟件系統。對軟件質量的要求也在不斷提高,但現實中軟件系統的質量和穩定性卻不盡人意,不論采用什么技術和什么方法,軟件中仍然會有錯誤存在。在對軟件測試技術相關基本概念研究解析的基礎上,分析了軟件測試起源與發展,保證軟件產品的質量、提高產品的可靠性。

關鍵詞:軟件測試;測試方法;軟件質量

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)35-2150-03

Brief Analysis on the Technology of Software Testing

CHEN Yi-gang

(Reception House of Suzhou Government,Suzhou 215004,China)

Abstract: As the population of using computer get growing, it is not doubt software has been rooted in every aspects of our daily life, e.g. from the common software you can get from the market to the high security software used in the bank and the terminator in supermarket, even to the software which be put into Mobil phone, so the requirement for its quality is never ignored. However, users are still not satisfied with the quality and its stability, no matter what tech IT man tried or from which way you casing around for., there is always a bug followed by. On the basis of digging into the software test and analyses the history of it, which ensure the quality and stability value to the products.

Key words: software testing;test methods;quality of software

1 引言

隨著計算機所控制的對象的復雜程度不斷提高和軟件功能的不斷增強,軟件的規模也在不斷增大。例如,windows NT操作系統的代碼大約有3200萬行,這使得錯誤更可能發生。人們在軟件的設計階段所犯的錯誤是導致軟件失效的主要原因,軟件復雜性是產生軟件缺陷的極其重要的根源。采用新的語言、先進的開發方式、完善的開發過程,可以減少錯誤的引入,但卻不能完全杜絕軟件中的錯誤。有錯是軟件的屬性,而且是無法改變的。問題在于我們如何去避免錯誤的產生和消除己經產生的錯誤,使軟件中的錯誤密度達到盡可能低的程度,軟件測試為我們提供了這種可能。

2 軟件測試的起源與發展

軟件測試的概念雖然是和軟件編程同時提出的,但發展速度卻遠遠沒有編程技術快。對于軟件測試認識過程大致經歷如下四個階段:

第一階段:軟件測試就是“程序調試”

早期的軟件開發過程中軟件規模小、復雜程度低,測試的含義比較狹窄,開發人員將測試等同于“程序調試”,目的是糾正軟件中已經知道的故障,常由開發人員自己完成這部分的工作。整個項目對測試工作的規劃少、投入少,測試介入晚,常常是在形成代碼后,產品已經基本完成時才進行測試。

第二階段:軟件測試就是“驗證軟件系統的正確性”

直到1957年,軟件測試被作為一種發現軟件缺陷的活動,開始與“調試”區別開來。但是對軟件測試目的的理解限于“使自己確信產品能工作”。測試活動始終后于開發活動,測試通常被做為軟件生命周期中最后一項活動而進行。當時也缺乏有效的測試方法,主要依靠“錯誤推測 (Error Guessing)”來尋找軟件中的缺陷。因此,大量軟件交付后,仍存在很多問題,軟件質量無法保證。

到了20世紀70年代,這個階段開發的軟件仍然不復雜,但人們已開始思考軟件開發流程的問題。盡管對“軟件測試”的真正含義還缺乏共識,但是一些軟件測試的探索者們建議在軟件生命周期的開始階段就根據需求制訂測試計劃。

第三個階段:軟件測試就是“找出軟件存在的缺陷”

以Glenford J. Myers(代表論著《The Art of Software Testing》)為代表的部分業界權威卻對上述方法提出質疑。Myers認為測試不應該著眼于驗證軟件是工作的,相反應該首先認定軟件是有錯誤的,然后用逆向思維去發現盡可能多的錯誤。1979年提出了他對軟件測試的定義:“測試是為發現錯誤而執行一個程序或者系統的過程”。

第四階段:軟件測試是“對軟件質量的度量”

上世紀80年代初期,軟件和IT行業進入了大發展,軟件趨向大型化、高復雜度,軟件的質量越來越重要。人們將“質量”的概念融入其中,軟件測試不再單純是一個發現錯誤的過程,而且將測試作為軟件質量保證(SQA)的主要職能,包含軟件質量評價的內容。90年后期以來則更加關注有效的過程管理,認識到其對于軟件測試的重要性,形成各種測試模型、測試能力成熟度模型。

綜上所述,把軟件測試定義為:軟件測試是貫穿整個軟件開發生命周期、對軟件產品(包括階段性產品)進行驗證和確認的活動過程,其目的是盡快盡早地發現在軟件產品中所存在的各種問題與用戶需求、預先定義的不一致性。

3 軟件測試幾個重要概念

3.1 驗證和確認(verfificationvalidation)

測試過程中不僅要檢查程序是否出錯,程序是否和軟件產品的設計規格說明書一致,而且還要檢驗所實現的正確功能是否就是客戶或用戶所需要的功能。

[An introduction to software testing]檢驗軟件的實現與產品規格說明書是否一致的過程稱為驗證;檢驗系統與實際用戶的需求是否一致的過程稱為確認。二者之間的關系如圖1所示。

3.2 軟件測試(software testing)

軟件測試是目前工業界普遍采用的度量和提高軟件質量的重要手段,也是軟件工程學術界研究的主要內容之一。測試只檢查軟件的部分行為,它只能發現錯誤,但不能保證沒有錯誤。如果在測試過程中沒有發現錯誤,雖然不能說明被測軟件完全正確,但也可以在一定的統計意義下提高開發者和使用者對它的信心。

3.3 靜態分析(static analysis)

軟件測試一般需要執行被測系統,再檢查執行結果。除了這類方法以外,也可以直接對軟件的源代碼進行分析,以發現錯誤或提取有用的信息。比如,可以通過類型推導(type inference)、抽象解釋(abstract interpretation)等手段檢查程序中是否有某種錯誤。也可以使用特定的規則對程序進行檢查。這些方法被稱為靜態分析,因為它們不需要執行程序。

3.4 形式驗證(formal verification)

形式驗證指的是,用數學手段嚴格證明程序具有給定的某種性質。一個程序通過了形式驗證,一般意味著它對任何輸入數據來說,都會給出正確的結果(相對于給定的性質而言)。它往往要求用戶具有很高的水平,還要求有表達能力非常強的定理證明器,而目前定理證明器很難自動化。

4 軟件測試的分類和階段

4.1 測試的分類

軟件測試的方法和技術多種多樣,其分類可分別按照測試范圍、測試目的、測試對象和測試過程等來進行,常見的分類有如下幾種:

4.1.1 按測試范圍分類

1) 單元測試(unit testing)

2) 組件測試(component testing)

3) 集成測試(integration testing,string testing)

4) 系統測試(system testing)

5) 驗收測試(acceptance testing, beta test)

6) 安裝測試(installation testing)

4.1.2 按測試目的分類

1) 正確性測試(correctness testing)

① 白盒測試(white-box)

② 黑盒測試(black-box)

2) 性能測試(performance testing)

3) 可靠性測試(reliability testing)

① 強壯性測試(robustness, strong testing)

② 異常處理測試(exception handling testing)

③ 負載測試(stress, load testing)

4) 安全性測試(security testing)

4.1.3 按測試對象分類

1) 單元測試(unit testing)

2) 組件測試(component testing)

3) 模塊測試(module testing)

4) 程序測試(program testing)

5) 系統測試(system testing)

6) 文檔測試(documentation testing)

4.1.4 按測試過程分類

1) 需求階段的測試(requirements phase testing)

2) 設計階段的測試(design phase testing)

3) 程序階段的測試(program phase testing)

4) 測試結果的評估(evaluating test results)

5) 安裝測試(installation testing)

6) 驗收測試(acceptance testing)

7) 測試變化:維護(testing changes:maintenance)

4.2 測試的不同階段

軟件測試是軟件開發過程中的重要內容之一,是軟件質量保證的關鍵。軟件測試貫穿軟件產品開發的整個生命周期。軟件項目一開始,軟件測試了就開始了,從產品的需求分析審查到最后的驗收測試、安裝測試結束。整個過程如圖2所示。

從過程來看,軟件測試是由一系列的不同測試階段所組成的。軟件測試貫穿于軟件開發的整個過程,在開發的任何階段,測試資源至少有一項相關的活動。

4.2.1 軟件項目計劃階段

軟件項目計劃及相關的時間表(包括整體的軟件測試計劃)建立起來時,進行的測試工作就是評審項目計劃以保證所有的測試任務已經被包含進去,并被安排了合適的時間長度。項目初期為這些任務分配資源時,仍然可以提出任何有關潛在資源分配的問題。

4.2.2 軟件需求分析階段

搜集和編寫需求時,就要開始編寫測試計劃,列出測試的所有步驟及相關假設和約束,同時通過嚴格的檢查和評審需求,以求清楚、完整和可測試性。這就意味著盡早防止缺陷在代碼中出現,等到將來的測試階段再發現缺陷,改正的代價就更高了。需求分析階段,建立系統測試計劃,同時開始準備確認測試計劃。

4.2.3 軟件設計階段

將需求分析階段建立的系統測試計劃加以細化更新,進行系統測試設計,將確認測試計劃加以細化,進行確認測試設計。概要設計階段完成集成測試計劃,并且在詳細設計階段加以細化更新,進行集成測試設計,詳細設計階段也要完成單元測試計劃。單元測試的測試計劃應該根據被測單元的性質而制定,如對系統控制單元應主要采用結構測試,對復雜的計算單元應主要采用算法分析測試用例,對界面單元就應該測試各種選項的組合等。

4.2.4 編碼與單元測試階段

此階段將系統測試設計、確認測試設計、集成測試設計最終確定下來。根據單元測試計劃建立單元測試環境,完成單元測試設計。單元測試集中檢查軟件設計的最小單位--模塊上。一個模塊編碼完成后,如果代碼已經無錯誤地通過編譯或匯編,并且已經對代碼進行了可能的預處理,就可以采用代碼走查和代碼審查相結合的方式對代碼進行靜態分析。完成代碼的靜態分析之后,就開始執行單元測試。單元測試的目的存于發現各模塊內部的錯誤,以確保受測試模塊內部的一致性與邏輯正確,并使排錯工作易于進行。

4.2.5 綜合測試階段

主要包括以下測試:

1) 集成測試

對于已經完成單元測試,并且已經置于測試配置管理之下的相關的軟件模塊,按照集成測試設計,開始進行集成測試。集成測試是將多個模塊連接起來,以發現概要設計中模塊之間接口設計的問題,其目的是檢查模塊是否已正確地合成為滿足規格說明的產品。集成測試階段與編碼及單元測試階段在時間上有一部分是重疊的,是并行的過程。需要注意的是,重要的模塊應該先測試并集成。集成測試結束之后,完成集成測試報告。

2) 確認測試

確認集成測試完成以后,分散開發的模塊被連接起來,構成完整的程序。各模塊之問的接口存在的種種問題都已消除,于是測試工作進入確認測試階段。目的是檢查所開發的軟件是否達到了用戶需求說明中的要求。若能達到這一要求,則認為開發的軟件是合格的。確認測試結束之后,完成確認測試報告。

3) 系統測試

由于軟件只是計算機系統的一個組成部分,軟件開發完成以后,還要與計算機硬件、外設、某些支持軟件、數據和人員等其他系統元素結合在一起,在實際運行(使用)環境下,對計算機系統進行全面檢驗,這樣的做法涉及到軟件需求以及軟件與系統中其他方面的關系。

系統測試結束之后,完成系統測試報告。系統測試應交付的文檔有:系統測試分析報告、最終的用戶手冊和操作手冊、項目開發總結報告。

4.2.6 運行維護階段

為確保軟件產品在初次交付和安裝后能夠在用戶環境中良好地運行,需對軟件進行有效維護。外部發現的缺陷一旦報告給支持部門,測試小組就要分析缺陷報告,確定缺陷是否可再生以及是否在發布之前就已經知道 。根據維護計劃的規定將準備修改的問題進行匯總,填寫軟件問題匯總表。每次維護活動結束后,原則上填寫一次維護報告,維護報告經部門經理審查后作為維護記錄存放。

軟件測試是保障軟件質量的重要手段,但它不是萬能的,不能取代其他軟件質量保障手段。完整的軟件質量保障活動應該貫穿整個軟件生存周期,包括評審、檢查、審查、設計方法學和開發環境、文檔編制、標準、規范、約定及度量、培訓、管理等。軟件質量需要綜合運用包括軟件測試在內的諸多手段才能得到最有力的保障。

參考文獻:

[1] 賀平.軟件測試技術[M].北京:機械工業出版社,2004.

[2] Patton R.軟件測試[M].張小松,譯.北京:機械工業出版社,2006.

[3] 朱少民.軟件測試方法和技術[M].北京:清華大學出版社,2005.

[4] Glenford J.Myers.軟件測試的藝術[M].2版.王峰, 陳杰,譯.北京:機械工業出版社,2005.

主站蜘蛛池模板: 欧美97色| 日韩成人高清无码| 国产成年女人特黄特色毛片免 | 一本久道久综合久久鬼色 | 亚洲av片在线免费观看| 欧美亚洲欧美区| 国产精品男人的天堂| 国产亚洲欧美另类一区二区| 免费高清毛片| 国产精品所毛片视频| 人与鲁专区| 呦视频在线一区二区三区| 制服丝袜在线视频香蕉| 国产精品久久久久久久久久久久| 色悠久久久久久久综合网伊人| 欧美日韩一区二区在线免费观看| 在线看片中文字幕| 亚洲成人黄色网址| 色妺妺在线视频喷水| 亚洲第一极品精品无码| 福利在线不卡| 欧美一区中文字幕| 九色在线视频导航91| 青青草一区二区免费精品| 亚洲国产精品日韩专区AV| 国产18在线播放| 91丝袜美腿高跟国产极品老师| 综合人妻久久一区二区精品 | 精品国产网站| 国产成人精品免费视频大全五级| 国产91导航| 91人妻日韩人妻无码专区精品| 伊人久久大线影院首页| 久久国产亚洲偷自| 露脸真实国语乱在线观看| 精品99在线观看| 国产亚洲精品97AA片在线播放| 国内精品小视频福利网址| 2020精品极品国产色在线观看| 一区二区在线视频免费观看| 久久婷婷人人澡人人爱91| 亚洲欧美日韩另类在线一| AV色爱天堂网| 国模私拍一区二区| 中文字幕人成人乱码亚洲电影| 特级aaaaaaaaa毛片免费视频| AV天堂资源福利在线观看| 狠狠v日韩v欧美v| 亚洲天堂免费| 在线观看国产精品日本不卡网| 国产精品林美惠子在线播放| 国产成人一级| 青青草原国产av福利网站| 超清无码熟妇人妻AV在线绿巨人| 超薄丝袜足j国产在线视频| 国产成人精品午夜视频'| 成年午夜精品久久精品| 国产黄在线观看| 丰满人妻久久中文字幕| av一区二区三区在线观看| av尤物免费在线观看| 国产一区二区人大臿蕉香蕉| 国产高清国内精品福利| 国产精品一区不卡| 亚洲 欧美 偷自乱 图片 | 免费av一区二区三区在线| 91久久精品国产| 日韩欧美在线观看| 亚洲av日韩av制服丝袜| 极品尤物av美乳在线观看| 国产裸舞福利在线视频合集| 制服丝袜在线视频香蕉| 91精品国产综合久久香蕉922| 99视频在线免费观看| 成人国产免费| 成年看免费观看视频拍拍| 免费毛片网站在线观看| 中文字幕在线永久在线视频2020| 欧美国产菊爆免费观看| 国产精品v欧美| 成人国产免费| 亚洲熟女中文字幕男人总站|