軟件測試之單元測試
按測試階段,軟件測試分爲單元測試、集成測試、系統測試、驗收測試。本篇經驗介紹單元測試
操作方法
(01)單元測試的概念:單元測試就是對軟件中最小的可測試單元進行檢查和驗證。
(02)如果一個公司裏有一個職位是測試工程師,那麼測試工程師一一般情況下是不會接觸到單元測試的。單元測試一般是針對代碼的,所以一般是由開發人員進行的。一個開發人員開發代碼不僅僅是編碼,其實是包括編碼+單元測試。只有透過了單元測試後,才能將代碼提交到SVN等上。所以,單元測試的一個特性是:單元測試一般是針對代碼的,所以一般是由開發人員進行的。
(03)爲什麼要進行單元測試呢?一個BUG隱藏的時間越久,修復這個BUG的代價就越大,根據調查發現,一個BUG最後修復要比開始就修復的成本高10倍。而單元測試是最早發現BUG的一個階段,也是修改BUG付出代價最小的一個階段,所以單元測試是非常重要的。
(04)可是,許多軟件項目在開發的過程中根本就沒有單元測試,甚至許多開發人員從來沒有寫過單元測試,這是爲什麼呢?首先比較重要的一點是,現在許多軟件項目都特別的強調進度,而單元測試的代碼可能比實際項目的代碼還要多,除去單元測試確實減少了很多時間,但卻是以項目質量以及後續大量的產品維護爲代價,其實是得不償失的;而且,有許多開發人員就是爲了寫單元測試而寫單元測試,就像是應付差事、應付領導,沒有意識到單元測試的重要性,根本發現不了問題。種種原因導致,許多軟件項目中單元測試都缺失了,這其實是項目管理的責任。
(05)單元測試是一個方法層面的測試,也是粒度最細的測試。用於測試每一個函數、每一個類以及類的每一個方法的功能。舉例說明:類似於C的面向過程的,其測試單元爲每一個函數,函數有輸入數據的參數,也有返回值,我們做單元測試的目的就是保證不同的輸入,其輸出都正確,函數中的每一個邏輯,比如if、else等邏輯都可以走的到,確保這個函數的健壯性。如果是java這種面向對象,其測試單元就是每一個類,測試這個類包括裏面的每一個方法的正確性。
(06)單元測試就是測試一個螺絲釘本身的功能。我們不會去關注這個螺絲釘具體用在什麼地方,和其他零件是否能很好的匹配,我們只關心這個螺絲釘本身有沒有問題,是否符合需求
(07)單元測試的另一個原則就是儘量保證各個測試用例是相互獨立的。比如,我在一個函數A中調用了函數B,現在對函數A進行單元測試,結果出現了問題,那麼問題到底是函數A導致的,還是函數B導致的呢?甚至函數B中又調用了函數C,那我還要去了解函數C的實現嗎?肯定是不行的。所以我們一般會模擬函數B,寫一個模擬b函數,這個函數b將模擬函數B返回一些值給函數A,保證我們寫的函數b沒有問題(只是返回一個值),從而保證在測試函數A的時候,不會受到函數B的影響。
(08)單元測試有非常多的好處:可以儘早的發現缺陷;有利於重構;簡化集成,保證最小單元的穩定性和正確性,之後再搞系統測試的時候,就不需要花時間去確認單元內部是否有問題了;減少文檔,現在提倡代碼級文檔,不需要手動去維護一個專門的文檔,浪費大量的時間。
(09)下面簡單介紹一下幾種單元測試框架JUnit就是一個Java語言的單元測試框架,是一個開放原始碼的Java測試框架,用於編寫和執行可重複的測試。
(10)Instrumentation,是基於JUnit的一個測試框架,可用來測試android的組件。
(11)NunitNUnit是一個單元測試框架,專門針對於來寫的,Nunit和JUnit看起來很像,其實Nunit就是基於JUnit而來的。
(12)PHPUnit看名字就知道,測試PHP的,它是一款輕量級的php測試框架,可以透過命令操控測試腳本,而且功能酷炫,使用起來還特別簡單
(13)CppUnit目前針對C++項目的測試工具中,開源的CppUnit是最著名的測試工具之一。使用CppUnit做C++項目的單元測試非常的方便
特別提示
單元測試不可能覆蓋全部的路徑,不可能無休止的進行測試
-
爬蟲代碼怎麼執行
如何執行爬蟲代碼,爬蟲代碼有很多,這裏列舉最常見的爬蟲代碼的執行方法操作方法(01)開啟python爬蟲代碼的源碼目錄,通常開始檔案爲,,,尋找有沒有類似的python檔案,如果沒有,請看源碼的readme檔案,裏面會有說明,若以上都沒有,你可能需要python方面的知識,自己去看源碼,找到...
-
商用wifi路由器怎麼來設定?怎麼用呢?
不論是餐廳、咖啡廳、足療店,還是機場、商場,只要是人流量大、人羣密集的地方,WiFi已成爲人們連接互聯網的重要上網方式,它在爲人們提供便捷的移動網絡服務同時,也正潛移默化的改變着人們的上網習慣、消費習慣,讓人們更加依賴它。因此不少商家看到了可以藉助WiFi平臺...
-
教你如何刪除和加回自己QQ裏的單向好友
這是2015版QQ的演示,其他版本也差不多操作方法(01)按圖示找到QQ好友管理器(02)陌生人裏的就是單向好友(03)鼠標後鍵選擇想要刪除的好友(04)鼠標後鍵選擇想要加回的好友(05)就是這麼簡單你學會了嗎?...
-
微信openid獲取教程
用微信支付平臺發放紅包必須上傳用戶的微信openid,想要匯出微信openid可以按以下步驟來做。操作方法(01)進入微信openid匯出平臺,根據下圖1更新列表;2重新載入粉絲資訊;3匯出數據;(02)獲得的微信平臺openid數據如下(03)把openid拷貝到t型臺檔案裏,格式如下。(04)匯入到微信商戶平...