[轉]如何進行單元測試

一、單元測試步驟

代碼編寫完成后的單元測試工作主要分為兩個步驟:

  1. 人工靜態檢查

人工靜態檢查是測試的第一步,這個階段工作主要是保證代碼算法的邏輯正確性(盡量通過人工檢查發現代碼的邏輯錯誤)、清晰性、規范性、一致性、算法高效性。并盡可能的發現程序中沒有發現的錯誤。

  1. 動態執行跟蹤

執行待測程序來跟蹤比較實際結果與預期結果來發現錯誤。經驗表明,使用人工靜態檢查法能夠有效的發現30%到70%的邏輯設計和 編碼錯誤。但是代碼中仍會有大量的隱性錯誤無法通過視覺檢查發現,必須通過跟蹤調試法細心分析才能夠捕捉到。所以,動態跟蹤調試方法也成了單元測試的重點 與難點。

二、人工檢查

通常在人工檢查階段必須執行以下項目的活動:?

第一、 檢查算法的邏輯正確性;確定所編寫的代碼算法、數據結構定義(如:隊列、堆棧等)是否實現了模塊或方法所要求的功能。?

第二、 模塊接口的正確性檢查;確定形式參數個數、數據類型、順序是否正確;確定返回值類型及返回值的正確性。

第三、 輸入參數有沒有作正確性檢查;如果沒有作正確性檢查,確定該參數是否的確無需做參數正確性檢查,否則請添加上參數的正確性檢查。經驗表明,缺少參數正確性檢查的代碼是造成軟件系統不穩定的主要原因之一。?

第四、 調用其他方法接口的正確性;檢查實參類型正確與否、傳入的參數值正確與否、個數正確與否,特別是具有多態的方法。返回值正確與否,有沒有誤解返回值所表示 的意思。最好對每個被調用的方法的返回值用顯濕代碼作正確性檢查,如果被調用方法出現異常或錯誤程序應該給予反饋,并添加適當的出錯處理代碼。

第五、 出錯處理;模塊代碼要求能預見出錯的條件,并設置適當的出錯處理,以便在一旦程序出錯時,能對出錯程序重做安排,保證其邏輯的正確性,這種出錯處理應當是 模塊功能的一部分。若出現下列情況之一,則表明模塊的錯誤處理功能包含有錯誤或缺陷:出錯的描述難以理解;出錯的描述不足以對錯誤定位,不足以確定出錯的 原因;顯示的錯誤信息與實際的錯誤原因不符;對錯誤條件的處理不正確;在對錯誤進行處理之前,錯誤條件已經引起系統的干預等。?

第六、 保證表達式、SQL語句的正確性;檢查所編寫的SQL語句的語法、邏輯的正確性。對表達式應該保證不含二義性,對于容易產生歧義的表達式或運算符優先級 (如:《 、=、 》、 &&、||、++、 --等)可以采用擴號“()”運算符避免二義性,這樣一方面能夠保證代碼的正確可靠,同時也能夠提高代碼的可讀性。

第七、 檢查常量或全局變量使用的正確性;確定所使用的常量或全局變量的取值和數值、數據類型;保證常量每次引用同它的取值、數值和類型的一致性。?

第八、 表示符定義的規范一致性;保證變量命名能夠見名知意,并且簡潔但不宜過長或過短、規范、容易記憶、最好能夠拼讀。并盡量保證用相同的表示符代表相同功能,不要將不同的功能用相同的表示符表示;更不要用相同的表示符代表不同的功能意義。

第九、 程序風格的一致性、規范性;代碼必須能保證符合企業規范,保證所有成員的代碼風格一致、規范、工整。例如對數組做循環,不要一會兒采用下標變量從下到上的 方式(如:for(I=0;I++;I<10)),一會兒又采用從上到下的方式 (如:for(I=10;I--;I>0));應該盡量采用統 一的方式,或則統一從下到上,或則統一從上到下。建議采用for循環和While循環,不要采用do{}while循環等。?

第十、 檢查程序中使用到的神秘數字是否采用了表示符定義。神秘的數字包括各種常數、數組的大小、字符位置、變換因子以及程序中出現的其他以文字形式寫出的數值。 在程序源代碼里,一個具有原本形式的數對其本身的重要性或作用沒提供任何指示性信息,它們也導致程序難以理解和修改。對于這類神秘數字必須采用相應的標量 來表示;如果該數字在整個系統中都可能使用到務必將它定義為全局常量;如果該神秘數字在一個類中使用可將其定義為類的屬性(Attribute),如果該 神秘數字只在一個方法中出現務必將其定義為局部變量或常量。?

