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