軟件測試的目的是通過發現程序中的錯誤來提高軟件產品的質量,一個成功的測試是發現了至今未發現的錯誤的測試,通過不斷測試、修改、再測試、再修改,不斷持續循環的過程來提高軟件產品的質量,規避軟件系統上線后由于潛在的缺陷造成的風險隱患所帶來的商業風險。可以說軟件測試只能證明軟件存在缺陷的過程。
軟件測試的誤區
軟件測試很容易讓人產生一種誤解,特別是一些不懂軟件測試的項目管理人員、開發人員、DBA、運營等人認為軟件測試工作就是為了找bug,不就是在軟件程序上點點點嗎?把軟件測試工作看得一文不值,導致軟件測試人員的在公司的地位比較低,同時給剛畢業的大學生也造成了一些誤解,認為軟件測試工作簡單好做,門檻低,沒有技術含量,只要是人就能做。每一項工作的目的都是有價值的,就像我們軟件測試,它的主要價值就在于發現程序中的錯誤提高軟件的質量,如果沒有軟件測試,用戶誰敢用我們企業的軟件,我們的質量怎么能夠保證?
作為一名合格的軟件測試工程師,除了找到缺陷,還需要跟蹤缺陷,直至問題完全修復,然后對缺陷進行回歸確認,最后關閉缺陷。除此之外,測試人員還需要分析這個問題,找到這個問題發生了根本原因,避免類似問題在其他產品或模塊再次發生。
軟件測試的定義
大家都知道軟件是由文檔、數據、源代碼等配置項組成,所以軟件測試針對的也就不僅僅是軟件本身,而是包括軟件形成過程的文檔、數據以及源代碼。軟件測試是指在規定的條件下對軟件進行功能驗證、性能效率、安全性、可靠性等軟件特性驗證的過程,以發現軟件運行中的錯誤來度量軟件質量。也就是說軟件測試是一種實際輸出與預期輸出之間的審核或者比較過程。
軟件測試分類
按測試技術劃分
1.白盒測試:注重程序內部邏輯處理,能看見程序源代碼是基于代碼層面的測試,分為代碼走查和代碼審查。
2.黑盒測試:相對于白盒測試而言的一種測試方法,把程序理解成一種黑盒子,關注程序的輸入與輸出,看不到代碼。
3.灰盒測試:介于白盒和黑盒之間的一種測試方法
按測試內容劃分
1.功能測試:屬于黑盒測試方法,通過測試人員設計具體的測試用例來驗證軟件的功能是否符合需求。
2.界面測試:即UI測試,驗證軟件界面布局是否符合客戶的風格,不同的軟件具有不同的界面。
3.性能測試:通過對被測件施加并發壓力,獲取系統最大并發數,響應時間,吞吐量,為系統上線提供參考依據。
4.兼容性測試:主要分為瀏覽器兼容性、APP終端兼容性,通過兼容性測試來驗證軟件系統是否具備最佳運行表現。
5.安全測試:通過安全測試驗證系統是否存在安全漏洞,是否具備防止非法請求入侵的能力,分為漏洞掃描、滲透測試、源代碼安全審計
6.易用性測試:驗證軟件是否簡單易用
按測試對象是否運行劃分
1.動態測試:通過運行軟件程序才能驗證軟件特性是否符合要求的測試
2.靜態測試:不運行軟件程序,常用于文檔檢查,代碼走查
按測試手段劃分
1.手工測試:就是人工測試,執行“點點點”的過程
2.自動化測試:通過相應的測試工具(自研、采購)進行的一種自動化測試,需要測試人員具有一定的編程能力
軟件測試模型
軟件測試模型常被用來指導整個軟件測試過程,常見的模型包括:V模型、W模型、H模型、X模型,其中V模型是最具代表性。主要說一下V模型吧,該模型呈現“V”字型,如下圖:
1.用戶需求與需求分析:收集用戶需求,并對用戶需求進行分析的過程,也是軟件進行系統測試、驗收測試的依據。
2.概要設計:建立系統的邏輯模型,主要任務是將一個復雜系統按功能進行模塊劃分、建立模塊的層次結構及調用關系、確定模塊間的接口及人機界面。
3.詳細設計:對概要設計進一步分析,屬于軟件開發的一部分,設計符合用戶需求的軟件產品。
4.編碼:對詳細設計中部分實現的過程。
5.單元測試:主要是測試程序代碼,為的是確保各單元模塊被正確的編譯,單元的具體劃分按不同的單位與不同的軟件有不同。
6.集成測試:驗證各單元模塊間的功能實現情況,以及模塊接口連接的成功與否,數據傳遞的正確性等,主要目的是檢查軟件單位之間的接口是否正確。
7.系統測試:把軟件系統搭建起來,驗證軟件其功能、性能等是否符合用戶需求,在系統中運行是否存在漏洞等。
8. 驗收測試:項目交付驗收。
軟件測試的發展前景
最近幾年,隨著“互聯網+”浪潮的興起,軟件測試技術也在不斷進步,如:非功能測試、接口測試、自動化測試、滲透測試、源代碼測試等,對測試人員的要求越來越高,普通的功能測試工作逐漸被自動化的測試工作所替代。另一方面,企業項目管理者也越來越重視軟件測試工作,不惜花重金聘請測試專家來公司指導測試工作,測試人員的地位和待遇也在不斷提升。