第十一、 檢查代碼是否可以優化、算法效率是否最高。如:SQL語句是否可以優化,是否可以用1條SQL語句代替程序中的多條SQL語句的功能,循環是否必要,循環中的語句是否可以抽出到循環之外等。?

第十二、 檢查您的程序是否清晰簡潔容易理解。注意:冗長的程序并不一定不是清晰的。?

第十三、 檢查方法內部注釋是否完整;是否清晰簡潔;是否正確的反映了代碼的功能,錯誤的注釋比沒有注釋更糟;是否做了多余的注釋;對于簡單的一看就懂的代碼沒有必要注釋。?

第十四、 檢查注釋文檔是否完整;對包、類、屬性、方法功能、參數、返回值的注釋是否正確且容易理解;是否會落了或多了某個參數的注釋,參數類型是否正確,參數的限 定值是否正確。特別是對于形式參數與返回值中關于神秘數值的注釋,如:類型參數 應該指出 1.代表什么,2.代表什么,3.代表什么等。對于返回結果集(Result Set)的注釋,應該注釋結果集中包含那些字段及字段類型、字段順序等。


---------------------
作者:Roda的博客
來源:CSDN
原文:https://blog.csdn.net/weixin_42343424/article/details/90763843
版權聲明:本文為作者原創文章,轉載請附上博文鏈接!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/285713.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285713.shtml
英文地址,請注明出處:http://en.pswp.cn/news/285713.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

WPF 基礎控件之 TabControl樣式

其他基礎控件1.Window2.Button3.CheckBox4.ComboBox5.DataGrid 6.DatePicker7.Expander8.GroupBox9.ListBox10.ListView11.Menu12.PasswordBox13.TextBox14.RadioButton15.ToggleButton16.Slider 17.TreeView TabControl 實現下面的效果1&#xff09;TabControl來實現動畫&…

開發團隊測試的難與易

做了多年的研發工程師&#xff0c;在所處的環境中&#xff0c;所接觸的開發人員中很少有看重對自己代碼進行測試這項工作的。大多研發人員往往是寫好了代碼運行起來&#xff0c;簡單做下測試&#xff0c;甚至不去測試就拋給接口使用者或者質量管理人員。而且理由很充分“沒時間…

C語言試題八十八之實現選冒泡排序算法

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 C語言實現冒…

兩個數值交換位置

2019獨角獸企業重金招聘Python工程師標準>>> 先說非計算機專業都能理解的。 int a 10; int b 20; 方法一&#xff1a; int c a; a b; b c; System.out.println("a"a",b"b); 方法二&#xff1a; a a b; b a - b; a a - b; System.out…

教你如何在Android 6.0上創建系統懸浮窗

郭霖大神的文章:http://mp.weixin.qq.com/s?__bizMzA5MzI3NjE2MA&mid2650235949&idx1&sn0f7eded67f834d38b02f8872768cb68a&scene0#wechat_redirect今天周二&#xff0c;又該跟大家分享由我執筆的文章了。從之前我寫的deep links、通知欄微技巧這兩篇文章中&a…

【CC精品教程】任務三:CC刺像控點,提交空三,新建重建項目(三維格網、三維點云、DOM和DSM)

《無人機航空攝影測量精品教程》合集目錄(Pix4d、CC、EPS、PhotoScan、Inpho) 【CC精品教程】任務一:CC新建工程、添加照片、相機參數設置、選擇坐標系統 【CC精品教程】任務二:導入像控點、差分POS,空三平差權重設置,提交自由空三 主要任務是準確的刺像控點,提交空三,…

官宣.NET 7 預覽版5

點擊上方藍字關注我們&#xff08;本文閱讀時間&#xff1a;12分鐘)今天我們發布了 .NET 7 預覽版 5。.NET 7 的這個預覽版包括對通用數學的改進&#xff0c;方便了 API 作者&#xff0c;使其更輕松&#xff0c;一個新的 ML.NET 文本分類 API&#xff0c;增加了最先進的深度學習…

[轉]Android產品研發(十九)

轉載請標明出處&#xff1a;一片楓葉的專欄 上一篇文章中我們講解了webview中問題集錦&#xff0c;講解了webview的性能優化、webview種入Cookie信息、activity退出的時候清除webview信息報錯、如何通過java代碼和js代碼相互交互、webview如何下載文件以及騰訊的X5瀏覽服務等知…

C語言試題八十九之實現插入排序算法

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 C語言實現現…

【CC精品教程】ContextCapture 10.17安裝教程(附CC10.17安裝包下載)

