比爾●蓋茨曾經(jīng)說(shuō)過(guò):“微軟不是一家軟件開(kāi)發(fā)公司,而是一家軟件測(cè)試公司。” 足見(jiàn)其對(duì)于軟件測(cè)試的重視程度。 ATC( advanced Technology Center,微軟亞洲工程院)測(cè)試組負(fù)責(zé)微軟某些產(chǎn)品的測(cè)試工作。其測(cè)試工作的方法沿襲微軟的工作習(xí)慣和軟件測(cè)試的普遍方法,同時(shí)因其測(cè)試對(duì)象的特殊性,又具有其自身的特點(diǎn)。從本期開(kāi)始,我們將陸續(xù)邀請(qǐng)ATC測(cè)試組的相關(guān)負(fù)責(zé)人來(lái)介紹他們所認(rèn)識(shí)的測(cè)試工作,以及如何進(jìn)行測(cè)試工作的。

  你喜歡“找茬兒”么? 或者你有著和別人不一樣的思維方式,總能發(fā)現(xiàn)問(wèn)題的存在?是不是從小被稱(chēng)之為“破壞”呢? 或者能夠靜下來(lái),在紛繁復(fù)雜的事物里找到你想要的東西?如果你滿(mǎn)足以上兩條或者更多的條件,那么請(qǐng)關(guān)注一下你可能非常適合的行業(yè)――軟件測(cè)試。

  認(rèn)識(shí)測(cè)試工作

  由于種種原因,國(guó)內(nèi)的軟件測(cè)試并沒(méi)有規(guī)范化,也沒(méi)有真正地被重視起來(lái),甚至沒(méi)有被足夠地了解。許多軟件公司都沒(méi)有自己獨(dú)立負(fù)責(zé)測(cè)試的部門(mén),也不會(huì)把測(cè)試工作外包出去,開(kāi)發(fā)人員往往是自己開(kāi)發(fā)自己測(cè)試,邊開(kāi)發(fā)邊測(cè)試,這種很原始的測(cè)試方式,沒(méi)有比較科學(xué)的方法指導(dǎo),更沒(méi)有文檔可依。這樣的局面讓之前提到的軟件測(cè)試天才們沒(méi)有足夠的用武之地。

  然而,軟件測(cè)試是在有限的時(shí)間內(nèi)提供高質(zhì)量軟件的保證,是一個(gè)完整正規(guī)的軟件開(kāi)發(fā)過(guò)程中非常重要的一個(gè)部分。在大型的軟件公司里,往往軟件測(cè)試工作被高度重視,在微軟也不例外。ATC測(cè)試組負(fù)責(zé)Exchange Server、MSN Search、IE、Office Communicator等產(chǎn)品的測(cè)試工作。在這些產(chǎn)品發(fā)布之前,都要經(jīng)歷無(wú)數(shù)次嚴(yán)格地測(cè)試,并且測(cè)試工作不是從開(kāi)發(fā)人員開(kāi)始編寫(xiě)代碼的時(shí)候才開(kāi)始,而是從該產(chǎn)品建立研發(fā)項(xiàng)目伊始,一直作為項(xiàng)目進(jìn)行的一項(xiàng)重要工作而伴隨項(xiàng)目的進(jìn)行貫穿始終的。

  軟件測(cè)試的任務(wù)不僅包括通常認(rèn)識(shí)中的找出軟件中存在的缺陷和錯(cuò)誤,在不同的操作平臺(tái)下軟件的兼容性以及是否存在安全漏洞等等,作為一個(gè)的軟件,還要在用戶(hù)使用習(xí)慣和體驗(yàn)方面進(jìn)行大量深入的考慮,所以要找出軟件提供的功能和用戶(hù)需求有出入的地方,在檢測(cè)軟件 的執(zhí)行效率和對(duì)于破壞性操作的承受能力是否在用戶(hù)容忍度范圍內(nèi)等等,這些涉及到非軟件功能上問(wèn)題的測(cè)試工作同樣很重要,但是通常容易在工期或者其他因素影響下被忽視。微軟件的產(chǎn)品之所以能被廣大用戶(hù)接受,其良好的用戶(hù)體驗(yàn)是一個(gè)非常重要的因素,其中有測(cè)試人員在改善用戶(hù)體驗(yàn)和使用習(xí)慣方面所做出的巨大貢獻(xiàn)。

  工作的角色和職業(yè)的發(fā)展

  如同大家對(duì)測(cè)試工作知之甚少一樣,對(duì)于測(cè)試人員的職業(yè)道路的發(fā)展也不被大多數(shù)人熟知。興趣和個(gè)人的期望發(fā)展方向因人而異,測(cè)試工作人員也能夠選擇駕馭還是領(lǐng)導(dǎo)團(tuán)隊(duì)。

  在A(yíng)TC成為軟件測(cè)試工程師)SET-Software Test Engineer)后,可以按照自己的喜好和特長(zhǎng)繼續(xù)發(fā)展。通過(guò)努力,可以成為在測(cè)試方面的軟件設(shè)計(jì)工程師(SDET-Software Design Engineer In Test),之后,如果癡迷于具體技術(shù)的研究和應(yīng)用,可以繼續(xù)發(fā)展成為測(cè)試技術(shù)主管)Technical Lead), 后成為測(cè)試架構(gòu)師(Test Architect)――測(cè)試技術(shù)方面的頂峰職位;若是有領(lǐng)導(dǎo)才能,鐘情于在團(tuán)隊(duì)中扮演領(lǐng)導(dǎo)角色,可以嘗試發(fā)展成為測(cè)試主管(Test Lead)和測(cè)試經(jīng)理(Test Manger), 終成為測(cè)試總監(jiān)(Test Director)。

  不同階段的測(cè)試工作

  在微軟,軟件產(chǎn)品的研發(fā)項(xiàng)目一般都分為產(chǎn)品定義階段、設(shè)計(jì)階段、開(kāi)發(fā)階段、確認(rèn)階段和發(fā)行階段,測(cè)試工作則覆蓋到這里的每個(gè)階段,在每個(gè)階段的工作重點(diǎn)都有不同。

  通常大家認(rèn)為在產(chǎn)品定義階段,測(cè)試工作的介入還為時(shí)尚早,事實(shí)上測(cè)試人員在這個(gè)時(shí)候也已經(jīng)開(kāi)始忙碌起來(lái)。他們會(huì)根據(jù)產(chǎn)品規(guī)格書(shū)的描述理解產(chǎn)品,然后對(duì)照需求文檔,找到其中不符點(diǎn),并綜合考慮項(xiàng)目的要求和資源,對(duì)納入需求和開(kāi)發(fā)目標(biāo)的功能進(jìn)行取舍,然后向項(xiàng)目經(jīng)理反饋?zhàn)兏,同時(shí)開(kāi)始構(gòu)建測(cè)試的基礎(chǔ)架構(gòu)。在產(chǎn)品的設(shè)計(jì)階段,測(cè)試人員在開(kāi)發(fā)人員忙于設(shè)計(jì)產(chǎn)品同時(shí),審視開(kāi)發(fā)設(shè)計(jì)的文檔并給出反饋意見(jiàn),同時(shí)準(zhǔn)備制訂測(cè)試計(jì)劃和開(kāi)發(fā)測(cè)試工具的工作。開(kāi)發(fā)階段可能是Bug多的時(shí)期,ATC測(cè)試組的工作人員會(huì)將找到的Bug提交到開(kāi)發(fā)組中一個(gè)共有的數(shù)據(jù)庫(kù)中以供開(kāi)發(fā)人員參考。為了防止針對(duì)某個(gè)Bug的修正引發(fā)更多的問(wèn)題,他們?cè)陂_(kāi)發(fā)人員修正完Bug之后經(jīng)過(guò)嚴(yán)格反復(fù)的測(cè)試,才能將修正后的代碼重新發(fā)布到團(tuán)隊(duì)共有的代碼庫(kù)中。產(chǎn)品在確認(rèn)階段將不再有大的變動(dòng),這個(gè)時(shí)候測(cè)試工作仍然緊張地進(jìn)行,不但針對(duì)功能進(jìn)行測(cè)試,還會(huì)進(jìn)行針對(duì)性能,壓力和安全的測(cè)試。目的是為了保證產(chǎn)品的穩(wěn)定性和提高用戶(hù)體驗(yàn)方面。測(cè)試人員的神經(jīng)在發(fā)布階段通常仍然非常緊張,擔(dān)心在這個(gè)時(shí)候出現(xiàn)較大的問(wèn)題而影響產(chǎn)品的發(fā)布。然而眾所周知,沒(méi)有完美的軟件,所以在這個(gè)階段查找出來(lái)的Bug需要測(cè)試人員去全面權(quán)衡是否那么重要,一定要去修復(fù),如果時(shí)間緊急并且不那么重要,要對(duì)這樣的Bug進(jìn)行有效的取舍了。

  在產(chǎn)品進(jìn)行測(cè)試的過(guò)程中,有時(shí)候也會(huì)發(fā)現(xiàn)操作系統(tǒng)和其他產(chǎn)品的安全漏洞和Bug。與軟件公司不同的是, ATC測(cè)試組將會(huì)把這些問(wèn)題及時(shí)反饋給微軟件負(fù)責(zé)相關(guān)產(chǎn)品研發(fā)的部門(mén),或者累積到下一個(gè)版本集中解決,或者是發(fā)布補(bǔ)丁來(lái)進(jìn)行修下。

  另外,由于測(cè)試工作是個(gè)“得罪人”的職業(yè),測(cè)試人員如何能和開(kāi)發(fā)人員進(jìn)行有效且友好的溝通需要他們?cè)谄綍r(shí)提升自己的溝通水平和人格魅力了。

  人工測(cè)試和自動(dòng)測(cè)試的選擇

  對(duì)于一些大型的軟件來(lái)說(shuō),測(cè)試工作確實(shí)是非常復(fù)雜和繁重的。在繁重的測(cè)試工作中,善于平衡人工測(cè)試和自動(dòng)測(cè)試來(lái)進(jìn)行工作可以節(jié)省很多的人力和時(shí)間,也能將工作做得更好。例如很多時(shí)候,對(duì)于軟件測(cè)試中存在要在一定時(shí)間內(nèi)完成類(lèi)似枚舉的大量重復(fù)或者需要模擬大量用戶(hù)訪(fǎng)問(wèn)的服務(wù)器壓力承載能力的工作時(shí),測(cè)試人員往往會(huì)借助測(cè)試工具或者自己編寫(xiě)測(cè)試代碼進(jìn)行軟件的自動(dòng)測(cè)試來(lái)代替人工測(cè)試以節(jié)省時(shí)間和人力。例如,在測(cè)試BizTalk Server的時(shí)候,由于該產(chǎn)品涉及到26種人類(lèi)語(yǔ)言,需要在多種不同的操作平臺(tái)和不同的編碼語(yǔ)言的情況下對(duì)軟件進(jìn)行全面的測(cè)試,浩大工作只能交給測(cè)試工具和軟件自動(dòng)測(cè)試來(lái)進(jìn)行。在這種繁重的工作下,利用自動(dòng)測(cè)試來(lái)能夠避免由于人工的疲倦和其他影響因素造成的誤操作帶來(lái)的無(wú)效或者不準(zhǔn)確的測(cè)試結(jié)果,而這是測(cè)試工具和自動(dòng)測(cè)試所不會(huì)有的問(wèn)題。

  在對(duì)于產(chǎn)品的性能、壓力承載能力方面,自動(dòng)測(cè)試能夠模擬出例如大量的訪(fǎng)問(wèn)量這親的場(chǎng)景來(lái)進(jìn)行測(cè)試,這個(gè)優(yōu)勢(shì)是人工測(cè)試無(wú)法涉及的。對(duì)于像產(chǎn)品的功能以及本地化/全球化這樣方面的測(cè)試,也同樣是自動(dòng)測(cè)試的優(yōu)勢(shì)所在。