我是java程序員出身,后來(lái)因?yàn)楣ぷ髟蜣D(zhuǎn)到到了測(cè)試開(kāi)發(fā)崗位。測(cè)試開(kāi)發(fā)工作很多年后,現(xiàn)在是一名自由職業(yè)者
1、什么是單元測(cè)試
2、該怎么做單元測(cè)試
一、什么是單元測(cè)試?
單元測(cè)試(unit testing),是指對(duì)軟件中的最小可測(cè)試單元進(jìn)行檢查和驗(yàn)證。至于“單元”的大小或范圍,并沒(méi)有一個(gè)明確的標(biāo)準(zhǔn),“單元”可以是一個(gè)函數(shù)、方法、類、功能模塊或者子系統(tǒng)。
單元測(cè)試通常和白盒測(cè)試聯(lián)系到一起,如果單從概念上來(lái)講兩者是有區(qū)別的,不過(guò)我們通常所說(shuō)的“單元測(cè)試”和“白盒測(cè)試”都認(rèn)為是和代碼有關(guān)系的,所以在某些語(yǔ)境下也通常認(rèn)為這兩者是同一個(gè)東西。還有一種理解方式,單元測(cè)試和白盒測(cè)試就是對(duì)開(kāi)發(fā)人員所編寫(xiě)的代碼進(jìn)行測(cè)試。
提示:概念這個(gè)東西大概理解是什么意思即可~
二、單元測(cè)試誰(shuí)來(lái)做?
想一想:前面我們介紹了,單元測(cè)試簡(jiǎn)單理解就是對(duì)開(kāi)發(fā)人員所編寫(xiě)的代碼進(jìn)行測(cè)試,既然和代碼相關(guān)我們第一感覺(jué)那應(yīng)該是“開(kāi)發(fā)人員來(lái)做”;再一看單元測(cè)試包含“測(cè)試”兩個(gè)字,那么“測(cè)試人員來(lái)做”也應(yīng)該是合理的吧。
單元測(cè)試一般是有開(kāi)發(fā)人員或測(cè)試人員來(lái)做。誰(shuí)來(lái)做并沒(méi)有一個(gè)絕對(duì)的標(biāo)準(zhǔn),要根據(jù)公司的實(shí)際情況來(lái)決定。接下來(lái)我們分析一下開(kāi)發(fā)人員或測(cè)試人員做單元測(cè)試的優(yōu)缺點(diǎn):
開(kāi)發(fā)人員做單元測(cè)試:
- 優(yōu)點(diǎn):開(kāi)發(fā)人員對(duì)代碼最熟悉,而且開(kāi)發(fā)人員編程技能相對(duì)比較強(qiáng),所以開(kāi)發(fā)人員自己寫(xiě)單元測(cè)試效率上和覆蓋率上都比較高
- 缺點(diǎn):開(kāi)發(fā)人員平時(shí)寫(xiě)業(yè)務(wù)代碼就要花費(fèi)很多時(shí)間,有時(shí)候確實(shí)沒(méi)有時(shí)間寫(xiě)單元測(cè)試;而且大部分開(kāi)發(fā)人員沒(méi)有太好的測(cè)試思想,單元測(cè)試可能只是寫(xiě)個(gè)最簡(jiǎn)單的用例就完了;自己寫(xiě)的代碼自己測(cè),往往都是不靠譜!
測(cè)試人員做單元測(cè)試:
- 優(yōu)點(diǎn):測(cè)試人員有比較系統(tǒng)的測(cè)試思想,可以更好地保證用例的覆蓋。而且通過(guò)寫(xiě)單測(cè)測(cè)試能更好地了解具體代碼結(jié)構(gòu)、流程,對(duì)于后續(xù)的業(yè)務(wù)測(cè)試也非常有利。
- 缺點(diǎn):測(cè)試人員的編程技能相對(duì)比較弱,如果不同編程是無(wú)法開(kāi)展單元測(cè)試的。并且測(cè)試人員對(duì)代碼沒(méi)有開(kāi)發(fā)人員熟悉,效率會(huì)比較低。
現(xiàn)在我也找了很多測(cè)試的朋友,做了一個(gè)分享技術(shù)的交流群,共享了很多我們收集的技術(shù)文檔和視頻教程。
如果你不想再體驗(yàn)自學(xué)時(shí)找不到資源,沒(méi)人解答問(wèn)題,堅(jiān)持幾天便放棄的感受
可以加入我們一起交流。而且還有很多在自動(dòng)化,性能,安全,測(cè)試開(kāi)發(fā)等等方面有一定建樹(shù)的技術(shù)大牛
分享他們的經(jīng)驗(yàn),還會(huì)分享很多直播講座和技術(shù)沙龍
可以免費(fèi)學(xué)習(xí)!劃重點(diǎn)!開(kāi)源的?。。?qq群號(hào):110685036
三、單元測(cè)試怎么做?
單元測(cè)試的實(shí)現(xiàn)方式包括:人工靜態(tài)檢查、動(dòng)態(tài)執(zhí)行跟蹤
- 人工靜態(tài)檢查:就是通常所說(shuō)的“代碼走讀”,主要是保證代碼邏輯的正確性
- 動(dòng)態(tài)執(zhí)行跟蹤:就是把程序代碼運(yùn)行起來(lái),檢查實(shí)際的運(yùn)行結(jié)果和預(yù)期結(jié)果是否一致
人工靜態(tài)檢查
人工靜態(tài)檢查包含的主要內(nèi)容:
- 檢查算法的邏輯正確性
- 模塊接口的正確性檢查
- 輸入?yún)?shù)有沒(méi)有作正確性檢查
- 調(diào)用其他方法接口的正確性
- 異常錯(cuò)誤處理
- 保證表達(dá)式、SQL語(yǔ)句的正確性
- 檢查常量或全局變量使用的正確性
- 程序風(fēng)格的一致性、規(guī)范性
- 檢查代碼注釋是否完整
動(dòng)態(tài)執(zhí)行跟蹤
動(dòng)態(tài)執(zhí)行跟蹤需要編寫(xiě)測(cè)試腳本調(diào)用業(yè)務(wù)代碼進(jìn)行測(cè)試,為了更好的管理維護(hù)測(cè)試腳本,一般會(huì)采用單元測(cè)試框架來(lái)管理,不同的語(yǔ)言有不同的單元測(cè)試框架:
- Java:JUnit、TestNG
- Python:UintTest、pyTest
單元測(cè)試的一個(gè)重要的衡量標(biāo)準(zhǔn)就是代碼覆蓋率,盡量做到代碼的全覆蓋。常見(jiàn)單元測(cè)試覆蓋標(biāo)準(zhǔn):
- 語(yǔ)句覆蓋
- 分支覆蓋
- 條件覆蓋
- 分支-條件覆蓋
- 條件組合覆蓋
- 路徑覆蓋
入門(mén)示例:針對(duì)開(kāi)發(fā)人員編寫(xiě)的實(shí)現(xiàn)計(jì)算操作的方法進(jìn)行單元測(cè)試
# 開(kāi)發(fā)人員編寫(xiě)的業(yè)務(wù)代碼
class CalUtil:
"""計(jì)算器"""
@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
# 單元測(cè)試腳本
import unittest
from test_ut.cal import CalUtil
class TestCal(unittest.TestCase):
def test_add_01(self):
# 測(cè)試數(shù)據(jù)
x = 1
y = 2
expect = 3
# 調(diào)用被測(cè)方法
result = CalUtil.add(x, y)
print(f"result={result}")
# 斷言
self.assertEqual(expect, result)
def test_add_02(self):
# 測(cè)試數(shù)據(jù)
x = 1
y = -1
expect = 0
# 調(diào)用被測(cè)方法
result = CalUtil.add(x, y)
print(f"result={result}")
# 斷言
self.assertEqual(expect, result)
# ...
單元測(cè)試基本等同于白盒測(cè)試,所以若想對(duì)于單元測(cè)試有更深入的了解,可以更加深入的學(xué)習(xí)!文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-723379.html
今天的分享就到此結(jié)束了, 如果文章對(duì)你有幫助,記得點(diǎn)贊,收藏,加關(guān)注。會(huì)不定期分享一些干貨哦......?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-723379.html
到了這里,關(guān)于【一文清晰】單元測(cè)試到底是什么?應(yīng)該怎么做?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!