軟件測試的核心在于檢驗被測對象是否滿足用戶的要求,從這一目標不難看出,測試者一定要站在用戶的角度思考問題,從用戶的實際使用環境、習慣著手驗證被測對象應用表現。只有這樣,才能滿足用戶需求,輔以高質量的產品設計、高效的生產過程,研發出來的軟件才是高質量的產品。因此以最終用戶身份進行軟件產品測試將是未來一段時期內主要的測試思路。

  與軟件開發的創造性相比,軟件測試活動需具有破壞性思維。被測對象不僅能處理正確、正常的業務操作,也需經得起異常輸入、異常操作的考驗,軟件系統應當具備某種程度的健壯性要求。

  軟件測試相比其他IT工作,行業進入門檻低。從業務測試角度考慮,從業人員僅需掌握被測對象的業務知識,了解一些基本的測試方法,以最終用戶身份去使用檢驗被測對象即可勝任。

  如果需要完成自動化、性能測試,甚至是白盒測試,也只需學習一門編程語言和一些工具即可勝任。當然,還可能需要其他一些輔助知識,如數據庫、操作系統(Linux/Unix)、服務架構類(Web Server、中間件、網絡硬件等),當然隨著IT技術的迅速發展,測試工程師所需掌握的技術也越來越多。

  行業沒有好壞,只有是否適合自己,軟件測試工作進入門檻低,技術升級相對緩慢,隨著測試經驗和技術能力在實際工作中的不斷加強,提升相對容易,價值體現在腦力活動上,但軟件測試工作也是一個細心、耐心活,對從業者的職業素質要求較高。

  軟件測試職業發展中,從職業技術要求角度,可分為手工測試、自動化測試(包括自動化功能、性能)、白盒測試等幾個方面。從業務知識角度,可分為金融產品、電  子商務、移動互聯等業務方向,從測試管理角度,則有測試主管、測試經理、測試總監等之分,從測試資歷來分,則有初級測試工程師、中級測試工程師、高級及專家級測試工程師。

  軟件測試在軟件生產分工合作細化的發展進程中,其職業崗位要求不斷被細化,新入行的讀者可根據自己的興趣愛好及性格特點選擇適合自己發展的職位。

  軟件測試工作與軟件開發工作相比,主要有以下幾點不同。

1.知識體系要求不同

從軟件生產活動分工來看,軟件開發與軟件測試是軟件生產過程中非常重要的兩個環節。

軟件開發人員需要了解業務背景、需求、編程語言、數據庫、操作系統等知識,在整個知識體系中是偏向于產品構建型知識。

軟件測試人員則不然,在日常測試工作中,需要站在用戶的角度思考問題,可以對軟件開發及軟件內部知識不做太多了解,更多地偏向于應用產品、破壞產品。在工作中可能同時測試若干項目,可能面臨著不同編程語言編寫、不同架構平臺、不同業務知識背景,甚至完全不同的操作模式(網頁游戲和手機游戲),因此測試工程師需要知識的廣度,在知識廣度增加的同時提高技術深度。

2.技術技能要求不同

軟件開發工程師需掌握一系列專業的編程語言、數據庫、操作系統、服務器管理等知識,編程技能,如C、C++、Java等,數據結構、算法,常用的IDE平臺,如VS、Eclipse等,數據庫如MySQL、SQL Server、Oracle、MangoDB等,操作系統如Windows Server、Linux/UNIX等。

開發知識更新相對較快,對腦力要求較高,隨著年齡的增長,精力逐年下降,因此很多開發工程師做到一定年限后基本都轉向管理崗位了。

軟件測試掌握的技能相對要簡單些,基本都是圍繞應用層面考慮,如測試理論、測試流程、測試用例設計方法、缺陷管理知識。如果需要實施自動化或性能測試,可利用Selenium、Appium、Jmeter、LoadRunner等工具,掌握通用的編程語言,如C、C++、Java、Python語言等,即可滿足大部分需求,也可以學習些腳本語言,如js、vbs、Python等,而數據庫、操作系統等方面的知識僅在實現性能測試或其他測試目標時需要。

3.問題思維模式不同

軟件開發工程師的問題思維模式是創造性的,關注重點是如何構造,如何實現,如何編寫高質量的代碼。

軟件測試工程師的思維模式則是破壞性的,會想方設法從用戶的使用角度破壞系統,構建正常、異常輸入,發現被測對象表現特性與用戶需求的偏離現象。

因而,選擇軟件測試還是軟件開發崗位,除了崗位性質分析外,還需結合自身情況來考慮!