自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何做好單元測試

開發(fā) 測試
單元測試是軟件開發(fā)過程中重要的質(zhì)量保證活動,單元測試的質(zhì)量將很大程度上影響軟件產(chǎn)品的最終質(zhì)量。本文從組織、流程和技術(shù)三個方面來闡述了做好單元測試的一些關(guān)鍵因素,可以作為軟件企業(yè)開展單元測試活動的參考。

  單元測試是對軟件基本組成單元進行的測試,是屬于白盒測試的范疇,它主要通過對代碼的邏輯結(jié)構(gòu)進行分析來設(shè)計測試用例。在動態(tài)測試手段中,單元測試是一種非常高效的測試方法,并且是軟件測試周期中第一個進行的測試。從成本角度考慮,缺陷發(fā)現(xiàn)越早越好,加強單元測試力度有利于降低缺陷定位和修復難度,從而降低缺陷解決成本,同時加強單元測試也減輕了后續(xù)集成測試和系統(tǒng)測試的負擔。根據(jù)業(yè)界的統(tǒng)計,一個 BUG 在單元測試階段發(fā)現(xiàn)花費是 1 的話,到集成測試就變?yōu)?10 ,到系統(tǒng)測試就高達 100 ,到實際推向市場量產(chǎn)后就高達 1000 。但單元測試在目前國內(nèi)軟件企業(yè)中開展得并不好,一方面是由于對單元測試重視程度不夠,測試投入不足,另一方面是由于在單元測試實踐方面積累得也不夠,單元測試處于一種摸索狀態(tài)。

  軟件的質(zhì)量由組織、流程和技術(shù)三個維度來決定,任何一個維度都不能單獨決定軟件的質(zhì)量。好的組織結(jié)構(gòu)可以保證流程的順利實施,好的流程能提高軟件開發(fā)的規(guī)范性和可控性,從而提高軟件開發(fā)的效率和質(zhì)量,而采用了好的技術(shù)和有好的技術(shù)的載體 —— 人,則從根本上保證了軟件的質(zhì)量。

  總而言之,組織、流程和技術(shù)是軟件質(zhì)量三角,本文將從這三個方面對如何做好單元測試進行論述。

   組織結(jié)構(gòu)應(yīng)該保證測試組參與單元測試

  目前無論是工業(yè)界還是學術(shù)界都認為單元測試應(yīng)該由開發(fā)人員開展,這是因為從單元測試的過程看,單元測試普遍采用白盒測試的方法,離不開深入被測對象的代碼,同時還需要構(gòu)造驅(qū)動模塊、樁函數(shù),因此開展單元測試需要較好的開發(fā)知識。從人員的知識結(jié)構(gòu)、對代碼的熟悉程度考慮,開發(fā)人員具有一定的優(yōu)勢。

  單元測試由開發(fā)人員進行能帶來一些特別的收益。我們知道,在實踐中開發(fā)人員進行單元測試一般推薦采用交叉測試的方法,例如由被測單元的調(diào)用方進行該單元的測試,即盡量避免對自己的代碼進行單元測試。這種交叉的測試安排可以避免測試受開發(fā)思路影響太大,局限于原來的思路不容易發(fā)現(xiàn)開發(fā)過程中制造的問題;二來也達到一個技術(shù)備份或充分交流的目的,這對組織非常有利。即使不采用交叉測試的方法,而安排單元的生產(chǎn)者自行開展單元測試,也是有很大的優(yōu)越性的,其最大的優(yōu)點是快速,且能更好的實現(xiàn) “ 預(yù)防錯誤 ” 。在人員緊張的情況下這種自行測試的安排也是不錯的選擇。

  從經(jīng)驗值來看,單元測試投入和編碼投入相比基本上是一比一,如果由專職測試隊伍來進行單元測試,維持這樣龐大的單一任務(wù)隊伍顯然是不合適的。

  以上談的是由開發(fā)人員進行單元測試的優(yōu)點,其中主要是從單元測試的效率角度來考慮。但是從單元測試效果的角度考慮,必須從組織結(jié)構(gòu)上保證測試組參與單元測試,這是因為:

  首先,從目前國內(nèi)企業(yè)普遍現(xiàn)狀來看,測試人員質(zhì)量意識要高于開發(fā)人員,測試人員參與單元測試能夠提高測試質(zhì)量。

  其次,對被測系統(tǒng)越了解,測試才有可能越深入,測試人員參與單元測試,將使得測試人員能夠從代碼級熟悉被測系統(tǒng),這對測試組后期集成測試和系統(tǒng)測試活動非常有幫助,會很大的提升集成測試和系統(tǒng)測試質(zhì)量。

  測試組以何種方式參與單元測試,應(yīng)該結(jié)合軟件組織的實際情況來定。如果軟件組織測試資源充分,測試人員對開發(fā)人員的比例較高,那么可以由測試人員獨立承擔部分重要模塊的單元測試工作;如果測試資源不足,測試人員對開發(fā)人員的比例較低,那么可以采取由測試人員進行單元測試計劃、單元測試設(shè)計的工作,而單元測試的實現(xiàn)和執(zhí)行由開發(fā)人員來完成;而如果測試資源非常缺乏,連單元測試計劃、單元測試設(shè)計都無法承擔,那么測試組至少應(yīng)該參與開發(fā)組的各相關(guān)單元測試文檔、單元測試報告的評審,保證單元測試的質(zhì)量。

  加強單元測試流程規(guī)范性

  ● 制訂單元測試的過程定義

  軟件質(zhì)量的提高需要規(guī)范的流程,對軟件開發(fā)過程進行管理也需要依據(jù)規(guī)范的過程定義。過程定義包含階段的劃分、階段的入口 / 出口準則、階段的輸入 / 輸出、角色和職責、模板和查檢表等等。將單元測試劃分為幾個階段便于對單元測試過程進行控制,體現(xiàn)軟件測試可控性。要提高單元測試的質(zhì)量,首先要制定規(guī)范的單元測試過程,開發(fā)組、測試組、 SCM 組、 SQA 組等可以依據(jù)單元測試過程定義開展各自的工作,共同保證單元測試的質(zhì)量。

  單元測試過程的定義需要參照企業(yè)的實際情況,例如階段劃分可以分為四個階段:計劃、設(shè)計、實現(xiàn)、執(zhí)行。其中計劃階段應(yīng)當考慮整個單元測試過程的時間表,工作量,任務(wù)的劃分情況,人員和資源的安排情況,需要的測試工具和測試方法,單元測試結(jié)束的標準及驗收的標準等,同時還應(yīng)當考慮可能存在的風險,以及針對這些風險的具體處理辦法,并輸出《單元測試計劃》文檔,作為整個單元測試過程的指導。設(shè)計階段需要具體考慮對哪些單元進行測試,被測單元之間的關(guān)系以及同其他模塊之間單元的關(guān)系,具體測試的策略采用哪一種、如何進行單元測試用例的設(shè)計、如何進行單元測試代碼設(shè)計、采用何種工具等,并輸出《單元測試方案》文檔,用來指導具體的單元測試操作。實現(xiàn)階段需要完成單元測試用例設(shè)計、腳本的編寫,測試驅(qū)動模塊的編寫,測試樁模塊的編寫工作,輸出《單元測試用例》文檔、相關(guān)測試代碼。執(zhí)行階段的主要工作是搭建單元測試環(huán)境,執(zhí)行測試腳本,記錄測試結(jié)果,如果發(fā)現(xiàn)錯誤,開發(fā)人員需要負責錯誤的修改,同時進行回歸測試,該階段結(jié)束需要提交《單元測試報告》。

  具體進行單元測試過程定義的時候,可以進行一定的裁減,例如可以裁減為設(shè)計和執(zhí)行兩個階段,將《單元測試方案》和《單元測試用例》合二為一。

  ● 單元測試工作產(chǎn)品必須納入配置管理

  單元測試工作產(chǎn)品指單元測試完成后應(yīng)交付的測試文檔、測試代碼及測試工具等,一般包括但不限于如下工作產(chǎn)品,可以根據(jù)實際情況進行適當裁剪:

  ● 單元測試計劃

  ● 單元測試方案

  ● 單元測試用例

  ● 單元測試規(guī)程

  ● 單元測試日報

  ● 單元測試問題單

  ● 單元測試報告

  ● 單元測試輸入及輸出數(shù)據(jù)

  ● 單元測試工具

  ● 單元測試代碼及設(shè)計文檔

  為了保證單元測試工作產(chǎn)品的準確性,需要對測試代碼和腳本進行走讀或檢視,對測試文檔進行評審。這些工作產(chǎn)品應(yīng)該納入到配置管理,對于其修改要走配置變更流程,并及時發(fā)布其配置狀態(tài),這樣可以保持單元測試工作產(chǎn)品的一致性和可回溯性。

  ● 必須制訂覆蓋率指標和質(zhì)量目標來指導和驗收單元測試

  單元測試必須制訂一定的覆蓋率指標和質(zhì)量目標,來指導單元測試設(shè)計和執(zhí)行,同時作為單元測試驗收的標準。設(shè)計用例時,可針對要達到的覆蓋率指標來設(shè)計用例,而在測試執(zhí)行時,可以依據(jù)覆蓋率分析工具分析測試是否達到了覆蓋率指標,如果沒達到,需要分析哪些部分沒有覆蓋到,從而補充用例來達到覆蓋率指標。而單元測試質(zhì)量目標的制訂,需要符合軟件企業(yè)的實際過程能力,這依賴于軟件企業(yè)以前單元測試過程度量數(shù)據(jù)的積累,不能憑空制造出來。有了以前度量數(shù)據(jù)的積累,完全可以了解當前組織的單元測試能力,例如單元測試每千行代碼發(fā)現(xiàn)的缺陷數(shù)是多少。如果單元測試統(tǒng)計結(jié)果沒有落到這個質(zhì)量目標范圍內(nèi),說明單元測試過程中某些方面存在一些問題,需要對過程進行審計后找出問題原因進行改進。

  這些指標確定下來后,一定要嚴格推行。會有一些測試人員找出各種理由證明覆蓋率指標達不到等等,這需要 QA 根據(jù)實際情況分析指標是否合理。實際證明有一個相對簡單的標準也比沒有標準要好得多,我們的實踐發(fā)現(xiàn),通過推行硬性指標,單元測試發(fā)現(xiàn)的問題數(shù)目比沒有標準前至少增加了 2 倍。

  ● 加強詳細設(shè)計文檔評審

  詳細設(shè)計是單元測試的主要輸入,詳細設(shè)計文檔的質(zhì)量將直接影響到單元測試的質(zhì)量,所以一定要加強詳細設(shè)計文檔的評審,特別是要寫相關(guān)測試方案和進行測試用例設(shè)計的人員,一定要從寫測試用例的角度看這個詳設(shè)是否符合要求,否則后期進行單元測試設(shè)計時會發(fā)現(xiàn)無法依據(jù)詳細設(shè)計進行單元測試設(shè)計。軟件組織可以將詳細設(shè)計評審的要點以查檢表的形式固化下來,這樣在詳細設(shè)計評審的時候依據(jù)查檢表一項項檢查,既提高了評審效率,也能保證評審效果。評審流程需要確定如果不滿足查檢表 n% 以上的條件,被評審詳細設(shè)計文檔就不能通過,需要重新設(shè)計。

  通常詳細設(shè)計文檔有兩種形式,一種是流程圖的形式,另一種是偽碼的形式。用流程圖表達的優(yōu)點是直觀,利于單元測試用例設(shè)計,缺點是描述性比較差,文檔寫作麻煩,不利于文檔的變更和修改;偽碼的方式可能正好相反,文檔變更修改簡單,可以方便地在任何地方增加文字說明,而且翻譯成代碼更加便捷,但不直觀,不利于進行單元測試用例設(shè)計。

  詳細設(shè)計和單元測試設(shè)計一定要分離。如果單元測試由測試人員承擔,這一點不會有什么問題;如果單元測試由開發(fā)人員承擔,那么實際操作時可以讓項目組內(nèi)做相同或者相近任務(wù)的成員相互交換,根據(jù)對方的詳設(shè)設(shè)計對方的單元測試。這樣在單元測試開始之前的詳細設(shè)計評審階段就要考慮到后面的分工,安排相關(guān)的單元測試設(shè)計人員參與相關(guān)詳細設(shè)計的評審。

  如果代碼沒有對應(yīng)的經(jīng)過評審后的詳細設(shè)計文檔,建議不進行單元測試,而是用代碼審查替代單元測試。

  開發(fā)人員在編碼的過程中,可能會發(fā)現(xiàn)詳設(shè)中的問題,并對代碼進行修改,這種修改應(yīng)該回溯到詳設(shè),并對詳設(shè)進行相應(yīng)的修改,否則到單元測試執(zhí)行的時候,會發(fā)現(xiàn)代碼和詳設(shè)根本對不上,無法執(zhí)行下去。詳設(shè)的修改要受控制,要走變更控制流程,它的變更也要經(jīng)過評審。因為單元測試是詳細設(shè)計的下游活動,如果詳細設(shè)計隨意更改,單元測試文檔很難和其保持一致,這樣單元測試也就失去了依據(jù)和意義。只有詳設(shè)也納入配置管理,才能保證單元測試和詳設(shè)的一致性。

  單元測試者技能的提高

  1 .加強對單元測試人員的技能培訓

  單元測試的質(zhì)量很大程度上決定于進行單元測試的人的技術(shù)水平。如果測試者不具備單元測試的知識,那么應(yīng)該對測試者進行相關(guān)的培訓。一個沒有做過單元測試人,不經(jīng)過培訓初次是很難做好單元測試的。單元測試在詳設(shè)階段結(jié)束時開始,但是單元測試相關(guān)培訓應(yīng)該盡早準備和計劃,培訓可以分兩個階段,每個階段的內(nèi)容類似。第一階段是寫單元測試方案前,培訓對象為測試方案的寫作者和詳設(shè)的寫作者,這樣可以在設(shè)計時多考慮可測試性,培訓的內(nèi)容為單元測試基本概念、單元測試分析方法、單元測試用例的寫作、單元測試標準的明確;第二階段為單元測試執(zhí)行前,對象為測試執(zhí)行者,培訓內(nèi)容為具體單元測試的執(zhí)行,包括驅(qū)動函數(shù)、樁函數(shù)的構(gòu)造、覆蓋率測試工具的使用( TrueCoverage 、 Logiscope 等)、利用自動化單元測試框架構(gòu)造單元測試自動化( TCL 、 CppUnit 、Junit等)。培訓過程中最好結(jié)合實例穿插其中,會比較生動,而且增強理解。

  通過以上的系統(tǒng)培訓,可以統(tǒng)一單元測試方法、明確單元測試的標準、掌握單元測試基本技能,為后期單元測試的順利開展掃平道路。

  2 .必須引入工具進行輔助

  單元測試非常需要工具的幫助,特別是覆蓋率工具不能缺少,否則用例執(zhí)行后無法得到測試質(zhì)量如語句覆蓋、路徑覆蓋等情況,也就無法對被測對象進行進一步的分析。應(yīng)用較廣的分析覆蓋率的工具有 Logiscope 、 TrueCoverage 、 PureCoverage 等,它們的功能有強有弱,可以根據(jù)實際情況采用。

  為了提高單元測試的效率,特別是提高進行回歸測試時的效率,需要在單元測試中引入自動化。目前常用的方法是采用 TCL 語言編寫擴展指令,構(gòu)造自己的單元測試自動化。也可以直接采用開源的自動化測試框架如 CppUnit 、 JUnit 等。

  此外,在單元測試之前,還需要利用 PC_Lint 對被測代碼進行檢查,排除代碼語法錯誤,確保進行單元測試的代碼已經(jīng)具備了基本質(zhì)量,保證單元測試能夠順利進行,提高單元測試執(zhí)行效率。

  3 .單元測試者加強對被測軟件的全面了解

  單元測試的目的除了要發(fā)現(xiàn)編碼中引入的錯誤和發(fā)現(xiàn)代碼與詳細設(shè)計不一致的地方之外,還有一個目的是為了保證詳細設(shè)計的質(zhì)量。因為測試分析和測試用例設(shè)計需要依據(jù)詳細設(shè)計來進行,這個過程實際上是對詳細設(shè)計的重新檢視,在這個過程中會發(fā)現(xiàn)以前評審中沒有發(fā)現(xiàn)的問題。

  無論是在單元測試的設(shè)計活動中還是在單元測試的執(zhí)行過程中,都需要測試者了解軟件的需求和概要,加強對被測軟件的全面了解。否則對被測對象了解不深,只能就被測單元的流程而測流程,而對于該流程是否正確就無法保證了。

  測試者要注重與開發(fā)的交流,這樣能對被測單元有更深的了解;同時因為進度的原因,包括詳設(shè)在內(nèi)的文檔往往來不及更新,所以最新最正確的思想往往存在于開發(fā)人員的腦袋里,及時與他們交流才會獲得最及時的信息,減少將來更新用例的工作量。

  結(jié)語

  單元測試是軟件開發(fā)過程中非常重要的質(zhì)量保證手段,加強單元測試對提高軟件質(zhì)量具有非常重要的意義。而做好單元測試不是只要掌握單元測試方法就可以了的,這需要從組織、流程和技術(shù)三個方面來保證。

  原文地址:http://www.guojf.com/cat_4/17.html

