本人一直在做產品和項目的公司測試部門從事測試工作,從未在第三方測試團隊中工作過,因此,本人的觀點僅限于非第三方測試團隊。
在本人的從業經歷中,先后涉及過醫療、水利、政府、軍隊等行業,以個人的經歷來看,在非第三方測試團隊中,是不存在專職的性能測試團隊的。這是由于所在公司的性質以及測試工作任務所決定的。由于處在非第三方的測試團隊中,其工作任務就是負責公司的產品或項目的質量保證。在日常的工作中,80%以上的工作屬于需求分析和功能測試,當然,對于做產品的公司來說,功能測試中還包含自動化測試;而性能測試工作僅在功能穩定后,才會正式開展,因此,性能測試的工作量僅占日常工作的20%左右。正是由于性能測試工作所占日常工作量的比重不大,所以,公司不可能組建專職的性能測試團隊,因為公司不可能讓這些性能測試工程師在一年的大部分時間內都閑著。。。
(當然,性能測試應該從單元測試就開始,這樣才能盡早的發現問題,這也是國外軟件測試所推崇的。但是,這不符合我國當前的軟件測試發展形勢。畢竟軟件測試行業在國內尚屬發展初期,現在能組織性能測試工作的公司就已經很不錯了,有相當一部分公司都是只要軟件不宕機,壓根就不會想起性能測試的。 )
抱怨完當前的形勢之后,咱們言歸正傳。雖說公司不會組建專職的性能測試團隊,但是公司卻提倡軟件測試人員具備性能測試的技能,平時從事功能測試,一旦有性能測試需求,也可以立即投入。(給的是功能測試工程師的待遇,干的卻有性能測試工程師的活。公司還真會算賬。。。 )
接下來談一下測試團隊應具備的性能測試技能吧。
首先,性能測試的重點是場景設計。那么,測試團隊就必須具備需求調研和分析的能力。有人會說,性能測試指標都是用戶給定的,還需要需求調研和分析能力么?答案是肯定的。因為相當一部分用戶所提出的性能測試指標是不可靠的。他們提出的性能測試指標,往往是拍腦袋拍出來的。如:一個業務發生頻率不高的系統,但用戶數卻在4萬人,這時候用戶很可能就會要求并發數在4000左右,但實際上沒有那么大的業務量,系統是不需要那么高的并發數的。反之,有的系統雖說用戶數不是太多,但是業務發生頻率很高,這種系統要求的并發數也不會很低。因此,測試人員必須具備需求調研和分析的能力,能夠引導客戶,得到真實的業務發生頻率、發生類型、業務量以及數據量。從而,分析出系統可能出現性能瓶頸的業務,并進行場景設計;
其次,應具備一定的系統分析能力。被測軟件所用框架、中間件、業務組件、硬件、網絡、部署結構等所有因素,哪些地方有可能出現性能瓶頸。那么,它一定在你的測試場景覆蓋范圍之內。如:一個使用頻率不高的業務組件,但由于業務復雜度較高或資源沖突等因素,很有可能會成為性能瓶頸的。
最后,就是應具備負載生成工具及監控工具的應用能力。畢竟,設計的性能測試場景是需要被執行,性能測試執行結果是需要被采集的。
如果已經掌握上述的各項能力,那么說明這支團隊已經具備初級的性能測試執行能力。接下來,再談一下更高的要求。
第一,掌握硬件的配置及原理。如:F5負載均衡服務器,采用的是哪種均衡策略,這將直接影響到你的性能測試場景的設計及執行的效果;
第二,掌握被測軟件所用操作系統的常用命令,它可以幫助你啟動/關閉操作系統的服務,以及系統資源使用情況;
第三,掌握被測軟件所用中間件的配置參數及監控方法;
第四,掌握必要的開發能力。商業化的測試工具畢竟有一定的局限性,很難完全支撐各類性能測試的執行。因此,需要開發必要的負載生成工具、預埋數據腳本、監控工具等;
第五,掌握測試結果分析和調優的能力。測試結果僅僅是采集到還是不夠的,還需要分析系統運行時的資源使用情況,分析系統性能瓶頸以及是否存在由于性能原因導致功能性錯誤等問題。當然,如果能夠根據測試結果,給出性能瓶頸的解決方法,那么,這支測試團隊就是支高素質的性能測試團隊。
以上僅僅是個人的一些觀點,不足之處,還望大家指正。