人工智能一直科技最高級(jí)的地域,將程序代碼、數(shù)據(jù)分析進(jìn)行自動(dòng)可視化,依托軟件和硬件一體去模仿人類一些或繁瑣或簡(jiǎn)單的工作。
此文也是關(guān)于人工智能技術(shù)的探討,主題為:如何將人工智能技術(shù)應(yīng)用到自動(dòng)化測(cè)試上?
在測(cè)試中加入AI,自動(dòng)測(cè)試也變?yōu)榭赡?。將無聊、重復(fù)的工作交給AI,這樣測(cè)試人員就可以用更多時(shí)間做其他測(cè)試方面的思考。
布道師、Applitools的高級(jí)架構(gòu)師Gil Tayar為我們介紹了如何將AI技術(shù)應(yīng)用到自動(dòng)化測(cè)試的內(nèi)容。
InfoQ采訪了Tayar,咨詢了他有關(guān)現(xiàn)如今測(cè)試面臨的主要挑戰(zhàn),自動(dòng)化測(cè)試分為哪六個(gè)層次,軟件產(chǎn)業(yè)在這六個(gè)層次中取得了什么樣的進(jìn)展,如何實(shí)現(xiàn)自動(dòng)可視化測(cè)試,我們?cè)跍y(cè)試中如何應(yīng)用機(jī)器學(xué)習(xí)技術(shù),以及AI給測(cè)試人員的工作會(huì)帶來什么影響。
Tayar:很遺憾的是,測(cè)試還沒有成為主流。我還記得在80年代、90年代的時(shí)候,整個(gè)行業(yè)都沒有把QA這個(gè)職業(yè)和手動(dòng)測(cè)試軟件當(dāng)一回事。不只是說沒有自動(dòng)化測(cè)試,而是根本沒有測(cè)試!好在現(xiàn)在時(shí)代已經(jīng)不一樣了,在交付產(chǎn)品之前測(cè)試人員都會(huì)定期測(cè)試軟件,而且很多人開始使用自動(dòng)化測(cè)試。

