測試時代有會員朋友發了一篇求助帖,帖子的主題內容是不清楚軟件測試若干基本概念?紤]到不少測試新手會碰到類似的問題,現轉貼我對這篇帖子的回復,希望對大家有所幫助。
原貼鏈接:
http://bbs.ltesting.net/thread-48374-1-1.html
問:在php?name=%C8%ED%BC%FE%B2%E2%CA%D4" nclick="tagshow(event)">軟件測試理論中,提到software testing methodology的時候,強調三個步驟,1.creating test strategy; 2.create test plan/design; 3.executing test. 可是在一些實際例子中,好像經常第一和第二部分混在一起的情況,test strategy 和test plan 的概念和關系始終很糊涂,懇請高手能從理論和實際應用的兩個角度講解一下。(俺是新手,一些關鍵的概念搞不清楚,很痛苦,不要批評俺太拘泥于這些東東)
答:test strategy 用來表述如何測試軟件系統,如何確定軟件系統的測試級別和測試重點。實際項目中,單元測試、集成測試、功能測試、系統測試、驗收測試等階段的測試活動都要有不同的測試策略。拿集成測試階段來說,可以采用自頂向下和自底向上的混合策略完成測試任務。test plan 要求用系統的方法來保障測試任務的順利完成。包括測試任務的分配,測試資源的分配,測試策略和測試范圍的確定,測試用例的設計方法,通過/失敗準則的確定,測試風險的評估,日程安排等方面的內容。
問:backend測試主要是確認GUI界面中的顯示數據是否與對應后臺查詢到的數據對應一致?如果是這樣,那什么時候才需要進行backend測試?比如說,我注冊一個用戶,成功后,那我是否需要進行相應的數據庫查詢,確認注冊是否成功?或者在線購物,我成功下了個訂單后,然后是不是需要核對‘我的訂單‘中的顯示訂單情況與數據庫查詢返回的訂單結果是否一致?如果是這樣,那是不是所有涉及到表單提交,且引起數據庫變化的操作,都要進行backend測試?
答:backend測試可以理解為數據庫測試。通過GUI鍵入的數據會被存儲在后臺數據庫中,或者說數據作為記錄存儲在數據庫的數據表中。因此,backend測試不僅要求通過GUI鍵入的數據被恰當地,正確地存儲在后臺數據庫中,還要求通過GUI調用的這些數據(記錄)能夠被正確的顯示出來。通過上述分析后,樓主的疑慮不難被消除了。
問: 在qc的mercury tours實例中,在測試計劃的Mercury Tours Site—Html Pages目錄下里有很多關于web page UI方面的測試,像Html page layout, html page source, html tag,spelling &grammar, tab order等等,我的問題,是針對web頁面的UI測試的這些用例,對于web-based application來說,是不是基本都是通用的?
答:那些用例可以作為我們平時UI測試時的參考,但是不提倡生搬硬套。平時的UI測試要根據UI的特征來進行CASE的設計。這些特征包括符合通用的標準和規范,正確性,一致性,舒適性,直觀性等等。
問: 在版本基本穩定的情況下,會確認一個基線版本,在此是不是馬上就會進行一天一次的(Build verfication test) (Nightly build),還是逐漸的頻率越來越高?如果每天都構建新版本,那是不是每天都要進行回歸測試?
答:BVT也可以被看作冒煙測試。BVT測試具備下面這些特點:它只是測試人員進行全面測試前的一個測試子集,用來驗證軟件系統主要的功能是否完好;BVT是一種類型的回歸測試,在軟件每次有新的build版本時進行;測試時間短,不會超過30分鐘;BVT的用例要能覆蓋軟件基本功能;每天有新的build版本時,都要進行BVT。明白了這些,相信樓主的疑惑也是可以取消的。
問: 系統測試是不是可以理解為也是一次全面的功能測試,只不過它是在實際運行環境下進行的?那它的測試用例完全用全部的功能測試用例就OK了嗎?
答:功能測試和系統測試是兩碼事。功能測試主要是驗證軟件功能的實現情況,不考慮非功能性問題。而系統測試則是在更廣的范圍內進行的測試,包括:功能測試、安全測試、容量測試、安裝測試、壓力測試等等方面。所以即使執行了全部的功能方面的用例,也是無法完成系統測試的。
問: 類似兼容性測試,壓力測試,性能測試,恢復測試,安裝測試,它們屬于不屬于系統測試的范疇?如果不屬于,這些測試是在系統測試之前進行還是之后進行?都在運行環境進行嗎?
答:上述類型的測試均屬于系統測試的范疇。是在用戶使用軟件系統的近真實的環境中進行的。
問: 關于build和release的概念有點模糊,能否給予解釋?是不是build XYZ是指一個具體的基線版本,而build xyz release abc,是指這個基線版本下的一個實際的發布的子版本?所謂release是不是就是指一個真正向用戶或者公眾發布的版本?
答:軟件發布前的版本都是build版本,這個階段的版本是不斷發現bug,不斷解決bug,不斷完善軟件的過程。真正向用戶發布的版本是release版本,也是軟件的最終版本。
問: Use case相比較用戶需求文檔或用戶設計文檔來說,是不是提供了最詳細的功能實現細節?它們三者是不是就是個逐步一一細化的關系?
答:Use Case只是描述了軟件系統的功能而已,并沒有提供功能實現的細節。Use Cases是捕獲用戶需求的非常有效的機制。通過Use Cases 用戶可以看到系統提供的功能,知道自己需要什么樣的功能,進而生成用戶需求文檔。用戶接口設計文檔應該滿足用戶需求。補充: Use Case只是描述了系統的功能是怎樣的,用戶需求里面可能還會關注到系統性能。所以三者的關系不能簡單理解為逐步細化。