本文僅用於學習和交流目的,不得用於商業目的。非商業轉載請註明做譯者、出處,並保留本文的原始連接:http://www.ituring.com.cn/art...php
潘在亮, 現任騰訊 社交網絡質量部測試開發中心組長。加入騰訊以前,前後任職甲骨文、微軟公司測試開發工程師,參與企業級搜索和Visual Studio產品的測試開發工做。於2009年加入騰訊,參與了企點、PCQQ、手機QQ、QQ空間、QQ音樂、騰訊雲等產品的測試技術改進工做。在測試開發領域擁有超過10年的豐富項目經驗,擅長測試自動化、測試工具開發、研發工具開發和靜態代碼掃描等領域。python
相對於開發人員(也要寫測試代碼),測試開發人員在測試方面有哪些更高的要求?面試
各個公司甚至公司內部各小組對「測試開發」這個角色的定義各有不一樣,對測試開發人員的要求也各有不一樣。從我我的來講,測試開發角色主要負責測試效率乃至研發效率的提高,而效率的提高通常是經過自動化和流程的方式來實現的,因此從這個角度來講測試開發人員跟開發人員沒有太大的差異。不過,測試效率主要由測試開發人員負責,須要對被測業務的技術方案和測試方法都有比較深入的理解。算法
一個合格的測試人員,理解被測試產品的技術特色和功能特性是必須的,不然就不能有效地測試產品。但測試人員對技術的理解跟開發人員的角度又是不同的,開發人員須要瞭解技術從而可以高效地開發出性能良好的代碼,測試人員理解產品的技術是爲了更高效地進行測試。除了理解產品的技術外,測試人員還須要掌握測試的方法,好比等價類、邊界值、敏捷測試、探索性測試方法等,這些均可以經過相關圖書的學習進而掌握。數據庫
若是用類比方式描述測試開發人員的平常工做,您會怎樣描述?編程
若是業務開發人員是特工007詹姆斯邦德,測試開發人員就是裏面的Q博士,專門給業務提供黑科技裝備。咱們的一款產品曾時不時地跟後臺的傳輸協議產生嚴重的問題,形成crash,但僅僅經過界面的黑盒測試很難將相關的場景構造出來。對此,測試開發人員開發出該產品的協議抓取工具,來修改協議內容,相關的測試場景才得以順利進行。json
測試開發人員是否是要有一些「找茬」「搞壞」的心態?微信
騰訊的測試開發人員通常不會直接負責查找產品的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編寫,此外用例的編寫格式、代碼風格也是統一的。
爲應對校招的測試開發面試,在校生應該作哪些準備?
我以爲在校生須要作好三方面的準備,一個是須要有比較好的心態,積極的心態。自動化測試會存在失敗的狀況而且失敗的次數不止一次,這須要積極的心態才能迎難而上,最終克服困難。二是須要對測試有必定的瞭解,例如邊界值測試等。這裏倒不是要求在校生對測試方法有很深地掌握,畢竟學校裏並無這樣的課程。對測試有必定的瞭解主要是但願在校生能有較好的場景分析能力,設計出測試要素。例如分析一個簡單的登陸窗口,除了考慮登陸密碼的正確與否,還要考慮到用戶名的不一樣格式、不一樣字符的編碼,不一樣的字符串長度。除了功能以外,是否還能考慮到性能因素。三是要有比較好的編程基礎,可以掌握基本的數據結構算法。若是不能很好地掌握數據結構算法,測試工做中就很難理解操做系統、數據庫、網絡等方面的技術要點,這對掌握團隊的技術方案更是困難。