隨著軟件測試對提高軟件質(zhì)量重要性的不斷提高,軟件測試也不斷受到重視。但是,國內(nèi)軟件測試過程的不規(guī)范,重視開發(fā)和輕視測試的現(xiàn)象依舊存在。因此,對于軟件測試的重要性、測試方法和測試過程等方面都存在很多不恰當?shù)恼J識,這將會進一步的影響軟件測試活動的開展,并且阻礙軟件測試質(zhì)量的提高。下面簡單列舉了幾種有代表性的對軟件測試的認識誤區(qū),并作了相應的分析和解釋。

  誤區(qū)1:軟件開發(fā)完成后才進行測試

 

  在傳統(tǒng)的瀑布模型中,軟件項目主要有一下幾個階段組成:用戶需求、需求分析、概要設(shè)計、詳細設(shè)計、編碼和實現(xiàn)、測試以及運行維護。由于軟件測試僅處于運行維護階段之前,是軟件產(chǎn)品交付用戶使用之前保證軟件質(zhì)量的重要手段。因此人們一般認為,軟件測試只是軟件編碼后的一個階段。

 

  但隨著軟件測試業(yè)的發(fā)展,人們越來越認識到:軟件測試不應只是軟件項目的收尾工作,而應該在軟件生命周期的每一階段中都包含測試。軟件測試是貫穿于整個軟件開發(fā)生命周期的過程活動,包括軟件測試計劃、軟件測試需求分析、軟件測試用例設(shè)計、軟件測試執(zhí)行、軟件缺陷管理、軟件測試風險管理以及其他的一些軟件測試相關(guān)的活動等等組成。在軟件項目的每個階段,都需要進行不同目的和不同內(nèi)容的測試活動,以保證各個階段工作產(chǎn)品輸出的正確性。軟件測試的對象也不僅僅是軟件代碼,還包括軟件需求文檔和設(shè)計文檔等其他所有的軟件工作產(chǎn)品。軟件開發(fā)與軟件測試之間應該是交互進行的,比如單元編碼之后需要進行單元測試,模塊組合之后進行集成測試。

 

  如果等到軟件編碼結(jié)束之后才進行測試,測試的時間很有限,很難達到測試的覆蓋率要求和測試的質(zhì)量要求。同時,假如在項目開發(fā)的后期,發(fā)現(xiàn)一些軟件需求階段和概要設(shè)計階段的錯誤和問題,修改這些缺陷導致的成本將是非常高的。有資料表明:平均而言,如果在需求階段修正一個錯誤的代價是1,那么,在設(shè)計階段是它的3-6倍,在編程階段是它的10倍,在內(nèi)部測試階段是它的20-40倍,在外部測試階段是它的30-70倍,而到了產(chǎn)品發(fā)布出去,這個數(shù)字是40-1000倍。修正錯誤的代價不是隨著時間線性增長的,而幾乎是呈指數(shù)增長的。因此,應盡早地不斷地進行軟件測試,發(fā)現(xiàn)錯誤并加以修正,而非軟件開發(fā)結(jié)束后才進行測試。

 

  誤區(qū)2:軟件發(fā)布后發(fā)現(xiàn)軟件問題,那是測試人員的責任

 

  許多人認為測試人員需要對發(fā)布的軟件質(zhì)量負責,假如軟件到用戶后,發(fā)現(xiàn)很多的問題,那是測試人員的錯和責任。這種認識誤區(qū)非常打擊測試人員的積極性。軟件中的缺陷可能來自軟件開發(fā)過程中的任何一個過程,而對于軟件測試而言,只能證明軟件存在缺陷,而不能保證軟件沒有錯誤。通過軟件測試,無法發(fā)現(xiàn)軟件中的所有錯誤和缺陷。從軟件開發(fā)的角度看,軟件的高質(zhì)量不是軟件測試人員測出來的,而是需要軟件生命周期的各個過程共同來保證的。出現(xiàn)軟件錯誤,不能簡單地歸結(jié)為某一個人或某個團隊的責任。比如有些錯誤的產(chǎn)生可能不是技術(shù)原因,可能來自于混亂的項目管理;或者客戶發(fā)現(xiàn)軟件某些功能并沒有按照原有需求來實現(xiàn),換言之,軟件沒有完成客戶想做的操作,諸如此類問題很可能是軟件設(shè)計人員理解需求錯誤致使設(shè)計不當所引起的。

 

  軟件的質(zhì)量,不僅僅只是測試人員的事情,軟件項目參與的所有人員都應該關(guān)注軟件的質(zhì)量。軟件質(zhì)量的提高,需要每個項目人員的努力。測試只是提高軟件質(zhì)量的一個重要環(huán)節(jié),質(zhì)量保證應該貫穿于整個軟件開發(fā)生命周期的所有的開發(fā)活動、測試活動、項目管理活動等。同時,采用合適的開發(fā)和測試過程,對改進軟件質(zhì)量也能起到重要的作用。除了測試活動外,同時應該分析軟件項目的各個過程,從過程改進方面尋找產(chǎn)生錯誤的原因和改進的措施。

 

  誤區(qū)3:測試人員不需要具備很高的技能

 

  不少軟件業(yè)人士認為軟件測試行業(yè)對軟件測試人員的技能要求不高。認為測試只是對照產(chǎn)品規(guī)格書操作軟件,發(fā)現(xiàn)軟件與規(guī)格說明不一致的地方,是沒有技術(shù)含量的工作。

 

  這種觀點是錯誤的,或者至少是步恰當?shù)。隨著軟件測試行業(yè)的發(fā)展,測試不僅僅是運行軟件發(fā)現(xiàn)缺陷的一個過程,而是從項目早期,測試人員開始介入,進行測試需求分析、計劃測試等。這要求測試人員有很好的溝通能力、理解能力、分析問題能力,同時還必須對產(chǎn)品開發(fā)技術(shù)有一定的了解。

 

  隨著軟件工程學的發(fā)展和軟件項目管理經(jīng)驗的提高,軟件測試已經(jīng)形成了一個獨立的技術(shù)學科,演變成一個具有巨大市場需求的行業(yè)。軟件測試技術(shù)不斷更新和完善,新工具、新流程、新測試設(shè)計方法都在不斷更新,需要掌握和學習很多測試知識。所以,具有編程經(jīng)驗的程序員不一定是一名的測試人員。軟件測試包括測試技術(shù)和管理兩個方面,完全掌握這兩個方面的內(nèi)容,需要很多測試實踐經(jīng)驗和測試理論知識,需要我們不斷的學習。

 

  誤區(qū)4:測試是測試人員的工作,和開發(fā)人員無關(guān)

  我們提倡軟件測試盡早介入軟件項目,或者說我們提倡貫穿于整個軟件開發(fā)生命周期的測試。因此,在項目概念、需求和設(shè)計階段,軟件測試應該介入項目中去。開發(fā)和測試是相輔相成的過程,需要軟件測試人員和程序員、系統(tǒng)分析員等項目其他成員保持密切的聯(lián)系,需要更多的交流和協(xié)調(diào),以便提高測試效率。在這些階段所發(fā)現(xiàn)的問題將有助于開發(fā)設(shè)計人員完善需求和設(shè)計。

 

  在項目開發(fā)過程中,一般由開發(fā)人員針對模塊進行白盒測試,這是早期的測試。后期對于測試人員所發(fā)現(xiàn)的缺陷,開發(fā)人員應根據(jù)優(yōu)先級來進行修復,針對開發(fā)人員的修改,測試人員還要進行再測試和回歸測試工作。因此,在整個項目過程當中,測試也不僅僅是測試人員的事情,而是測試人員和開發(fā)人員緊密合作的過程。

 

  誤區(qū)5:由項目進度來決定測試工作量

 

  規(guī)范的測試流程應該是一個整體的連續(xù)的過程,包括測試計劃和控制、測試分析和設(shè)計、測試實現(xiàn)和執(zhí)行等階段。每一階段也應有各自的規(guī)程。而大多數(shù)人對測試的理解往往是隨項目進度而定,即離項目交付空余的時間多,多做測試;反之,則少做測試。這樣很可能導致測試時間緊張,從而可能放棄其中的一些測試,可能導致遺漏一些重要的缺陷,顯然這種做法存在非常大的風險。

 

  測試進度由項目開發(fā)進度來確定,這個觀念很大程度上是因為“測試是開發(fā)生命周期的一個階段”這個誤區(qū)造成的。實際上,我們一直強調(diào),測試是貫穿于整個軟件開發(fā)生命周期的。在制訂軟件項目計劃的同時,需要規(guī)劃和制訂軟件測試的計劃。測試計劃的一個重要內(nèi)容是確定測試的進度(也是測試時間和資源的安排)。因此,測試時間的多少,應該在項目早期根據(jù)項目的特點和風險分析結(jié)果來確定,而不僅僅是決定于項目進度。

 

  誤區(qū)6:軟件測試是沒有前途的工作,只有開發(fā)人員是軟件高手

 

  由于我國軟件整體開發(fā)能力比較低,軟件過程還不規(guī)范。項目的成功往往靠個別開發(fā)人員的能力,他們負責總體設(shè)計和程序詳細設(shè)計,認為軟件開發(fā)是編寫代碼,給人的印象往往是程序員是真正的牛人,具有很高的地位和待遇。因此,在這種環(huán)境下,軟件測試并不受重視,軟件測試人員的地位和待遇自然偏低了,甚至軟件測試變得可有可無。

 

  隨著市場對軟件質(zhì)量要求的不斷提高,軟件測試將變得越來越重要,相應的軟件測試人員的地位和待遇將會逐漸提高。在微軟等軟件過程比較規(guī)范的大公司,軟件測試人員的數(shù)量和待遇與程序員沒有多大差別,測試人員的待遇甚至比程序員還要高。軟件測試將會成為一個具有很大發(fā)展前景的行業(yè),軟件測試大有前途。市場需要更多具有豐富測試技術(shù)和管理經(jīng)驗的測試人員,他們同樣是軟件專家。

 

  誤區(qū)7:自動化測試效率高,將取代軟件手工測試

 

  測試自動化在某些情況下可以提高測試的效率(比如完成重復的測試配置、模擬大虛擬用戶等),但是并不是所有的測試都適合自動化,如程序需要處理的數(shù)據(jù)量不大、程序運行的次數(shù)不多、或者測試需要一些人的主觀判斷(如界面測試)等,在這些情況下,自動化測試可能并不是很好的選擇。

 

  同時,自動化測試需要在前期投入大量的資源和工作量,同時需要維護的成本很高,包括環(huán)境的搭建、測試腳本的設(shè)計、維護等。因此,要具體情況具體分析,不能盲目推崇測試自動化。