我是java程式員出身,后來因為作業原因轉到到了測驗開發崗位,測驗開發作業很多年后,現在是一名自由職業者
1、什么是單元測驗
2、該怎么做單元測驗
一、什么是單元測驗?
單元測驗(unit testing),是指對軟體中的最小可測驗單元進行檢查和驗證,至于“單元”的大小或范圍,并沒有一個明確的標準,“單元”可以是一個函式、方法、類、功能模塊或者子系統,
單元測驗通常和白盒測驗聯系到一起,如果單從概念上來講兩者是有區別的,不過我們通常所說的“單元測驗”和“白盒測驗”都認為是和代碼有關系的,所以在某些語境下也通常認為這兩者是同一個東西,還有一種理解方式,單元測驗和白盒測驗就是對開發人員所撰寫的代碼進行測驗,
提示:概念這個東西大概理解是什么意思即可~

二、單元測驗誰來做?
想一想:前面我們介紹了,單元測驗簡單理解就是對開發人員所撰寫的代碼進行測驗,既然和代碼相關我們第一感覺那應該是“開發人員來做”;再一看單元測驗包含“測驗”兩個字,那么“測驗人員來做”也應該是合理的吧,
單元測驗一般是有開發人員或測驗人員來做,誰來做并沒有一個絕對的標準,要根據公司的實際情況來決定,接下來我們分析一下開發人員或測驗人員做單元測驗的優缺點:
開發人員做單元測驗:
- 優點:開發人員對代碼最熟悉,而且開發人員編程技能相對比較強,所以開發人員自己寫單元測驗效率上和覆寫率上都比較高
- 缺點:開發人員平時寫業務代碼就要花費很多時間,有時候確實沒有時間寫單元測驗;而且大部分開發人員沒有太好的測驗思想,單元測驗可能只是寫個最簡單的用例就完了;自己寫的代碼自己測,往往都是不靠譜!
測驗人員做單元測驗:
- 優點:測驗人員有比較系統的測驗思想,可以更好地保證用例的覆寫,而且通過寫單測測驗能更好地了解具體代碼結構、流程,對于后續的業務測驗也非常有利,
- 缺點:測驗人員的編程技能相對比較弱,如果不同編程是無法開展單元測驗的,并且測驗人員對代碼沒有開發人員熟悉,效率會比較低,

三、單元測驗怎么做?
單元測驗的實作方式包括:人工靜態檢查、動態執行跟蹤
- 人工靜態檢查:就是通常所說的“代碼走讀”,主要是保證代碼邏輯的正確性
- 動態執行跟蹤:就是把程式代碼運行起來,檢查實際的運行結果和預期結果是否一致
人工靜態檢查
人工靜態檢查包含的主要內容:
- 檢查演算法的邏輯正確性
- 模塊介面的正確性檢查
- 輸入引數有沒有作正確性檢查
- 呼叫其他方法介面的正確性
- 例外錯誤處理
- 保證運算式、SQL陳述句的正確性
- 檢查常量或全域變數使用的正確性
- 程式風格的一致性、規范性
- 檢查代碼注釋是否完整
動態執行跟蹤
動態執行跟蹤需要撰寫測驗腳本呼叫業務代碼進行測驗,為了更好的管理維護測驗腳本,一般會采用單元測驗框架來管理,不同的語言有不同的單元測驗框架:
- Java:JUnit、TestNG
- Python:UintTest、pyTest
單元測驗的一個重要的衡量標準就是代碼覆寫率,盡量做到代碼的全覆寫,常見單元測驗覆寫標準:
- 陳述句覆寫
- 分支覆寫
- 條件覆寫
- 分支-條件覆寫
- 條件組合覆寫
- 路徑覆寫
入門示例:針對開發人員撰寫的實作計算操作的方法進行單元測驗
# 開發人員撰寫的業務代碼
class CalUtil:
"""計算器"""
@staticmethod
def add(x, y):
"""加法"""
return x + y
@staticmethod
def sub(x, y):
"""減法"""
return x - y
@staticmethod
def mul(x, y):
"""乘法"""
return x * y
@staticmethod
def div(x, y):
"""除法"""
return x / y
# 單元測驗腳本
import unittest
from test_ut.cal import CalUtil
class TestCal(unittest.TestCase):
def test_add_01(self):
# 測驗資料
x = 1
y = 2
expect = 3
# 呼叫被測方法
result = CalUtil.add(x, y)
print(f"result={result}")
# 斷言
self.assertEqual(expect, result)
def test_add_02(self):
# 測驗資料
x = 1
y = -1
expect = 0
# 呼叫被測方法
result = CalUtil.add(x, y)
print(f"result={result}")
# 斷言
self.assertEqual(expect, result)
# ...
單元測驗基本等同于白盒測驗,所以若想對于單元測驗有更深入的了解,可以
最后感謝每一個認真閱讀我文章的人,看著粉絲一路的上漲和關注,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:

這些資料,對于【軟體測驗】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴上萬個測驗工程師們走過最艱難的路程,希望也能幫助到你!
在我的QQ技術交流群里(技術交流和資源共享,廣告勿擾)
可以自助拿走,群號:175317069 群里的免費資料都是筆者十多年測驗生涯的精華,還有同行大神一起交流技術哦

敲字不易,如果此文章對你有幫助的話,點個贊收個藏,給作者一個鼓勵,也方便你下次能夠快速查找,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/294644.html
標籤:其他
