前言
不得不說最近AI概念確實很火,好像什么搭上AI概念都立馬變得高大上了。但是也要看清,AI目前仍然是處于早起發展的階段,仍處于算法研究革新的階段,技術發展目前是先于應用層面的。現在比較成熟的應用場景主要在,智能硬件、機器人、翻譯、醫療診斷和一些推薦系統等等
目前看現狀是大公司都在加大經費投入算法研究和平臺建設,比如現在很火的Tensorflow,百度推的Apollo等,都在想著做AI領域的IOS,Android。而中小型的公司則深耕某個垂直領域,比如語音識別領域的科大訊飛,計算機圖像識別領域的Face++等。
在此AI浪潮之下,作為一個測試人員,我們要怎么做,才能搭上風口或者說不被浪潮拋下呢?個人覺得有兩個選擇:
- 只要你理論基礎足夠好,你可以轉型研究各種算法,參與框架和平臺的搭建,找個目前最火熱的職位-算法工程師
- 學習目前成熟的框架,調用別人封裝好的各種網絡和深度學習算法,利用自己手頭有的數據,訓練模型,利用AI解決一些問題
本文僅就在選擇第二種的前提下,討論在測試行業內,我們能利用AI做些什么,從而改善測試的質量和效率
選擇有監督、無監督還是強化學習?
既然要在別人計算框架的基礎上,選擇網絡和深度學習算法訓練模型,但是網絡和算法有這么多,選哪個?怎么選?
其實目前大部分深度學習算法大體可以分為有監督學習、無監督學習和強化學習三大類。監督學習就是基于一堆帶標簽數據進行模型訓練,無監督學習簡單理解就是給一堆無標簽數據,讓計算機自己去學習總結規律。
目前應用層面用的多還是監督學習,比如商業化比較成功的廣告推薦系統,類似今日頭條那種新聞推薦,都是基于你日常瀏覽、搜索和用戶畫像標簽數據的。
所以AI如何運用于測試領域,個人認為重點還是數據,找到我們已有的一些數據,才知道我們到底能做什么。
數據數據!
那一般測試人員會有什么類型的數據呢?
- 系統運行時候產生的日志信息
- 移動App運行中收集連續性能數據
- 測試人員本身提的bug數據,包括標題、描述、截圖等
- 網站或app運營數據,埋點數據,用戶訪問路徑,用戶評論數據等
...
有了數據,然后呢?發散一下
- 假設我們有了大量的報錯日志片段-標簽是報錯責任人和報錯模塊,那么我們大概可以通過機器學習訓練一個模型,該模型可以自動識別一段報錯日志,并提交給XX模塊的負責人YY
- 另外假設我們有app運行一段時間的各項性能指標,標簽是性能是否達標,那么我們大概也可以訓練一個模型,只要提交一段時間的各項性能數據,機器自動會告訴你性能達標與否
如果沒有數據呢?
前面說的都是在有大量人為標注的格式化數據的前提下的想象,那萬一我們沒有這些數據積累了,我們還能做啥?
如果某些測試場景,我們不但沒有數據,反而需要自己構造一堆數據,該怎么辦?AI有沒有辦法自動產生類似數據呢?
有的,這里介紹一個目前比較好的一個神經網絡,叫做GAN(對抗生成網絡),簡單講,這個網絡有兩個模型,一個是生成模型,一個是識別模型,生成模型不斷產生跟訓練數據很像的數據,企圖欺騙識別模型,識別模型在不斷訓練,提高識別準確率,企圖把所有生成模型生成的假的都找出來。在對抗的過程中,兩個模型不斷發展,最后達到一個比較好的平衡。
這里面比較有意思的變形就是DCGAN,即在生成和識別模型均使用卷積神經網絡去處理圖像,可以通過一堆數據,比如通過很多妹子的圖像,偽造一個妹子圖像。
訓練頭像資源及教程來源于這篇博文:傳送門
生成二次元萌妹紙圖像如下:
假如隨著生成網絡算法的完善,比如測試車險的智能理賠業務的時候,我們是不是可以通過AI生成一堆不同車型,不同部位受損的照片,作為測試數據對智能理賠業務進行測試呢?
同理,類似車牌識別,人臉識別等等,我們是不是都可以想想辦法構造類似數據,看看人臉識別SDK是否能準確檢測呢?
當然,這里只是隨意YY一下,具體到實施肯定還有諸多問題。
基于強化學習的游戲測試
2013年的時候DeepMind就提出DQN(Deep Q Network)算法,實現端到端學習玩Atari游戲。輸入是一幀像素圖像,訓練AI自動玩游戲。
假設我們遇到關卡類手游的測試,比如開心消消樂這種,是不是也可以訓練AI來自動測試關卡難度呢?
比如酷跑類游戲,也可以邊訓練AI,邊收集性能數據,隨著AI越來越智能,就能收集到游戲長時間運行的數據,也能發現長時間跑后可能出現的bug了,如果這些依賴人工操作的話,可能要耗費大量人力成本。
基于遷移學習-圖片相似度判斷
遷移學習,簡單來說就是基于別人訓練好的模型,來做自己的事情,而不用重新訓練
比如,谷歌有個圖片識別模型Inception-v4,是谷歌用幾百萬圖片訓練出來,對圖片進行分類識別的,識別準確率很高,機器訓練模型結構很復雜,用了多個卷積核和多層卷積模型。
假設我們認可這種識別圖片的模型,在此基礎下,我們截取模型最后輸出的特征向量來代表這張圖片,那如果要計算兩張圖片的相似度,我們是不是拿分別產生的兩個特征向量來計算余弦距離,距離越小相似度則越高。
93%相似度的兩張圖片:
85%相似度的兩張圖片:
40%相似度的兩張圖片: