從很多方面來看,2022 年都是軟件的分水嶺;隨著疫情最嚴重肆虐破壞的過去,我們可以看到暫時的變化,以及哪些變化已經(jīng)成為結構性的了。因此,那些利用軟件建立可持續(xù)長期業(yè)務的公司得以蓬勃發(fā)展,打破了疫情前的現(xiàn)狀。然而,與此同時,那些僅僅是技術潮流的產(chǎn)品將被扔進歷史的垃圾桶。
隨著工作實踐以及軟件和 IT 對世界生存的重要程度的變化,軟件測試行業(yè)也發(fā)生了類似的轉(zhuǎn)變,轉(zhuǎn)向質(zhì)量工程實踐和自動化程度的提高。與此同時,我們看到機器學習、人工智能以及使之成為可能的大型神經(jīng)網(wǎng)絡取得了重大的進展。這些新技術將以前所未有的方式改變軟件的開發(fā)和測試方式。在本文中,我將討論未來幾年我們可能會看到的趨勢。
即使是在疫情之前,軟件測試就已經(jīng)通過提高測試過程中各個級別的自動化程度而發(fā)生了轉(zhuǎn)變。然而,由于需要在疫情期期間快速重塑商業(yè)模式或添加新的功能來處理遠程工作/生活,開發(fā)人員的需求旺盛,供不應求。這導致了對更多編程專業(yè)知識進行測試的矛盾需求,以及對這些編程技能的更多競爭。
結果之一是轉(zhuǎn)向了用“低代碼”或“無代碼”工具、平臺和框架來構建和測試應用程序。在測試方面,這意味著 Selenium 或 Cypress 等代碼繁重的測試框架面臨著來自業(yè)務用戶可以使用的低代碼替代方案的競爭。此外,對于某些 ERP 和 CRM 平臺,例如 Salesforce、Dynamics、Oracle 和 SAP 等,這意味著測試工具本身需要對被測試的應用程序有更多的智能和理解。
我們看到機器學習(ML)用于測試的第一種方式是使當前的自動化測試更具彈性,更不那么脆弱。軟件測試的一個致命弱點是維護,主要體現(xiàn)在測試整個應用程序和用戶界面而不是獨立模塊(稱為單元測試)時。軟件應用程序會不斷變化,因為用戶希望不斷更新其他功能或業(yè)務流程;然而,這些更改將會導致自動測試不再能正常工作。
例如,如果登錄按鈕更改了它的坐標、形狀或位置,則可能會中斷先前記錄的測試。即使是像頁面加載速度這樣的簡單更改也可能導致自動測試的失敗。具有諷刺意味的是,人類比計算機更直觀,也更擅長測試,因為我們可以查看應用程序,并立即看到哪個按鈕放在了錯誤的位置、哪些內(nèi)容沒有被正確顯示。當然,這是因為大多數(shù)應用程序都是為人類使用而構建的。那些為其他計算機使用而構建的軟件系統(tǒng)(稱為 API)使用自動化測試要容易得多!
為了克服這些限制,較新的低代碼軟件測試工具正在使用機器學習讓這些工具以多種方式并多次迭代掃描正在測試的應用程序,以便它們能夠了解哪些結果是“正確”的,哪些結果是“不正確”的。這意味著當系統(tǒng)的更改與最初記錄的內(nèi)容略有偏差時,它將能夠自動確定該偏差是預期內(nèi)的(測試通過)還是預期外的(測試失敗)。當然,我們?nèi)匀惶幱谶@些工具的早期階段,而且它們的炒作多于實質(zhì)。盡管如此,隨著我們步入 2023 年,我們將會看到機器學習在軟件測試中的實際用例,特別是針對復雜的業(yè)務應用程序和快速變化的云原生應用程序的。
機器學習技術的另一個廣泛應用將是在質(zhì)量工程的分析和報告方面。例如,軟件測試中的一個長期存在的挑戰(zhàn)是要知道將測試資源和工作集中在哪里。“基于風險的測試”這一新興學科旨在將軟件測試活動集中在包含最大風險的系統(tǒng)區(qū)域上。如果你可以使用測試來減少總體風險敞口,那么你就有了一種分配資源的量化方式。衡量風險的方法之一是查看特定事件的概率和影響,然后使用先前的數(shù)據(jù)來了解這些值對于系統(tǒng)每個部分的重要性。然后,你可以針對這些區(qū)域進行測試。對于機器學習來說,這是一個近乎完美的用例。這些模型可以分析之前的開發(fā)、測試和發(fā)布活動,以了解發(fā)現(xiàn)缺陷、更改代碼的位置以及歷史上發(fā)生過的問題。
如果說機器學習正在改變軟件測試行業(yè),那么人工智能(AI)將以多種方式改變網(wǎng)絡安全行業(yè)。例如,已經(jīng)有傳言稱,許多防病毒和入侵的檢測系統(tǒng)正在使用人工智能來尋找可能表明網(wǎng)絡攻擊的異常模式和行為。然而,我們現(xiàn)在才看到人工智能首次被用于定位和探測系統(tǒng),以主動發(fā)現(xiàn)薄弱點和漏洞。
例如,流行的 OpenAI ChatGPT 聊天機器人被要求創(chuàng)建用于訪問系統(tǒng)的軟件代碼,并生成假冒但真實的釣魚文本,以發(fā)送給使用該系統(tǒng)的用戶。魚叉式網(wǎng)絡釣魚最常見的方法之一是使用某種社會工程和模擬,這是網(wǎng)絡安全的新前沿。聊天機器人能夠根據(jù)從受害者那里實時收到的響應,同時創(chuàng)建工作代碼和逼真的自然語言,以使人工智能能夠創(chuàng)建動態(tài)的實時攻擊能力。
如果你不相信自己會上當受騙,這里有一個測試——本文中有一個段落是由 ChatGPT 編寫的,并且我們將它原封不動地粘貼到了本文中。你能猜出是哪一段嗎?
當我們部署基于人工智能(AI)和機器學習(ML)的系統(tǒng)和應用程序時,面臨的另一個挑戰(zhàn)是:我們?nèi)绾螠y試它們?對于傳統(tǒng)的軟件系統(tǒng),人類編寫需求,開發(fā)系統(tǒng),然后讓其他人(在計算機的輔助下)對其進行測試,以確保結果匹配。對于 AI/ML 開發(fā)的系統(tǒng),通常沒有離散的需求,取而代之的是大數(shù)據(jù)集、模型和反饋機制。
在許多情況下,我們不知道系統(tǒng)是如何得出具體答案的,只知道答案是與所提供的數(shù)據(jù)集中的證據(jù)相符。這使得 AI/ML 系統(tǒng)能夠創(chuàng)建人類以前不知道的新方法,并找到獨特的關聯(lián)和突破。然而,這些新的見解是未經(jīng)證實的,可能只與它們所基于的有限數(shù)據(jù)集一樣好。風險在于,你開始將這些模型用于生產(chǎn)系統(tǒng)時,它們會以意想不到且不可預測的方式運行。
因此,測試人員和系統(tǒng)所有者必須確保他們清楚地掌握了業(yè)務需求、用例和邊界條件(或約束)。例如,定義所用數(shù)據(jù)集的限制和訓練模型的特定用例將能確保模型僅用于支持其原始數(shù)據(jù)集所代表的活動。此外,讓人類獨自檢查模型預測的結果也是至關重要的。
人工智能開發(fā)人員面臨的物理挑戰(zhàn)之一是當代硬件的局限性。一些正在使用的數(shù)據(jù)集的規(guī)模達到了 PB 級,這對于根本沒有足夠 RAM 容量來運行這些模型的數(shù)據(jù)中心來說是一個挑戰(zhàn)。取而代之的是,它們必須使用 500 多個通用處理單元(GPU)來處理整個數(shù)據(jù)集,每個 GPU 都有數(shù)百 GB 的 RAM。在處理方面,問題也類似,當前的電子 CPU 和 GPU 會產(chǎn)生大量的熱量,消耗大量的電力,并行處理的速度會受到電阻的限制。解決這些限制的一個可能方案是使用光計算(Optical Computing)。
光計算是一種利用激光和光電探測器等基于光的技術來執(zhí)行計算并處理信息的計算類型。雖然已經(jīng)有了將光計算用于人工智能(AI)應用的研究,但它尚未被廣泛用于這一目的。將光計算用于人工智能存在一些挑戰(zhàn),其中包括許多人工智能算法需要高精度的數(shù)值計算,而使用光技術很難執(zhí)行這些計算。
話雖如此,但將光計算用于人工智能仍有一些潛在的優(yōu)勢。例如,光計算系統(tǒng)可能會以非常高的速度運行,這對于某些需要實時處理大量數(shù)據(jù)的人工智能應用來說非常有用。一些研究人員也在探索使用光子學(光學的一個子領域)來實現(xiàn)人工神經(jīng)網(wǎng)絡,這是許多人工智能系統(tǒng)的關鍵組成部分。
隨著人工智能變得越來越主流,可能會出現(xiàn)一些還沒有被我們發(fā)明出來的全新職業(yè)領域。例如,如果你曾經(jīng)嘗試過使用 ChatGBT 這樣的聊天機器人,你會發(fā)現(xiàn)它可以寫出大量看似合理但卻完全不準確的信息。除了簡單地雇傭人類事實核查人員和人工軟件測試人員團隊之外,道德規(guī)范在軟件測試中可能會扮演一個新的角色。
一些眾所周知的技術已經(jīng)從輸入的數(shù)據(jù)中學習到了偏見或開發(fā)了歧視算法。例如,Compass 法庭判決系統(tǒng)將對有色人種或面部識別技術在某些種族上比其他種族更有效的人判處更長的刑期。軟件測試人員的角色包括理解這些模型中的偏差,并能夠在系統(tǒng)投入生產(chǎn)之前對其進行評估。
另一個吸引人的職業(yè)領域與此相反,即試圖影響人工智能的學習。例如,在數(shù)字營銷領域,聊天機器人可能會部分取代搜索引擎的使用。當聊天機器人可以在一段話中為你提供(潛在的)正確答案或?qū)⒋鸢缸x給你聽時,你為什么還要點擊鏈接頁面來查找答案呢?在這種情況下,搜索引擎優(yōu)化(SEO)領域可能會被新的聊天機器人優(yōu)化(CBO)領域所取代。網(wǎng)站和其他信息資源的所有者會希望讓他們的內(nèi)容更容易被聊天機器人消化,就像今天網(wǎng)站開發(fā)人員試圖讓網(wǎng)站更容易被搜索引擎索引一樣。
ChatGBT 寫的是哪一段?
你猜到了嗎?那就是“人工智能如何改變計算機硬件?”這一節(jié)的最后一段。
總結
總之,2023 年和未來幾年將會發(fā)生重大的變化,這些變化將在大大小小的方面影響軟件測試行業(yè)。因此,你應該開始研究如何使用人工智能(AI)和機器學習(ML)來改進你的測試流程,利用基于人工智能的安全工具,并實施基于風險的測試,例如可以利用大數(shù)據(jù)洞察力的基于風險的測試。