人們正在嘗試將機(jī)器學(xué)習(xí)應(yīng)用到各種以前只有人類(lèi)才能完成的高難度領(lǐng)域,比如軟件開(kāi)發(fā)和測(cè)試。軟件開(kāi)發(fā)可以說(shuō)是一種“高智能”的工作項(xiàng)目,軟件工程師通常需要多年的理論、技術(shù)和實(shí)踐經(jīng)驗(yàn)積累才有可能開(kāi)發(fā)出高質(zhì)量的軟件產(chǎn)品。但正如當(dāng)初人們不相信AI可以在圍棋這種代表人類(lèi)智慧的領(lǐng)域超越自己,卻在AlphaGO等的攻擊下“節(jié)節(jié)敗退”一樣,AI在軟件開(kāi)發(fā)領(lǐng)域的應(yīng)用也正在逐步刷新曾經(jīng)驕傲的世人們的看法。
目前已經(jīng)有多個(gè)業(yè)界巨頭正在使用AI技術(shù)來(lái)提升軟件自動(dòng)化開(kāi)發(fā)能力,其中的先行者當(dāng)數(shù)AlphaGO所屬公司Google,以及Facebook等幾大互聯(lián)網(wǎng)巨頭。
不僅是軟件開(kāi)發(fā)領(lǐng)域,軟件自動(dòng)化測(cè)試在AI的攻擊下也同樣逐步淪陷。值得一提的是,自動(dòng)化測(cè)試(Automated Testing)并不是一個(gè)新概念,它已經(jīng)存在了幾十年了。而且從歷史發(fā)展過(guò)程來(lái)看,它與AI之間并沒(méi)有過(guò)多的交集—它們之間的“觸電”是因?yàn)樽詣?dòng)化測(cè)試領(lǐng)域已經(jīng)來(lái)到一個(gè)瓶頸期,更確切地說(shuō),就是借助傳統(tǒng)的技術(shù)已經(jīng)沒(méi)有辦法滿(mǎn)足它進(jìn)一步提升的需求了。
可以思考一下,如果需要將AI應(yīng)用到自動(dòng)化測(cè)試領(lǐng)域,有哪些可能的切入方向呢?下面是本書(shū)對(duì)基于AI的軟件自動(dòng)化測(cè)試的“暢想”。
一方面,由于游戲(特別是移動(dòng)設(shè)備端游戲)規(guī)則的不確定性、畫(huà)面渲染動(dòng)態(tài)性等多方面原因,游戲的自動(dòng)化測(cè)試一直是學(xué)術(shù)界和業(yè)界的一大難題—這個(gè)難題催生了不少專(zhuān)業(yè)的游戲自動(dòng)化測(cè)試公司。但到目前為止,業(yè)界能做到的最好狀態(tài)也只是能夠完成少量的自動(dòng)化測(cè)試。
另一方面,學(xué)術(shù)界和業(yè)界已經(jīng)有很多在游戲方面擊敗人類(lèi)的案例,譬如圍棋界的AlphaGO,國(guó)際象棋界的Deep Blue(深藍(lán))等。那么有沒(méi)有可能進(jìn)一步將這些成果應(yīng)用到游戲的自動(dòng)化測(cè)試領(lǐng)域,并代替人的手工測(cè)試呢?雖然短期內(nèi)仍然存在不少棘手的問(wèn)題,但我們相信這個(gè)問(wèn)題的答案是肯定的。隨著AI浪潮的崛起和越來(lái)越多的技術(shù)突破,這或許只是一個(gè)時(shí)間問(wèn)題了。
目前的軟件自動(dòng)化測(cè)試水平,還無(wú)法在完全沒(méi)有人工干預(yù)的情況下生成有效的“功能測(cè)試用例”。這其中的核心原因在于自動(dòng)化測(cè)試框架缺乏“思考”能力。換句話(huà)說(shuō),它們只能機(jī)械地執(zhí)行人類(lèi)利用測(cè)試腳本等方式告知它的“固定做事方法”。這樣帶來(lái)的壞處是顯而易見(jiàn)的。一方面人們需要持續(xù)投入人力來(lái)編寫(xiě)和維護(hù)測(cè)試腳本;另一方面對(duì)于測(cè)試過(guò)程中出現(xiàn)的各種異常情況,它們也只能“望洋興嘆”。
基于AI的自動(dòng)化探索測(cè)試可以賦予現(xiàn)有測(cè)試框架所欠缺的“邏輯思維”能力,從而有效解決傳統(tǒng)測(cè)試技術(shù)中的瓶頸。當(dāng)然,和游戲自動(dòng)化測(cè)試類(lèi)似,只有持續(xù)的技術(shù)和資源投入才可能最終觸發(fā)這一方向的“質(zhì)變”。
傳統(tǒng)測(cè)試技術(shù)已經(jīng)遇到了很多瓶頸,特別是當(dāng)測(cè)試過(guò)程中需要用到只有人類(lèi)才具有的“高級(jí)”能力時(shí)更顯得“捉襟見(jiàn)肘”,包括但不限于以下幾方面。
1) 感觀判斷能力
2) 邏輯判斷能力
3) 測(cè)試的可繼承性
當(dāng)然,上面只是我們對(duì)于軟件開(kāi)發(fā)、測(cè)試領(lǐng)域與AI技術(shù)相結(jié)合所能帶來(lái)的變化的一些設(shè)想。未來(lái)將會(huì)如何,我們拭目以待。