由於web程式和一般的軟體開發不同,自動化測試的效率和必要性一直較低,因此人工測試一直是web專案的最主要測試手段。
但這並不表示web專案就不需要進行自動化測試。對於web專案而言,自動化測試可以分為單元測試和功能測試。功能測試主要針對具體頁面進行測試,個人覺得意義不大,因為既然是針對具體頁面進行測試,採用人工測試的方式更為直接,高效,且靈活。因此以下主要針對單元測試進行討論。
首先,由於web專案的特殊性,能夠進行單元測試的地方也不會很多。一般來說,單元測試會集中在業務邏輯層。
如果是很簡單的功能,那做單元測試的必要性就很低。一般來說,需要做單元測試的地方是:邏輯複雜的功能模組。
**要能夠做單元測試,對程式的結構有一定的要求。首先,單元測試的模組必須是個閉合的系統,有固定的輸入和輸出。因此在系統設計階段就應該進行充分的考慮:**的可測試性。
如何做到**的可測試性呢。主要有以下能力和技巧:
1 把(邏輯)複雜的問題抽象為(數學)模型的能力,這也是最重要的一點。細節上如,將資料庫中的資料對映成程式中的陣列,針對陣列進行處理。
2 好的程式架構。即程式要模組化。單元測試多是針對類或者函式進行。單元測試要求測試物件是個閉合的系統,如果你進行測試的程式塊和「外界」有著千絲萬縷的聯絡,那你的程式必然是不可測試的。
3 因為web程式的特殊性,有時候,要做到完全閉合會很困難,或者說要花費很大的精力去改寫程式。那這時候,適當的用一些小技巧來實現可測試是必要的。因為測試的目的是為了保證產品質量,如果為了單元測試而延誤了工期,那就本末倒置了。具體實現上如,我們可以定義個環境常量,當這個環境常量等於測試模式的時候,就可以做一些特殊的處理。
a 開發人員在開發和測試過程中,要寫足夠的測試用例,測試用例應該包含各種有代表性的情況。在進入專案的測試階段的時候,這些測試用例就應該全部能執行通過。
b 在a之後,程式多數還存在bug。這時候,如果發現新的bug(假定為bug1),那麼開發人員要根據產生bug1的情況,寫新的測試用例(bug1 test case).
然後修正bug1,並使測試用例bug1 test case執行通過。同時請確保a中的所有測試用例也執行通過。
c 再次發現新的bug(假定為bug2),然後開發人員重複類似於b中的流程。這個時候,請務必確保bug1 test case能執行通過。這就是通常我們提到的「回歸測試」,「回歸測試」能有效的避免在修正bug的過程中,產生新的bug。
最後,專案相關人員都應該意識到,人的大腦記憶體是有限的。如果你的專案含有複雜的邏輯,借助好的軟體工程方法,才能使程式得到有效的控制。引入單元測試,產品質量才***。
junit單元測試web專案的方法
是測試controller層用的 在專案開發中,常通過junit單元測試來測試自己方法邏輯。下面主要展示,junit測試web專案的方法步驟。包括service dao層的方法和使用mock測試cotroller層的方法。以下測試用例時基於公司的專案展示的,所以不便於貼上所有的原始碼 junit j...
springmvc 專案單元測試
對於web專案如果希望通過url來進行單元測試,但是啟動伺服器和建立http client 來進行測試非常麻煩,並且依賴網路環境。這樣我們可以通過引入mockmvc進行測試。一 引入jar包 dependency groupid junit groupid artifactid junit arti...
單元測試 單元測試文章收藏
前言 前段時間公司計畫做自動化測試,自己也打算圍繞幾個點做相關調研,現在想想呢?其實對自動化測試的概念都還不是十分清晰,當時主要還是圍繞 單元測試 向qa小夥伴學習了一段時間,現由於公司重組,學習中斷,這裡簡單記錄一些單元測試好文,留待後續參考.什麼叫自動化測試?自動化測試覆蓋率?覆蓋率如何做到的?...