微軟的軟件測試人員分為兩類:測試工具軟件開發工程師(Software Development Engineer in Test, 簡稱SDE/T) 和軟件測試工程師(Software Test Engineer,簡稱STE)。
測試工具軟件開發工程師:負責寫測試工具代碼,并利用測試工具對軟件進行測試;或者開發測試工具為軟件測試工程師服務。產品開發后的性能測試(Performance Test) 、提交測試(Check-in Test) 等過程,都有可能要用到SDE/T 開發的測試工具。由于SDE/T和SDE 的工作都是寫代碼,具有相通的地方,所以兩者之間互相轉換的情況比較多。但需注意的是,兩者寫出來的代碼用途是不一樣的,SDE 寫的是產品的代碼,而SDE/T 寫的代碼只用于測試產品。
軟件測試工程師:負責理解產品的功能要求,然后對其進行測試,檢查軟件有沒有錯誤(Bug),決定軟件是否具有穩定性(Robustness) ,并寫出相應的測試規范和測試用例。除此之外,在一個軟件產品的研發和銷售過程中,還會需要負責給產品打補丁(Service Pack)的快速修正工程師(Quick Fix Engineer) ,通常曲SDE 來擔任,通過電話方式向用戶提供售后技術支持的支持工程師(Support Engineer),銷售和市場(Sales and Marketing)人員,研究員和研究工程師(Researchers & Research SDE) 。在進行產品開發的時候,主要是由前面三類人員(項目經理、開發人員及測試人員)組成產品開發團隊來進行的。在微軟內部,軟件測試人員與軟件開發人員的比率一般為1.5-2.5 左右,這可能遠遠超出了大家對測試人員的理解,但微軟軟件開發的實踐過程已經證明了這種人員結構的合理性。下圖中顯示了上述兩個產品的微軟軟件開發人員的一般配置圖。
下面以微軟Exchange2O0O 和Windows2000 為例介紹一下微軟產品團隊的人員結構(這里只分析三類主要的人員,即項日經理、開發人員及測試人員),如下表所示。
二、測試時應考慮的幾個問題
(1)測試最重要的一件事就是要考慮到所有的出錯可能性。同時,還要做一些不是按常規做的、非常奇怪的事。
說起來可能不太好聽,測試的過程就像黑客(Hacker) 的攻擊過程那樣?梢赃@么說,像黑客這樣的人是最好的軟件安全測試員。他們專門找軟件的漏洞,從而破壞這個軟件,這樣就可以修復這些漏洞來保證軟件的性能。如果找不到這種漏洞,那就說明該軟件質量己經很好了。
(2) 除了漏洞之外,測試還應該考慮性能(Performance) 問題,也就是一定要保證軟件運行得很好,非?,沒有內存泄漏,不會出現那種越來越慢的情況。
我們可以在不關機的情況下,與其他軟件一起持續運行一個多月,看看是否會出現越來越慢的情況(當然必須保證其他軟件是沒有問題的)。我們在做IE 的時候,就是讓它72 小時連續不停地打開不同的網頁,處理幾萬個不同的網頁,而且速度不能減慢。有許多軟件,當只有一兩個人用的時候,可能感覺不到什么問題,而當幾百個用戶一起用的時候,有的網站就出現各種各樣的異常,這就是測試工作還比較欠缺的緣故。
(3) 另外,測試還要考慮軟件的兼容性(Compatibility) 。一般來說,一個軟件是由許多小軟件構成的,如果其中一個小軟件與它的前一版本不兼容,那么這個軟件就會出現錯誤。這種錯誤需要通過測試來發現和解決。
許多人認為寫代碼的人一定能找出錯誤來。其實開發人員在寫代碼的時候,如果有錯誤,他可以意識到了,可是寫出來的錯誤,他不一定能想得到。我自己也編過程序,在編程序的時候很自信,覺得不會有錯,可事實上,即使是我編的小程序也有錯誤,但要自己找出來,卻要費很大勁。因為我一直認為自己不應該出錯,但常常錯誤就出現在我認為最有把握的地方。我是學數學的,是一個很細心的人,可是--樣還是會出錯,但要找出自己的錯誤卻要花費很長的時間。后來我寫的代碼讓我的師弟幫我看,結果他很快就找到許多問題,可是我自己花一個月時間可能都找不到。所以,開發人員和測試人員完全不一樣,開發人員確實可以找到一些Bug,但是有更多的Bug 是他意識不到的。在一般的開發團隊中,并不需要測試人員定位Bug 的具體位置,所以,對測試人員的要求并不高。只要你愿意學,測試工作是非常容易做的。但是,我當年所在的IE 團隊(IE 4.0)就不同,因為當時正在與另一個公司的產品競爭,所以微軟就要求盡量找到一流的開發人員和一流的測試人員,盡快開發出新產品,打敗對手。所以,當時對我們測試人員的要求非常嚴格,不僅要找出Bug,而且要定位引起此Bug 的代碼行。然后將這些信息交給開發人員,后者就可以很快更正,省去了他們找錯誤出處的時間。因此,當時IE 的開發速度非?,一年之內就發布了一個新版本,而且幾乎役有任何大Bug,大大超越了競爭對手。 三、關于Bug
Bug 的定義很廣泛,在軟件使用過程中所出現的任何一個可疑問題,或者導致軟件不能符合設計要求或滿足消費者需要的問題都是Bug,即使這個Bug 在實踐中是可行的。有時候,Bug 并不是程序錯誤。例如,軟件沒有按照一般用戶的使用習慣來運行,此時也可以把這個問題看成是該軟件的一個Bug。通常,對Bug 的跟蹤過程如圖所示。
文章來源于領測軟件測試網 http://www.anti-gravitydesign.com/