軟件測試筆記(十三)單元測試的介紹和工具選擇

前言

單元測試一般是做爲軟件測試中基礎的測試類型,用於測試單獨的模塊是否能夠正常工做。它於功能測試不一樣,它更加關注的是代碼內部的邏輯,而非是用戶的需求。javascript

單元測試定義

前面粗略了介紹了單元測試的定義,詳細的解釋是:單元測試也稱爲模塊測試或組件測試。在軟件開發過程當中,檢查軟件的單個單元或模塊是否正常工做,它是由開發人員在開發人員的環境中完成的。php

image.png

軟件測試一般劃分爲四個層次,每一個層次都會去驗證軟件產品的功能,質量和性能指標。它們是:單元測試,集成測試,系統測試和驗收測試。java

單元測試的目標

  • 隔離代碼的每一個部分。
  • 確保單個模塊功能正確。
  • 在開發週期的早期,發現代碼缺陷。
  • 早期介入,以節省測試成本。
  • 容許開發人員在之後重構或升級代碼。

單元測試的優點

  • 它在產品開發週期的早期發現問題。所以它下降了測試成本,早發現一個缺陷的成本要比晚發現它的成本低得多。
  • 在改變現有功能(迴歸測試)時,它同時能夠保證減小缺陷。
  • 它簡化了調試過程(測試驅動開發就是基於測試用例來完成功能開發)。調試是在程序中發現並解決妨礙軟件正確運行的缺陷的過程。當實現單元測試時,發現測試失敗時,只須要調試代碼中所作的更改,就能夠快速定位到錯誤。
  • 因爲更好的編碼標準和實踐,它給組織提供了更好的代碼文檔。

單元測試的內容

單元測試的方法

一般單元測試是使用白盒測試的方法node

單元測試的類型

單元測試能夠是手動測試或者是自動化測試git

何時執行單元測試

它做爲測試層次的第一層,一般是在集成測試以前完成。程序員

單元測試有誰執行

它須要由對於代碼內部邏輯熟悉的人執行,一般是開發或者是白盒測試人員。github

單元測試有哪些具體的任務

首先須要準備單元測試計劃:api

  • 準備測試計劃
  • 回顧測試計劃
  • 修訂測試計劃
  • 定義單元測試計劃的基準數據

其次是要準備測試用例和腳本:瀏覽器

  • 準備測試環境和測試用例和腳本
  • 回顧測試用例和腳本
  • 修訂測試用例和腳本
  • 定義單元測試用例和腳本的基準數據

最後是單元測試的執行。安全

單元測試的工具

市面上有不少單元測試的工具,它們可用於協助單元測試。具體的單元測試的工具的選擇仍是要根據項目的具體狀況決定,好比說項目的具體技術棧,是否能夠重用已有的單元測試工具等。咱們將提供如下幾個示例:

Junit:
Junit的目標是爲JVM開發人員開發一個基礎測試的測試框架。這包括關注java 8和更高版本,以及支持多種不一樣風格的測試。

TestNG:
TestNG是一個受JUnit和NUnit啓發的測試框架,可是它引入了一些新的功能,這些功能使它更增強大和易於使用,例如:

  • 註釋。
  • 使用各類可用的策略在任意大的線程池中運行測試(全部方法都在本身的線程中,每一個測試類一個線程,等等)。
  • 測試您的代碼是不是多線程安全的。
  • 靈活的測試配置。
  • 支持數據驅動測試(使用@dataprovider)。
  • 參數支持。
  • 強大的執行模型(再也不是TestSuite)。
  • 由各類工具和插件(eclipse、idea、maven等)支持。
  • 嵌入BeanShell以得到更大的靈活性。
  • 運行時和日誌記錄的默認JDK函數(無依賴項)。
  • 應用服務器測試的依賴方法。.

NUnit:
它是.net語言的單元測試框架。最初是從JUnit移植而來的,目前的產品版本3已經被徹底重寫了,它有許多新特性,而且支持各類各樣的.NET平臺。

xUnit.net:
xUnit.net是一個免費的、開源的、面向社區的.net框架單元測試工具xunit.net是由nunit v2的原始發明者編寫的,它是用於c、f、vb.net和其餘.net語言單元測試的最新技術。xunit.net與resharper、coderash、testdriven.net和xamarin一塊兒工做。它是.NET基金會的一部分,根據他們的行爲準則運做。它是根據Apache 2(OSI批准的許可證)受權的。

JMockit
JMockit是開源的單元測試工具jmockit是一個用於開發人員測試的java工具包,包括模擬api和代碼覆蓋工具。

EMMA
EMMA是一個用於測量和報告java代碼覆蓋率的開源工具包。EMMA支持大規模的企業軟件開發,同時保持單個開發人員的快速工做和迭代團隊中的每一個開發人員如今均可以避免費得到代碼覆蓋率,最主要的是能夠很快的得到覆蓋率!

PHPUnit
PHPUnit是一個面向程序員的php測試框架。它是單元測試框架的xunit架構的一個實例。

Cantata:
Cantata是一個單元和集成測試工具,使開發人員可以在本地和嵌入式目標平臺上驗證標準兼容或業務關鍵代碼。
Cantata經過自動化,幫助加速符合標準的動態測試要求:

  • 測試框架生成
  • 測試用例生成
  • 測試執行
  • 結果診斷和報告生成

TestComplete:
TestComplete是一個適用於多種應用類型和技術的自動化測試環境,包括(但不限於)Windows、.NET、WPF、Visual C++、Visual Basic、Delphi、C++Builder、Java和Web應用程序和服務。

Mocha:
Mocha是一個功能豐富的javascript測試框架,運行在node.js和瀏覽器中,使異步測試變得簡單有趣。MOCA測試連續運行,容許靈活且準確的報告,同時將異常異常映射到正確的測試用例。託管在github上。

Jasmine:
Jasmine是一個用於測試JavaScript代碼的行爲驅動開發框架它不依賴於任何其餘JavaScript框架它不須要dom。並且它有一個乾淨、明顯的語法,因此您能夠輕鬆地編寫測試。

總結

單元測試做爲測試的第一層次,被很早引入項目。因此在項目開始前,咱們同時須要對單元測試的技術選型和測試案例的計劃進行準備。這樣才能夠在項目研發階段,同時實現單元測試,以保證功能模塊的功能。若是大夥有關於單元測試的一些見解,也請留言區回覆和分享。

相關文章
相關標籤/搜索