潘在亮:給業務開發提供黑科技裝備的“測試Q博士”(圖靈訪談)

嘉賓簡介:

潘在亮, 現任騰訊 社交網絡質量部測試開發中心組長。加入騰訊之前,先後任職甲骨文、微軟公司測試開發工程師,參與企業級搜索和Visual Studio產品的測試開發工作。於2009年加入騰訊,參與了企點、PCQQ、手機QQ、QQ空間、QQ音樂、騰訊雲等產品的測試技術改進工作。在測試開發領域擁有超過10年的豐富項目經驗,擅長測試自動化、測試工具開發、研發工具開發和靜態代碼掃描等領域。

enter image description here


訪談內容:

相對於開發人員(也要寫測試代碼),測試開發人員在測試方面有哪些更高的要求?

各個公司甚至公司內部各小組對“測試開發”這個角色的定義各有不同,對測試開發人員的要求也各有不同。從我個人來說,測試開發角色主要負責測試效率乃至研發效率的提升,而效率的提升一般是通過自動化和流程的方式來實現的,所以從這個角度來說測試開發人員跟開發人員沒有太大的差別。不過,測試效率主要由測試開發人員負責,需要對被測業務的技術方案和測試方法都有比較深刻的理解。

一個合格的測試人員,理解被測試產品的技術特點和功能特性是必須的,否則就不能有效地測試產品。但測試人員對技術的理解跟開發人員的角度又是不一樣的,開發人員需要了解技術從而能夠高效地開發出性能良好的代碼,測試人員理解產品的技術是爲了更高效地進行測試。除了理解產品的技術外,測試人員還需要掌握測試的方法,比如等價類、邊界值、敏捷測試、探索性測試方法等,這些都可以通過相關圖書的學習進而掌握。

如果用類比方式描述測試開發人員的日常工作,您會怎樣描述?

如果業務開發人員是特工007詹姆斯邦德,測試開發人員就是裏面的Q博士,專門給業務提供黑科技裝備。我們的一款產品曾時不時地跟後臺的傳輸協議產生嚴重的問題,造成crash,但僅僅通過界面的黑盒測試很難將相關的場景構造出來。對此,測試開發人員開發出該產品的協議抓取工具,來修改協議內容,相關的測試場景才得以順利進行。

測試開發人員是不是要有一些“找茬”“搞壞”的心態?

騰訊的測試開發人員一般不會直接負責查找產品的bug,所以不會存在其他測試人員的“找茬”心態。我個人並不鼓勵測試人員的“找茬”“搞壞”心態。團隊作爲整體都是對研發的產品負責、對客戶負責,應該站在客戶的角度思考問題而不是一味追求團隊中個別的成績。測試工作中,測試人員應該遵守相關的業務規範,即使這些規範有時候會對個別人產生一些困擾。

在設計測試計劃、測試用例、操作步驟、重現步驟等工作中,您有哪些特別的經驗和教訓要和大家分享?

騰訊的測試開發人員一般不會直接參與測試計劃、測試用例等工作,這裏沒有什麼特別的分享。

我們的測試開發人員負責測試工具、自動化框架、持續集成方面的開發建設工作。我個人在這方面的經驗也想分享下,希望能對行業內人士有些幫助。首先,測試開發人員的工作需要得到團隊和公司領導的認可並給予足夠的耐心,因爲任何的開發建設性工作,都需要在初期投入成本。這些建設都是很基礎的、很必要的,部門內最好能有統一的規劃和實施。缺少必要的溝通的話,你搞你的,我做我的,重複的輪子到最後只能變成浪費。

另外,業界一些人認爲測試自動化不就是寫寫簡單的用例,這樣簡單的事情隨便派個人搞搞就好了。如果存在這樣的想法,測試自動化基本上是搞不起來的。測試工具和框架的開發跟其他的產品開發一樣,都需要比較好的開發技術和工程化實施。

自動化測試更適合哪些測試場景?

