單元測試 單體測試 一個(gè)概念嗎
單體測試簡(jiǎn)單的講就是軟件開(kāi)發(fā)人員把開(kāi)發(fā)完了單個(gè)畫(huà)面或頁(yè)面(web開(kāi)發(fā))提交給獨立的測試人員進(jìn)行的測試的過(guò)程。由于單體測試與其單體關(guān)聯(lián)性不大甚至沒(méi)有關(guān)聯(lián),所以會(huì )有不少人認為單體測試分量不重,太簡(jiǎn)單,從概念上講單體測試確實(shí)簡(jiǎn)單,但是單體測試是以后系統測試的基礎,如果單體測試不過(guò)關(guān)沒(méi)有發(fā)現并曝漏出問(wèn)題,那么對于整個(gè)系統來(lái)說(shuō)將會(huì )存在很大的隱患和風(fēng)險。單元測試,是指對軟件中的最小可測試單元進(jìn)行檢查和驗證。對于單元測試中單元的含義,一般來(lái)說(shuō),要根據實(shí)際情況去判定其具體含義,如C語(yǔ)言中單元指一個(gè)函數,Java里單元指一個(gè)類(lèi),圖形化的軟件中可以指一個(gè)窗口或一個(gè)菜單等??偟膩?lái)說(shuō),單元就是人為規定的最小的被測功能模塊。單元測試是在軟件開(kāi)發(fā)過(guò)程中要進(jìn)行的*別的測試活動(dòng),軟件的獨立單元將在與程序的其他部分相隔離的情況下進(jìn)行測試。
北大青鳥(niǎo)設計培訓:軟件測試的有效方法主要有哪些?
很多人都知道,對于很多軟件開(kāi)發(fā)公司來(lái)說(shuō),無(wú)論什么軟件在進(jìn)行上市之前都需要進(jìn)行不斷的反復測試,需要在保證沒(méi)有任何問(wèn)題的情況下才能投到市面上使用。
在進(jìn)行軟件測試的過(guò)程中,很多人會(huì )有一個(gè)疑問(wèn),什么測試軟件才能很好的測出開(kāi)發(fā)軟件的穩定性呢?在進(jìn)行測試的過(guò)程中,有哪些不錯的測試軟件可以選擇呢?下面南京電腦培訓為大家介紹有效的軟件測試方法。
金字塔模型想要構建一個(gè)全面的測試框架,在進(jìn)行測試之前首先需要進(jìn)行了解金字塔的模型的測試方法。
在之前,很多軟件公司都會(huì )都是使用用戶(hù)界面進(jìn)行軟件測試,還需要工程師直接手動(dòng)操作界面,并且編寫(xiě)自動(dòng)化宏腳本進(jìn)行界面操作。
但是這樣的方法是無(wú)法檢測出代碼存在的問(wèn)題,不同的測試所能檢測的問(wèn)題是不一樣的,下面南京IT培訓介紹重要的幾個(gè)層次。
一、單元測試單元測試主要是用于驗證服務(wù)中類(lèi)方法或函數的行為。
它們在代碼文件中執行類(lèi)方法或函數,提供不同的輸入,并且還能很好的驗證與每個(gè)輸入相對應的輸出。
二、集成測試集成測試主要是用于驗證服務(wù)的外部行為。
能夠通過(guò)測試框架啟動(dòng)服務(wù)實(shí)例,并且調用服務(wù)的外部接口來(lái)執行業(yè)務(wù)邏輯。
三、端到端的測試端到端測試用于驗證多個(gè)服務(wù)之間的交互。
可以在單獨的環(huán)境中啟動(dòng)服務(wù)的多個(gè)實(shí)例,允許服務(wù)實(shí)例之間的交互完成測試。
端到端測試需要由調用的服務(wù)返回的響應驗證網(wǎng)絡(luò )請求。
四、用戶(hù)界面測試用戶(hù)界面測試是在整個(gè)測試中不可缺少的一部分,主要用于驗證整個(gè)平臺的行為,在進(jìn)行測試的過(guò)程中,不僅需要進(jìn)行客戶(hù)端的邏輯測試,還可以對測試后系統的邏輯測試,南京IT培訓認為這樣才能很好的保證客戶(hù)端和后端的正常交互。
在進(jìn)行測試過(guò)程中,不能僅僅是為了測試而測試,最重要的是需要了解測試的目的,能夠為客戶(hù)帶來(lái)更好的體驗,保證軟件的良好體驗。
南京北大青鳥(niǎo)能夠為你提供很好的軟件開(kāi)發(fā)平臺,通過(guò)掌握軟件開(kāi)發(fā)基礎進(jìn)行深入了解,為想要學(xué)習軟件開(kāi)發(fā)的人提供更好的平臺。
單元測試與集成測試和系統測試三者之間是什么關(guān)系?
單元測試就是講整體化整為零,一點(diǎn)一點(diǎn)的測試,集成測試就是把零散的全部歸結在一起去測試,系統測試就是使用整體應用到真是環(huán)境下去測試。三者都是測試的關(guān)鍵環(huán)節。
方式不同
單元測試一般由開(kāi)發(fā)小組采用白盒方式來(lái)測試。
集成測試一般由開(kāi)發(fā)小組采用白盒加黑盒的方式來(lái)測試。
系統測試一般由獨立測試小組采用黑盒方式來(lái)測試。
經(jīng)常與單元測試
聯(lián)系起來(lái)的另外一些開(kāi)發(fā)活動(dòng)包括代碼走讀(Code review),靜態(tài)分析(Static analysis)和動(dòng)態(tài)分析(Dynamic analysis)。靜態(tài)分析就是對軟件的源代碼進(jìn)行研讀,查找錯誤或收集一些度量數據,并不需要對代碼進(jìn)行編譯和執行。動(dòng)態(tài)分析就是通過(guò)觀(guān)察軟件運行時(shí)的動(dòng)作,來(lái)提供執行跟蹤,時(shí)間分析,以及測試覆蓋度方面的信息。
軟件測試主要學(xué)什么,在南京有沒(méi)有?
軟件測試的分類(lèi)從是否關(guān)心軟件內部結構和具體實(shí)現的角度劃分
A.白盒測試
B.黑盒測試
C.灰盒測試
從是否執行程序的角度
A.靜態(tài)測試
B.動(dòng)態(tài)測試。
從軟件開(kāi)發(fā)的過(guò)程按階段劃分有
A.單元測試
B.集成測試
C.確認測試
D.系統測試
E.驗收測試
* 測試過(guò)程按4個(gè)步驟進(jìn)行,即單元測試、集成測試、確認測試和系統測試及發(fā)版測試。
* 開(kāi)始是單元測試,集中對用源代碼實(shí)現的每一個(gè)程序單元進(jìn)行測試,檢查各個(gè)程序模塊是否正確地實(shí)現了規定的功能。
* 集成測試把已測試過(guò)的模塊組裝起來(lái),主要對與設計相關(guān)的軟件體系結構的構造進(jìn)行測試。
* 確認測試則是要檢查已實(shí)現的軟件是否滿(mǎn)足了需求規格說(shuō)明中確定了的各種需求,以及軟件配置是否完全、正確。
* 系統測試把已經(jīng)經(jīng)過(guò)確認的軟件納入實(shí)際運行環(huán)境中,與其它系統成份組合在一起進(jìn)行測試。
單元測試 (Unit Testing)
* 單元測試又稱(chēng)模塊測試,是針對軟件設計的最小單位 — 程序模塊,進(jìn)行正確性檢驗的測試工作。其目的在于發(fā)現各模塊內部可能存在的各種差錯。
* 單元測試需要從程序的內部結構出發(fā)設計測試用例。多個(gè)模塊可以平行地獨立進(jìn)行單元測試。
1. 單元測試的內容
* 在單元測試時(shí),測試者需要依據詳細設計說(shuō)明書(shū)和源程序清單,了解該模塊的I/O條件和模塊的邏輯結構,主要采用白盒測試的測試用例,輔之以黑盒測試的測試用例,使之對任何合理的輸入和不合理的輸入,都能鑒別和響應。
(1) 模塊接口測試
* 在單元測試的開(kāi)始,應對通過(guò)被測模塊的數據流進(jìn)行測試。測試項目包括:
– 調用本模塊的輸入參數是否正確;
– 本模塊調用子模塊時(shí)輸入給子模塊的參數是否正確;
– 全局量的定義在各模塊中是否一致;
* 在做內外存交換時(shí)要考慮:
– 文件屬性是否正確;
– OPEN與CLOSE語(yǔ)句是否正確;
– 緩沖區容量與記錄長(cháng)度是否匹配;
– 在進(jìn)行讀寫(xiě)操作之前是否打開(kāi)了文件;
– 在結束文件處理時(shí)是否關(guān)閉了文件;
– 正文書(shū)寫(xiě)/輸入錯誤,
– I/O錯誤是否檢查并做了處理。
(2) 局部數據結構測試
* 不正確或不一致的數據類(lèi)型說(shuō)明
* 使用尚未賦值或尚未初始化的變量
* 錯誤的初始值或錯誤的缺省值
* 變量名拼寫(xiě)錯或書(shū)寫(xiě)錯
* 不一致的數據類(lèi)型
* 全局數據對模塊的影響
(3) 路徑測試
* 選擇適當的測試用例,對模塊中重要的執行路徑進(jìn)行測試。
* 應當設計測試用例查找由于錯誤的計算、不正確的比較或不正常的控制流而導致的錯誤。
* 對基本執行路徑和循環(huán)進(jìn)行測試可以發(fā)現大量的路徑錯誤。
(4) 錯誤處理測試
* 出錯的描述是否難以理解
* 出錯的描述是否能夠對錯誤定位
* 顯示的錯誤與實(shí)際的錯誤是否相符
* 對錯誤條件的處理正確與否
* 在對錯誤進(jìn)行處理之前,錯誤條件是否已經(jīng)引起系統的干預等
(5) 邊界測試
* 注意數據流、控制流中剛好等于、大于或小于確定的比較值時(shí)出錯的可能性。對這些地方要仔細地選擇測試用例,認真加以測試。
* 如果對模塊運行時(shí)間有要求的話(huà),還要專(zhuān)門(mén)進(jìn)行關(guān)鍵路徑測試,以確定最壞情況下和平均意義下影響模塊運行時(shí)間的因素。
2. 單元測試的步驟
* 模塊并不是一個(gè)獨立的程序,在考慮測試模塊時(shí),同時(shí)要考慮它和外界的聯(lián)系,用一些輔助模塊去模擬與被測模塊相聯(lián)系的其它模塊。
– 驅動(dòng)模塊 (driver)
– 樁模塊 (stub) —— 存根模塊
* 如果一個(gè)模塊要完成多種功能,可以將這個(gè)模塊看成由幾個(gè)小程序組成。必須對其中的每個(gè)小程序先進(jìn)行單元測試要做的工作,對關(guān)鍵模塊還要做性能測試。
* 對支持某些標準規程的程序,更要著(zhù)手進(jìn)行互聯(lián)測試。有人把這種情況特別稱(chēng)為模塊測試,以區別單元測試。
集成測試( Testing)
* 集成測試 (集成測試、聯(lián)合測試)
* 通常,在單元測試的基礎上,需要將所有模塊按照設計要求組裝成為系統。這時(shí)需要考慮的問(wèn)題是:
– 在把各個(gè)模塊連接起來(lái)的時(shí)候,穿越模塊接口的數據是否會(huì )丟失;
– 一個(gè)模塊的功能是否會(huì )對另一個(gè)模塊的功能產(chǎn)生不利的影響;
– 各個(gè)子功能組合起來(lái),能否達到預期要求的父功能;
– 全局數據結構是否有問(wèn)題;
– 單個(gè)模塊的誤差累積起來(lái),是否會(huì )放大,從而達到不能接受的程度。
在單元測試的同時(shí)可進(jìn)行集成測試,
發(fā)現并排除在模塊連接中可能出現
的問(wèn)題,最終構成要求的軟件系統。
* 子系統的集成測試特別稱(chēng)為部件測試,它所做的工作是要找出集成后的子系統與系統需求規格說(shuō)明之間的不一致。
* 通常,把模塊集成成為系統的方式有兩種
– 一次性集成方式
– 增殖式集成方式
1. 一次性集成方式(big bang)
* 它是一種非增殖式組裝方式。也叫做整體拼裝。
* 使用這種方式,首先對每個(gè)模塊分別進(jìn)行模塊測試,然后再把所有模塊組裝在一起進(jìn)行測試,最終得到要求的軟件系統。
2. 增殖式集成方式
* 這種集成方式又稱(chēng)漸增式集成
* 首先對一個(gè)個(gè)模塊進(jìn)行模塊測試,然后將這些模塊逐步組裝成較大的系統
* 在集成的過(guò)程中邊連接邊測試,以發(fā)現連接過(guò)程中產(chǎn)生的問(wèn)題
* 通過(guò)增殖逐步組裝成為要求的軟件系統。
(1) 自頂向下的增殖方式
* 這種集成方式將模塊按系統程序結構,沿控制層次自頂向下進(jìn)行組裝。
* 自頂向下的增殖方式在測試過(guò)程中較早地驗證了主要的控制和判斷點(diǎn)。
* 選用按深度方向組裝的方式,可以首先實(shí)現和驗證一個(gè)完整的軟件功能。
(2) 自底向上的增殖方式
* 這種集成的方式是從程序模塊結構的*層的模塊開(kāi)始集成和測試。
* 因為模塊是自底向上進(jìn)行組裝,對于一個(gè)給定層次的模塊,它的子模塊(包括子模塊的所有下屬模塊)已經(jīng)組裝并測試完成,所以不再需要樁模塊。在模塊的測試過(guò)程中需要從子模塊得到的信息可以直接運行子模塊得到。
* 自頂向下增殖的方式和自底向上增殖的方式各有優(yōu)缺點(diǎn)。
* 一般來(lái)講,一種方式的優(yōu)點(diǎn)是另一種方式的缺點(diǎn)。
(3) 混合增殖式測試
* 衍變的自頂向下的增殖測試
– 首先對輸入/輸出模塊和引入新算法模塊進(jìn)行測試;
– 再自底向上組裝成為功能相當完整且相對獨立的子系統;
– 然后由主模塊開(kāi)始自頂向下進(jìn)行增殖測試。
* 自底向上-自頂向下的增殖測試
– 首先對含讀操作的子系統自底向上直至根結點(diǎn)模塊進(jìn)行組裝和測試;
– 然后對含寫(xiě)操作的子系統做自頂向下的組裝與測試。
* 回歸測試
– 這種方式采取自頂向下的方式測試被修改的模塊及其子模塊;
– 然后將這一部分視為子系統,再自底向上測試。
關(guān)鍵模塊問(wèn)題
* 在組裝測試時(shí),應當確定關(guān)鍵模塊,對這些關(guān)鍵模塊及早進(jìn)行測試。
* 關(guān)鍵模塊的特征:
① 滿(mǎn)足某些軟件需求;
② 在程序的模塊結構中位于較高的層次(高層控制模塊);
③ 較復雜、較易發(fā)生錯誤;
④ 有明確定義的性能要求。
確認測試( Testing)
* 確認測試又稱(chēng)有效性測試。任務(wù)是驗證軟件的功能和性能及其它特性是否與用戶(hù)的要求一致。
* 對軟件的功能和性能要求在軟件需求規格說(shuō)明書(shū)中已經(jīng)明確規定。它包含的信息就是軟件確認測試的基礎。
1. 進(jìn)行有效性測試(黑盒測試)
* 有效性測試是在模擬的環(huán)境 (可能就是開(kāi)發(fā)的環(huán)境) 下,運用黑盒測試的方法,驗證被測軟件是否滿(mǎn)足需求規格說(shuō)明書(shū)列出的需求。
* 首先制定測試計劃,規定要做測試的種類(lèi)。還需要制定一組測試步驟,描述具體的測試用例。
* 通過(guò)實(shí)施預定的測試計劃和測試步驟,確定
– 軟件的特性是否與需求相符;
– 所有的文檔都是正確且便于使用;
– 同時(shí),對其它軟件需求,例如可移植性、兼容性、出錯自動(dòng)恢復、可維護性等,也都要進(jìn)行測試
* 在全部軟件測試的測試用例運行完后,所有的測試結果可以分為兩類(lèi):
– 測試結果與預期的結果相符。這說(shuō)明軟件的這部分功能或性能特征與需求規格說(shuō)明書(shū)相符合,從而這部分程序被接受。
– 測試結果與預期的結果不符。這說(shuō)明軟件的這部分功能或性能特征與需求規格說(shuō)明不一致,因此要為它提交一份問(wèn)題報告。
2. 軟件配置復查
n 軟件配置復查的目的是保證
u 軟件配置的所有成分都齊全;
u 各方面的質(zhì)量都符合要求;
u 具有維護階段所必需的細節;
u 而且已經(jīng)編排好分類(lèi)的目錄。
n 應當嚴格遵守用戶(hù)手冊和操作手冊中規定的使用步驟,以便檢查這些文檔資料的完整性和正確性。
驗收測試( Testing)
* 在通過(guò)了系統的有效性測試及軟件配置審查之后,就應開(kāi)始系統的驗收測試。
* 驗收測試是以用戶(hù)為主的測試。軟件開(kāi)發(fā)人員和QA(質(zhì)量保證)人員也應參加。
* 由用戶(hù)參加設計測試用例,使用生產(chǎn)中的實(shí)際數據進(jìn)行測試。
* 在測試過(guò)程中,除了考慮軟件的功能和性能外,還應對軟件的可移植性、兼容性、可維護性、錯誤的恢復功能等進(jìn)行確認。
* 確認測試應交付的文檔有:
– 確認測試分析報告
– 最終的用戶(hù)手冊和操作手冊
– 項目開(kāi)發(fā)總結報告。
系統測試(System Testing)
* 系統測試,是將通過(guò)確認測試的軟件,作為整個(gè)基于計算機系統的一個(gè)元素,與計算機硬件、外設、某些支持軟件、數據和人員等其它系統元素結合在一起,在實(shí)際運行環(huán)境下,對計算機系統進(jìn)行一系列的組裝測試和確認測試。
* 系統測試的目的在于通過(guò)與系統的需求定義作比較, 發(fā)現軟件與系統的定義不符合或與之矛盾的地方。
軟件測試流程有幾個(gè)階段
軟件測試一般分為4個(gè)階段:?jiǎn)卧獪y試、集成測試、系統測試、驗收測試。
軟件測試是貫穿整個(gè)軟件生命周期的,軟件測試的對象包括軟件需求、概要設計、詳細設計、軟件運行環(huán)境、可運行程序和軟件源代碼等。
軟件測試包括質(zhì)量、人員、資源、技術(shù)和流程要素,以及測試覆蓋率和測試效率兩個(gè)目標。
單元測試:?jiǎn)卧獪y試是針對軟件設計的最小單位--程序模塊甚至代碼段進(jìn)行正確性檢驗的測試工作,通常由開(kāi)發(fā)人員進(jìn)行。
對于單元測試中單元的含義,一般來(lái)說(shuō),要根據實(shí)際情況去判定其具體含義,如C語(yǔ)言中單元指一個(gè)函數,Java里單元指一個(gè)類(lèi),圖形化的軟件中可以指一個(gè)窗口或一個(gè)菜單等。
軟件測試的基本流程(重點(diǎn))。
1、測試需求分析階段:閱讀需求,理解需求,主要就是對業(yè)務(wù)的學(xué)習,分析需求點(diǎn),參與需求評審會(huì )議。
2、測試計劃階段:主要任務(wù)就是編寫(xiě)測試計劃,參考軟件需求規格說(shuō)明書(shū),項目總體計劃,內容包括測試范圍(來(lái)自需求文檔),進(jìn)度安排,人力物力的分配,整體測試策略的制定。風(fēng)險評估與規避措施有一個(gè)制定。
3、測試設計階段:主要是編寫(xiě)測試用例,會(huì )參考需求文檔(原型圖),概要設計,詳細設計等文檔,用例編寫(xiě)完成之后會(huì )進(jìn)行評審。
4、測試執行階段:搭建環(huán)境,執行冒煙測試(預測試)然后進(jìn)入正式測試,bug管理直到測試結束。
5、測試評估階段:出測試報告,確認是否可以上線(xiàn)。