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