背景
市面上大部分的monkey類測試工具帚屉,基本是隨機(jī)或者在策略下隨機(jī)的遍歷邏輯眶根;典型的例如:原始的monkey欧募、或者fastbot這種基于預(yù)訓(xùn)練模型+策略配置的monkey个粱;但無論哪一種棉浸,都有固定的缺陷凝危。
- 原始的monkey昆烁,隨機(jī)性太強(qiáng)多矮,冗余操作太多蟹略,遍歷度不夠
- 類fastbot的策略下遍歷登失,策略的配置成本高,需要定制頁面映射的動(dòng)作挖炬,才能完成業(yè)務(wù)邏輯的翻越揽浙,典型的場景,登錄,你必須配置登錄頁面映射的登錄動(dòng)作腳本馅巷,你能夠遍歷時(shí)越過登錄這個(gè)頁面膛虫。
基于隨機(jī)和動(dòng)作冗余以及配置成本之間的關(guān)系,我們在想钓猬,有沒有一種方式稍刀,可以以最小的成本,作出最符合人類思維的遍歷結(jié)果逗噩,恰逢年初掉丽,gpt橫空出世,因此我們決定用gpt來做探索性的嘗試异雁。
GptTraversal 介紹
GptTraversal是一個(gè)基于大模型的app遍歷程序捶障,我們使用大模型代替了傳統(tǒng)的代碼遍歷決策系統(tǒng),如一些典型算法下的策略:深度優(yōu)先纲刀,廣度優(yōu)先项炼,控件的類型和優(yōu)先級映射,黑白名單設(shè)置等示绊;轉(zhuǎn)而讓大模型以一個(gè)正常的“人”的思維锭部,面對app的頁面,進(jìn)行遍歷的動(dòng)作決策面褐。
基本原理
由于是公司內(nèi)的項(xiàng)目拌禾,因此暫時(shí)不能開源,可以說下大概的原理展哭。
首先湃窍,我們將app的頁面樹,做處理后匪傍,交給gpt您市,讓他判斷當(dāng)前的場景,以及下一步如何操作役衡,并記錄下歷史的決策茵休,下一步的操作會基于遍歷目標(biāo)和歷史決策進(jìn)行,這一步相當(dāng)于給gpt提供視覺手蝎,讓gpt“看見”app(當(dāng)時(shí)還沒有g(shù)pt4v)榕莺;
其次,我們會內(nèi)置相應(yīng)的動(dòng)作棵介,例如點(diǎn)擊帽撑、滑動(dòng)、輸入等等鞍时,gpt會從動(dòng)作庫選擇一個(gè)亏拉,進(jìn)行相關(guān)的動(dòng)作觸發(fā)扣蜻,這一步相當(dāng)于給gpt提供了手,可以對app進(jìn)行直接操作及塘;
最后莽使,我們會記錄過程的一切數(shù)據(jù),包括覆蓋率笙僚、截圖芳肌、內(nèi)存信息等等,作為最終的報(bào)告匯總數(shù)據(jù)肋层;額外的亿笤,為了避免token溢出問題帶來的ai步驟的步數(shù)限制,導(dǎo)致遍歷度不夠栋猖,我們增加了傳統(tǒng)的monkey和ai步驟的混編净薛,讓隨機(jī)和有序相結(jié)合的進(jìn)行遍歷。
基本架構(gòu)
效果
基本上來說蒲拉,可以代替之前需要定制動(dòng)作的節(jié)點(diǎn)肃拜,例如登錄、循環(huán)翻頁雌团、填寫表單等等燃领,完全不需要任何的定制化腳本,gpt可以自主以正常人的思維進(jìn)行操作锦援。
缺點(diǎn):
- gpt4 太貴了猛蔽!太貴了!太貴了灵寺!3.5效果不佳
- 由于token限制枢舶,給頁面樹和歷史決策,很明顯會遇到token溢出的問題替久,可以通過限制歷史決策的記錄長度解決,但后果是會降智躏尉。
展望
誰也沒想到蚯根,才過了一年,大模型的進(jìn)化速度如此之快胀糜;目前來說颅拦,這個(gè)工具的問題,大部分都是大模型當(dāng)下技術(shù)的局限性導(dǎo)致教藻,但我相信距帅,未來一定是全智能化的測試方向,也許最終括堤,我們給到工具的測試指令就是一句話:“這里有個(gè)app碌秸,你來測一下”