人工智能和大數據會「殺死」測試么?
- 2020 年 2 月 12 日
- 筆記
廢話不說,直接入正題
2019年聊到人工智能測試的話題也不少,這個也和最近兩年人工智能和機器學習的熱度有關,只要沾上了這個話題就有起飛的可能,畢竟中國最不缺的就是大數據和基於大數據機器學習所帶來的人工智能。
先不談這些東西能不能做到位,是不是人工智障,今天我就來談談人工智能能夠幫助測試做些什麼事情和對測試的衝擊。
先談分層自動化
在談測試之前首先要談一個很重要的基礎就是分層自動化,相信各位對什麼是分層自動化,為什麼要做分層自動化很清楚,但是如何分層甚至如何做好分層自動化應該想明白的卻不多(基於雲層2019在各個客戶中聊到分層自動化的反饋數據)。
如果需要通過人工智能來完成分層自動化,能做到什麼的地步呢?
人工智能之自動化進階
01
大數據去重的自動化用例設計
第一階段
其實這種測試策略並不是隨着大數據起來的,很早就有這類測試的手段和方法。簡單來說通過埋點或者日誌等方式獲取用戶的操作流程,再將這些操作去重回放,從而實現基於用戶的測試設計。
在這種方式下記錄用戶UI操作的代價略大而協議級別的捕獲回放相對成熟,大量的全鏈路壓測都會採用這類策略做壓測負載(去重、放大、複製脫敏)。
在UI層面一般會通過業務記錄來反推UI操作流程,完成測試用例的自動生成。在單元級別通過執行統計完成自動化的用例設計,從而做到接近100%的條件判定覆蓋率也並不是什麼難事。
02
大數據+機器學習的自動化用例設計
第二階段
如果要給這種人工智能測試定義的話,個人覺得更像Alphago,通過足夠多的數據和標記來訓練機器,從而讓機器能夠代替人思考完成測試工作。例如對需要訪問的某個功能對應圖片、文本框、按鈕進行識別,從而極大的提升自動化腳本實現效率,配合語義識別,最終實現講自動化測試,實現自動化測試的目標。
思考這樣一個場景,當測試人員說「請打開XX應用,找到登錄,輸入用戶名和密碼,點擊登錄,檢查界面上是否出現了TestOps雲層」,接着機器開始嘗試在各個可能的位置找到XX應用,接着啟動應用,查找登錄(可能是圖片!),在登錄框中輸入對應的信息點登錄並驗證登錄後的結果。
上面的場景聽起來視乎很科幻,但是實際思考下離我們並不遙遠,因為在大數據下已經可以完成對每個應用的圖標、操作流程、按鈕等元素的深度學習和標識,就好像給一個沒做過這個事情的人講做這樣的一個測試,機器是完全可以做到極高成功率的(參考天貓精靈的語義識別+CRNN文字識別+圖片訓練模型)。
03
訓練機器像人一樣測試
第三階段
參考Alphazore在只告訴規則的基礎上通過大量的練習找到其中匹配規則的最有解法。在當前可以獲取被測對象覆蓋率的基礎上,讓機器從零開始嘗試識別被測對象(代碼方法、API接口、UI界面),嘗試訪問每一個對象並對返回做出評估,基於大量的反覆遍歷(配合部分邏輯支持),可以獲取非常高的測試遍歷覆蓋結果,再進一步通過專業的人工訓練師補充和調整,就可以輕鬆完成測試工作。
以後還會需要測試么?
到了這裡可能大家會想我靠,這樣豈不是測試不就被殺死了么?都能自動化測試了以後還有測試什麼事情?
在回答這個問題前我想問大家一個問題,以前由於語言和IDE的限制,我們常常出現被測對象500錯誤、各種兼容適配、內存泄露問題,現在這些問題已經幾乎都滅絕了,是不是測試就消滅了?沒有,測試在現在比以前任何時候的人都要多,那麼科技進步到底淘汰了什麼?
在人工智能測試出現後,當前的快速反饋問題解決了,接着就是研發軟件的複雜度極大提升,當前的解決方案不能解決對應的問題,所謂魔高一尺道高一丈,所有的解決方案都在解決當下問題,而未來的問題並不是當下問題能解決的。例如未來的測試更多的都是沒有準確答案和標準的,如何確保其質量在未知解決方案下可靠,所誕生的測試職位和空間會越來越大。
雲消滅了某些運維人員,而更加專業的運維團隊卻比以前更大了,這是因為組織能解決的問題比以前多了很多,高維淘汰低維是歷史進步無法阻擋的,快還是慢是在於你自己的節奏。
雲層要補充的話
雲層也不是專業的人工智能研究者,上面的內容參考了當前一些主流的互聯網文章及自己的腦補,如有錯誤請及時指導。
最後感謝TestIn的CTO陳冠誠,幫助我審閱了這篇自己寫的新年新文,也是Testin在NCTS2019的開場Show「說好不哭」給了我很多啟發和靈感。