請問應該學習哪種測試?
軟件測試相關的定義就不再詳細的介紹,這個可以去百度一下,有很詳細的說明。
目前比較通用的叫法及劃分,主要是以下幾種類型: 功能測試,性能測試,自動化測試,安全測試,接口測試,單元測試,額外專項測試(性能/安全測試本身也屬于專項測試,只是經常會單獨拿出來說)。可能不同的細分領域或公司有不同的叫法,但基本都涵蓋在這里面。
功能測試是最基本的,一般普通的測試人員都是從功能測試入門,一句話來講就是對研發出來的軟件進行功能點的驗證(包括正常/異常的情況),判斷它是否符合產品的預期,這個最重要的是要求對待測項目有足夠的了解。
當然,這只是一個概括的說法,實際工作中根據公司流程規范的不同,操作起來會有較大的差異(有的公司流程完善,要求各階段的測試交付件;有的公司沒有流程,測試人員也不會寫用例,直接測。當然各個公司有各自的做法,無需評論優略,適合就好)。
里面會涉及到軟件測試的整個生命周期:需求了解--測試計劃制定--測試設計--用例編寫--執行測試(環境搭建)--問題跟蹤--回歸測試。
其中對于測試設計,里面有許多方法論,比如:等價類劃分,因果圖,邊界值等等。這些是測試設計的理論知識,市面上有專門的書籍介紹,或者網上搜索一下也挺多,可以看一下。
除了測試設計理論,還應該掌握一些linux系統的基本操作,這個可能會在執行測試的時候進行環境搭建;另外像一些常用的請求工具(例如postman),抓包工具(例如fiddler)等都可以適當的了解一下。
工具技術是說不完的,最好是了解的越多越好,這個就是個經驗問題。有很多東西可能一輩子都用不上,但是當要使用的時候,能馬上想起來,可以使用這個技術或工具來幫忙達到目的。
性能測試,故名思意就是驗證軟件的性能是否達標預期。一般是基本功能測試完成之后才進行的,當然不是每個項目都必須要做,根據項目真實情況來決定。
目前網上提到性能測試,就直接是loadRunner,Jmeter等工具的介紹和使用,容易給人造成一種錯覺,以為性能測試就是工具的使用,這是比較片面的觀點。測試是通過各種技術手段,進行的一項有計劃有目的的活動,并不是某個工具的使用。
前面列舉的這2個性能測試工具,他們的名聲很大,通過使用他們,能快速的幫助進行性能測試,因此才形成了這樣的情況。
性能測試一般涉及到幾個方面:施壓工具,測試腳本,數據采集分析,問題定位。
施壓工具可以選用上面提到的2個工具;在某些特殊的項目,可能無法找到合適的施壓工具,這個時候可能就需要測試人員(或項目組出方案),自己寫對應的施壓代碼。
測試腳本用上面的2個工具可以錄制,但是錄制的東西不夠靈活,大多數情況下還是需要測試人員自己寫代碼的。
數據采集,主要是在性能測試過程中收集服務器,應用響應時間等相關的數據,便于對整個壓測過程進行評估分析,判斷是否有問題。大一些的公司可能一般都有類似的監控系統,可以直接查看。沒有的就可能需要測試人員去使用一些第三方軟件,安裝到服務器。
從上面的介紹可以看出,做性能測試比單純的功能測試涉及到的東西要復雜很多,他更考驗一個測試人員的綜合能力。不僅要分析待測場景(測試設計),還要自己準備測試腳本(工具使用,甚至具備研發能力),搭建環境,問題分析。
自動化測試,可以簡單的理解為將人工手動測試的工作,通過工具或代碼的方式轉化為計算機自動運行的用例,幫助測試人員進行回歸測試,從而提升測試效率。自動化測試的價值更多在于回歸測試和系統監控。
自動化測試可以運用在不同的層次,例如基于UI的自動化,基于接口的自動化,再底層可以涵蓋單元測試。
自動化工具非常多,常見的webdriver,selenium,qtp等等,可以根據自己的需求適當的了解。這些框架僅僅只是工具而已,它不代表自動化測試。
自動化測試要求可高可低,簡單的運用工具做做參數化就行,基本不涉及代碼;復雜的項目中,往往測試人員都會自己寫一套自動化測試框架,更適合自己的項目。
接口測試一般也是運用自動化測試工具,或者自己寫代碼的方式來測試,不再描述。
單元測試,普遍都是開發來完成,當然也有公司存在專職的白盒測試人員,這個要求就比較高,完全是寫代碼來測試。
另外,近幾年許多公司都設置了測試開發的崗位,他不僅需要了解基本的測試技能,還得有一定的開發能力,除了完成日常的測試工作外,還需要關注測試工具等偏開發的內容,上面的性能測試和自動化測試中也提到了,復雜項目的情況也需要測試人員進行一些工具開發,以滿足測試需求,這種測試人員就和開發測試很類似。
測試職位入門相對容易,但要做的好,還是需要下很多功夫的。對于專項測試,一定不要拘泥于某個工具的使用。
說一點現狀,國內測試人員水平層次不齊,從業人員可能會很多,但優秀的測試人員很少,感覺水軍比較多。
對于流程方面而言,很多公司都不具備較完善的流程,測試人員夾在其中,會感覺很難受,努力適應并盡力規范搞定它。
最后,如果有其他選擇,試試其他行業。