國內一般的測試人員,面對的測試物件大部分都是應用軟體,對於平台軟體的測試,接觸得相對較少。atc(advanced technology center, 微軟亞洲工程院)測試組負責微軟某些產品的測試工作,在這裡的測試人員經常會從事平台軟體的測試工作.在測試組中的sdet( software design engineer in testing—測試方面的軟體設計工程師)往往是整個測試組的主力軍。為了解微軟的sdet的工作情況及他們是如何進行平台測試工作,本刊專訪了atc的測試主管周振宇先生。
問: atc承擔對微軟產品的測試中,有對應用軟體的測試,也有對平台軟體的測試。這兩種不同軟體的測試工作對測試人員的要求有什麼不同?
答: 使用者軟體和平台軟體測試的區別,最關鍵在於這兩種軟體面向的使用者群體的不同。例如: office,ie等應用軟體,他的使用者大部分是終端使用者,測試人員在對軟體固有的功能進行測試之外,還需要在如何讓軟體更加易用、更好符合使用者的使用習慣以及ui等這些使用者體驗方面進行很好的控制。使用者體驗的測試工作,對於測試人員的程式設計水平要求不高,往往由ste(software testing engineer –軟體測試工程師)來承擔。
而平台軟體大部分面對的則是開發者,它的職責在於如何使得開發人員可以花費最少的努力來開發出更具價值的應用程式。所以需要sdet對這些平台軟體和系統底層之間的關係和聯絡非常了解。例如測試人員要測試乙個gdi的軟體,就必須能夠自己編寫gdi的程式,並且對其中的細節非常了解,才能知道如何對這樣的軟體進行測試,發現了bug如何去探求產生bug的原因,並輔助開發人員去修訂這個bug。 所以,平台軟體的測試工作對於測試人員在程式設計水平方面的要求是非常高的。往往進行平台軟體測試的測試人員,程式設計水平能夠和乙個資深的開發人員抗衡。這些工作會由sdet來進行。
問:說到sdet這個在測試組中這個非常重要的角色,除了剛才所說的需要有深厚的程式設計基礎之外,要成為乙個合格的sdet,還需要具備什麼樣的能力呢?
答:sdet必須是乙個合格的軟體開發工程師,熟知各種演算法、軟體架構和程式設計技巧和測試方法,還要非常關注細節,喜歡查詢產生細節差異的原因,熱衷於把系統拆開,弄明白。
例如有一次在對windows上的文書處理系統進行測試的時候,發現在這個系統的2個不同的build版本之間產生了一點點細小的差別:乙個字母和下乙個字母之間的間距有1個畫素的差別。一般來說這點是非常不容易覺察到並引起重視的。而我們的sdet感覺這其中有些東西發生了變化,就一定要知道這些變化會帶來更好還是更糟的後果,於是開始對這個問題進行了全面深入的**,一方面開始追根到底找到產生差異的原因,最後發現是乙個開發人員把文字渲染的演算法中乙個數字作了更改,另一方面在這個差異點上進行更全面的測試後發現:如果是英文,間距造成的影響甚微,但是對於阿拉伯文來說,由於它的字母都很緊湊,所以一點點的間距變化可能會造成很多句子中的字母會變形,字母錯開或者重疊。所以sdet需要把所有微小改變所造成的影響想得十分全面和完備,並且找到其中的原因。
問:有一種說法是「專案經理(pm)、開發人員和測試人員是工發團隊中的『三劍客』」。那麼,在atc測試組中,sdet和pm以及開發人員之間的關係是怎樣的呢?
答:應該來說,sdet是在整個專案中是監控的作用。他們是最了解產品的,甚至比pm還是了解產品。pm很了解產品,但是測試人員不僅了解產品現在能夠滿足什麼要求,還需要了解產品應該滿足哪些要求。微軟的產品週期模型(product cycle model) 在初期會制定乙個需求,sdet會從使用者的角度審視這些需求是否合理,客戶是否真正需要需求所描述的這些要求,並且將結果反饋給pm。在整個產品週期中反覆比對產品的實際情況和這個需求,一般找出需求描述中存在的問題,一邊按照需求的要求控制產品開發的方向。然而無論多詳細和完備的產品規格書,裡面都有可能有沒有涉及到的地方,這些也正好是pm所沒有想到並且需要的,然後再協同開發人員對**進行相應的修正。
例如有一次測試乙個伺服器的元件,需要在mmc上面寫些ip位址,然後讓這個元件通過指向這個位址建立網路連線。然而pm沒有想到的是,產品設計書和規格描述中都沒有限定輸入的ip位址的位址段中不能放置負數,顯然這裡出現負數是不合法。 sdet發現了這個問題,最後對所有的與此相關的描述都進行了完善,並且開發人員在相關的地方也增加了合法輸入的驗證。
問:如何才能評價乙個sdet的工作情況呢?
答:關鍵還是在找bug的情況上。評價sdet的工作不一定在於他找到的bug數量,更重要的是還是找到質量更高的bug。找到質量更高的bug有時候需要一些運氣,但是更多的是基於經驗,是對產品深入了解的程度。
要找到***的bug一定要花費很多的時間。在產品開始階段,bug最多,可能比較容易就找到bug,隨著這些bug逐漸被修正,bug的尋找機會越來越困難,能否找到更高質量的bug需要看sdet對這些**所付出的努力了。一般來說sdet會對於尋找bug有經驗積累和感覺。開發人員在編寫和設計某些**時可能會欠考慮,一般來說如果乙個地方出現bug,作相應的改動之後,會產生更多的bug,另外一般有bug的**周圍會有更多的bug聚集。有經驗的測試人員會根據這點,鎖定bug的特殊特徵,然後根據這個特徵就能夠找到更多更好的bug出來。
問:這麼看起來sdet的工作還是地分繁重的。那麼市面上的自動化測試的工具是否能夠減輕他們的工作量呢?
答:首先要判斷所要測試的物件適合不適合自動化測試,不是所有的問題都適合做自動化的測試。自動化有它不能或者不適合解決的問題。它善於解決的問題是, 一次編寫出來,可以重用,每次軟體版本更新,都可以用同乙個自動化測試的工具進行測試。然而,自動化找bug,並且要找到新的bug的時候,還是離不開人工的操作。通過檢視我們的bug日誌也可以發現,新bug很多都是sdet自己動手找到的。sdet需要對於常規的地方,自己動手進行編寫測試工具進行測試,然而也是思考哪些地方可能會出現新的bug,這些要去手工地進行查詢。因為工具畢竟還不能幫助人去思考。
現在第三方的測試工作和微軟的平台軟體並沒有很好的介入。這個也是由於微軟體平台軟體的特殊性所決定。 但是對例如url這些通用並且與平台無關的軟體功能模組進行測試的時候,第三方軟體會有一些幫助。但是,在api的測試方面做乙個通用的工具對它進行測試是很非常困難的。有個工具叫做「any unit」,直接照呼叫api去做一些很基本的測試,例如檢驗這些api是否有正確的相應和返回正常。但是,如果要做一些索引測試(index testing)的話,就非常困難。這是因為面對的物件,越是特殊,這些工具起到的幫助作用就越小。所為作為乙個sdet, 就需要自己編寫測試工具來開展工作。
優秀的測試人員應該怎樣做?
不斷給自己充電!優秀測試工程師應該滿足以下 1.精通業務 不僅能駕馭好測試流程中各環節的工作,還能超出崗位要求,發現隱含需求問題,並給需求提出有建設性的改進意見。在某個行業領域從事測試幾年後,熟悉需求 精通業務,這樣的測試人員常是需求設計部門求之不得的人才。2.精通 測試技術 測試技術上的高手,能夠...
你們專案中許可權是怎樣做的?
答案 這個主要是問後台的許可權是怎樣做的。首先分清楚系統中的崗位與角色關係 1.1 在專案中,我們可以將崗位看做角色,根據崗位來進行許可權的分配。但是在大公司這種方案就不適用了,崗位太多,所以我們將崗位提取出來,給具有共性的崗位賦予乙個角色,然後給角色分配許可權。1.2 許可權角色是系統功能全年設定...
怎樣做研究(二) 劉挺
研究的層次 研究是分層次的,很多大科學家在晚年登上了最高層,比如錢學森在80年代倡導思維科學,他對整個科學技術體系進行了重新分類。在中國的大學裡,分為一級學科,二級學科等,我就處在計算機科學技術一級學科下面的計算機應用技術二級學科下。二級學科的帶頭人稱為學科帶頭人,二級學科下面乙個研究方向的帶頭人稱...