《無人機航空攝影測量精品教程》合集目錄(Pix4d、CC、EPS、PhotoScan、Inpho) CC10.17相比之前的版本有了好的新的功能和優點,在傾斜攝影測量中有了更多的優勢,精度和運行速度有了很大的提升。本文講解CC的安裝,附CC10.17安裝包下載,是您航測傾斜攝影測量的入門必備。 文…

centos7 kickstart 使用小結

1、添加參數使網卡名稱變為eth 1bootloader --locationmbr --append"net.ifnames0 biosdevname0 rhgb quiet" 2、psize使用說明&#xff1a;修改vg PE16m 默認4m 支持256G磁盤&#xff0c;適當的調整pesize,可以更多的使用磁盤空間 1volgroup Vol1--pesize16384 pv.…

IOS-網絡(文件上傳)

1 //2 // ViewController.m3 // IOS_0206_文件上傳4 //5 // Created by ma c on 16/2/6.6 // Copyright © 2016年 博文科技. All rights reserved.7 //8 9 #import "ViewController.h"10 #define BWFileBoundary "----------BowenKeJi"11 #define…

mac SecureCRT設置

參考&#xff1a; http://www.2cto.com/os/201407/320292.html SecureCRT 設置 1&#xff09;每次登陸都要輸入密碼&#xff1a; Global Option -> General 取消&#xff1a;Use Keychain前面的勾 2&#xff09;Logon Actions Logon Actions很強大&#xff0c;和python里…

【微服務專題之】.Net6下集成消息隊列上-RabbitMQ

微信公眾號&#xff1a;趣編程ACE關注可了解更多的.NET日常實戰開發技巧&#xff0c;如需源碼 請公眾號后臺留言 源碼;[如果覺得本公眾號對您有幫助&#xff0c;歡迎關注].Net中RabbitMQ的使用超清觀看視頻哦~官網鏈接RabbitMQ代碼演示-詳細見代碼注釋&#xff0c;操作看上文視…

[轉]總結:Apache/Tomcat/JBOSS/Jetty/Nginx區別 .

總結&#xff1a;Apache/Tomcat/JBOSS/Nginx區別 . 1、Apache是Web服務器&#xff0c;Tomcat是應用&#xff08;Java&#xff09;服務器。Tomcat在中小型系統和并發訪問用戶不是很多的場合下被普遍使用。Apache支持靜態頁&#xff0c;Tomcat支持動態的。 2、Jetty:Tomcat內核作…

華為云GaussDB,11.11讓企業無后顧之憂

每年11.11大促對于數據庫而言都是一場生死考驗&#xff0c;如何保障系統的穩定可靠&#xff0c;如何平穩度過業務流量洪峰期&#xff0c;如何高效擴容&#xff0c;成為每個參與活動客戶的一大痛點。本文將通過5個常見的大促問題及分析&#xff0c;看看華為云GaussDB是如何解決這…

【CC精品教程】ContextCapture(CC)集群處理環境部署圖文教程

《無人機航空攝影測量精品教程》合集目錄(Pix4d、CC、EPS、PhotoScan、Inpho) 鑒于CC其三維構建運算的本質,海量數據的解析運算會使用大量的計算機資源,而再好的單臺計算機也無法勝過多臺計算機的并行運算能力,故而借助局域網內多臺計算機設備進行三維構建運算,可以節省大…

Linux-PAM PAM-MySQL的總結

1、理論知識 1.1、PAM模塊 1.1.1、PAM的介紹 Pluggable Authentication Modules簡稱PAM&#xff0c;是一個微縮的可插入認證模塊&#xff08;PAM is an acronym for Pluggable Authentication Modules&#xff09; 1.1.2、PAM的結構 1)模塊層(PAM服務模塊) - PAM結構最底層 作用…

ubuntu下配置jdk(離線壓縮包方式)

2019獨角獸企業重金招聘Python工程師標準>>> 1&#xff0c;下載jdk壓縮包 2、解壓后得到名字為jdk1.7.0_21的文件夾&#xff0c;將其復制到 /usr/lib/jvm下&#xff08;需要新建jvm文件夾&#xff09;。3、配置jdk環境變量&#xff1a;在啟動終端并輸入 gedit /e…

【PhotoScan精品教程】PhotoScan簡介、安裝教程(附PhotoScan1.4.5安裝包下載)

《無人機航空攝影測量精品教程》合集目錄(Pix4d、CC、EPS、PhotoScan、Inpho) PhotoScan在無人機航空攝影測量空三運算中,具有運行速度快、精度高等特點。PhotoScan空三運算的結果可以導入CC等進行模型構建。【PhotoScan精品教程】講解利用PhotoScan軟件進行航測內業空三運算…