“這是我見過的最令人興奮的機器學習應用。
邁克·克裡格(Mike Krieger),Instagram的聯合創始人。
邁克·克裡格(Mike Krieger)的話並不誇張。 雖然 ML 在數據分析和見解方面具有一些非凡的能力,但 GitHub Copilot 完全改變了遊戲規則,因為它可以為世界各地的產品開發人員提供潛在的效用。
編碼副駕駛和生成式 AI 可幫助團隊釋放巨大的好處,例如將軟體開發生命週期加速到迄今為止難以想像的速度。 然而,該技術對 RPA 和軟體測試的影響是這項驚人技術最令人興奮的兩個前沿。
在本文中,我們將研究編碼副駕駛和生成式人工智慧如何改變當今軟體測試和 RPA 的世界,然後再探討它們對技術的未來影響。
副駕駛和生成式人工智慧
軟體開發:入門
生成式人工智慧和編碼副駕駛是軟體開發領域的相對較新的人。 在我們討論它們對空間的影響之前,有必要看看它們的背景和工作方式。
1. .AI驅動的自動編碼器
大型語言模型 (LLM) 在過去幾年中得到了顯著改進。 隨著數據集的大小和計算能力呈指數級增長,輸出品質也隨之提高。
有許多垂直領域可以從 LLM 中受益。 一些寫得最多的包括生成文本、圖像、視頻和其他形式的媒體。 然而,雖然這些用例令人印象深刻,但對開發人員的影響可能更有趣。
市場上有許多 LLM 自動編碼器。 但是,GitHub CoPilot 可能是最著名和最有成就的。 很大一部分原因是它是在 GitHub 儲存庫上訓練的。 它可以訪問數百萬個開原始程式碼、最佳實踐、應用程式架構等範例,從而提供高品質和多功能的輸出。
2. 編碼副駕駛如何工作?
談論編碼副駕駛如何工作的最簡單方法之一是查看遊戲中的領先產品 GitHub CoPilot。 該應用程式基於 OpenAI 的 ChatGPT-3 模型。
就像 ChatGPT 和類似的 LLM 一樣,CoPilot 基於數十億個參數。 在 ChatGPT-3 的開發過程中,OpenAI 開始構建一個名為 OpenAI Codex 的專用編碼程式。 Microsoft購買了該產品的獨家訪問許可權。
但是,這裡的關鍵是Microsoft已經擁有 GitHub。 如果你是一名編碼員,你會對 GitHub 有所瞭解。 基本上,它是一個基於 Web 的平臺,用於軟體開發專案中的版本控制和協作。 他們在 GitHub 庫上訓練了 OpenAI Codex,該庫包含數百萬行開源公共代碼。
CoPilot 使用機器學習來查找代碼行之間的模式和關係。 就像 ChatGPT 一樣,它查看一個單詞或一行,並根據龐大的歷史數據存儲庫計算接下來會發生什麼的概率。
AI 副駕駛的力量在於他們能夠在開發人員編輯時建議代碼片段。 可以把它想像成一個用於編碼的增壓自動完成。 當編碼人員輸入一行代碼時,LLM 會將該代碼的開頭與其龐大的先前專案庫進行比較。 從那裡,它建議概率行和新穎的代碼行。
這裡明顯的好處是,開發人員可以通過這種自動完成節省大量時間。 它提高了生產力,在許多情況下,還提高了代碼的準確性。
3. 用於編碼和開發的生成式 AI 怎麼樣?
從CoPilot的歷史中可以看出,生成式AI和Copilots有著相似的根源。 它們都是使用統計概率根據估算資訊預測使用者需求的技術。
然而,副駕駛軟體和生成式人工智慧之間的最大區別在於後者是基於提示的。 簡而言之,這意味著使用者向機器輸入一組書面指令,機器輸出內容。 任何使用過 ChatGPT 或類似應用程式的人都知道,這種輸出可以以文字、圖像、視頻或代碼的形式出現。
因此,雖然編碼人員用於實現自動編碼的方法不同,但我們可以將它們置於類似的人工智慧輔助自動或生成式編碼的保護傘下。
軟體測試的演變
軟體測試是回應迅速且不斷發展的。 在幾十年的時間里,它已經發生了變化和演變,以滿足新的要求並利用技術的進步。
1.手動測試:
軟體測試的早期涉及手動測試。 這種測試既昂貴又耗時,因為它需要 QA 專家通過開發一系列測試用例、運行和記錄結果、安排修復和重複該過程來仔細檢查軟體。
確保這些測試涵蓋所有可能的場景和情況是一項重大挑戰,當加上所涉及的時間和成本時,手動測試是資源密集型的。 它也極易受到人為錯誤的影響,有限的分發選項放大了這種錯誤,這意味著任何未被發現的錯誤都難以快速修補。
2. 文稿化測試:
腳本化測試代表了 QA 社區向前邁出的一大步。 開發人員無需手動瀏覽代碼和測試場景,而是能夠編寫可以自動測試軟體的程式。 這樣做的最大好處是測試變得更有效率,更不容易出現人為錯誤。 然而,實現這一目標需要熟練、精確和耗時的規劃和編碼,以確保全面覆蓋。
3. 測試自動化:
測試自動化是測試的下一個發展方向。 像ZAPTEST這樣的工具能夠為編碼人員提供腳本測試的所有好處,但具有無代碼介面。 同樣,這裡的顯著好處是節省時間、可重用和適應性強的測試、UI 和 API 測試以及跨平臺和跨設備測試。
4. 資料驅動測試:
數據驅動的測試是測試處理各種數據集的軟體問題的解決方案。 同樣,這是測試自動化的一種形式,但此方法涉及創建測試腳本並針對分配的數據集運行它們。 這種類型的測試使開發人員能夠更快地工作,隔離測試,並減少重複測試用例的時間。
5. 產生式 AI 測試:
生成式 AI 測試是軟體測試領域的最新創新。 通過使用 LLM,QA 團隊可以創建測試用例和測試數據,以説明加速測試過程。 這些測試用例具有高度的靈活性和可編輯性,這有助於開發人員重用和重新調整測試的用途,並大大增加測試範圍。
目前使用副駕駛和
生成式 AI 在軟體測試和 RPA 中的應用
生成式人工智慧和副駕駛對軟體測試產生了重大影響。 然而,這些工具並沒有完全取代編碼人員,而是幫助增強了測試人員。 簡而言之,它們可以幫助開發人員變得更快、更高效,並且在許多情況下,可以提高測試品質。
2023年 Stack Overflow 開發者調查
提供了一些關於軟體開發社區中當前 AI 工具使用方式的見解。 調查中最有趣的部分之一是,雖然略多於一半的開發人員表示他們對用於軟體測試的人工智慧工具感興趣,但只有不到3%的人表示他們信任這些工具。 更重要的是,只有四分之一的人表示他們目前正在使用人工智慧工具進行軟體測試。
這些統計數據的有趣之處在於,它們表明使用人工智慧工具尚未普及,早期採用者仍然可以獲得優勢。
1. 軟體測試和 RPA 中的 Copilot 和生成式 AI 用例
副駕駛和生成式人工智慧正在影響軟體開發的各個領域。 以下是該技術可以幫助進行軟體測試和 RPA 的幾種方式。
需求分析
需求分析是軟體開發生命周期的關鍵部分。 該過程涉及瞭解利益相關者的需求以及構建軟體所需的各種功能。 生成式 AI 可以通過提出新的想法和觀點來幫助團隊進行構思。
測試規劃
一旦充分理解了測試要求,QA團隊就需要將事情分解成一個時程表,以確保足夠的測試覆蓋率。 這種類型的工作需要專業知識和經驗,但生成式人工智慧可以通過示例和指南為團隊提供支援,並針對他們的獨特需求提出特定工具和最佳實踐的建議。
測試案例建立
QA 團隊可以使用 LLM 來分析代碼、使用者需求和軟體規範,以瞭解系統背後的底層關係。 一旦人工智慧掌握了軟體的輸入和輸出以及預期行為,它就可以開始構建測試用例來測試軟體。
這裡的好處不僅僅是節省時間和手動編碼。 AI 測試用例的創建還可以帶來更全面的覆蓋,因為它可以探索 QA 工程師可能不考慮的領域,從而實現更可靠的構建。
查找和解決錯誤
機器學習使 QA 專業人員能夠顯著減少定位和解決錯誤所需的時間。 在軟體測試中,許多錯誤很容易找到。 但是,在許多情況下,這是一個費力且耗時的過程。 生成式 AI 可以在體力勞動者的一小部分時間內執行檢查,並説明突出顯示最頑固的錯誤。 此外,這些 AI 工具還可以解決它們發現的錯誤,為 QA 團隊節省無盡的時間。
UI測試
生成式 AI 工具可以類比一系列用戶行為以及與軟體系統的互動。 這些方法可以讓開發團隊相信他們的介面可以處理廣泛的人機用途。 此外,生成式 AI 還可以分析使用者介面數據和熱圖,並就如何改進 UI 並使其更加使用者友好提出建議。
副駕駛和生成式人工智慧的未來
在軟體測試和RPA中
雖然目前在軟體自動化中使用副駕駛和生成式人工智慧已經令人興奮,但未來更有希望。
副駕駛和生成式人工智慧的未來取決於可以對產品進行的改進。 普渡大學最近的一項研究,題為 誰回答得更好? 深入分析 ChatGPT 和 Stack Overflow 對軟體工程問題的答案 強調了生成式 AI 模型的一些局限性。
研究人員從 Stack Overflow 中向 ChatGPT 提出了 500 多個問題。 人工智慧工具的回答不準確超過一半。 現在,需要注意的是,研究人員指出的最重要的問題之一是,人工智慧最常失敗,因為它沒有正確理解問題。 這一細節強調了生成式 AI 中快速工程的重要性。
此外,谷歌和亞馬遜今年都進行了獨立測試,以在面試問題設置中查看生成式人工智慧工具的品質。 在這兩種情況下,該工具都設法很好地回答了測試問題以獲得該職位,正如
分別是CNBC
和
Business Inside
。
因此,很明顯,我們正處於這項技術的潛力所在,但一些小問題需要解決。 近年來,這些工具的改進規模使我們有信心,它將達到所需的水準,並可能提前完成。
現在,我們可以看看這些技術將影響軟體開發測試未來的一些領域。
1. 超自動化
超自動化描述了企業發展中的一個目標,在這個目標中,每個可以自動化的流程都將實現自動化。 它是一種高度相互關聯的整體生產力方法。
在軟體開發方面,不難想像一個對業務流程需求進行監督的集中式系統。 該系統將瞭解和識別需求和效率,並不斷確定需要通過技術改進的領域。
隨著業務的發展,這些集中式系統將使用生成式人工智慧來構建應用程式,這些應用程式將自動解決瓶頸和低效率問題,或者將特定工作推送給工程師來完成。
2. 設計軟體架構
有了足夠的數據,人工智慧工具就可以理解軟體架構的最佳實踐,並找到改進這些設計的方法,以實現最大的效率。 機器學習是關於尋找超出人類思維範圍的模式和關係。
如果 AI 工具對各種應用程式有足夠的瞭解,我們可以指示它們將以前的架構轉向新的需求,從而實現更高效的構建,甚至是原本不會被考慮的想法。
3. 遺留系統的現代化
雖然沒有一個軟體是完美的,但有許多工具仍然做得很好,並且深深地嵌入到公司的基礎設施中,以至於它們很難被取代。 調整這些系統可能是一件苦差事,特別是如果它們是使用已經過時的軟體代碼編寫的。
未來,生成式人工智慧工具將能夠將這些代碼轉換為當今語言,使團隊能夠保留他們的遺留系統,並在許多情況下改進它們。
4. 加強低代碼和無代碼開發
我們上面確定的通過生成式 AI 工具進行自動化軟體測試的挑戰之一是編碼人員缺乏驗證輸出的知識和經驗。
AI 副駕駛將通過提出更好的建議來幫助增強低代碼工具,從而產生強大的應用程式。 先進的測試工具將使人類操作員能夠自由地發揮創造力,同時不斷驗證他們的工作,併為非技術專業人員構建他們需要的應用程式打開大門。
生成式 AI 在軟體測試中的優勢
使用生成式 AI 進行軟體測試有很多好處,對於希望更快地工作但又不影響品質的開發團隊來說,這是一個有吸引力的選擇。
1. 加快軟體開發生命週期
開發人員一直承受著長時間工作的壓力,以確保軟體和新功能及時進入市場。 雖然敏捷/DevOps方法確保了開發效率更高,但仍有個別的開發階段可以從進一步的簡化中受益。
生成式 AI 工具允許測試團隊處理從生成原型到 UI 測試的各種 SDLC 階段。
2. 全面的錯誤檢測
人工智慧在軟體測試中最強大的應用之一來自該技術比較大型數據集的能力。 ML 工具可以分析大量數據集(包括代碼),以構建資訊和預期模型存儲庫。
當開發人員提交代碼時,他們可以將其與這些模型進行比較,這些模型可以突出顯示意外的場景、依賴關係和漏洞,從而在整個開發過程中提供更好的代碼。
3. 提高測試覆蓋率
機器學習工具旨在分析和理解大量數據。 當應用於軟體測試時,它允許團隊擴大其軟體測試的範圍。 好處不僅僅是從等式中去除人力以節省資金;AI 還帶來了一種更全面的測試類型,允許在一組複雜的場景中改進錯誤檢測。
4. 降低成本
與僱用 QA 工程師團隊並將其用於重複且耗時的軟體測試任務相比,生成式 AI 和 RPA 更快、更具成本效益。
隨著軟體開發領域的競爭日益激烈,找到在預算範圍內交付高品質、耐用產品的方法變得越來越重要。 生成式 AI 工具和副駕駛可以減少對工程師的依賴,使他們能夠執行價值驅動的工作,並減少臃腫的構建。
生成式 AI 工具是否意味著終結
人類軟體工程師?
儘管它們有明顯的好處,但任何自動化工具都可能使工人對他們的未來感到一定程度的焦慮。 雖然這是正常的反應,但生成式人工智慧的速度和範圍意味著人們的擔憂比平時更廣泛。 雖然這些工具能夠自動執行許多工作,但它們無法執行軟體工程師所做的每項任務。 瞭解該技術的功能及其局限性對於工程師和領導者來說至關重要。
人們需要記住的第一件事是,由 AI 提供支援的測試自動化工具在市場上已經存在了很長一段時間。 然而,生成式人工智慧的使用者友好性確實使其能夠進一步提高靈活性。
我們必須考慮的第一件事是,生成式 AI 最適合可以驗證的輸出。 這是一個關鍵點。 LLM 訓練方式的本質意味著他們會盡最大努力給你一個答案,即使這偶爾意味著“幻覺”事實、參考資料和論點。
現在,如果您有足夠的編碼知識,您將能夠閱讀和驗證生成式 AI 輸出的任何文本並捕獲潛在錯誤。 如果你是一個公民編碼員,使用生成式人工智慧來代替編碼,你將沒有能力發現這些錯誤。
因此,從這個角度來看,熟練的工程師仍將是軟體開發生態系統的關鍵部分。 他們仍然需要在監督和實踐意義上進行測試。
生成式 AI 在軟體測試中的另一個局限性涉及行動測試。 例如,ChatGPT 是測試網站 UI 的不錯選擇。 但是,它無法訪問不同的行動裝置。 市場上有這麼多不同的手機和型號,它落後於當前的測試自動化軟體,如ZAPTEST。 這個問題也不是一個小障礙。 超過
一半的互聯網使用來自行動裝置
,而且這個數位每年都在增加。
因此,雖然生成式人工智慧將承擔開發人員的許多職責,但如果不對測試基礎設施和驗證輸出的能力進行巨大改變,它不會使這些專業人員過時。
結語
軟體測試和 RPA 正走在不斷改進的道路上。 隨著新技術和新方法的出現,這兩個學科都吸收了最佳實踐,以説明 QA 團隊以手動測試的一小部分價格提供更快、更全面的測試。
雖然改進測試範圍和減少人為錯誤和成本是 AI 驅動的測試的一些更明顯的好處,但它也有助於團隊採用持續整合和部署管道 (CI/CD) 方法。
隨著消費者的期望和競爭比以往任何時候都更加激烈,生成式人工智慧為團隊提供了一種在不影響質量的情況下提供快速高效測試的方法。