被炒上天了的AI,嗨得太離譜!
去年年底,仿佛一夜之間,人工智能又嗨起來了,先是DALL-E2的生成圖像惟妙惟肖,那副“騎馬的宇航員”讓人過目難忘,緊接著是StableDiffusion這個文本生成圖像的公開版權(quán)的作圖AI,最后的“王炸”:出道即巔峰的ChatGPT,給OpenAI賺足了面子。甚至春節(jié)期間,很多互聯(lián)網(wǎng)人都在感嘆“岌岌可?!?,生怕這波人工智能的高潮,真要搶走飯碗了。然而,現(xiàn)實真的會這樣嗎?AI會讓計算機應(yīng)用軟件迎來復(fù)興時刻嗎?本文以一個具體的領(lǐng)域應(yīng)用為例,闡述AI被工具化的三個階段,并說明AI不應(yīng)該,也不可能發(fā)展成完全自主的幾點理由。此外,筆者還分享了真正的AI角色應(yīng)該是怎樣的。我們需要警惕,但無須驚慌。
“有了人工智能,交付時間將從幾分鐘減少到幾秒鐘!”“供應(yīng)商和客戶將重回到廉價和用戶友好的體驗的時代,計算機應(yīng)用軟件將迎來復(fù)興時刻!”
可打臉的是,廉價的存儲空間、高速的處理速度、隨時可用的AI訓練設(shè)備以及互聯(lián)網(wǎng)已經(jīng)將這一承諾變成了夸大其詞的炒作。
以軟件測試為例,搜索“人工智能在軟件測試中的應(yīng)用”,系統(tǒng)會返回一系列向潛在買家承諾的“神奇”的解決方案。許多解決方案提供了減少手工勞動、提高質(zhì)量和降低成本的方法。有些奇葩的是,有些廠商承諾他們的AI方案能完美解決軟件測試問題,用詞更是驚掉下巴——軟件測試的“圣杯”ーー想法是這樣說的ーー就是把人們從伴有困難和煩惱的軟件開發(fā)循環(huán)中解脫出來,使測試周期更短、更有效、更簡單。
AI真可以化身成萬能的“圣杯”嗎?而且,我們也該讓AI全替代人類嗎?這些近乎荒誕的炒作,實在是該歇歇了。
1、現(xiàn)實的真相
在現(xiàn)實世界中,將人類排除在軟件開發(fā)過程之外要復(fù)雜得多,也令人望而生畏。不管使用瀑布、快速應(yīng)用開發(fā)、DevOps、敏捷和其他方法,人們?nèi)匀皇擒浖_發(fā)的中心,因為他們定義了他們創(chuàng)建的軟件的邊界和潛力。在軟件測試中,由于業(yè)務(wù)需求通常不明確且不斷變化,所以“目標”總是在變化。用戶要求改變可用性,甚至開發(fā)人員對軟件可能性的期望也會發(fā)生變化。
軟件測試的最初標準和方法(包括術(shù)語質(zhì)量保證)來自制造產(chǎn)品測試領(lǐng)域。在這種情況下,產(chǎn)品是定義良好的,二者相比,測試更加機械化,但軟件的特性是可塑的,并且經(jīng)常變化。軟件測試不適用于這種保證質(zhì)量的統(tǒng)一的機器方法。
在現(xiàn)代軟件開發(fā)中,許多事情是開發(fā)人員無法預(yù)料和知悉的。例如,用戶體驗(UX)期望可能在軟件的第一次迭代之后就已經(jīng)改變了。具體的比如:人們對更快的屏幕加載時間或者更快的滾動需求有更高的期望、用戶不再想要冗長的向下滾動屏幕,因為它不再流行。
種種原因表明,人工智能永遠無法獨自預(yù)測或測試,連它的創(chuàng)造者都無法預(yù)測的東西。所以在軟件測試領(lǐng)域,不可能有真正自主的人工智能。創(chuàng)建軟件測試“終結(jié)者”可能會激起吃瓜者和潛在買家的興趣,但這種部署注定是海市蜃樓。相反,在人工智能與人類協(xié)同工作的背景下,軟件測試自主性更有意義。
2、AI需要經(jīng)歷三個成熟階段
軟件測試AI開發(fā),基本上分為三個成熟的階段:
操作性階段(Operatinal)
過程性階段(Process)
系統(tǒng)性階段(Systemic)
目前絕大多數(shù)基于人工智能的軟件測試都處于操作性階段。最基本的操作測試包括創(chuàng)建模仿測試人員執(zhí)行數(shù)百次的例程的腳本。這個例子中的“AI”遠遠不夠智能,它可以幫助縮短腳本創(chuàng)建、重復(fù)執(zhí)行和存儲結(jié)果。
過程性AI是操作性AI的一個更成熟的版本,測試人員使用過程AI進行測試生成。其他用途可能包括測試覆蓋范圍分析和建議、缺陷根本原因分析和工作量估計,以及測試環(huán)境優(yōu)化。過程AI還可以促進基于模式和用法的合成數(shù)據(jù)創(chuàng)建。
過程性AI的好處顯然易見,它提供了一雙額外的“眼睛”,以抵消和對沖掉測試人員在設(shè)置測試執(zhí)行策略時所承擔的一些風險。在實際應(yīng)用中,過程性AI可以讓修改代碼后的測試變得更容易。
手動測試,經(jīng)常會看到測試人員重新測試整個應(yīng)用程序,查找代碼更改時的意外后果。
另一方面,過程性AI可以建議對單個單元(或有限影響區(qū)域)進行測試,而不是對整個應(yīng)用程序進行大規(guī)模重新測試。
在這個級別的人工智能,我們發(fā)現(xiàn)在開發(fā)時間和成本方面有明顯的優(yōu)勢。
然而,目光切換到第三階段——系統(tǒng)性AI時,畫風就會朦朧起來,因為,未來可能會成為一個滑坡的、無回報的承諾而已。
3、不靠譜的系統(tǒng)性AI
系統(tǒng)性(或者說完全自主的)AI測試,之所以不可能(至少目前不可能),原因之一是AI將需要大量的培訓。測試人員可以確信過程AI將建議一個單元測試來充分保證軟件質(zhì)量。然而,對于系統(tǒng)AI,測試人員無法高度自信地知道該軟件將滿足所有需求。
如果這個級別的人工智能真的是自主的,它將不得不測試所有可以想象到的要求——甚至是那些人類沒有想象到的要求。然后,他們需要審查自主AI的假設(shè)和結(jié)論。要證實這些假設(shè)是正確的,需要花費大量的時間和精力,才能提供高度可信的證據(jù)。
自主軟件測試永遠不可能完全實現(xiàn)。因為人們不會信任它,而這就相當于失去了實現(xiàn)完全自主的目標與前提。
4、人工智能需要調(diào)教
盡管完全自主的人工智能是一個神話,但支持和擴展人類在軟件質(zhì)量方面的努力的人工智能是一個值得追求的目標。在這種情況下,人類可以支持人工智能:測試人員依舊需要保持耐心地監(jiān)督、糾正和教導(dǎo)人工智能以及其依賴的不斷進化的訓練集。挑戰(zhàn)在于如何訓練人工智能,同時為測試軟件中的各種bug分配風險。這種訓練必須是持續(xù)的,不僅限于測試領(lǐng)域。自動駕駛汽車制造商訓練人工智能,以區(qū)分一個人究竟是在過馬路還是在騎自行車。
測試人員必須用過去的數(shù)據(jù)訓練和測試人工智能的軟件,以建立他們對人工智能能力的信心。同時,真正自主的人工智能在測試中需要預(yù)測未來的條件ーー開發(fā)人員引導(dǎo)和用戶引導(dǎo)ーー這是它無法根據(jù)歷史數(shù)據(jù)做到的。相反,訓練者往往會根據(jù)自身的偏見,基于數(shù)據(jù)集訓練人工智能。這些偏見限制了人工智能探索的可能性,就好比盲人為了確定性,會阻止馬匹偏離既定路徑一般。人工智能表現(xiàn)的越有偏見,可信度就會越糟糕。人工智能所能接受的最好訓練,就是處理風險概率,并得出最終由人類評估的風險緩解策略。
5、風險緩解措施
說到底,軟件測試關(guān)乎測試人員的成就感和自信心。它們衡量和評估,初始實現(xiàn)的可能結(jié)果以及可能給開發(fā)人員和用戶帶來問題的代碼更改。但不可否認的是,即便軟件測試已經(jīng)充分探索了應(yīng)用程序崩潰的每一種可能性,可信度都不可能是100%的。無論是人工執(zhí)行還是自動執(zhí)行,在所有軟件測試中都存在風險因素。
測試人員必須根據(jù)代碼引起問題的可能性來決定測試覆蓋率。他們還必須使用風險分析來決定哪些領(lǐng)域應(yīng)該集中在覆蓋范圍之外。即使人工智能確定并顯示了軟件在用戶活動鏈中任何一點發(fā)生故障的相對概率,但測試人員仍然需要手動確認計算結(jié)果。
人工智能為受歷史偏差影響的軟件連續(xù)性提供了可能性。然而,人們對人工智能的風險評估和降低風險的秘方,仍然沒有很高的信心。
支持AI的軟件測試工具應(yīng)該是實用和有效的,以便幫助測試人員產(chǎn)生真實的結(jié)果,同時減輕測試人員的手工勞動。
人工智能在軟件測試中最令人興奮(也可能具有破壞性)的部署,是處于人工智能開發(fā)成熟度的第二級:過程性AI。正如Katalon的一位研究人員指出的那樣,“應(yīng)用于軟件測試的AI最大的實際用途是在過程級別,即自主測試創(chuàng)建的第一階段。這將是我能夠創(chuàng)建自動化測試的時候,這些測試可以由我創(chuàng)建,也可以服務(wù)于我?!?/p>
自主和自我導(dǎo)向的人工智能,取代所有人類參與軟件測試過程等云云的話,皆是炒作。期望人工智能能夠擴大和補充人類的努力并縮短測試時間,這是更為現(xiàn)實和可取的。
來源:51CTO技術(shù)棧