本人在作軟件測試以前,作軟件開發,只不過是一些簡單的Windows應用程序. 我的認爲本身在開發方面並無什麼天賦,也不喜歡,甚至曾經懷疑過是否是要放棄IT,轉入其餘行業。但換了一份工做,並有幸到知名IT公司從事軟件測試工做。今後,肯定了軟件測試正是我一直尋找並立志於一直從事下去的行業。數據庫
我作軟件測試的工做並不長,幾年而已,但深深喜歡這個行業。很奇怪,同是關於軟件,討厭開發,卻喜歡測試。數據結構
一、軟件開發和測試的區別ide
這是一個能夠引發不少爭論的話題。開發有時比較討厭測試團隊,由於測試,就是挑毛病。尤爲是產品出現問題時,開發和測試更是相互推卸責任。不少軟件開發人員,看不起測試的工做,認爲沒有什麼技術含量。其實,這是很大的誤區。 軟件開發和軟件測試確實有很大的不一樣。首先,技術要求不一樣。從開發語言來說,開發也分不少方面。用JAVA開發的不多轉向.net, 作嵌入式的不會去作網站。開發對於技術的要求是「精」,開發成天研究的是如何實現軟件的功能,要用哪些類,這些類的哪些方法,數據結構的研究,變量的肯定和函數之間的調用。若是作上曾應用,大部分開發都想的是如何使用API, 庫函數等等,固然這些大部分都是別人寫好的,本身去使用。我想很受有人能去Sun或Misrosoft作庫函數的開發吧。雖然使用的是現成的東西,但想作一個東西出來,哪怕只有很簡單的功能,也是不容易的。要考慮的東西不少,譬如說效率,如何定義函數,接口等等。因此開發看測試時,大多自命不凡。呵呵,沒辦法,我的也認爲,從技術角度講,開發確實比測試難。作一個東西,總比測一個東西難吧。函數
下面說說測試的技術要求。軟件測試,80%都是重複性勞動。測試的主要工做包括,搭建 測試環境,設計測試用例, 執行測試用例, 開bug, 驗證bug. 測試的難點在於: 1. 如何根據產品的功能,設計測試用例, 測點在什麼地方 2. 如何在有限的時間裏,合理的安排人員,資源,儘量多的測試產品,儘量多的發現產品的缺陷 3. 如何合理的將重複性勞動變爲自動執行(automation) 第一點,要求測試人員很是熟悉產品的功能,而且根據本身的知識貯備,分析出那些須要測,哪些不須要。好比,一個log in 的功能,1)界面須要測, 2)field 的max length 須要測, 3) 用戶名或者密碼錯誤,軟件怎樣處理, 4)重複錯誤登錄,軟件怎樣處理 5)正確登錄後,退出,在登入,軟件怎樣處理, 6)須要跨平臺嗎? 只是舉了一個簡單的例子,能夠看出,開發和測試的出發點就是不一樣的,開發是如何實現軟件, 而測試時如何發現軟件的缺陷。 第二點,要求測試人員要考慮資源和時間的合理分配,(大部分是測試經理要考慮的問題)那部分要分配的資源多些,那部分少些。好比說這個release 有一個新的功能,那麼這個功能應該在全部的平臺,版本都要測,全面的測試。而一些原有的功能,有些能夠交叉測,有些能夠在推測會有用戶使用的方面,多測一些(regression test) 第三點,就是如何automation. 這對於軟件測試而言,是很是經典的話題。應不該該automation, 如何automation, 我想在之後的帖子中再議。測試
軟件測試對於技術的要求的廣但不精,對於軟件的理解,數據庫,操做系統,Linux, 腳本,都是必會的。整體說來,有開發經驗的對於從事測試工做,幫助很大。能夠幫助理解軟件,會考慮軟件是如何實現的,很是有助於設計測試用例。網站