摘要:年加入微軟中國有限公司,任職軟件開發測試工程師,負責微軟在線業務與商業智能產品的測試工作。目前,史亮正從事下一代產品的研發工作。在他們的熱心幫助下,我獲得了去北京面試微軟測試開發工程師,簡稱的機會。
非商業轉載請注明作譯者、出處,并保留本文的原始鏈接:http://www.ituring.com.cn/article/114546
史亮,東南大學計算機軟件與理論專業博士,研究領域為軟件分析與測試。2006年加入微軟(中國)有限公司,任職軟件開發測試工程師,負責微軟在線業務與商業智能產品的測試工作。2011年調至微軟總部,從事Microsoft Office 2013的測試工作。2012年與淘寶測試工程師高翔合著了《探索式軟件測試實踐之路》一書。2014年,獨自出版了《軟件測試實戰:微軟技術專家經驗總結》。目前,史亮正從事下一代Microsoft Office產品的研發工作。
圖靈訪談:您從什么時候開始編程?是什么讓你決定走上計算機這條路?
史亮: 1997年,我進入東南大學計算機系,開始正式學習軟件開發。因為時間久遠,我已經記不清當時選擇計算機專業的原因。也許只是懵懂地認為計算機行業有更好的發展前景,幸運的是整個行業在隨后的十余年時間有爆發式的增長。
在攻讀博士學位時,我閱讀了《C++設計新思維——泛型編程與設計模式之應用》(Andrei
Alexandrescu著,侯捷、於春景譯)。這本書引起了我對于軟件設計的熱情。此后,我閱讀了許多軟件開發的書籍,并通過實驗性項目實踐了很多編程技術。從某種意義上,這本書是我職業發展的轉折點。這并不是因為它提供了我日常使用的技術,而是它激發了我的興趣,讓我有動力去深入鉆研。在學習和實踐的過程中,新問題又引出新的動力,這樣的激勵循環幫助我持續成長。
圖靈訪談:軟件測試的魅力何在?您為什么選擇測試一行而不做開發?
史亮: 2006年,我即將離開校園。在通訊軟件MSN Messenger上,大學本科同學尚云飛建議我到北京來工作。當時,他與我的另一位同學宋顯祖在微軟亞洲工程院工作。在他們的熱心幫助下,我獲得了去北京面試微軟測試開發工程師(Software Development Engineer in Test,簡稱SDET)的機會。隨后就加入微軟,并工作至今。回顧往事,當年那次聊天令我的人生發生了改變。在此之前,我從沒有仔細考慮過離開家鄉到異地工作。李笑來老師(《把時間當作朋友》等書的作者)在演講中曾說:“改變我們人生的關鍵事件都是無法預期的偶然事件。”果然如此!
在工作后,我逐步體會到軟件測試所面臨的困難,而這些有挑戰的問題就是測試魅力的根源。其中,根本性的困難是,隨著軟件行業的高速發展,“軟件的復雜度已經超越了人的理解能力”(我在《軟件測試實戰》第一章有詳細的討論)。為了應對挑戰,測試人員需要綜合發展自身能力,以實施有針對性、聚焦風險、豐富多樣、注重實用的測試。在此過程中,他需要解決一系列復雜問題,這對他的能力成長很有幫助。
圖靈訪談:您在國內和國外都有相當豐富的測試經驗,您能對比一下國內國外兩種環境下的測試實踐的特點嗎?
史亮:我認同語境驅動測試(Context Driven Testing)的觀點:測試實踐的價值來自于它的語境。除了測試人員的態度和能力,軟件項目和測試團隊對測試實踐有最大的影響。測試人員需要根據項目語境(項目環境、產品元素、質量標準、產品質量等)選擇一組相互支持的測試實踐。
我的切身體會是,國內外的工作風格確實有所差別,但是測試實踐主要取決于產品、項目和團隊。而且,隨著國內大型企業的國際化,其文化氛圍和工作方式與國外企業并沒有太大的差別。在具體工作中,測試人員總需要研究產品(《軟件測試實戰》第7章),研究項目(《軟件測試實戰》第8章)并融入團隊(《軟件測試實戰》第9章)。只要采用積極的態度來面對職業發展,測試人員在各種環境中都可以獲得成長。
圖靈訪談:國內有一些企業認為相比于開發者,軟件測試人員能力差一些也可以,您認同這種看法嗎?這種想法形成的原因是什么?
史亮:這里,所謂“能力差一些”大多指“編程的能力差一些”。在一些軟件項目中(國內外皆有),測試人員的主要工作是手工測試,因此對編程能力沒有很高的要求。但是,測試是獲取信息的技術調查,需要多種能力,例如:
交流協作:對于復雜的軟件,任何人都不可能掌握全部的信息。為了更好地理解軟件,測試人員需要與項目經理、程序員、領域專家、測試同事等協作,還需要研究項目文檔、技術資料、領域專著等資料,并通過實際測試去獲得第一手知識。
測試報告:測試人員是項目的“車前燈”,他需要提供高質量的缺陷報告和測試報告,以幫助項目團隊掌握項目情況并形成決策。
測試建模:人們處理復雜問題的常用策略是“分而治之”。在測試領域,測試人員可以建立產品的模型來幫助測試。在建模過程中,他用當前測試目標為指導,省略無關的產品細節,突出重要的產品元素。針對簡化后的產品模型,可以更有效地實施測試設計。
測試設計與執行:測試人員需要積累多種測試技術,將它們綜合運用于當前項目,并在測試執行的迭代過程中,通過持續地評估和反思來逐步增強測試方案。
測試開發:測試人員可以使用或開發恰當的測試工具,以提高測試效率。
可見,測試人員需要多種能力才能勝任測試工作。其能力集合與開發人員有重疊,但不盡相同。不能單純用“編程能力”的強弱來評價測試人員的水平。
其實,無論主管是否要求,測試人員都可以主動學習編程技術,并應用于實際工作。在測試中,許多活動提供了自動化的機會,例如產品部署、環境配置、機械性的測試執行、信息收集、報表生成等。合理地運用開發技術,構建合適的工具,能夠明顯提高測試效率。
平心而論,項目主管更看重編程工作有現實因素。軟件項目的目標是交付能夠贏得競爭的軟件,而編程是產生軟件的最直接的活動,開發人員的水平對軟件質量有最直接的影響。測試人員的工作雖然重要,但不能直接產生代碼,所以容易被低估。測試人員應該正視這種情況,但不必懷憂喪志。作為一個專業人員(professional),他應該通過每天的努力來推動職業發展。
圖靈訪談:您與淘寶測試工程師高翔合著了《探索式測試實踐之路》一書的過程中有沒有發現一些測試理念的分歧,這樣的分歧來源自哪里?最后你們是如何解決的?
史亮:我和高翔通過彼此的博客發現雙方都對探索式測試有濃厚的興趣,于是經常交換意見和分享經驗,自然成為好友。后來,我們一起合作撰寫了《探索式測試實踐之路》 一書,以分享所學所知。因為我們都高度認同語境驅動測試和探索式測試的思想,所以并沒有根本性的分歧。我們的主要差別在于如何論述探索式測試的實踐。
下圖是測試專家James Bach提出的概念模型,以展示不同測試方法的風格,其中最左側是嚴格腳本化的測試,最右側是高度機動的自由式探索。高翔在論述探索式測試時,更著力于自由式探索并提出了一批他總結出的測試模型,我則沒有特別喜好的方法,較寬泛地介紹了一些技術和工具。從某個角度,我們的論述內容構成了深度與廣度的互補。
圖靈訪談:有人說Microsoft算是在軟件測試方向上偏傳統的,您認同嗎?您能向我們介紹一下其他互聯網公司如Facebook、Google以及Amazon的測試風格嗎?
史亮:我并沒有在其他互聯網公司工作過,雖然閱讀過一些報道,但是不能提供更多的信息。因此,難以置喙。我閱讀過原版的《Google軟件測試之道》(中文版由人民郵電出版社引進)。該書較生動地介紹了一些谷歌的測試實踐,部分內容很有啟發性,值得一讀。
正如我之前提到的,測試實踐主要取決于產品、項目和團隊。在很長的一段時間內,微軟最知名的產品都是發布周期為2~3年的套裝軟件,如Windows和Office。這些產品的測試實踐很成熟,成為微軟測試的代表。《微軟的軟件測試之道》(Alan Page, Ken Johnston, Bj Rollson著)較好地總結了相關方法和經驗。
隨著互聯網成為新的計算平臺,商業社會的運作已經深度依賴于互聯網服務,因此互聯網服務的開發和測試成為新的熱點。而且,智能手機和平板電腦主導了移動計算的發展,基于App Store發布的移動應用成為用戶的新寵。相比之下,套裝軟件顯得不那么“時髦”。因此,微軟的測試給人以“傳統”的印象。
但是,如果仔細觀察,不難發現微軟的產品已經發生了深刻的變化,且還在持續演變中。伴隨而來的是軟件開發和測試方式的轉變。以下是一些例子。
必應的一些在線服務已經做到每日部署(daily deployment),即代碼簽入之后,如果成功通過編譯和自動化測試,可以在24小時內部署到產品環境,整個流程(代碼編譯、自動測試、服務部署、在線監控)不需要人工操作。其自動化水平與其他互聯網領軍企業相當。
Visual Studio是強大的集成開發環境,提供了非常豐富的功能。目前,Visual Studio團隊能夠做到每年發布一個新版本(如Visual Studio 2012、Visual Studio
2013和即將到來的Visual Studio 2014)和3個重要更新(如Visual Studio 2013 Update
1、2、3)。對于如此復雜的產品,能夠做到持續交付,說明Visual Studio團隊擁有較高的研發和管理水平。Windows團隊已經將Windows重要版本的發布周期從3年壓縮到1年左右,例如Windows 8.1的研發用時約1年,Windows 8.1 Update 1的研發用時約半年。
OneNote團隊在多個平臺(Windows桌面、Windows Store、Windows Phone、Mac、iPad、iPhone、Android、Web)上推出了產品,并公布了OneNote
API,使第三方應用可以將內容發布到云端的OneNote筆記本。其產品覆蓋桌面應用、平板應用、手機應用、Web應用、Web服務等,且在持續發布中保持了較高的質量。我相信,隨著微軟業務模式的轉變,微軟的軟件研發會持續演化。在此過程中,好的思想和經驗會被傳承下去,而新語境勢必催生出新的實踐,并讓一些在其他公司獲得成功的方法在微軟得到應用。此外,微軟擁有許多有特點的項目,項目組之間的交流經驗會催生出一批優秀的實踐。
圖靈訪談:手動測試和自動測試各自的優缺點是什么?微軟在實踐上是如何結合這兩種測試方法的?
史亮:微軟是一家大型企業,擁有多種類型的項目。不同的項目對于測試提出了不同的要求,因此項目小組往往會采用不同的測試策略。一般而言,微軟要求測試人員具備較高的技術水平,能夠熟練地開發自動化測試和測試工具。在許多項目組,測試人員需要編寫大量的代碼來測試產品,也需要花費相當的時間來手工測試產品。通常,第一線的測試人員最了解產品和技術,他們會主動探索各種技術,以發展出多樣性的測試策略。
在此,我介紹一些我的個人觀點(《軟件測試實戰》的第5章對詳細地討論了測試開發)。
首先,測試活動是相輔相成的。測試專家Johnathan Kohl將不同的測試活動比喻為不同的交通方式,每種方式都有優點與不足。
我喜歡走著上班。我很享受風景、運動,以及一邊漫步一邊思考問題的時光。在戶外新鮮的空氣中,在遠離電腦的思考中,我獲得了一些極好的想法。沿途的觀察激發了靈感,將我引向創造性的解決方案。
但是步行是緩慢的,如果我駐足觀賞可愛的動物或享受日出霞光映紅的山脈,我很可能會遲到。所以,在趕時間的時候,我會搭乘公共交通。雖然公共汽車或列車仍舊伴隨著步行,但是我能用快得多的速度及時地到達目的地。我極少駕車上班,因為這讓我無暇去觀察并思考。但是,當別人駕車時,我能夠從旅途中獲得很多。例如,最近我坐城鐵去上班,在路上發現了以前從未注意到的河谷峭壁。我曾經多次經過河谷,但是直到坐上輕軌的那天,在沒有步行或駕車分心的情況下,我才能用全新的角度觀察到新的景色。
-- Jonathan Kohl, Man and Machine
在以上隱喻中:
手工測試是步行。在漫游產品的過程中,測試人員可以觀察到豐富的細節,能夠隨時暫停預定的測試路線,對感興趣的局部進行細致的測試。其不足是推進的速度較慢,有時不能在短時間內完成長距離的旅行(覆蓋更多的測試目標)。
自動化測試是駕車。其優點是速度快,能在短時間內測試大量的內容,其不足是自動化測試只做規定的檢查,會忽視其他所有細節。即便軟件出現一望即知的問題,只要測試代碼沒有做相應的檢查,自動化測試就會放過它。其實,自動化測試更像地鐵,可以將大量乘客快速準時地送到目的地,但是所有旅客都無法觀察到地面的風景。
計算機輔助測試是他人駕車。自動化測試或測試工具完成繁重的工作,帶著測試人員快速地漫游產品。在測試過程中,測試人員監控產品的表現,如果發現問題,他可以“下車”調查。該策略綜合了手工測試和自動化測試的優點,利用軟件工具來提高測試效率、豐富測試手段,讓測試人員能夠更好地觀察、思考與行動。
可見,手工測試和自動化測試并不是相互排斥的。如果綜合它們的優點,就可能開發出更具威力的測試策略,以實現多帶帶的手工測試或自動化測試不能達到的效果。
第二,測試是為了獲得產品質量信息的技術調查,任何有助于周密調查的方法都是有價值的。在罪案偵查中,刑偵人員會利用多種方法,從各個信息源收集情報。他們會利用高精密的儀器提取證據,也會大范圍走訪以獲得線索,更重要的是,他們會反復思考當前的情報,以隨時調整調查方向。與之類似,測試人員也需要綜合運用多種技術和工具,去探究新的信息,并根據新發現及時調整測試方向。在調查過程中,學習、分析、推斷、反思等思維活動是必不可少的,而這些是無法自動化的。
第三,利用自動化測試,測試人員可以實施更有效的技術調查。以下是一個案例。
模糊測試是一種修改輸入數據來暴露軟件缺陷的方法。如果產品需要讀取復雜的文檔,測試小組可以使用文件模糊器,對原始文檔進行隨機修改,生成大量的模糊文檔。然后,模糊測試框架啟動產品,令它讀取這批被篡改的文檔,并嚴密監控可能的異常情況。在測試結束后,測試人員分析測試日志中記錄的錯誤,以識別安全缺陷。模糊測試是一種暴力測試方法,一輪模糊測試會使用數萬個甚至更多的模糊文件。如果運用得當,模糊測試可以發現許多手工測試或簡單的自動化測試無法發現的問題,這對于提高軟件的安全性極具價值。例如Microsoft
Office團隊在開發Office 2013時,通過模糊測試發現并修改了2100多個缺陷。可見,新的測試挑戰要求測試人員重新思考自動化測試的使命,用創新思維去充分利用計算資源,以提出更具威力的測試策略。
圖靈訪談:從測試人員的個人發展角度來看,您更鼓勵他們參與什么樣的測試工作(手動測試、自動化測試,還是測試用例的設計)?
史亮:我建議測試人員多方面的發展。一個測試新人需要避免的思維誤區是用某個職務頭銜限制自身能力的發展。例如,我在測試論壇中發現一些測試人員常討論“白盒測試工程師”、“黑盒測試工程師”和“性能測試工程師”等職位。一部分人認為它們是相互排斥的,即做白盒工程師就不用考慮用戶情景,做黑盒工程師就不要考慮代碼實現,做性能工程師就只要鉆研性能測試工具。其實,這些名詞只是某些公司所設定的職位而已,只代表他們對工程師的要求,并不體現軟件行業對高水平測試人員的期望。實際上,國內外的高水平科技企業都要求工程師能夠獨當一面,能夠獨立完成一個領域的大部分任務。對于測試人員而言,他需要能夠獨立完成一個產品或組件的測試。無論測試活動是白盒測試、黑盒測試還是性能測試,只要工作需要,他就應該有能力完成。因此,為了長遠地發展職業生涯,測試人員不應該被頭銜所約束,而是要積極地拓展自己的知識儲備。
圖靈訪談:對在線服務的測試和對傳統軟件的測試有什么不同?
史亮:一般說來,互聯網應用與客戶端軟件有如下不同。
互聯網應用運行在云端,客戶端軟件運行在用戶計算機上。對于云端服務,運營團隊只要發布新版本就可以立即覆蓋所有用戶,所以部署缺陷修復變得很容易。這推動項目團隊以更快地速度開發并測試軟件。反觀客戶端軟件,許多用戶并不經常更新軟件,這推動項目團隊花較多的時間來穩定產品,以減少錯誤。
互聯網應用大多是“服務器—瀏覽器”端,其中服務端的所有代碼都運行在受監控的環境中。項目團隊可以通過服務日志等了解用戶行為和軟件行為,這為分析用戶習慣、發現程序錯誤、優化系統性能等提供了重要資料。這些信息常常是內部測試所不能提供的,對項目團隊提高產品質量有很大幫助。反觀客戶端軟件,項目團隊通常無法訪問其運行環境,也很難收集到豐富的用戶反饋。這樣的信息缺口要求測試小組更努力的測試、更積極地與用戶交流,但很難到達互聯網項目的效果。
互聯網應用往往擁有涉及多個軟件系統的工作流,每個系統往往有不同的實現技術和測試策略。這要求測試人員掌握更多的方法和工具,并準備復雜的測試環境。客戶端軟件常常只有一個進程,測試人員只需要深入了解它,就可以勝任工作,且搭建測試環境比較簡單。
不過,目前的趨勢是客戶端軟件也在“云端化”,客戶端軟件的測試人員需要更多地借鑒互聯網應用的測試實踐。
許多客戶端軟件已經做到持續更新。例如,一些軟件會自動下載更新,然后提示用戶更新。有些軟件甚至會自動安裝更新,所以用戶每次啟動都是該軟件的最新發布版。在智能手機和平板電腦上,App Store也會提示用戶更新應用,而且在用戶允許的情況下,有些App Store會自動安裝新版本的應用。此外,有些應用的顯示內容是HTML渲染的結果,只要服務器推送新的HTML頁面,應用的內容就會變化。從某種角度,此類應用與互聯網應用的瀏覽器端沒有什么差異。
許多客戶端軟件已經可以持續收集質量信息。成熟的App Store都向開發者提供了豐富的質量信息,包括用戶下載次數、購買次數、用戶評價、軟件崩潰信息、軟件錯誤信息等。這都有助于開發者提高應用質量。此外,許多軟件會使用遙測(telemetry)技術,在用戶允許的情況下,向服務端發送運行數據。這讓客戶端軟件的項目團隊也能獲得豐富的質量數據。
許多客戶端軟件都需要訪問互聯網服務。我回憶了一下日常使用的軟件,大部分都要與某些服務器通訊——這也是大多數用戶的普遍情況。未來,純粹的“單機軟件”會愈來愈少,客戶端軟件與互聯網服務的結合會更緊密。因此,相關測試人員也需要掌握一些互聯網服務的測試技術。
客戶端軟件不會和互聯網應用一模一樣,但是它們將擁有更多的相似之處。在高速發展的軟件業,技術工作者需要“擁抱變化”,向同行學習一些新技術,做一些恰當的嘗試,會收獲好的成果。
圖靈訪談:在《軟件測試實戰》的結尾,您總結了很多幫助測試工程師高效學習的方法,其中提到了“耐心”、“堅持”和“知行合一”。您能總結一下一位優秀的測試工程師應該具備的性格特點嗎?
史亮:我認為任何性格特征的測試人員都可以獲得成功,而且從團隊建設的角度,一個由不同性格成員所構成的團隊往往更有活力。
獲得個人成功并不容易,我認為最重要的基礎是對項目、對自己負責任的態度。對項目負責,測試人員需要提供高質量的測試服務來幫助項目成功;對自己負責,測試人員應該以專業人員(professionals)自居,堅持專業主義(professionalism),追求精湛的技藝和卓越的成果。好的態度會推動持續的努力,努力將獲得項目成功和技能成長,它們會激發熱情,而熱情會燃起更積極態度。這樣的激勵循環將幫助測試人提升能力,并發展出適合自身特點的職業之路。
圖靈訪談:測試過程中,工程師需要對產品和業務有相當地了解,是不是說測試工程師在某些方面對于產品的了解甚至超過了產品經理?
史亮:對于復雜的軟件,任何人都不可能掌握全部的信息。測試人員的主要任務是通過技術調查提供產品的質量信息,為項目的關鍵決策提供支持。一方面,技術調查要求測試人員掌握產品和業務的知識,另一方面,深入的調查會幫助他更深刻地理解產品和業務。所以,在許多問題上,測試人員的理解超過產品經理是很自然的情況。
《軟件測試實戰》第7章“研究產品”從靜態分析、動態分析、業務研究等方面入手,討論了如何從測試視角來研究產品。所謂“優秀的測試”并不是使用最前沿、最高級的測試技術,而是根據產品和項目的實際情況選擇恰當的測試方法。所以,測試人員需要在整個項目過程持續地調研,并將研究成果應用于當前的測試。
圖靈訪談:未來辦公軟件產品將會朝什么方向發展?Office系列產品在未來是否會出現重大革新?
史亮:微軟的整體戰略是“Mobile First, Cloud First” (移動優先,云端優先)。在Microsoft Office方面,該戰略大致有如下表現。
除了Windows和Windows Phone,Office套件會進入其他主流移動平臺,包括iPhone、iPad和Android等。目前,OneNote已經在這些平臺上發布了相應版本。
Office套件會和微軟的云服務(OneDrive、SharePoint Online等)深度集成,讓用戶可以隨時隨地通過Office應用來訪問存放在云端的信息。
Office365(Office套件與云服務的集合)會在商業智能、團隊協作、業務管理等領域持續發力。 未來,移動計算與云計算會深度集成,Office產品也需要“與時俱進”。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/8697.html
摘要:北京時間月日月日,由和中國國際人才交流基金會聯合主辦的第七屆全球軟件案例研究峰會簡稱在北京國家會議中心圓滿落幕。本屆峰會,來自阿里美團百度平安銀行等企業的講師分別從企業轉型及研發效能方面分享敏捷和的實踐細節和操作經驗。 北京時間11月30日-12月3日,由msup和中國國際人才交流基金會聯合主辦的第七屆全球軟件案例研究峰會(簡稱:TOP100summit)在北京國家會議中心圓滿落幕。T...
摘要:公布的公有云存儲提供商魔術象限顯示,正在逐漸失利,而谷歌和微軟則取得了一些進展。還指出,它很難擊敗谷歌和微軟以及在中國擊敗阿里巴巴。到目前為止,和公有云存儲產品之間沒有集成點,仍然不支持,也不支持。Gartner公布的公有云存儲提供商魔術象限顯示,AWS正在逐漸失利,而谷歌和微軟則取得了一些進展。Gartner分析師指出,與主要競爭對手的多區域對象存儲服務相比,谷歌的可用性一直是更高的,網絡...
摘要:年月日,麻省理工科技評論發布了年歲以下科技創新人中國榜單,美團點評平臺部中心負責人點評搜索智能中心負責人王仲遠獲評為遠見者。這一次,王仲遠依然拿到了很多頂級機構發出的。年,因為家庭方面的考慮,王仲遠選擇回國發展。 2019 年 1 月 21 日,《麻省理工科技評論》發布了 2018 年35 歲以下科技創新 35 人(35 Innovators Under 35)中國榜單,美團點評AI平...
閱讀 2414·2021-09-01 10:41
閱讀 1438·2019-08-30 14:12
閱讀 506·2019-08-29 12:32
閱讀 2855·2019-08-29 12:25
閱讀 2933·2019-08-28 18:30
閱讀 1703·2019-08-26 11:47
閱讀 972·2019-08-26 10:35
閱讀 2585·2019-08-23 18:06