【編輯推薦】

  1. 糾正對單元測試的五個錯誤認識
  2. 軟件工程師必知的12個單元測試技巧
  3. 單元測試的重要性
  4. 再談單元測試
  5. 軟件測試之單元測試的內(nèi)容與步驟
責任編輯:韓亞珊 來源: 中國IT實驗室
相關(guān)推薦

2021-09-18 15:40:03

Vue單元測試命令

2017-01-14 23:42:49

單元測試框架軟件測試

2020-09-30 08:08:15

單元測試應(yīng)用

2021-04-07 14:45:56

軟件測試編程

2022-03-15 11:55:24

前端單元測試

2017-01-14 23:26:17

單元測試JUnit測試

2017-01-16 12:12:29

單元測試JUnit

2021-03-28 23:03:50

Python程序員編碼

2011-05-16 15:26:52

功能測試

2020-08-18 08:10:02

單元測試Java

2017-03-23 16:02:10

Mock技術(shù)單元測試

2021-05-05 11:38:40

TestNGPowerMock單元測試

2023-07-26 08:58:45

Golang單元測試

2011-07-04 18:16:42

單元測試

2020-05-07 17:30:49

開發(fā)iOS技術(shù)

2011-11-30 22:03:49

ibmdwJava

2019-12-18 10:25:12

機器學習單元測試神經(jīng)網(wǎng)絡(luò)

2011-05-16 16:52:09

單元測試徹底測試

2013-06-04 09:49:04

Spring單元測試軟件測試

2017-02-23 15:59:53

測試MockSetup
點贊
收藏

51CTO技術(shù)棧公眾號