像Google這樣的一些國外公司會採用自動化測試應對絕大部分的測試場景。國內的實際情況下,一般不建議在產品初級階段、產品形態變化較大的情況下進行自動化測試。產品初級階段和產品形態變化大的時候,雖然也可以使用自動化測試來提升研發效率,但實施的前提是研發團隊具有很高的研發水平,能夠保證應用接口很好地擴展,保證接口的穩定性,否則每更新一次版本,大部分的自動化測試用例就要推倒從來。

過多地依賴自動化測試工具,而減少人工測試的投入,是否會導致產品的某些缺陷不易被發現?

就目前的自動化測試技術水平來看,它還不能替代人工測試,尤其是在主動發現bug方面,人的靈活性還是非常重要的。自動化測試更多地用於防止bug的迴歸,以及提升發佈的效率。自動化往往也是其他深層測試的基礎,像壓力測試、性能測試、MTTF測試等,沒有自動化框架的支持深層測試就比較難做到。

隨着機器學習領域技術的逐步成熟,機器學習算法應用到自動化測試只是時間的問題,到時候很多的手工測試會被人工智能所替代。

PC端、Web、移動端以及後臺Server端的測試工作有哪些不同?

幾個端的測試從本質上講沒有什麼不同,都是測試一個或多個進程的應用。PC端的界面會比較複雜,因爲PC的顯示器較大,允許產品在界面上有更復雜靈活的設計,對測試的要求也更高。移動端需要注意碎片化的問題。這個碎片化主要是指Android系統的碎片化問題,測試人員需要在Android的不同版本、不同手機廠商間做多次測試。另外還要更加註重性能、電量等問題。Web端的測試需要面對比較多的的技術棧,js,php,HTML,json等。Server的測試則會面對比較複雜的網絡拓撲結構、複雜數據存儲,以及高可用等挑戰。這些對後臺應用的測試環境搭建會產生很大的挑戰。要解決這個問題需要對後臺程序有更高的可測性要求,在剛開始開發的時候後臺應用就要將可測試性考慮到後臺應用中。

麥思博主辦的上海MPD軟件工作坊即將在5月中旬開幕,我知道您將在會上講授“跨多端測試自動化體系”。可以先給我們透露一下,騰訊內部是怎樣打造跨越多端的全棧自動化測試體系的嗎?

騰訊的很多產品都涉及多端,產品的自動化測試自然需要跨越多端的自動化體系。不過,騰訊內部並沒有一個全公司統一的多端自動化體系。就我所在的社交網絡質量部而言,多端自動化體系的搭建主要從兩個方面入手。一個是統一的多端驅動來驅動被測試的應用,另一個是統一的用例編寫、管理方式和系統。這兩個方面涉及的技術點和難點是非常多的,但這兩個方面是不可或缺的,是一個完整的多端自動化體系最重要的兩個組成部分。

我們在社交網絡事業羣打造的QTA自動化測試平臺主要也是從上面的兩方面入手。Android、iOS端的驅動類庫QT4A、QT4i都是我們自己研發的,這保證了驅動接口的一致性。在UI控件的定位和管理方面,我們也都採用了統一的做法。Android端和iOS端的UI控件採用QPath格式進行描述。各個端的用例統一採用python編寫,此外用例的編寫格式、代碼風格也是統一的。

爲應對校招的測試開發面試,在校生應該做哪些準備?

我覺得在校生需要做好三方面的準備,一個是需要有比較好的心態,積極的心態。自動化測試會存在失敗的情況並且失敗的次數不止一次,這需要積極的心態才能迎難而上,最終克服困難。二是需要對測試有一定的瞭解,例如邊界值測試等。這裏倒不是要求在校生對測試方法有很深地掌握,畢竟學校裏並沒有這樣的課程。對測試有一定的瞭解主要是希望在校生能有較好的場景分析能力,設計出測試要素。例如分析一個簡單的登錄窗口,除了考慮登錄密碼的正確與否,還要考慮到用戶名的不同格式、不同字符的編碼,不同的字符串長度。除了功能之外,是否還能考慮到性能因素。三是要有比較好的編程基礎,能夠掌握基本的數據結構算法。如果不能很好地掌握數據結構算法,測試工作中就很難理解操作系統、數據庫、網絡等方面的技術要點,這對掌握團隊的技術方案更是困難。


更多精彩,加入圖靈訪談微信!

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章