但在如今的“互聯(lián)網(wǎng)時(shí)代”,這還不夠。由于使用了敏捷方法,我們需要部署得越來越快,這其實(shí)是一件好事。因?yàn)樵絹碓蕉嚅_發(fā)人員會(huì)自己測(cè)試自己的軟件,而不是慢悠悠地等待專門的測(cè)試人員來測(cè)試他們的軟件。
但是,開發(fā)人員測(cè)試自己的軟件還沒有成為主流。大多數(shù)開發(fā)人員不會(huì)自己寫測(cè)試來檢查代碼,他們選擇手動(dòng)測(cè)試,或者等待測(cè)試人員進(jìn)行測(cè)試,保證他們的軟件正常運(yùn)作。
這正是測(cè)試面臨的主要挑戰(zhàn),怎么讓開發(fā)人員編寫自己的測(cè)試。而不幸的是,AI在這方面起不到什么作用,AI只是測(cè)試時(shí)使用的工具,但如果你自己不測(cè)試,AI就沒用了。事實(shí)就是這樣,AI從現(xiàn)在到未來都只能作為測(cè)試的輔助,如果你自己不想測(cè)試,AI不可能自動(dòng)幫你完成測(cè)試。
開發(fā)人員必須要有測(cè)試的想法,這就是我們?cè)跍y(cè)試方面面臨的主要挑戰(zhàn)。
自動(dòng)化測(cè)試的六個(gè)層次。它們分別是什么?
Tayar:這個(gè)概念來源于自動(dòng)駕駛的五個(gè)層次。它們描述了AI如何幫助我們進(jìn)行測(cè)試。
駕駛輔助:AI可以查看到頁面,幫助你寫出斷言。你還是要自己寫“驅(qū)動(dòng)”應(yīng)用程序的代碼,但是AI可以檢查頁面,并確保頁面中的期望值是正確的。
部分自動(dòng)化:雖然能分辨實(shí)際頁面和期望值的區(qū)別這一點(diǎn)已經(jīng)很好了,但是第二層次的AI需要有更深層的理解。比如說,如果所有頁面都有相同的變更,AI需要認(rèn)識(shí)到這是相同的頁面,并向我們展示出這些變更。進(jìn)一步來說,AI需要查看頁面的布局和內(nèi)容,將每個(gè)變更分類為內(nèi)容變更或是布局變更。如果我們要測(cè)試響應(yīng)式web網(wǎng)站,這會(huì)非常有幫助,即使布局有細(xì)微變更,內(nèi)容也應(yīng)該是相同的。這是Applitools Eyes這樣的工具所處的層次。
條件自動(dòng)化:在第二層,軟件中檢測(cè)的問題和變更仍然需要人來審查。第二層的AI可以幫助我們分析變更,但不能僅僅通過查看頁面判斷頁面是否正確,需要和期望值進(jìn)行對(duì)比才能判斷。但是第三層的AI可以做到這一方面,甚至更多其他方面,因?yàn)樗鼤?huì)使用到機(jī)器學(xué)習(xí)的技術(shù)。比如說,第三層的AI可以從可視化角度查看頁面,根據(jù)標(biāo)準(zhǔn)設(shè)計(jì)規(guī)則,例如對(duì)齊、空格、顏色和字體使用以及布局規(guī)則,判斷設(shè)計(jì)是否過關(guān)。AI也能查看頁面的內(nèi)容,基于相同頁面之前的視圖,在沒有人工干預(yù)的情況下,判斷內(nèi)容是否合理。我們還不能達(dá)到這一層次,但我們正在向這個(gè)方面努力。
高度自動(dòng)化:直到現(xiàn)在,所有AI都只是在自動(dòng)化地進(jìn)行檢查。人類盡管使用自動(dòng)化軟件,還是需要手動(dòng)啟動(dòng)測(cè)試,需要點(diǎn)擊鏈接,而第四層的AI可以自動(dòng)啟動(dòng)測(cè)試本身。AI將通過觀察啟動(dòng)應(yīng)用程序的真實(shí)用戶的行為,理解如何自己?jiǎn)?dòng)測(cè)試。這層的AI可以編寫測(cè)試,可以通過檢查點(diǎn)來測(cè)試頁面。但這不是終點(diǎn),它還需觀察人的行為,偶爾需要聽從測(cè)試人員的指令。
完全自動(dòng)化:我必須承認(rèn),這個(gè)層次有點(diǎn)恐怖。這個(gè)層次的AI可以和產(chǎn)品經(jīng)理“交流”,理解產(chǎn)品的標(biāo)準(zhǔn),自己寫測(cè)試,不需要人的幫助。
軟件產(chǎn)業(yè)在這六個(gè)層次中取得了什么樣的進(jìn)展?
Tayar:大多數(shù)公司肯定在第二層,目標(biāo)向第三層努力。我相信要達(dá)到第四層需要一段時(shí)間,但我們終有一天是可以達(dá)到的。至于是否能達(dá)到第五層,我非常懷疑,但未來不可估量!(原文中引用了古猶太人毀壞第二圣殿的典故,比喻未來不可估量。)
Tayar:其實(shí)在幾年前,即使是開發(fā)人員都不能自動(dòng)進(jìn)行可視化測(cè)試,更不要說使用AI了!由于基于像素的算法誤報(bào)率過高,截圖應(yīng)用程序,根據(jù)預(yù)期進(jìn)行檢查是不可能的。
但是隨著計(jì)算機(jī)視覺算法和現(xiàn)代人工智能(AI)技術(shù)的應(yīng)用的發(fā)展,編寫可視化測(cè)試已經(jīng)成為現(xiàn)實(shí)。人們發(fā)現(xiàn)測(cè)試中缺少可視化測(cè)試。由于可視化測(cè)試的存在,現(xiàn)在我們可以測(cè)試到軟件的方方面面。
那我們?nèi)绾问褂肁I技術(shù)避免誤報(bào),AI是否能比單純比較像素的算法做得更好?答案不僅僅牽涉到一個(gè)技術(shù),需要將不同算法結(jié)合在一起,一個(gè)算法解決一個(gè)準(zhǔn)確度的問題,通過決策樹結(jié)合不同算法的結(jié)果(有時(shí)候?qū)⒁粋€(gè)算法的結(jié)果應(yīng)用到另一個(gè)算法中)來確定最后的結(jié)果。但要使用什么算法呢?分割算法就是一個(gè)例子,這個(gè)算法試圖確定圖片的文字和圖像部分。這不是一個(gè)簡(jiǎn)單的問題,因?yàn)槲覀冃枰?,表情符?hào)其實(shí)是文字,而圖像中的文本是圖像的一部分,并不是新的文字。這就是深度學(xué)習(xí)的魅力所在,由于我們代碼中使用了深度學(xué)習(xí)技術(shù),我們的準(zhǔn)確率從88%提高到了96%。
所以要做到自動(dòng)視覺化測(cè)試,你需要使用現(xiàn)代的數(shù)據(jù)化測(cè)試工具,比如Applitools Eyes。這些工具有一些簡(jiǎn)單的高級(jí)AI技術(shù),因此你不需要理解并實(shí)現(xiàn)??纯催@個(gè)例子:
在這個(gè)例子中,我們驗(yàn)證了一個(gè)博客應(yīng)用程序。在常規(guī)的、非視覺化、非AI的測(cè)試?yán)锩?,我們需要?yàn)證主頁和特定的博文,對(duì)于頁面中的每個(gè)元素進(jìn)行幾十次檢查(即使這樣我們還是會(huì)遺漏一些)。但是在這個(gè)例子里面,我們只是“checkWindow”,截圖上傳到服務(wù)器,服務(wù)器使用AI技術(shù)檢驗(yàn)截圖。
我一直覺得,測(cè)試是為開發(fā)過程服務(wù)的,它避免了在代碼中添加新功能的煩惱,更重要的是,避免了代碼重構(gòu)的煩惱。但為什么這只能運(yùn)用在業(yè)務(wù)邏輯上?為什么我們的可視化代碼(在CSS、HTML和JS文件中)不能測(cè)試,我們還要再為它們擔(dān)憂?AI可以幫助我們實(shí)現(xiàn)這一目標(biāo)。
Appraise是另外一款可以用于視覺化測(cè)試的工具。早先,InfoQ采訪了Gojko Adzic有關(guān)使用Appraise進(jìn)行自動(dòng)視覺化測(cè)試的內(nèi)容:
Adzic:Appraise采用實(shí)例化需求的方式,但將其運(yùn)用于視覺化內(nèi)容。我們采用具體的例子,讓其從自動(dòng)化層面創(chuàng)建可執(zhí)行的實(shí)例化需求,用headless Chrome截屏,與預(yù)期的結(jié)果進(jìn)行對(duì)比。和普通的實(shí)例化需求工具(期望結(jié)果和實(shí)際結(jié)果不同就認(rèn)為是錯(cuò)誤的)不一樣,Appraise采用確證測(cè)試方法。它將所有的不同展現(xiàn)給人來評(píng)估,讓人決定差別是否正確,如果是的話就進(jìn)行確認(rèn)。
Tayar:我最近看到了一個(gè)講座,講的是如何使用機(jī)器學(xué)習(xí)測(cè)試Candy Crush游戲。由于Candy Crush是高隨機(jī)的游戲,任何情況都可能發(fā)生,標(biāo)準(zhǔn)的測(cè)試技術(shù)很難實(shí)現(xiàn)。King的目標(biāo)是想要了解是否這局游戲可以成功完成,要完成有多復(fù)雜。他們一開始使用蠻力法嘗試所有路徑,計(jì)算其中有多少可以成功。這個(gè)方法確實(shí)有用,但需要花好幾個(gè)小時(shí),因?yàn)榻M合可能太多了(使用去除無效路徑組合的算法)。要解決這個(gè)問題,他們使用了Genetic Algorithms,使用一些最基本的算法(如只使用粉色糖果,一直消除障礙等),在一局游戲中進(jìn)行試驗(yàn)。之后他們使用最佳算法(基于如何勝利完成一局游戲的算法),再結(jié)合兩者,“創(chuàng)建”一個(gè)新的算法。不斷重復(fù),最后得到一個(gè)最佳算法。
再舉一個(gè)例子,卷積神經(jīng)網(wǎng)絡(luò)幫助我們分析圖像,并從中提取語義信息。在生成圖像的應(yīng)用程序中是非常實(shí)用的??梢暬瘻y(cè)試工具使用它來理解頁面的不同部分,以及相互之間的聯(lián)系,正如我上文所述一樣提取不同的文字和圖像塊。
Tayar:請(qǐng)問拖拉機(jī)會(huì)給農(nóng)民的工作帶來什么影響?當(dāng)然是巨大的影響!農(nóng)民不再需要做枯燥、乏味的體力勞動(dòng)工作,只要交給機(jī)器來做就可以了。我相信AI也會(huì)給測(cè)試人員帶來相同的影響。乏味、重復(fù)的工作交給AI,測(cè)試人員就可以用更多時(shí)間來思考。
大多數(shù)測(cè)試人員已經(jīng)習(xí)慣思考測(cè)試相關(guān)的方方面面:思考產(chǎn)品,思考怎么測(cè)試,思考邊界情況等等,他們也需要工具來完成無聊、重復(fù)的工作。一些測(cè)試人員需要學(xué)會(huì)怎么思考更高層次的問題,確實(shí)會(huì)有一部分測(cè)試人員無法適應(yīng),但我相信他們只是少數(shù)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注