隨著軟體測試對提高軟體質量重要性的不斷提高,軟體測試也不斷受到重視。但是,國內軟體測試過程的不規範,重視開發和輕視測試的現象依舊存在。因此,對於軟體測試的重要性、測試方法和測試過程等方面都存在很多不恰當的認識,這將會進一步的影響軟體測試活動的開展,並且阻礙軟體測試質量的提高。下面簡單列舉了幾種有代表性的對軟體測試的認識誤區,並作了相應的分析和解釋。
誤區1:軟體開發完成後才進行測試
在傳統的瀑布模型中,軟體專案主要有一下幾個階段組成:使用者需求、需求分析、概要設計、詳細設計、編碼和實現、測試以及執行維護。由於軟體測試僅處於執行維護階段之前,是軟體產品交付使用者使用之前保證軟體質量的重要手段。因此人們一般認為,軟體測試只是軟體編碼後的乙個階段。
但隨著軟體測試業的發展,人們越來越認識到:軟體測試不應只是軟體專案的收尾工作,而應該在軟體生命週期的每一階段中都包含測試。軟體測試是貫穿於整個軟體開發生命週期的過程活動,包括軟體測試計畫、軟體測試需求分析、軟體測試用例設計、軟體測試執行、軟體缺陷管理、軟體測試風險管理以及其他的一些軟體測試相關的活動等等組成。在軟體專案的每個階段,都需要進行不同目的和不同內容的測試活動,以保證各個階段工作產品輸出的正確性。軟體測試的物件也不僅僅是軟體**,還包括軟體需求文件和設計文件等其他所有的軟體工作產品。軟體開發與軟體測試之間應該是互動進行的,比如單元編碼之後需要進行單元測試,模組組合之後進行整合測試。
如果等到軟體編碼結束之後才進行測試,測試的時間很有限,很難達到測試的覆蓋率要求和測試的質量要求。同時,假如在專案開發的後期,發現一些軟體需求階段和概要設計階段的錯誤和問題,修改這些缺陷導致的成本將是非常高的。有資料表明:平均而言,如果在需求階段修正乙個錯誤的代價是1,那麼,在設計階段就是它的3-6倍,在程式設計階段是它的10倍,在內部測試階段是它的20-40倍,在外部測試階段是它的30-70倍,而到了產品發布出去,這個數字就是40-1000倍。修正錯誤的代價不是隨著時間線性增長的,而幾乎是呈指數增長的。因此,應盡早地不斷地進行軟體測試,發現錯誤並加以修正,而非軟體開發結束後才進行測試。
誤區2:軟體發布後發現軟體問題,那是測試人員的責任
許多人認為測試人員需要對發布的軟體質量負責,假如軟體到使用者後,發現很多的問題,那是測試人員的錯和責任。這種認識誤區非常打擊測試人員的積極性。軟體中的缺陷可能來自軟體開發過程中的任何乙個過程,而對於軟體測試而言,只能證明軟體存在缺陷,而不能保證軟體沒有錯誤。通過軟體測試,無法發現軟體中的所有錯誤和缺陷。從軟體開發的角度看,軟體的高質量不是軟體測試人員測出來的,而是需要軟體生命週期的各個過程共同來保證的。出現軟體錯誤,不能簡單地歸結為某乙個人或某個團隊的責任。比如有些錯誤的產生可能不是技術原因,可能來自於混亂的專案管理;或者客戶發現軟體某些功能並沒有按照原有需求來實現,換言之,軟體沒有完成客戶想做的操作,諸如此類問題很可能是軟體設計人員理解需求錯誤致使設計不當所引起的。
軟體的質量,不僅僅只是測試人員的事情,軟體專案參與的所有人員都應該關注軟體的質量。軟體質量的提高,需要每個專案人員的努力。測試只是提高軟體質量的乙個重要環節,質量保證應該貫穿於整個軟體開發生命週期的所有的開發活動、測試活動、專案管理活動等。同時,採用合適的開發和測試過程,對改進軟體質量也能起到重要的作用。除了測試活動外,同時應該分析軟體專案的各個過程,從過程改進方面尋找產生錯誤的原因和改進的措施。
誤區3:測試人員不需要具備很高的技能
不少軟體業人士認為軟體測試行業對軟體測試人員的技能要求不高。認為測試只是對照產品規格書操作軟體,發現軟體與規格說明不一致的地方,是沒有技術含量的工作。
這種觀點是錯誤的,或者至少是步恰當的。隨著軟體測試行業的發展,測試不僅僅是執行軟體發現缺陷的乙個過程,而是從專案早期,測試人員就開始介入,進行測試需求分析、計畫測試等。這要求測試人員有很好的溝通能力、理解能力、分析問題能力,同時還必須對產品開發技術有一定的了解。
隨著軟體工程學的發展和軟體專案管理經驗的提高,軟體測試已經形成了乙個獨立的技術學科,演變成乙個具有巨大市場需求的行業。軟體測試技術不斷更新和完善,新工具、新流程、新測試設計方法都在不斷更新,需要掌握和學習很多測試知識。所以,具有程式設計經驗的程式設計師不一定是一名優秀的測試人員。軟體測試包括測試技術和管理兩個方面,完全掌握這兩個方面的內容,需要很多測試實踐經驗和測試理論知識,需要我們不斷的學習。
誤區4:測試是測試人員的工作,和開發人員無關
我們提倡軟體測試盡早介入軟體專案,或者說我們提倡貫穿於整個軟體開發生命週期的測試。因此,在專案概念、需求和設計階段,軟體測試就應該介入專案中去。開發和測試是相輔相成的過程,需要軟體測試人員和程式設計師、系統分析員等專案其他成員保持密切的聯絡,需要更多的交流和協調,以便提高測試效率。在這些階段所發現的問題將有助於開發設計人員完善需求和設計。
在專案開發過程中,一般由開發人員針對模組進行白盒測試,這是早期的測試。後期對於測試人員所發現的缺陷,開發人員應根據優先順序來進行修復,針對開發人員的修改,測試人員還要進行再測試和回歸測試工作。因此,在整個專案過程當中,測試也不僅僅是測試人員的事情,而是測試人員和開發人員緊密合作的過程。
誤區5:由專案進度來決定測試工作量
規範的測試流程應該是乙個整體的連續的過程,包括測試計畫和控制、測試分析和設計、測試實現和執行等階段。每一階段也應有各自的規程。而大多數人對測試的理解往往是隨專案進度而定,即離專案交付空餘的時間多,就多做測試;反之,則少做測試。這樣很可能導致測試時間緊張,從而可能放棄其中的一些測試,可能導致遺漏一些重要的缺陷,顯然這種做法存在非常大的風險。
測試進度由專案開發進度來確定,這個觀念很大程度上是因為「測試是開發生命週期的乙個階段」這個誤區造成的。實際上,我們一直強調,測試是貫穿於整個軟體開發生命週期的。在制訂軟體專案計畫的同時,就需要規劃和制訂軟體測試的計畫。測試計畫的乙個重要內容是確定測試的進度(也就是測試時間和資源的安排)。因此,測試時間的多少,應該在專案早期根據專案的特點和風險分析結果來確定,而不僅僅是決定於專案進度。
誤區6:軟體測試是沒有前途的工作,只有開發人員是軟體高手
由於我國軟體整體開發能力比較低,軟體過程還不規範。專案的成功往往靠個別開發人員的能力,他們負責總體設計和程式詳細設計,認為軟體開發就是編寫**,給人的印象往往是程式設計師是真正的牛人,具有很高的地位和待遇。因此,在這種環境下,軟體測試並不受重視,軟體測試人員的地位和待遇自然就偏低了,甚至軟體測試變得可有可無。
隨著市場對軟體質量要求的不斷提高,軟體測試將變得越來越重要,相應的軟體測試人員的地位和待遇將會逐漸提高。在微軟等軟體過程比較規範的大公司,軟體測試人員的數量和待遇與程式設計師沒有多大差別,優秀測試人員的待遇甚至比程式設計師還要高。軟體測試將會成為乙個具有很大發展前景的行業,軟體測試大有前途。市場需要更多具有豐富測試技術和管理經驗的測試人員,他們同樣是軟體專家。
誤區7:自動化測試效率高,將取代軟體手工測試
測試自動化在某些情況下可以提高測試的效率(比如完成重複的測試配置、模擬大虛擬使用者等),但是並不是所有的測試都適合自動化,如程式需要處理的資料量不大、程式執行的次數不多、或者測試需要一些人的主觀判斷(如介面測試)等,在這些情況下,自動化測試可能並不是很好的選擇。
同時,自動化測試需要在前期投入大量的資源和工作量,同時需要維護的成本很高,包括環境的搭建、測試指令碼的設計、維護等。因此,要具體情況具體分析,不能盲目推崇測試自動化。
軟體測試用例的認識誤區
軟體測試用例是為了有效發現軟體缺陷而編寫的包含測試目的 測試步驟 期望測試結果的特定集合。正確認識和設計軟體測試用例可以提高軟體測試的有效性,便於測試質量的度量,增強測試過程的可管理性。在實際軟體專案測試過程中,由於對軟體測試用例的作用和設計方法的理解不同,測試人員 特別是剛從事軟體測試的新人 對軟...
軟體測試的十二個誤區
軟體測試的十二個誤區大體總結如下 1 測試人員不需要了解軟體開發的知識 這個很要命的,我們談到軟體測試人員未來的發展方向大致有 自動化測試,效能測試,測試管理,專案經理。這其中自動化測試和效能測試包括專案管理,都會要求對軟體開發有深入的理解,如何能設計乙個好的自動化框架,好的效能測試用例,如何管理乙...
軟體測試 自動化測試極容易產生的誤區
目前,有些人對自動化測試的認識存在一定的誤區,因此有必要對自動化測試樹立正確的認識,以防止對其有過高的期望。1 自動化的軟體測試與手工的軟體測試過程一樣 自動化測試所需要的技巧與手工測試所需要的技巧是不一樣的。通常,你的專案經理會被那些測試工具銷售們迷惑,認為自動化的軟體測試就是簡單地按乙個錄製的按...