編寫代碼也許也是從事軟件行業(yè)的人喜愛并能獲得成感的工作。自己編寫測試工具進行自動化測試也是讓工作變得更加有趣,而不是機械性地進行重復(fù)性的實驗。在這里,每個人都可以大限度地迸發(fā)個人創(chuàng)造性和智慧,為了更好更快地檢測出軟件的Bug,編寫的測試工具是測試人員成感的巨大來源。另外這些測試工具還能夠在下一個類似的產(chǎn)品和工作中重用,節(jié)省更多的時間和人力。

  然而,人工測試也有它不可替代的優(yōu)勢和獨到之處。例如,對于軟件的操作方式、外觀、使用便易性等這些有關(guān)用戶體驗方面的測試,不是自動測試所能代替的了。在對于測試工具和自動測試代碼有時所不能觸及的部分,例如軟件的語法和文法錯誤,人工測試是的選擇。人工測試不需要參與此項工作的測試人員有深厚的編碼基礎(chǔ),這能夠降低項目的人員成本。另外,在軟件的生命周期很短、軟件本身相對比較簡單的進修,使用人工測試能降低成本,并顯現(xiàn)出其不可替代的優(yōu)勢。

  對需要測試的軟件選擇人工測試還是自動測試要看工作對于時間、人力、技術(shù)以及對穩(wěn)定性的要求來平衡兩者的比例了。這種情況下,不僅是努力工作能完成工作的方法了。 “Work Smartly”顯得非常重要。在ATC的測試組,每個人都不斷地被來自Work Smartly的成感所激勵,測試工作成為他們展示創(chuàng)造性和智慧的舞臺。

  Q&A

  國內(nèi)一般的測試人員,面對的測試對象大部分都是應(yīng)用軟件,對于平臺軟件的測試,接觸得相對較少。ATC(Advanced Technology Center, 微軟亞洲工程院)測試組負責(zé)微軟某些產(chǎn)品的測試工作,在這里的測試人員經(jīng)常會從事平臺軟件的測試工作.在測試組中的SDET( Software Design Engineer in Testing?測試方面的軟件設(shè)計工程師)往往是整個測試組的主力軍。為了解微軟的SDET的工作情況及他們是如何進行平臺測試工作,本刊專訪了ATC的測試主管周振宇先生。

  問: ATC承擔對微軟產(chǎn)品的測試中,有對應(yīng)用軟件的測試,也有對平臺軟件的測試。這兩種不同軟件的測試工作對測試人員的要求有什么不同?

  答: 用戶軟件和平臺軟件測試的區(qū)別,關(guān)鍵在于這兩種軟件面向的用戶群體的不同。例如: Office,IE等應(yīng)用軟件,他的使用者大部分是終端用戶,測試人員在對軟件固有的功能進行測試之外,還需要在如何讓軟件更加易用、更好符合用戶的使用習(xí)慣以及UI等這些用戶體驗方面進行很好的控制。用戶體驗的測試工作,對于測試人員的編程水平要求不高,往往由STE(Software Testing Engineer ?軟件測試工程師)來承擔。

  而平臺軟件大部分面對的則是開發(fā)者,它的職責(zé)在于如何使得開發(fā)人員可以花費少的努力來開發(fā)出更具價值的應(yīng)用程序。所以需要SDET對這些平臺軟件和系統(tǒng)底層之間的關(guān)系和聯(lián)系非常了解。例如測試人員要測試一個GDI的軟件,必須能夠自己編寫GDI的程序,并且對其中的細節(jié)非常了解,才能知道如何對這樣的軟件進行測試,發(fā)現(xiàn)了Bug如何去探求產(chǎn)生Bug的原因,并輔助開發(fā)人員去修訂這個Bug。 所以,平臺軟件的測試工作對于測試人員在編程水平方面的要求是非常高的。往往進行平臺軟件測試的測試人員,編程水平能夠和一個的開發(fā)人員抗衡。這些工作會由SDET來進行。

  問:說到SDET這個在測試組中這個非常重要的角色,除了剛才所說的需要有深厚的編程基礎(chǔ)之外,要成為一個合格的SDET,還需要具備什么樣的能力呢?

  答:SDET必須是一個合格的軟件開發(fā)工程師,熟知各種算法、軟件架構(gòu)和編程技巧和測試方法,還要非常關(guān)注細節(jié),喜歡查找產(chǎn)生細節(jié)差異的原因,熱衷于把系統(tǒng)拆開,弄明白。

  例如有一次在對Windows上的文字處理系統(tǒng)進行測試的時候,發(fā)現(xiàn)在這個系統(tǒng)的2個不同的Build版本之間產(chǎn)生了一點點細小的差別:一個字母和下一個字母之間的間距有1個像素的差別。一般來說這點是非常不容易覺察到并引起重視的。而我們的SDET感覺這其中有些東西發(fā)生了變化,一定要知道這些變化會帶來更好還是更糟的后果,于是開始對這個問題進行了全面深入的探究,一方面開始追根到底找到產(chǎn)生差異的原因,后發(fā)現(xiàn)是一個開發(fā)人員把文本渲染的算法中一個數(shù)字作了更改,另一方面在這個差異點上進行更全面的測試后發(fā)現(xiàn):如果是英文,間距造成的影響甚微,但是對于阿拉伯文來說,由于它的字母都很緊湊,所以一點點的間距變化可能會造成很多句子中的字母會變形,字母錯開或者重疊。所以SDET需要把所有微小改變所造成的影響想得十分全面和完備,并且找到其中的原因。

  有一種比較普遍的看法,認為SDET不論是技術(shù)能力還是產(chǎn)品認識都不如開發(fā)人員。然而真實情況不是這樣的。SDET在項目啟動時開始了解產(chǎn)品,開發(fā)用各種方式測試產(chǎn)品應(yīng)該做的事情,按照產(chǎn)品規(guī)格說明書去測試產(chǎn)品每個要求是否達到了,察看產(chǎn)品在規(guī)定的步驟和要求下,是否獲得了應(yīng)該有響應(yīng)…… 他們對于產(chǎn)品是全面的了解。并且由于要對產(chǎn)品的各個方面進行測試,并且還要動手編寫測試工具,所以開發(fā)能力并不比開發(fā)人員遜色。我們在面試新人的時候,不管他要求做開發(fā)工作還是做SDET,我們都會考察他在測試方面的潛質(zhì)。如果發(fā)現(xiàn)他樂于鉆研測試用例,喜歡用各種方法找到系統(tǒng)薄弱的地方讓它崩潰等等,我們會極力建議他去向SDET發(fā)展。也有很多開發(fā)高手選擇從事測試工作,這是因為他們認為自己有很好的測試方面的天賦,可以在這個領(lǐng)域做出更大的貢獻。

  問:有一種說法是“項目經(jīng)理(PM)、開發(fā)人員和測試人員是工發(fā)團隊中的‘三劍客’”。那么,在ATC測試組中,SDET和PM以及開發(fā)人員之間的關(guān)系是怎樣的呢?

  答:應(yīng)該來說,SDET是在整個項目中是監(jiān)控的作用。他們是了解產(chǎn)品的,甚至比PM還是了解產(chǎn)品。PM很了解產(chǎn)品,但是測試人員不僅了解產(chǎn)品現(xiàn)在能夠滿足什么要求,還需要了解產(chǎn)品應(yīng)該滿足哪些要求。微軟的產(chǎn)品周期模型(Product Cycle Model) 在初期會制定一個需求,SDET會從用戶的角度審視這些需求是否合理,客戶是否真正需要需求所描述的這些要求,并且將結(jié)果反饋給PM。在整個產(chǎn)品周期中反復(fù)比對產(chǎn)品的實際情況和這個需求,一般找出需求描述中存在的問題,一邊按照需求的要求控制產(chǎn)品開發(fā)的方向。然而無論多詳細和完備的產(chǎn)品規(guī)格書,里面都有可能有沒有涉及到的地方,這些也正好是PM所沒有想到并且需要的,然后再協(xié)同開發(fā)人員對代碼進行相應(yīng)的修正。

  例如有一次測試一個服務(wù)器的組件,需要在MMC上面寫些IP地址,然后讓這個組件通過指向這個地址建立網(wǎng)絡(luò)連接。然而PM沒有想到的是,產(chǎn)品設(shè)計書和規(guī)格描述中都沒有限定輸入的IP地址的地址段中不能放置負數(shù),顯然這里出現(xiàn)負數(shù)是不合法。 SDET發(fā)現(xiàn)了這個問題,后對所有的與此相關(guān)的描述都進行了完善,并且開發(fā)人員在相關(guān)的地方也增加了合法輸入的驗證。