測試和開發的區別和關係是什麼

  說起軟體開發與測試,大概很多人都不清楚二者的關係和區別吧,今天小編就帶大家看看 軟體測試和軟體開發的區別,一起來學習!

  軟體開發與軟體測試的區別

  軟體測試主要是發現問題並查出BUG,發現軟體中的錯誤,再整理成資料。為軟體開發開發人員。軟體開發主要由開發人員負責,編碼工作和一系列文件,開發人員中也有很多種,像程式設計師、系統構架師、專案經理、系統分析師。他們職責也是不同的。軟體測試主要由測試人員負責,查出軟體中的問題告訴開發人員他們進行修改。軟體開發是一個創造的過程。要構造出一個新的軟體。 軟體測試是一個維護的過程。一般來說,新開發出一個新的軟體一定是有錯誤或漏洞的,需要經過各種測試去發現問題、解決問題,直到完全沒有問題之後再進入下一個環節。故而 一般是先開發後測試。 軟體開發工程師需要會編寫程式碼實現軟體功能, 軟體測試工程師則除了要知道如何開發軟體之外,還需要熟悉測試的方法和具備一些測試的能力,最好是能夠糾正錯誤。在薪水收入方面,軟體開發的跨度非常大,一般1000-4、5萬/月不等 軟體測試的薪資則相對穩定,一般為2000-6000/月, 而職業年限上, 軟體開發一般為3-5年 ,軟體測試則有可能做到退休。

  軟體開發和測試的關係

  1、沒有軟體開發也就沒有測試,軟體開發為軟體測試提供物件。

  2、軟體開發和軟體測試都作為軟體生命週期的重要組成部分

  3、軟體開發和軟體測試都是軟體過程之中的重要活動。

  4、軟體測試是保證軟體開發的產物質量的重要手段。

  軟體測試的介紹

  軟體測試***英語:Software Testing***,描述一種用來促進鑑定軟體的正確性、完整性、安全性和質量的過程。換句話說,軟體測試是一種實際輸出與預期輸出間的稽核或者比較過程。軟體測試的經典定義是:在規定的條件下對程式進行操作,以發現程式錯誤,衡量軟體質量,並對其是否能滿足設計要求進行評估的過程。

  軟體測試發展史

  軟體測試是伴隨著軟體的產生而產生的。早期的軟體開發過程中軟體規模都很小、複雜程度低,軟體開發的過程混亂無序、相當隨意,測試的含義比較狹窄,開發人員將測試等同於“除錯”,目的是糾正軟體中已經知道的故障,常常由開發人員自己完成這部分的工作。對測試的投入極少,測試介入也晚,常常是等到形成程式碼,產品已經基本完成時才進行測試。到了上世紀80年代初期,軟體和IT行業進入了大發展,軟體趨向大型化、高複雜度,軟體的質量越來越重要。這個時候,一些軟體測試的基礎理論和實用技術開始形成,並且人們開始為軟體開發設計了各種流程和管理方法,軟體開發的方式也逐漸由混亂無序的開發過程過渡到結構化的開發過程,以結構化分析與設計、結構化評審、結構化程式設計以及結構化測試為特徵。人們還將“質量”的概念融入其中,軟體測試定義發生了改變,測試不單純是一個發現錯誤的過程,而且將測試作為軟體質量保證***SQA***的主要職能,包含軟體質量評價的內容,Bill Hetzel在《軟體測試完全指南》***Complete Guide of Software Testing***一書中指出:“測試是以評價一個程式或者系統屬性為目標的任何一種活動。測試是對軟體質量的度量。”這個定義至今仍被引用。軟體開發人員和測試人員開始坐在一起探討軟體工程和測試問題。

  軟體測試已有了行業標準***IEEE/ANSI ***,1983年IEEE提出的軟體工程術語中給軟體測試下的定義是:“使用人工或自動的手段來執行或測定某個軟體系統的過程,其目的在於檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別”。這個定義明確指出:軟體測試的目的是為了檢驗軟體系統是否滿足需求。它再也不是一個一次性的,而且只是開發後期的活動,而是與整個開發流程融合成一體。軟體測試已成為一個專業,需要運用專門的方法和手段,需要專門人才和專家來承擔。

  進入上世紀90年代,軟體行業開始迅猛發展,軟體的規模變的非常大,在一些大型軟體開發過程中,測試活動需要花費大量的時間和成本,而當時測試的手段幾乎完全都是手工測試,測試的效率非常低;並且隨著軟體複雜度的提高,出現了很多通過手工方式無法完成測試的情況,儘管在一些大型軟體的開發過程中,人們嘗試編寫了一些小程式來輔助測試,但是這還是不能滿足大多數軟體專案的統一需要。於是,很多測試實踐者開始嘗試開發商業的測試工具來支援測試,輔助測試人員完成某一型別或某一領域內的測試工作,而測試工具逐漸盛行起來。人們普遍意識到,工具不僅僅是有用的,而且要對今天的軟體系統進行充分的測試,工具是必不可少的。測試工具可以進行部分的測試設計、實現、執行和比較的工作。通過運用測試工具,可以達到提高測試效率的目的。測試工具的發展,大大提高了軟體測試的自動化程度,讓測試人員從繁瑣和重複的測試活動中解脫出來,專心從事有意義的測試設計等活動。採用自動比較技術,還可以自動完成測試用例執行結果的判斷,從而避免人工比對存在的疏漏問題。設計良好的自動化測試,在某些情況下可以實現 “ 夜間測試 ” 和 “ 無人測試 ” 。在大多數情況下,軟體測試自動化可以減少開支,增加有限時間內可執行的測試,在執行相同數量測試時節約測試時間。 而測試工具的選擇和推廣也越來越受到重視。在軟體測試工具平臺方面,商業化的軟體測試工具已經很多,如捕獲/回放工具、Web測試工具、效能測試工具、測試管理工具、程式碼測試工具等等,這些都有嚴格的版權限制且價格較為昂貴,但由於價格和版權的限制無法自由使用,當然,一些軟體測試工具開發商對於某些測試工具提供了Beta測試版本以供使用者有限次數使用。幸運的是,在開放原始碼社群中也出現了許多軟體測試工具,已得到廣泛應用且相當成熟和完善。

  軟體開發的介紹

  軟體開發是根據使用者要求建造出軟體系統或者系統中的軟體部分的過程。軟體開發是一項包括需求捕捉、需求分析、設計、實現和測試的系統工程。軟體一般是用某種程式設計語言來實現的。通常採用軟體開發工具可以進行開發。軟體分為系統軟體和應用軟體,並不只是包括可以在計算機上執行的程式,與這些程式相關的檔案一般也被認為是軟體的一部分。 軟體設計思路和方法的一般過程,包括設計軟體的功能和實現的演算法和方法、軟體的總體結構設計和模組設計、程式設計和除錯、程式聯調和測試以及編寫、提交程式。

  軟體開發階段劃分

  計劃

  對所要解決的問題進行總體定義,包括瞭解使用者的要求及現實環境,從技術、經濟和社會因素等3個方面研究並論證本軟體專案的可行性,編寫可行性研究報告,探討解決問題的方案,並對可供使用的資源***如計算機硬體、系統軟體、人力等***成本,可取得的效益和開發進度作出估計,制訂完成開發任務的實施計劃。

  分析

  軟體需求分析就是對開發什麼樣的軟體的一個系統的分析與設想。它是一個對使用者的需求進行去粗取精、去偽存真、正確理解,然後把它用軟體工程開發語言***形式功能規約,即需求規格說明書***表達出來的過程。本階段的基本任務是和使用者一起確定要解決的問題,建立軟體的邏輯模型,編寫需求規格說明書文件並最終得到使用者的認可。需求分析的主要方法有結構化分析方法、資料流程圖和資料字典等方法。本階段的工作是根據需求說明書的要求,設計建立相應的軟體系統的體系結構,並將整個系統分解成若干個子系統或模組,定義子系統或模組間的介面關係,對各子系統進行具體設計定義,編寫軟體概要設計和詳細設計說明書,資料庫或資料結構設計說明書,組裝測試計劃。在任何軟體或系統開發的初始階段必須先完全掌握使用者需求,以期能將緊隨的系統開發過程中哪些功能應該落實、採取何種規格以及設定哪些限制優先加以定位。系統工程師最終將據此完成設計方案,在此基礎上對隨後的程式開發、系統功能和效能的描述及限制作出定義。

  設計

  軟體設計可以分為概要設計和詳細設計兩個階段。實際上軟體設計的主要任務就是將軟體分解成模組是指能實現某個功能的資料和程式說明、可執行程式的程式單元。可以是一個函式、過程、子程式、一段帶有程式說明的獨立的程式和資料,也可以是可組合、可分解和可更換的功能單元。模組,然後進行模組設計。概要設計就是結構設計,其主要目標就是給出軟體的模組結構,用軟體結構圖表示。詳細設計的首要任務就是設計模組的程式流程、演算法和資料結構,次要任務就是設計資料庫,常用方法還是結構化程式設計方法。

  編碼

  軟體編碼是指把軟體設計轉換成計算機可以接受的程式,即寫成以某一程式設計語言表示的“源程式清單”。充分了解軟體開發語言、工具的特性和程式設計風格,有助於開發工具的選擇以及保證軟體產品的開發質量。

  當前軟體開發中除在專用場合,已經很少使用二十世紀80年代的高階語言了,取而代之的是面向物件的開發語言。而且面向物件的開發語言和開發環境大都合為一體,大大提高了開發的速度。

  測試

  軟體測試的目的是以較小的代價發現儘可能多的錯誤。要實現這個目標的關鍵在於設計一套出色的測試用例***測試資料與功能和預期的輸出結果組成了測試用例***。如何才能設計出一套出色的測試用例,關鍵在於理解測試方法。不同的測試方法有不同的測試用例設計方法。兩種常用的測試方法是白盒法測試物件是源程式,依據的是程式內部的的邏輯結構來發現軟體的程式設計錯誤、結構錯誤和資料錯誤。結構錯誤包括邏輯、資料流、初始化等錯誤。用例設計的關鍵是以較少的用例覆蓋儘可能多的內部程式邏輯結果。白盒法和黑盒法依據的是軟體的功能或軟體行為描述,發現軟體的介面、功能和結構錯誤。其中介面錯誤包括內部/外部介面、資源管理、整合化以及系統錯誤。黑盒法用例設計的關鍵同樣也是以較少的用例覆蓋模組輸出和輸入介面。

  維護

  維護是指在已完成對軟體的研製***分析、設計、編碼和測試***工作並交付使用以後,對軟體產品所進行的一些軟體工程的活動。即根據軟體執行的情況,對軟體進行適當修改,以適應新的要求,以及糾正執行中發現的錯誤。編寫軟體問題報告、軟體修改報告。

  一箇中等規模的軟體,如果研製階段需要一年至二年的時間,在它投入使用以後,其執行或工作時間可能持續五年至十年。那麼它的維護階段也是執行的這五年至十年期間。在這段時間,人們幾乎需要著手解決研製階段所遇到的各種問題,同時還要解決某些維護工作本身特有的問題。做好軟體維護工作,不僅能排除障礙,使軟體能正常工作,而且還可以使它擴充套件功能,提高效能,為使用者帶來明顯的經濟效益。然而遺憾的是,對軟體維護工作的重視往往遠不如對軟體研製工作的重視。而事實上,和軟體研製工作相比,軟體維護的工作量和成本都要大得多。

  在實際開發過程中,軟體開發並不是從第一步進行到最後一步,而是在任何階段,在進入下一階段前一般都有一步或幾步的回溯。在測試過程中的問題可能要求修改設計,使用者可能會提出一些需要來修改需求說明書等。


猜你感興趣: