
導讀:光看標題,你可能會以為今天會聊一個休閑的話題,不不,今天我們將要認真聊的,是一個嚴肅的軟件工程話題:自動化測試。具體來說,是手機游戲的自動化測試。不是別家的游戲,正是騰訊游戲,保證半點也沒有標題黨。(堅持看完有福利)
作者:木羊同學
來源:大數據DT(ID:hzdashuju)
學過軟件工程的同學應該都知道,軟件工程是一門老師都可能隨時不知道自己到底在講什么的計算機專業課。不過,這不是本篇的重點。
軟件工程告訴我們很多重要的事,其中一件事是軟件都有一個生命周期。沒錯,一說軟件開發,我們都會很自然想到寫代碼,但軟件工程告訴我們,寫代碼遠不是軟件開發的全部工作,甚至還不一定是最重要的工作。
按照軟件工程的說法,開發軟件你得首先和客戶談笑風生,這叫需求分析,接著就是各種寫不完的文檔和開不完的研究會,都弄好以后,差不多就可以把“碼農”找過來,把滿頭青絲編成代碼。
你以為這就完了?沒有!從軟件編碼到軟件正式上線部署之間,有一個非常重要的階段,叫軟件測試,俗稱Debug。Debug完了軟件該上線了吧?NoNoNo,城里人的套路深著呢,還有QA和QC在前面等著。等著干嘛呢,翻來覆去地花式折騰你的程序,目標只有一個,加油努力把程序玩脫。
照一些軟工書本的說法,軟件開發最重要的是需求,其次是測試,接著可能是什么三姑六婆,至于程序員死了都要愛的寫代碼環節,在軟工書里經常是三甲不入的,沒啥存在感。
當然了,理想很豐滿,現實很骨感,干了一輩子程序員,從沒見過活著的QA、QC的也大有人在。所以,象牙塔里的軟工老師,講著講著能把自己繞暈也不足為奇,這里就不展開了。
但是有一點,雖然大公司、小公司、以及不同流派的開發團隊,在軟件工程上的玩法各不相同,但有一點毫無疑問,軟件測試是軟件開發必不可少的環節。前面說過,軟件測試就是花式折騰程序,直到折騰出毛病來。
聽著是不是挺有意思?但真的走一遍你就會發現,這事費時費事還費腦子。軟件測試有一個經典的環節,叫設計測試用例。什么意思呢?簡單來說,你不是要花式折騰程序嗎,花式虐狗還得先寫一本《花式虐狗手冊》呢,測試用例就是花式折騰程序的手冊。
測試用例可不好設計,測試用例最希望的目標是做到路徑全覆蓋,也就是把程序所有可能的流程都測一遍。
這是非常燒腦的,光這么說可能感受不直觀,接下來我們要講游戲怎么進行軟件測試,這里那就拿游戲作為例子好了,譬如說農藥,現在要你設計一套路徑全覆蓋的測試用例,就是要你把所有角色的所有技能在所有可能的場景全都組合試一遍,就是這個難度,而且這還只是一小部分,因為農藥除了競技,還有社交、氪金等等別的各種功能,全都需要覆蓋一遍。
現在應該可以看出來,軟件測試并不簡單,一套設計良好的測試用例,背后往往需要對軟件的種種缺陷有深刻的認識。這就是為什么軟工的書講到軟件測試,往往都會提出一個有點反直覺的觀點:測試用例應該盡可能安排資深的專家來設計。
折騰軟件聽起來簡單,寫程序有門檻,測程序誰還不會對吧。但是,真要做到路徑全覆蓋,還真不是這么簡單。隨著軟件規模越來越大,邏輯越來越復雜,傳統的手工測試成本自然也隨之暴漲,已經到了純手工幾乎不可能完成的地步。這個時候,軟件測試人員想到了一個辦法。
玩游戲感覺難度太高怎么辦?開掛。那測試游戲也感覺難度太高怎么辦?沒錯,同樣也是開掛。軟件測試人員開發出一種技術,叫自動化測試技術。當然了,雖然名字上叫“技術”,其實一開始也是測試人員零敲碎打甚至一拍腦門的產物。
根據《AI自動化測試》這本書的介紹,自動化測試技術的發展大致可分為四個階段:
第一個階段叫“錄制-回放”技術,名字聽起來好像很厲害,其實就是利用按鍵精靈或者之類的軟件先記錄鍵盤和鼠標的操作,然后不斷重放進行測試。這套技術的優點很明顯,簡單易學,缺點也很明顯,軟件稍一改版,譬如稍微調整了一下某個按鈕的位置,原先錄制好的內容就完全作廢了。
第二個階段叫腳本化的自動化測試。腳本化意思就是要寫腳本來測軟件了,這應該是現在軟件測試工作最常見的做法。不過和軟件測試腳本和寫軟件一樣,如果每次都從頭開始,很快就會發現很多功能其實高度類似,大量時間都是在做重復性的工作。那怎么辦呢?于是就有了第三個階段。
第三個階段叫測試框架。測試框架就是把測試腳本框架化,框架的好處不必多說了,在自動化測試中,框架也具有同樣好處。有了測試框架,就可以把主要的時間精力,放在新增功能和核心功能的編寫上面,能夠顯著提升了測試腳本的編寫效率。
如果依據軟件開發的經驗,應該說自動化測試到了這個階段,理論上就能難取得什么新突破了,實踐上能做的工作主要就是對現有框架進行各種優化升級,或者開發新框架。那自動化測試的第四個階段還能玩出什么新花樣呢?答案就是真·自動化測試。
第四個階段叫AI自動化測試。從自動化測試的前面三個階段可以看出,雖然自動化測試名叫“自動化”,但實際上還是有許多工作需要人來完成,譬如說自動化測試的腳本就必須人來編寫。
如果能夠把這部分工作也“自動化”了,那豈不就是真正的自動化?想法很好,畢竟偷懶是IT技術發展的源動力,一樣工作偷懶了,就樣樣工作都想偷懶??墒?,可能嗎?以前是不太可能,現在隨著AI技術的進步,“不太可能”也隨之變成了“也許可能”。
下面我們開始介紹如何基于AI技術對游戲類軟件進行自動化測試。關于AI技術,我前面寫過很多的文章,所以在開始之前,我想分享一個關于AI技術的觀點。
技術的發展,尤其是計算機技術的發展,一定都是有一個不斷發展成熟的過程,都是從一個“也許可能”開始,步履蹣跚跌跌撞撞,甚至可能會中途夭折,但都必須熬過這個艱難的過程,最終才能百煉成鋼。
這幾年AI技術很熱,很多人已經著急地開始討論用AI來取代人工,但在我看來,AI技術也并不例外,也需要經歷那么一個跌跌撞撞的過程,選擇了AI技術,并不意味著就選擇了萬事大吉,在通往應用的路上,還有大大小小無數的坑在等著勇敢的先驅們去填滿。
現在的AI技術還正站在那個“也許可能”的起點上,更多地是告訴我們還有一種可能的選項。下面,我們就來一起看看,AI技術給游戲類軟件測試帶來怎樣的可能選項。
說到游戲,行業內的同學第一個想到的應該都是最能“用心創造快樂”的騰訊互娛,有好幾作爆款手游。最近騰訊互娛事業群的TuringLab實驗室出了一本書,叫《AI自動化測試》,書里提到了一點不快樂的事。什么事不快樂呢?就是前面一直在說的軟件測試。
手游也是軟件,當然也需要進行軟件測試,最常規的做法就是前面介紹的用自動化腳本測試。但編寫測試現代手游的自動腳本,有三點難題:
還有一點書里沒提,但我覺得這應該也算是一大難題。騰訊互娛素來有“養蠱”的傳統,同一類游戲題材,通常會選擇讓自家的多個制作團隊同時獨立開發競品游戲,這一策略在市場上大獲成功,但不難想象會給背后的測試團隊帶來多大的工作壓力。
畢竟人無論多努力,時間和精力都是有瓶頸的,但機器沒有,所以,騰訊互娛開始探索用AI技術來完成手游測試工作的自動化道路。
要實現真·自動化測試手游,首先需要解決三大問題。
第一個大問題是手游的“讀寫”問題,這是一切工作的基礎。手游是安裝在手機上的,必須得先找到一些方法能夠對手機進行各種操作。
這個問題相對容易,Android操作系統就自帶了調試工具,此外還有許多好用的第三方工具包,譬如OpenSTF發布的minicap和minitouch,基于ADB實現了對Android手機運行App的實時截屏和觸屏操作,這就首先為自動化測試手游解決了“讀寫”問題。
第二個問題是“讀”的問題。玩手游被親切地稱為“擦玻璃”,這是有原因的,游戲的畫面呈現,和對游戲角色的操作,都是在同一塊屏幕上進行的。
minicap雖然實現了截屏,但是哪一部分是畫面,哪一部分又是操作呢?單就游戲畫面來說,至少還能細分成兩個部分,狀態畫面和獎勵畫面。這不是規范叫法,這里我是借用了強化學習的部分概念。
強化學習里有一個智能體(Agent)的概念,不妨理解成玩游戲時你操作的游戲角色,智能體要干什么呢?三件事,觀察周圍環境,采取一些行動,爭取得到最高的獎勵。
觀察周圍環境,術語叫做狀態(State),譬如說競速類游戲,當前是在形勢在直路上,還是準備進入彎道。那獎勵是什么呢?最容易能想到的就是游戲得分,不過,在一些游戲,譬如前面所舉的競速類游戲,還有一些其它的實時獎勵,比如當前的車速等等。
強化學習就是通過觀察狀態,分析出當前應該采取什么行動(術語稱為“策略”),從而獲得最高獎勵。這個過程稱為策略優化。而要找到最優策略,必須將狀態-行動-獎勵以三元組的形式保存下來作為訓練樣本。這就要求必須首先從畫面中獲取狀態畫面和獎勵畫面。
對于這個問題,《AI自動化測試》介紹了如何使用基于深度學習的圖像處理算法,來完成場景覆蓋性測試和游戲場景圖像物體識別。
▲強化學習使用的各個區域示意圖,來源:《AI自動化測試》圖3-8
第三個問題是操作的問題。解決了第二個問題,我們就獲取了手游的各種信息,那接下來應該進行什么動作操作呢?這是軟件測試最關鍵的問題,也是自動化測試最難解決的問題。對于這個問題,《AI自動化測試》給出了兩種思路,第一種就是前面已經提到的強化學習,另一種名字就比較新鮮了,叫“模仿學習”。
什么叫模仿學習呢?很簡單,就是現在爭議非常大的“云通關”。模仿學習是這么玩游戲的,現在要我玩一款游戲,但我首先做的不是上手去玩,而是先到B站刷高手通關視頻,一直刷一直刷,一直刷到我認為已經把所有細節都印入腦海了,我就開始憑著記憶去玩游戲。
可想而知的是,很多的操作我雖然不清楚是為什么,也就是很多人說的失掉了探索游戲的樂趣,但我多半能很快通關。這就是模仿學習想要達到的結果。
好了,前面大致介紹了游戲自動化測試所會遇到的問題,和《AI自動化測試》給出的解決思路,但讀完你肯定感覺和我一樣,就算這些方法真的對路,不過要一一從頭實現實在太麻煩。
還記得我前面說的話嗎,偷懶是IT技術發展的源動力,騰訊互娛顯然也知道這個道理,已經推出了一款名叫GAME AI SDK的自動化測試平臺,提供了許多已經封裝好了的工具,來逐一解決前面提到的這些問題。
關于這部分內容,可以仔細閱讀《AI自動化測試》這本書,GAME AI SDK正是本書的作者TuringLab團隊的作品。
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25