常常看到有言論說國內的項目品質差,不好用,很失敗。是架構不成熟?技術不先進?管理員素質差?開發方法落後?都不是,是細節導致了失敗,是細節導致的低品質,可用性差。
來看看一個TextBox可能涉及到的測試項,下面所列出的測試項,在實際項目中數目還會有更多,有幾條也可以合為一個,但一般的項目都會涉及到:
1. 是否必輸
2. 輸入長度限制是否正確
3. 特殊輸入類型的檢查是否正確
l 數字 :位元正確嗎?
l Email:是否有效
l 貨幣:小數位,四捨五入正確嗎?貨幣類型?
l 電話:格式化正確嗎?
l 小數:小數位元正確嗎?
l 名字:如果是老外的名字,首字母大寫
4. Tab鍵順序正確嗎?
5. 顏色表示正確嗎?(有可能分為必輸項,非必輸項,當前輸入項)
6. 文字框長度和資料庫中長度對應嗎?
7. 輸入的長度不足時是否自動補位?
8. 初始化時焦點的設定正確嗎?
9. 初始化時Enable屬性設定正確嗎?
10. 初始化時的內容正確嗎?
11. 當介面上進行其他動作時,文本的Enable屬性設定
12. 文字框命名
13. 如果有斷行符號替換Tab,是否正確
14. 是否可以多行
15. 字型設定正確嗎?
16. 取Text屬性時對空格的控制(Trim)正確嗎?
我們來類比一個簡單的工資管理系統,人員資訊錄入介面,有以下錄入項:
姓名:(中國人是漢字,老外是英文,首字母大寫)
年齡:(數字)
Email:
電話:月薪:貨幣
可以看到,第三項裡提到的幾種特殊類型的文字框基本都涉及到了。
現在不看設定Enabled屬性和初始化設定這幾項,因為是要其他動作來觸發的,再去除文字框命名和Trim,這兩項也可以歸到Review項裡,留下十項。
現在再假定使用者的輸入全部是規範的,不包括任何非法,不合理資料,如果進行儲存的話,儲存部分的代碼不會出現任何錯誤,不出任何異常,資料成功儲存到資料庫。但是大家可以算算這樣一個介面,只有5個TextBox,但是在TextBox處理上隱含了多少個bug,50個?太多了,取一半,25個。現在把添,刪,查,改加上,再算算,這樣一個簡單的單表維護介面上就隱含了多少個bug,保守點也30個!要達到50也不是沒有可能的。如果我們再加上一些其他的CheckBox,ComboBox,ListBox什麼的,編輯查看附件,發送什麼的附加功能,測試點會膨脹到什麼程度?
以上是假定不作任何其他處理,只是單純的錄入,儲存。實際項目中肯定是不會這麼誇張的。程式員不會讓這樣一個“赤裸裸”的程式運行在客戶那裡的。
舉這樣一個例子就是為了說明細節對軟體產品品質的重要。不要說這些都是菜鳥才會犯的錯誤,不要說我現在已經是XX師了,這些問題不值一提。上面所說的相信很多人都知道,工作中也很注意,要實現更是不在話下,但是也有很多人雖然經常在作,但是從來不去作更多的關注。上面所提到的每個點都有可能因為程式員或測試人員的一個小疏忽,一個大意,一個想當然而遺漏,而產品的品質很大一部分就體現在這樣的小細節裡,我們的有很多項目,架構很先進,業務能走通,但是就是到了實際部署的時候錯誤百出,客戶用不起來,其實原因就在我們的軟體就只差那麼一步,那麼10%的東西,但是卻導致了整體的失敗。而這10%就是各種瑣碎的細節所堆積起來的。
沒有bug的程式是不存在的,但是在關注各種架構,可複用,可配置等等方面之後,請多留點精力給這些細節。在這裡需要的不是高超的技術,先進的架構,新潮的名詞,只需要態度。