
導(dǎo)讀:光看標題,你可能會以為今天會聊一個休閑的話題,不不,今天我們將要認真聊的,是一個嚴肅的軟件工程話題:自動化測試。具體來說,是手機游戲的自動化測試。不是別家的游戲,正是騰訊游戲,保證半點也沒有標題黨。(堅持看完有福利)
作者:木羊同學(xué)
來源:大數(shù)據(jù)DT(ID:hzdashuju)
學(xué)過軟件工程的同學(xué)應(yīng)該都知道,軟件工程是一門老師都可能隨時不知道自己到底在講什么的計算機專業(yè)課。不過,這不是本篇的重點。
軟件工程告訴我們很多重要的事,其中一件事是軟件都有一個生命周期。沒錯,一說軟件開發(fā),我們都會很自然想到寫代碼,但軟件工程告訴我們,寫代碼遠不是軟件開發(fā)的全部工作,甚至還不一定是最重要的工作。
按照軟件工程的說法,開發(fā)軟件你得首先和客戶談笑風生,這叫需求分析,接著就是各種寫不完的文檔和開不完的研究會,都弄好以后,差不多就可以把“碼農(nóng)”找過來,把滿頭青絲編成代碼。
你以為這就完了?沒有!從軟件編碼到軟件正式上線部署之間,有一個非常重要的階段,叫軟件測試,俗稱Debug。Debug完了軟件該上線了吧?NoNoNo,城里人的套路深著呢,還有QA和QC在前面等著。等著干嘛呢,翻來覆去地花式折騰你的程序,目標只有一個,加油努力把程序玩脫。
照一些軟工書本的說法,軟件開發(fā)最重要的是需求,其次是測試,接著可能是什么三姑六婆,至于程序員死了都要愛的寫代碼環(huán)節(jié),在軟工書里經(jīng)常是三甲不入的,沒啥存在感。
當然了,理想很豐滿,現(xiàn)實很骨感,干了一輩子程序員,從沒見過活著的QA、QC的也大有人在。所以,象牙塔里的軟工老師,講著講著能把自己繞暈也不足為奇,這里就不展開了。
但是有一點,雖然大公司、小公司、以及不同流派的開發(fā)團隊,在軟件工程上的玩法各不相同,但有一點毫無疑問,軟件測試是軟件開發(fā)必不可少的環(huán)節(jié)。前面說過,軟件測試就是花式折騰程序,直到折騰出毛病來。
聽著是不是挺有意思?但真的走一遍你就會發(fā)現(xiàn),這事費時費事還費腦子。軟件測試有一個經(jīng)典的環(huán)節(jié),叫設(shè)計測試用例。什么意思呢?簡單來說,你不是要花式折騰程序嗎,花式虐狗還得先寫一本《花式虐狗手冊》呢,測試用例就是花式折騰程序的手冊。
測試用例可不好設(shè)計,測試用例最希望的目標是做到路徑全覆蓋,也就是把程序所有可能的流程都測一遍。
這是非常燒腦的,光這么說可能感受不直觀,接下來我們要講游戲怎么進行軟件測試,這里那就拿游戲作為例子好了,譬如說農(nóng)藥,現(xiàn)在要你設(shè)計一套路徑全覆蓋的測試用例,就是要你把所有角色的所有技能在所有可能的場景全都組合試一遍,就是這個難度,而且這還只是一小部分,因為農(nóng)藥除了競技,還有社交、氪金等等別的各種功能,全都需要覆蓋一遍。
現(xiàn)在應(yīng)該可以看出來,軟件測試并不簡單,一套設(shè)計良好的測試用例,背后往往需要對軟件的種種缺陷有深刻的認識。這就是為什么軟工的書講到軟件測試,往往都會提出一個有點反直覺的觀點:測試用例應(yīng)該盡可能安排資深的專家來設(shè)計。
折騰軟件聽起來簡單,寫程序有門檻,測程序誰還不會對吧。但是,真要做到路徑全覆蓋,還真不是這么簡單。隨著軟件規(guī)模越來越大,邏輯越來越復(fù)雜,傳統(tǒng)的手工測試成本自然也隨之暴漲,已經(jīng)到了純手工幾乎不可能完成的地步。這個時候,軟件測試人員想到了一個辦法。
玩游戲感覺難度太高怎么辦?開掛。那測試游戲也感覺難度太高怎么辦?沒錯,同樣也是開掛。軟件測試人員開發(fā)出一種技術(shù),叫自動化測試技術(shù)。當然了,雖然名字上叫“技術(shù)”,其實一開始也是測試人員零敲碎打甚至一拍腦門的產(chǎn)物。
根據(jù)《AI自動化測試》這本書的介紹,自動化測試技術(shù)的發(fā)展大致可分為四個階段:
第一個階段叫“錄制-回放”技術(shù),名字聽起來好像很厲害,其實就是利用按鍵精靈或者之類的軟件先記錄鍵盤和鼠標的操作,然后不斷重放進行測試。這套技術(shù)的優(yōu)點很明顯,簡單易學(xué),缺點也很明顯,軟件稍一改版,譬如稍微調(diào)整了一下某個按鈕的位置,原先錄制好的內(nèi)容就完全作廢了。
第二個階段叫腳本化的自動化測試。腳本化意思就是要寫腳本來測軟件了,這應(yīng)該是現(xiàn)在軟件測試工作最常見的做法。不過和軟件測試腳本和寫軟件一樣,如果每次都從頭開始,很快就會發(fā)現(xiàn)很多功能其實高度類似,大量時間都是在做重復(fù)性的工作。那怎么辦呢?于是就有了第三個階段。
第三個階段叫測試框架。測試框架就是把測試腳本框架化,框架的好處不必多說了,在自動化測試中,框架也具有同樣好處。有了測試框架,就可以把主要的時間精力,放在新增功能和核心功能的編寫上面,能夠顯著提升了測試腳本的編寫效率。
如果依據(jù)軟件開發(fā)的經(jīng)驗,應(yīng)該說自動化測試到了這個階段,理論上就能難取得什么新突破了,實踐上能做的工作主要就是對現(xiàn)有框架進行各種優(yōu)化升級,或者開發(fā)新框架。那自動化測試的第四個階段還能玩出什么新花樣呢?答案就是真·自動化測試。
第四個階段叫AI自動化測試。從自動化測試的前面三個階段可以看出,雖然自動化測試名叫“自動化”,但實際上還是有許多工作需要人來完成,譬如說自動化測試的腳本就必須人來編寫。
如果能夠把這部分工作也“自動化”了,那豈不就是真正的自動化?想法很好,畢竟偷懶是IT技術(shù)發(fā)展的源動力,一樣工作偷懶了,就樣樣工作都想偷懶??墒牵赡軉??以前是不太可能,現(xiàn)在隨著AI技術(shù)的進步,“不太可能”也隨之變成了“也許可能”。
下面我們開始介紹如何基于AI技術(shù)對游戲類軟件進行自動化測試。關(guān)于AI技術(shù),我前面寫過很多的文章,所以在開始之前,我想分享一個關(guān)于AI技術(shù)的觀點。
技術(shù)的發(fā)展,尤其是計算機技術(shù)的發(fā)展,一定都是有一個不斷發(fā)展成熟的過程,都是從一個“也許可能”開始,步履蹣跚跌跌撞撞,甚至可能會中途夭折,但都必須熬過這個艱難的過程,最終才能百煉成鋼。
這幾年AI技術(shù)很熱,很多人已經(jīng)著急地開始討論用AI來取代人工,但在我看來,AI技術(shù)也并不例外,也需要經(jīng)歷那么一個跌跌撞撞的過程,選擇了AI技術(shù),并不意味著就選擇了萬事大吉,在通往應(yīng)用的路上,還有大大小小無數(shù)的坑在等著勇敢的先驅(qū)們?nèi)ヌ顫M。
現(xiàn)在的AI技術(shù)還正站在那個“也許可能”的起點上,更多地是告訴我們還有一種可能的選項。下面,我們就來一起看看,AI技術(shù)給游戲類軟件測試帶來怎樣的可能選項。
說到游戲,行業(yè)內(nèi)的同學(xué)第一個想到的應(yīng)該都是最能“用心創(chuàng)造快樂”的騰訊互娛,有好幾作爆款手游。最近騰訊互娛事業(yè)群的TuringLab實驗室出了一本書,叫《AI自動化測試》,書里提到了一點不快樂的事。什么事不快樂呢?就是前面一直在說的軟件測試。
手游也是軟件,當然也需要進行軟件測試,最常規(guī)的做法就是前面介紹的用自動化腳本測試。但編寫測試現(xiàn)代手游的自動腳本,有三點難題:
還有一點書里沒提,但我覺得這應(yīng)該也算是一大難題。騰訊互娛素來有“養(yǎng)蠱”的傳統(tǒng),同一類游戲題材,通常會選擇讓自家的多個制作團隊同時獨立開發(fā)競品游戲,這一策略在市場上大獲成功,但不難想象會給背后的測試團隊帶來多大的工作壓力。
畢竟人無論多努力,時間和精力都是有瓶頸的,但機器沒有,所以,騰訊互娛開始探索用AI技術(shù)來完成手游測試工作的自動化道路。
要實現(xiàn)真·自動化測試手游,首先需要解決三大問題。
第一個大問題是手游的“讀寫”問題,這是一切工作的基礎(chǔ)。手游是安裝在手機上的,必須得先找到一些方法能夠?qū)κ謾C進行各種操作。
這個問題相對容易,Android操作系統(tǒng)就自帶了調(diào)試工具,此外還有許多好用的第三方工具包,譬如OpenSTF發(fā)布的minicap和minitouch,基于ADB實現(xiàn)了對Android手機運行App的實時截屏和觸屏操作,這就首先為自動化測試手游解決了“讀寫”問題。
第二個問題是“讀”的問題。玩手游被親切地稱為“擦玻璃”,這是有原因的,游戲的畫面呈現(xiàn),和對游戲角色的操作,都是在同一塊屏幕上進行的。
minicap雖然實現(xiàn)了截屏,但是哪一部分是畫面,哪一部分又是操作呢?單就游戲畫面來說,至少還能細分成兩個部分,狀態(tài)畫面和獎勵畫面。這不是規(guī)范叫法,這里我是借用了強化學(xué)習的部分概念。
強化學(xué)習里有一個智能體(Agent)的概念,不妨理解成玩游戲時你操作的游戲角色,智能體要干什么呢?三件事,觀察周圍環(huán)境,采取一些行動,爭取得到最高的獎勵。
觀察周圍環(huán)境,術(shù)語叫做狀態(tài)(State),譬如說競速類游戲,當前是在形勢在直路上,還是準備進入彎道。那獎勵是什么呢?最容易能想到的就是游戲得分,不過,在一些游戲,譬如前面所舉的競速類游戲,還有一些其它的實時獎勵,比如當前的車速等等。
強化學(xué)習就是通過觀察狀態(tài),分析出當前應(yīng)該采取什么行動(術(shù)語稱為“策略”),從而獲得最高獎勵。這個過程稱為策略優(yōu)化。而要找到最優(yōu)策略,必須將狀態(tài)-行動-獎勵以三元組的形式保存下來作為訓(xùn)練樣本。這就要求必須首先從畫面中獲取狀態(tài)畫面和獎勵畫面。
對于這個問題,《AI自動化測試》介紹了如何使用基于深度學(xué)習的圖像處理算法,來完成場景覆蓋性測試和游戲場景圖像物體識別。
▲強化學(xué)習使用的各個區(qū)域示意圖,來源:《AI自動化測試》圖3-8
第三個問題是操作的問題。解決了第二個問題,我們就獲取了手游的各種信息,那接下來應(yīng)該進行什么動作操作呢?這是軟件測試最關(guān)鍵的問題,也是自動化測試最難解決的問題。對于這個問題,《AI自動化測試》給出了兩種思路,第一種就是前面已經(jīng)提到的強化學(xué)習,另一種名字就比較新鮮了,叫“模仿學(xué)習”。
什么叫模仿學(xué)習呢?很簡單,就是現(xiàn)在爭議非常大的“云通關(guān)”。模仿學(xué)習是這么玩游戲的,現(xiàn)在要我玩一款游戲,但我首先做的不是上手去玩,而是先到B站刷高手通關(guān)視頻,一直刷一直刷,一直刷到我認為已經(jīng)把所有細節(jié)都印入腦海了,我就開始憑著記憶去玩游戲。
可想而知的是,很多的操作我雖然不清楚是為什么,也就是很多人說的失掉了探索游戲的樂趣,但我多半能很快通關(guān)。這就是模仿學(xué)習想要達到的結(jié)果。
好了,前面大致介紹了游戲自動化測試所會遇到的問題,和《AI自動化測試》給出的解決思路,但讀完你肯定感覺和我一樣,就算這些方法真的對路,不過要一一從頭實現(xiàn)實在太麻煩。
還記得我前面說的話嗎,偷懶是IT技術(shù)發(fā)展的源動力,騰訊互娛顯然也知道這個道理,已經(jīng)推出了一款名叫GAME AI SDK的自動化測試平臺,提供了許多已經(jīng)封裝好了的工具,來逐一解決前面提到的這些問題。
關(guān)于這部分內(nèi)容,可以仔細閱讀《AI自動化測試》這本書,GAME AI SDK正是本書的作者TuringLab團隊的作品。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認 ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預(yù)測分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢預(yù)判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預(yù)測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準 ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學(xué)方法在市場調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學(xué)方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03