〔十一〕 =====[ 代碼測試、維護 ]=====
¹11-1 :單元測試要求至少達到語句覆蓋
¹11-2 :單元測試開始要跟蹤每一條語句,并觀察數據流及變量的變化
¹11-3 :清理、整理或優化后的代碼要經過審查及測試
¹11-4 :代碼版本升級要經過嚴格測試
¹11-5 :使用工具軟件對代碼版本進行維護
¹11-6 :正式版本上軟件的任何修改都應有詳細的文檔記錄
½11-1 :發現錯誤立即修改,并且要記錄下來
½11-2 :關鍵的代碼在匯編級跟蹤
½11-3 :仔細設計并分析測試用例,使測試用例覆蓋盡可能多的情況,以提高測試用例的效率
½11-4 :盡可能模擬出程序的各種出錯情況,對出錯處理代碼進行充分的測試
½11-5 :仔細測試代碼處理數據、變量的邊界情況
½11-6 :保留測試信息,以便分析、總結經驗及進行更充分的測試
½11-7 :不應通過“ 試” 來解決問題,應尋找問題的根本原因
½11-8 :對自動消失的錯誤進行分析,搞清楚錯誤是如何消失的
½11-9 :修改錯誤不僅要治表,更要治本
½11-10 :測試時應設法使很少發生的事件經常發生
½11-11 :明確模塊或函數處理哪些事件,并使它們經常發生
½11-12 : 堅持在編碼階段就對代碼進行徹底的單元測試,不要等以后的測試工作來發現問題
½11-13:去除代碼運行的隨機性(如去掉無用的數據、代碼及盡可能防止并注意函數中的“內部寄存器”等),讓函數運行的結果可預測,并使出現的錯誤可再現
〔十二〕 =====[ 宏 ]=====
¹12-1 :用宏定義表達式時,要使用完備的括號
示例:如下定義的宏都存在一定的風險。
#define RECTANGLE_AREA( a, b ) a * b
#define RECTANGLE_AREA( a, b ) (a * b)
#define RECTANGLE_AREA( a, b ) (a) * (b)
正確的定義應為:
#define RECTANGLE_AREA( a, b ) ((a) * (b))
¹12-2: 將宏所定義的多條表達式放在大括號中
示例:下面的語句只有宏的第一條表達式被執行。為了說明問題,for語句的書寫稍不符規范。
#define INTI_RECT_VALUE( a, b )\
a = 0;\
b = 0;
for (index = 0; index < RECT_TOTAL_NUM; index++)
INTI_RECT_VALUE( rect.a, rect.b );
正確的用法應為:
#define INTI_RECT_VALUE( a, b )\
{\
a = 0;\
b = 0;\
}
for (index = 0; index < RECT_TOTAL_NUM; index++)
{
INTI_RECT_VALUE( rect[index].a, rect[index].b );
}
¹12-3: 使用宏時,不允許參數發生變化
示例:如下用法可能導致錯誤。
#define SQUARE( a ) ((a) * (a))
int a = 5;
int b;
b = SQUARE( a++ ); // 結果:a = 7,即執行了兩次增1。
正確的用法是:
b = SQUARE( a );
a++; // 結果:a = 6,即只執行了一次增1。
=============================== End ===================================
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/