web項目和單元測試 單元測試工具
由于web程序和一般的軟件開發不同,自動化測試的效率和必要性一直較低,因此人工測試一直是web項目的最主要測試手段。
但這并不表示web項目就不需要進行自動化測試。對于web項目而言,自動化測試可以分為單元測試和功能測試。功能測試主要針對具體頁面進行測試,個人覺得意義不大,因為既然是針對具體頁面進行測試,采用人工測試的方式更為直接,高效,且靈活。當然如果針對某些頁面進行的壓力測試還是很有必要的。因此以下主要針對單元測試進行討論。
首先,由于web項目的特殊性,能夠進行單元測試的地方也不會很多。一般來說,單元測試會集中在業務邏輯層。
如果是很簡單的功能,那做單元測試的必要性就很低。一般來說,需要做單元測試的地方是:邏輯復雜的功能模塊。
代碼要能夠做單元測試,對程序的結構有一定的要求。首先,單元測試的模塊必須是個閉合的系統,有固定的輸入和輸出。因此在系統設計階段就應該進行充分的考慮:代碼的可測試性。
如何做到代碼的可測試性呢。主要有以下能力和技巧:
1 把(邏輯)復雜的問題抽象為(數學)模型的能力,這也是最重要的一點。細節上如,將數據庫中的數據映射成程序中的數組,針對數組進行處理。
2 好的程序架構。即程序要模塊化。單元測試多是針對類或者函數進行。單元測試要求測試對象是個閉合的系統,如果你進行測試的程序塊和“外界”有著千絲萬縷的聯系,那你的程序必然是不可測試的。
3 因為web程序的特殊性,有時候,要做到完全閉合會很困難,或者說要花費很大的精力去改寫程序。那這時候,適當的用一些小技巧來實現可測試是必要的。因為測試的目的是為了保證產品質量,如果為了單元測試而延誤了工期,那就本末倒置了。具體實現上如,我們可以定義個環境常量,當這個環境常量等于測試模式的時候,就可以做一些特殊的處理。
ok,做到以上幾點,你的程序應該可以做單元測試了。進行單元測試的流程貫穿于整個項目的始終??梢詤⒖既缦拢?/p>
A 開發人員在開發和測試過程中,要寫足夠的測試用例,測試用例應該包含各種有代表性的情況。在進入項目的測試階段的時候,這些測試用例就應該全部能運行通過。
B 在A之后,程序多數還存在bug。這時候,如果發現新的bug(假定為bug1),那么開發人員要根據產生bug1的情況,寫新的測試用例(bug1 test case).
然后修正bug1,并使測試用例bug1 test case運行通過。同時請確保A中的所有測試用例也運行通過。
C 再次發現新的bug(假定為bug2),然后開發人員重復類似于B中的流程。這個時候,請務必確保bug1 test case能運行通過。這就是通常我們提到的“回歸測試”,“回歸測試”能有效的避免在修正bug的過程中,產生新的bug。
最后,項目相關人員都應該意識到,人的大腦內存是有限的。如果你的項目含有復雜的邏輯,借助好的軟件工程方法,才能使程序得到有效的控制。引入單元測試,產品質量才有保證。