江湖上一直流傳著這樣的傳聞:“程序員們很快就要失業(yè)了嫂冻,因為人工智能馬上就能寫出完美的代碼了”。人工智能是以軟件形式存在的独柑,編寫了這些強大軟件的碼農(nóng)們春缕,如果被自己編寫的代碼所取代,來寫出新一代的代碼官边,那會是一個神奇而又悲傷的故事沸手。我們今天就來看看人工智能在軟件開發(fā)領(lǐng)域里的現(xiàn)狀,我們距離傳奇還有多遠注簿?
有人說軟件開發(fā)是一種藝術(shù)契吉,有人說軟件開發(fā)需要工匠精神,不管是哪一種說法滩援,軟件開發(fā)都是一個創(chuàng)造性的工作栅隐,而機器曾被認為是缺乏創(chuàng)造力的,但是隨著深度學(xué)習的發(fā)展玩徊,人工智能在一些創(chuàng)造性的領(lǐng)域也得到了飛躍的發(fā)展租悄。
現(xiàn)在的人工智能可以畫畫:
Trippy Artworks Created by Artificial Neural Networks
可以作曲:
musical.ai
可以寫作:
?? 2017年5月,機器人微軟小冰出版了詩集《陽光失了玻璃窗》恩袱。
?? 2017年泣棋,韓國某通訊社也測試使用人工智能進行足球比賽報道,幾秒鐘就可以稿件上線畔塔。
?? 2018年潭辈,阿里媽媽推出的AI智能文案。
下圖是我用最近世界足壇最出色的球星梅西(蹭一下煤老板轉(zhuǎn)會風波的熱度)的名字為種子讓AI創(chuàng)作的詩:
感覺這個詩做的不錯呀澈吨,把煤老板的轉(zhuǎn)會風波又推進了一個意境把敢,你覺得呢?
同為創(chuàng)作谅辣,AI離寫代碼還有多遠修赞?
上面提到的這些例子,大多是使用深度學(xué)習為基礎(chǔ)來進行創(chuàng)作桑阶,而用深度學(xué)習技術(shù)來進行軟件開發(fā)柏副,主要面臨著以下的一些挑戰(zhàn):
1.?? ?很難判斷
深度學(xué)習是一種監(jiān)督學(xué)習算法,需要大量標注的數(shù)據(jù)蚣录,也就是說對數(shù)據(jù)的正確和錯誤打標簽割择。但是代碼很難用正確或者錯誤的標簽來標記。也很難用數(shù)值來量化萎河。而可用于訓(xùn)練的已標注的代碼也非常少荔泳。
2.?? ?容錯率低
對于谷歌的貓狗判別算法蕉饼,能有個90%可能就算是不錯了,但是軟件代碼有99%都是對的换可,那可還是編譯不通過椎椰,軟件要求不能有任何錯誤。不同于自然語言沾鳄,代碼對于噪聲非常敏感慨飘。
3.?? ?復(fù)雜的上下文
開發(fā)軟件需要大量的上下文知識,需求的分析译荞,系統(tǒng)的非功能性要求等等瓤的,如何把這些知識融入到代碼,對于AI來說吞歼,挑戰(zhàn)頗高圈膏。
盡管如此,人工智能在軟件開發(fā)領(lǐng)域已經(jīng)開始有所突破篙骡,那么我們就看看AI現(xiàn)階段都能做些什么稽坤?
代碼輔助
代碼輔助指的是輔助寫代碼的一些功能和過程。例如代碼自動補全糯俗,代碼搜索推薦尿褪,代碼轉(zhuǎn)換等。人工智能在這個領(lǐng)域大有可為得湘,想想我寫代碼的時候杖玲,一大半的時間在查文檔,還有一大半的時間在搜google和stackoverflow淘正,人工智能可以很好充當碼農(nóng)的好助手摆马。在這個領(lǐng)域里,已經(jīng)有了不少的創(chuàng)業(yè)公司和相應(yīng)的產(chǎn)品鸿吆。
TabNine
TabNine是加拿大一位大四學(xué)霸開發(fā)的智能代碼補全工具囤采,作者Jacob Jackson目前在滑鐵盧大學(xué)主修計算機科學(xué)與組合優(yōu)化專業(yè)。該工具支持23種語言惩淳,支持VS Code蕉毯、Sublime Text、Atom黎泣、Emacs、Vim五種代碼編輯器缤谎。在VS Code的擴展商店里抒倚,TabNine已經(jīng)被下載超過萬次,獲得全5星好評坷澡。2019年12月托呕,被Codota收購。
Kite
Kite是硅谷創(chuàng)業(yè)公司,成立于2014年项郊,A輪融資1700萬美元馅扣。Kite提供智能代碼補全,支持Python和JavaScript着降。
Kite目前支持以下的IDE:
Codata
以色列的創(chuàng)業(yè)公司,成立于2013年,融資260萬美元钦奋。
Codota是一家以色列AI編程助手花鹅,專注于用AI幫程序員寫代碼,基于從網(wǎng)上學(xué)習到的編程模式交掏,它能實時地為程序員推薦最合適的代碼妆偏。它能無縫地接入程序員的集成開發(fā)環(huán)境中,幫助他們節(jié)約時間盅弛,減少人為錯誤钱骂。除了代碼補全,它提供了聚合搜索功能挪鹏,覆蓋了包含github见秽,stackoverflow等碼農(nóng)喜聞樂見的代碼源。
Aroma
Facebook的Aroma是一款代碼到代碼型搜索與推薦工具狰住。其采用機器學(xué)習(簡稱 ML)技術(shù)進行代碼推薦张吉,旨在降低從大型代碼庫當中獲取洞察見解的難度。
在Aroma出現(xiàn)之前催植,各類原有工具一直無法徹底解決這個問題肮蛹。文檔工具往往可用性較差且嚴重過時,代碼搜索工具通常會返回無數(shù)個匹配結(jié)果创南,而用戶卻很難立即從其中找到自己習慣的使用模式伦忠。通過 Aroma,工程師們現(xiàn)在能夠輕松發(fā)現(xiàn)常見的編碼模式稿辙,而不再需要手動瀏覽數(shù)十個代碼段昆码,這將顯著節(jié)約日常開發(fā)工作所耗費的時間與精力。
Stage1:基于特征的搜索邻储,將代碼語料庫索引為稀疏矩陣
??? ?Aroma分析代碼語料庫給每種method并為其創(chuàng)建解析樹赋咽;
??? ?從解析樹中提取相關(guān)變量的用法、method調(diào)用等關(guān)鍵的結(jié)構(gòu)特征吨娜;
??? ?根據(jù)每種method的特征創(chuàng)建一個稀疏向量脓匿,成為索引矩陣,用于搜索檢索宦赠。
Stage2:重排和聚類
??? ?以相似性對候選代碼進行重排陪毡,相似性比較僅考慮與查詢代碼匹配的部分米母;
??? ?對重排候選代碼進行迭代聚類,查找用于生成推薦代碼的關(guān)鍵clusters毡琉。
Stage3:Intersecting生成代碼推薦
??? 以cluster中某一代碼為基準铁瞒,與其他代碼進行比較迭代,得到最大公約數(shù)桅滋。
與傳統(tǒng)代碼搜索工具相比慧耍,Aroma代碼推薦具有如下優(yōu)勢:
??? 在語法樹上執(zhí)行搜索,可以查找語法上與查詢代碼相似的實例虱歪,而不是簡單的字符串/令牌匹配蜂绎。修剪無關(guān)語法結(jié)構(gòu)突顯匹配代碼。
??? 自動將相似的搜索結(jié)果聚類笋鄙,生成代碼建議师枣。這些建議反映了常用的編碼模式,比未聚類的搜索結(jié)果更易使用萧落。
??? 足夠快践美,可以實時使用。即使對于非常大的代碼庫找岖,也可以在幾秒鐘內(nèi)生成推薦陨倡,并且不需要提前進行模式挖掘。
??? 核心算法與語言無關(guān)许布。已經(jīng)在Hack兴革,JavaScript,Python和Java的內(nèi)部代碼庫中部署了Aroma蜜唾。
詳情可參考:
https://ai.facebook.com/blog/aroma-ml-for-code-recommendation/
CodeBERT
微軟杂曲、哈工大在arxiv上聯(lián)合發(fā)表了一篇論文,標題為《CodeBERT: A Pre-Trained Model for Programming and Natural Languages》袁余,再次拓寬了BERT的應(yīng)用擎勘,將BERT應(yīng)用到了Python、PHP颖榜、Java棚饵、JavaScript、Go掩完、Ruby等編程語言的代碼搜索和生成任務(wù)當中噪漾。整體方案仍然是傳統(tǒng)的預(yù)訓(xùn)練+微調(diào)框架,模型規(guī)模不大且蓬。
BERT作為一種雙向Transformer的編碼器欣硼,其對預(yù)訓(xùn)練方法的創(chuàng)新深受業(yè)界和學(xué)術(shù)界的喜愛,雖然其他大規(guī)模的預(yù)訓(xùn)練模型例如ELMo缅疟、GPT等已經(jīng)能夠在各種NLP任務(wù)中提升SOTA分别。
但是上述提到的模型基本上都是面向自然語言處理,例如掩蔽語言建模存淫、從未標記文本學(xué)習上下文表示耘斩。相比以往的Bert的應(yīng)用場景,作者另辟蹊徑桅咆,推出雙模態(tài)預(yù)訓(xùn)練模型括授,即兼顧NLP任務(wù)和Python、Java等編程語言岩饼。
具體來說荚虚,CodeBERT抓住了自然語言和編程語言之間的語義聯(lián)系,能夠支持自然語言代碼搜索等NL-PL理解任務(wù)以及一系列像代碼生成這樣的生成任務(wù)籍茧。
整體方案:預(yù)訓(xùn)練語言模型+下游任務(wù)微調(diào)
預(yù)訓(xùn)練語言模型:結(jié)合NL-PL雙模態(tài)Masked Language Modeling和PL單模態(tài)Replaced Token Detection訓(xùn)練目標的1.25億參數(shù)預(yù)訓(xùn)練模型版述;訓(xùn)練損失函數(shù)為min(LMLM+LRTD)。
下游任務(wù)
自然語言代碼搜索?:給定NL-PL對寞冯,檢測模型預(yù)測masked token的能力渴析。被作者簡化為max, min, less, greater四選一問題,用NL-PL Probing方法評估吮龄。
代碼文檔生成:從代碼生成自然語言文檔俭茧,用smoothed BLEU方法評估。
預(yù)訓(xùn)練數(shù)據(jù):210萬雙模態(tài)數(shù)據(jù)漓帚,640萬單模態(tài)數(shù)據(jù)母债。
六種編程語言-Python,Java尝抖,JavaScript毡们,PHP,Ruby牵署,Go漏隐。
簡單總結(jié),CodeBERT想解決從自然語言到編程語言的映射關(guān)系奴迅。有了這樣的映射關(guān)系青责,我們就可以用自然語言來查找對應(yīng)的代碼,或者直接把自然語言翻譯為代碼取具。最終(當然這個還要等很久)碼農(nóng)就不需要了脖隶,產(chǎn)品經(jīng)理直接說要啥就好了。
詳情參考 https://arxiv.org/pdf/2002.08155.pdf
代碼翻譯轉(zhuǎn)換
記得我在德國某BI企業(yè)的時候暇检,當時產(chǎn)品開發(fā)做了一件事产阱,就是把一個之前用C++寫的產(chǎn)品用Java重寫了一遍,大公司就是這么任性块仆,雖然功能完全沒有變化构蹬,但是我就是喜歡Java王暗,因為Java代表著更先進的生產(chǎn)力。后來Java被競爭對手O記給收了庄敛,估計做此決策的人想死的心都有了俗壹。這個時候你需要的是一款代碼自動翻譯轉(zhuǎn)換工具。
Facebook Transcoder
https://github.com/facebookresearch/TransCoder
代碼翻譯的問題是藻烤,手工重新改寫不僅耗時绷雏,還很難找到懂多種編程語言的程序員,基于規(guī)則等方法轉(zhuǎn)換質(zhì)量非常差怖亭,最新的無監(jiān)督神經(jīng)轉(zhuǎn)換器能在某些特定范圍上很好的完成代碼翻譯任務(wù)涎显。
Facebook最近開發(fā)的神經(jīng)轉(zhuǎn)換編譯器TransCoder讓代碼轉(zhuǎn)換越過了新的篇章。該系統(tǒng)可以將代碼從一個高級語言轉(zhuǎn)換成另一個兴猩,比如 c + + 期吓、 Java 和 Python。
這個系統(tǒng)是弱監(jiān)督的倾芝,可以在沒有標簽的數(shù)據(jù)集中尋找以前未檢測到的模式膘婶,只需要少量的人工監(jiān)督。研究人員稱蛀醉,這比基于規(guī)則數(shù)據(jù)集的模型要高效得多悬襟。
從Java到C++,TransCoder轉(zhuǎn)換準確率超九成拯刁!
TransCoder是基于跨語言模型預(yù)訓(xùn)練去做的模型初始化脊岳,這樣的訓(xùn)練不著眼于編程語言的類型,而僅僅將表示相同指令的代碼段映射為相同的表示形式垛玻。
之所以TransCoder能進行跨語言模型的訓(xùn)練割捅,是因為系統(tǒng)的標記原理著眼于跨語言之間的共同關(guān)鍵字,如「if」帚桩,「for」等亿驾,以及數(shù)字、數(shù)學(xué)運算符和出現(xiàn)在源代碼中的英語字符串账嚎。這樣反向翻譯之后通過源-目標模型和并行訓(xùn)練的目標-源模型耦合莫瞬,從而提高了訓(xùn)練的質(zhì)量。
代碼生成
代碼生成聚焦在特定領(lǐng)域或特定任務(wù)的自動編程郭蕉,即Domain-Specific Automated Programming(DAP)和Task-Specific Automated Programming(TAP)疼邀。目標是讓機器完成簡單的編程任務(wù),解放開發(fā)者繁重的編程工作召锈。
這個可能是目前最接近于取代碼農(nóng)工作的AI旁振。
DeepCoder
DeepCoder是微軟和劍橋大學(xué)聯(lián)合開發(fā)的一種計算機算法,可以用于自行編寫代碼并解決簡單的數(shù)學(xué)問題。該系統(tǒng)分成兩個組成部分:代碼編寫算法拐袜,以及搜索潛在代碼的機制吉嚣。該算法發(fā)表于2016年11月的論文中。
DeepCoder所用的技術(shù)叫程序合成( program synthesis)蹬铺,通過截取已有軟件的代碼行來組成新的程序瓦戚。通過學(xué)習一系列代碼片(code fragment)的輸入(inputs)和輸出(outputs)數(shù)據(jù),DeepCoder能自動摘取出對目標任務(wù)有用的代碼片丛塌。
DeepCoder 使用被稱作“程序組合”(program synthesis)的方法,只要給定系統(tǒng)輸入值和需要的輸出結(jié)果畜疾,DeepCoder 便可透過搜尋其他程序的程序代碼赴邻,挑出適合的程序代碼片段,再組合成可運作的程序啡捶,讓程序順利生成需要的結(jié)果姥敛。事實上,這個步驟就像許多工程師常做的事:在程序問答網(wǎng)站 Stack Overflow 上搜尋適合的程序代碼瞎暑,再“復(fù)制貼上”他們認為可行的程序代碼片段彤敛。所以這個跟我們之前提到的代碼輔助很像。
SketchCode
Airbnb研發(fā)出了一種工具可以把下面的草圖直接轉(zhuǎn)換為HTML5的代碼了赌。
但是Airbnb沒有開源墨榄,有位大神自己開源了sketch-code,可以完成類似的工作勿她。
https://github.com/ashnkumar/sketch-code
經(jīng)網(wǎng)友親測有效袄秩,當然還不是很完美。
手稿生成圖
可能會有小伙伴站出來挑戰(zhàn)逢并,html也算編程語言么之剧?寫網(wǎng)頁能算寫代碼么?不急砍聊,看看最新的自然語言模型的威力吧背稼!
GPT-3
OpenAI發(fā)布最新的NLP模型GPT-3使用的數(shù)據(jù)集容量達到45TB,參數(shù)個數(shù)1750億玻蝌,一個訓(xùn)練好的模型就要 700G的硬盤空間來存儲蟹肘。充分反映了“大力出奇跡”的特點。GPT-3通過對大量文本進行預(yù)訓(xùn)練俯树,針對特定任務(wù)進行微調(diào)疆前,模型的性能可以在許多 NLP 任務(wù)以及基準測試中獲得顯著提升。
近日有開發(fā)者根據(jù)GPT-3模型上線了一個能夠自動生成代碼的網(wǎng)站debuid(https://debuild.co/)聘萨。在這網(wǎng)站注冊后竹椒,用戶只要用英語描述需求,前端代碼會自動生成米辐。
GPT3正成為新的AI基礎(chǔ)設(shè)施胸完,巨大的新型圖數(shù)據(jù)庫书释,可以生成大段有意義的篇章,代碼可通過自監(jiān)督學(xué)習赊窥;以前代碼生成很難超過50-60行爆惧,現(xiàn)在有望得到突破;以前自動生成代碼很難通過測試锨能,現(xiàn)在也有望突破扯再。
代碼審查
代碼審查是現(xiàn)代軟件開發(fā)過程中的必要流程,代碼審查面臨著很多挑戰(zhàn)
??? 軟件系統(tǒng)正變得越來越復(fù)雜:更多模塊址遇,更多執(zhí)行路徑熄阻,更大狀態(tài)空間,逐漸超過手工檢測的能力范圍
??? 資源有限倔约,時間和人力都不夠用秃殉,碼農(nóng)們需要996和007
??? 團隊中的專家不夠用
面臨這些挑戰(zhàn),利用人工智能來提高代碼審查的效率浸剩,是一個不錯的途徑钾军。
AWS CodeGuru Reviewer
CodeGuru Reviewer 是AWS提供的代碼檢視服務(wù),可發(fā)現(xiàn)九大類別的代碼質(zhì)量問題:
?AWS 最佳實踐:正確使用 AWS API(如:輪詢绢要、分頁)
???Java 最佳實踐:正確使用常用的 Java 語言和庫功能
?并發(fā):檢測導(dǎo)致功能不正確的缺少的同步吏恭,或?qū)е滦阅軉栴}的多余的同步。
???死鎖:檢查并發(fā)線程之間的協(xié)調(diào)
?資源泄露:正確處理資源(如重罪,釋放數(shù)據(jù)庫連接)
???敏感信息泄露:個人身份信息泄露(如砸泛,記錄信用卡詳細信息)
?常見的代碼錯誤:難以發(fā)現(xiàn)的缺陷,例如蛆封,沒有為每次 Lambda 調(diào)用創(chuàng)建客戶端
?代碼克麓浇浮:識別可以整合的重復(fù)代碼,以提高代碼可維護性
?輸入驗證:檢查來自不受信任來源的格式錯誤的數(shù)據(jù)或惡意數(shù)據(jù)
DeepCode
DeepCode是靜態(tài)代碼監(jiān)視工具(和前面提到的DeepCoder不要搞混)惨篱,使用機器學(xué)習分析代碼庫中的安全缺陷和潛在錯誤盏筐,領(lǐng)會代碼背后真實意圖。DeepCode是一家瑞士startup砸讳,成員主要來自ETH琢融。與其他Code Review AI相比,它不僅能夠發(fā)現(xiàn)語法錯誤簿寂,而且能夠確定代碼的意圖漾抬,因此能夠識別更多潛在的重要錯誤和漏洞。
DeepCode實現(xiàn)了一種方法常遂,可以在達到臨界安全級別之前分析用戶輸入處理纳令。因此,當任何數(shù)據(jù)在沒有安全驗證或清除的情況下從一個點移動到另一個點時,該工具會將其標記為受污染的平绩,并向您發(fā)出警告圈匆。該工具可以標記的問題包括跨網(wǎng)站腳本、SQL注入威脅捏雌、遠程代碼執(zhí)行以及路徑遍歷攻擊等跃赚。
快速精準理解代碼背后真實意圖,準確定位語法錯誤和漏洞
訓(xùn)練流程:DeepCode的模型訓(xùn)練分三步進行:
Step1:將各類編程語言寫成的代碼進行解析性湿,生成解析樹纬傲;
Step2:通過線性復(fù)雜度數(shù)據(jù)求解器可在幾秒內(nèi)完成代碼庫分析;
Step3:語義事實表示方法用于ML模型理解代碼結(jié)構(gòu)及其背后意圖肤频。
戰(zhàn)略簡要叹括,覆蓋面廣和技術(shù)優(yōu)勢是DeepCode的制勝法寶:
戰(zhàn)略重點簡明扼要:讓機器code review可以提供盡可能多的、更廣泛且深入的代碼建議着裹;
缺陷檢測覆蓋范圍廣:
其他現(xiàn)有靜態(tài)分析工具的缺陷檢測范圍僅為DeepCode的十分之一;
可以快速兼容來自其他工具的checkers/rules/patterns米同;
可與GitHub骇扇,GitLab集成。
程序分析面粮、AI算法少孝、特征工程和大數(shù)據(jù)多種能力互補,形成獨特技術(shù)優(yōu)勢:持續(xù)從開源項目在線學(xué)習的能力熬苍;
獨立于編程語言的平臺稍走,可以在幾周內(nèi)完成新語言添加;
無需編譯柴底,大型代碼庫平均分析時間僅5秒(其他方案一般要通宵)婿脸。
代碼測試
人工智能在代碼測試的市場空間最大,通過大量規(guī)則和AI結(jié)合定制柄驻,解決測試領(lǐng)域的難題狐树。
AI正在改變軟件測試:差異性、可視性鸿脓、說明性抑钟、自動化…
??計算機圖形學(xué)協(xié)助UI測試:AI保證UI元素有正確的顏色、位置野哭、尺寸等在塔,傳統(tǒng)手工或基于規(guī)則的方法很難檢測差異性,難以自動化拨黔;
?API測試自動化:通過人工智能算法蛔溃,讓API測試自動進行
??自動創(chuàng)建測試用例:AI可以學(xué)習應(yīng)用程序,了解文檔模型的關(guān)系以及變化,自動生成用例城榛。
??測試用例相關(guān)性檢測:任何代碼小改動揪利,不需要重測整個代碼,通過AI分析狠持,只運行相關(guān)的測試疟位。這個相當于是推薦系統(tǒng),推薦需要運行的測試用例喘垂。
人工智能正在逐步改變整個軟件測試領(lǐng)域甜刻,可以大量節(jié)省測試時間,增加代碼質(zhì)量正勒,軟件測試正在從DevOps向AI過渡得院,由簡單的發(fā)現(xiàn)問題轉(zhuǎn)到根據(jù)上下文找到根因,從人工測試走向全自動化測章贞。2019軟件測試市場126億美元祥绞,2024年288億美元。
利用人工智能輔助軟件測試的工具很多鸭限,下面列出幾個比較有特點的:
Mabl
首款基于機器學(xué)習的商用智能軟件測試工具蜕径,使用機器學(xué)習技術(shù),開創(chuàng)了智能化軟件測試的先河败京。開發(fā)mabl的是一家位于波士頓的創(chuàng)業(yè)公司兜喻。共同創(chuàng)始人是Dan Belcher和Izzy Azeri。這兩位哥們是連續(xù)創(chuàng)業(yè)者赡麦。他們于2014年創(chuàng)辦了Stack Driver朴皆。這家公司為云平臺(例如谷歌GCP,亞馬遜AWS)上的應(yīng)用程序提供監(jiān)測和診斷服務(wù)泛粹。后來這家公司被谷歌收購遂铡,這兩位就進入了谷歌工作。2017年初晶姊,他們又出來創(chuàng)業(yè)忧便,創(chuàng)辦了mabl。公司一經(jīng)成立帽借,便獲得了來自Charles River Ventures和Amplify Partners和1000萬美元首輪投資珠增。不到一年,便發(fā)布了面向商業(yè)市場的mabl產(chǎn)品(https://www.mabl.com/)砍艾。mabl以SaaS(software-as-a-service)方式蒂教,為用戶提供智能軟件測試服務(wù)。軟件測試的全過程自動化脆荷,不再需要人工參與凝垛。自動創(chuàng)建和執(zhí)行測試懊悯,自動分析測試結(jié)果,同時還能根據(jù)需求的變化自動適配和維護測試梦皮。
mabl的口號非常響亮:You write code, mabl tests (你寫代碼炭分,mabl來測試)。
mabl使用機器學(xué)習技術(shù)剑肯,自動創(chuàng)建和執(zhí)行測試(Tests)捧毛,自動分析測試結(jié)果,同時還能根據(jù)需求的變化自動適配和維護測試让网。也就是說呀忧,mabl將軟件測試的全過程均自動化了。有了mabl溃睹,軟件測試將不再需要人工參與而账。
mabl已經(jīng)脫離了自動化軟件測試的范疇,開創(chuàng)了智能化軟件測試(intelligent testing)的先河因篇。
機器學(xué)習為軟件測試自動化的用戶體驗帶來質(zhì)的飛躍泞辐,它提供:
??無腳本測試:測試人員無需創(chuàng)建和維護測試用例。測試工作由機器學(xué)習算法在沒有測試用例的情況下自主完成竞滓。
??無基礎(chǔ)設(shè)施:mabl以SaaS的方式提供服務(wù)咐吼,用戶無需安裝和維護任何本地基礎(chǔ)設(shè)施。
??自動維護測試:當產(chǎn)品發(fā)生改變時虽界,機器學(xué)習算法自動適配這種變化汽烦。
??自動分析結(jié)果:mabl自動分析結(jié)果涛菠、定位問題原因莉御。
??第三方集成:mabl與Jenkins,Slack俗冻,Jira等第三方工具均能很好的集成礁叔。
test.ai
Test.AI(前身為Appdiff)被視為一種將AI大腦添加到Selenium和Appium的工具,以一種類似于Cucumber的BDD語法的簡單格式定義測試迄薄。Test.AI在任何應(yīng)用程序中動態(tài)識別屏幕和元素琅关,并自動驅(qū)動應(yīng)用程序執(zhí)行測試用例。它由Justin Liu和Jason Arbon創(chuàng)建讥蔽。
這家初創(chuàng)公司剛剛在Gradient Ventures領(lǐng)投的A輪融資中獲得了1100萬美元的投資涣易,Gradient Ventures是谷歌專注于人工智能的風險基金。參與此次投資的還有e.ventures冶伞、Uncork Capital和Zetta Venture Partners新症。成立于2015年Test.ai迄今為止已經(jīng)融資1760萬美元。
該公司的技術(shù)不僅僅是利用人工智能來縮短應(yīng)用測試所需的時間响禽;當開發(fā)人員準備要測試的場景列表時徒爹,它有助于消除更加冗長的過程荚醒。Test.ai已經(jīng)對他們的機器人進行了“成千上萬個應(yīng)用”的訓(xùn)練,以幫助它了解一個應(yīng)用的樣子以及它們通常
diffblue
DiffBlue是一種非常有用而又簡單的用于代碼自動化的平臺隆嗅。DiffBlue有幾個核心目的——測試編寫界阁、bug定位、重構(gòu)代碼以及發(fā)現(xiàn)和替換弱點的能力——這些都是通過使用自動化實現(xiàn)的胖喳。Diffblue專注于用AI技術(shù)為代碼提供數(shù)字模型泡躯,Diffblue正在研發(fā)三款產(chǎn)品,分別是用于發(fā)現(xiàn)bug禀晓,編寫測試代碼的測試產(chǎn)品精续;能夠自動標記bug并對其進行測試的安全產(chǎn)品;以及自動修改不合理代碼或過時代碼的重構(gòu)產(chǎn)品粹懒。
在AI輔助自動化測試領(lǐng)域重付,還有很多產(chǎn)品,這里就不一一細說凫乖,它們有:
??? ?apptest.ai
AI輔助的移動應(yīng)用自動化測試
??? ?Appvance IQ
根據(jù)應(yīng)用程序的映射和實際用戶活動分析确垫,使用機器學(xué)習和認知自動生成自動化測試腳本
??? ?Eggplant AI
使用AI和深度學(xué)習來從界面上尋找缺陷,能夠自動生成測試用例帽芽,大幅度提高測試效率和覆蓋率删掀。
??? ?Sauce Labs
利用機器學(xué)習來針對測試數(shù)據(jù)進行分析,更好地理解測試行為导街,主動改進測試自動化披泪。
??? ?Sealights
利用機器學(xué)習技術(shù)分析SUT的代碼以及與之對應(yīng)的測試,不局限于單元測試搬瑰,還包括系統(tǒng)級的業(yè)務(wù)測試和性能測試款票。它還基于機器學(xué)習呈現(xiàn)完整的質(zhì)量Dashboard,幫助我們進行“質(zhì)量風險”的評估泽论。
??? ?Testim
專注于減少不穩(wěn)定的測試(flaky tests)和測試維護艾少,試圖利用機器學(xué)習來加快開發(fā)、執(zhí)行和維護自動化測試翼悴。
總之軟件測試的自動化正在向著越來越智能的方向前進缚够。
總結(jié)
機器會取代人類么?
人工智能會搶走碼農(nóng)的飯碗么鹦赎?
AI有想象力么谍椅?
這些問題,我沒有答案古话,當馬斯克推出他的腦機接口的時候雏吭,我在想,未來AI和人類的交互會變得更容易煞额,AI可能不會取代人類思恐,但是它會和人類融為一體沾谜,我和我的AI結(jié)對編程,那樣應(yīng)該也不錯胀莹!
推薦閱讀