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

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

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

  Q&A

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

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

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

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

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

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

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

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

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

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

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