許多公司領(lǐng)導總是希望得到一個(gè)合理的比例,然后按這個(gè)比例分配招聘的名額,或者設法縮小測試隊伍,減少開(kāi)發(fā)成本。
多數情況下,測試人員工作量大,比開(kāi)發(fā)人員忙,所以想尋求一個(gè)數據,來(lái)說(shuō)服其公司,多招些測試人員。
有些專(zhuān)家說(shuō),根據調查結果發(fā)現通常的比例是1個(gè)測試人員對3個(gè)開(kāi)發(fā)人員。實(shí)際上,這樣的比例毫無(wú)意義。測試人員與開(kāi)發(fā)人員的比例會(huì )受到很多因素的影響,因不同的業(yè)務(wù)、文化和產(chǎn)品而不同。如果不管公司的文化、產(chǎn)品的類(lèi)型和責任定義等,一定要按照某個(gè)比例來(lái)分配測試人員與開(kāi)發(fā)人員,這是武斷的做法,缺乏科學(xué)性。有兩個(gè)典型的例子能說(shuō)明這個(gè)問(wèn)題:
微軟公司的測試人員與開(kāi)發(fā)人員比例一般為1:1,甚至在Windows 2000開(kāi)發(fā)團隊中,有1800個(gè)測試人員,900個(gè)開(kāi)發(fā)人員,測試人員與開(kāi)發(fā)人員比例為2:1。
在Google (谷歌)公司,則測試人員與開(kāi)發(fā)人員比例則很低,據谷歌公司的測試經(jīng)理介紹,為1:10.
那為什么呢?這里主要是測試人員與開(kāi)發(fā)人員工作范圍的定義,在這兩家公司差別挺大,在微軟,單元測試由測試人員(Software Development Engineer in Test, SDET)做, 相當于SDET再寫(xiě)一套代碼來(lái)測試開(kāi)發(fā)人員寫(xiě)的產(chǎn)品代碼,其工作量不比開(kāi)發(fā)人員低,另外,微軟開(kāi)發(fā)的產(chǎn)品都是比較復雜的操作系統、服務(wù)器軟件等,自然就需要很多的測試人員。而Google的單元測試和功能測試一般都是由開(kāi)發(fā)人員自己來(lái)完成,測試人員主要提供自動(dòng)化測試工具的支持。軟件開(kāi)發(fā)人員進(jìn)行了足夠的單元測試,單元測試的覆蓋度高達85%以上,軟件在交給測試人員時(shí),在功能上基本沒(méi)有缺陷,這樣測試人員主要集中精力進(jìn)行性能測試、負載測試、安全性測試等,而這些都是自動(dòng)化工具來(lái)完成的,自然需要較少的測試人員。
另外,測試人員與開(kāi)發(fā)人員還受所開(kāi)發(fā)的產(chǎn)品類(lèi)型、企業(yè)文化、項目環(huán)境、質(zhì)量要求水平、開(kāi)發(fā)人員或測試人員的自身素質(zhì)等影響。例如:
所開(kāi)發(fā)的產(chǎn)品是操作系統、基礎平臺,和一般的客戶(hù)端軟件、簡(jiǎn)單的Web應用系統,其測試需求、范圍和工作量都是不同的。如Windows操作系統要支持第3方各種應用程序、支持大量的API和各種硬件驅動(dòng)程序等,還有兼容DOS、32位/64位等應用程序,系統非常復雜、用戶(hù)操作也非常靈活,所以測試的工作量也大得多,需要大量測試人員的付出。
軟件設計、代碼的質(zhì)量,也就是企業(yè)文化、開(kāi)發(fā)人員的素質(zhì)和能力等直接影響了軟件的階段性成果的質(zhì)量,如果軟件構造質(zhì)量很高,其回歸測試范圍有限、重復測試的次數只有1~2次,而不是4~5次,結果,測試的工作量大大降低,測試人員數量隨之降低。
例如,許多免費的網(wǎng)絡(luò )應用產(chǎn)品總是將自己定位在Beta版,那么,會(huì )降低質(zhì)量水平,讓用戶(hù)試用,并幫助發(fā)現一些缺陷(因為免費,用戶(hù)也不能抱怨什么),這樣的話(huà),公司內部測試的努力會(huì )少多了。
測試人員素質(zhì)高,精兵強將,那么人數就會(huì )少些;如果測試人員定位低、待遇低,就可能靠人海戰術(shù),那么人數就會(huì )多。
在敏捷方法中,開(kāi)發(fā)人員的主導作用比較明顯,測試人員對開(kāi)發(fā)人員的比例會(huì )低些。如果采用測試驅動(dòng)開(kāi)發(fā),測試人員對開(kāi)發(fā)人員的比例會(huì )更低。這時(shí),測試人員和開(kāi)發(fā)人員的界限也變得模糊些。
當然,針對一個(gè)具體公司,流程、產(chǎn)品和文化等都定型了,可以根據自己的經(jīng)驗、歷史數據等,定出一個(gè)合適的比例,如1:2、1:3等,都是可以的。如果一個(gè)軟件公司,硬要參考微軟、谷歌或其它某個(gè)公司的做法,也許就不合理。一定要找相似的公司,那家公司又做得很成功,那就可以直接參考。
也許將來(lái)某一天,測試人員和開(kāi)發(fā)人員會(huì )合二為一,并沒(méi)有明顯的區分,只是每個(gè)人的任務(wù)會(huì )有所不同,大家都能勝任、完成某個(gè)任務(wù)中的測試和開(kāi)發(fā)的工作。所以,作為測試人員,掌握良好的技術(shù)也是必要的,包括編程能力。
[新發(fā)現的文章 4/14/2010] google v. microsoft, and the dev:test ratio debate
Google 測試工程師職責:
Developing test strategies.
Automating tests using test works.
Write moderately complex code/s to test systems.
Take responsibility for monitoring product development and usage at all levels with an eye toward improving product quality.
May create test harnesses and infrastructure.
微軟SDET的責任:
Hire developers to write code to test code. Our goal is to have engineers writing robust, reliable and repeatable tests that find issues early and cover the surface area of the component under test thoroughly.
SDETs are in the source code for the product as much as they are working with test source and our SDETs build the work used for testing.
Build programmatic tests that are self-verifying, that are easily extensible and that are not simply comparing “data in” to “expected out”.
A successful SDET derives pleasure from building lasting designs, implementing robust maintainable code, and being a partner in the design of the components while advancing the technologies and approaches for testing software
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/