摘要:隨著軟體迭代模式的不斷髮展,測試環節的自動化程度也得到了有效的、持續的提升,智慧化測試是結合AI演演算法和測試資料對測試多個環節進行鍼對性的優化。
本文分享自華為雲社群《【智慧化測試專題】智慧化測試技術探索》,作者: DevAI。
測試是評估和驗證輸入是否能得到符合預期輸出的過程。測試包含了軟體測試和硬體測試。測試的早期萌芽是在20世紀50年代,主要是以偵錯為主,驗證程式是否符合預期。1957年Charles Baker在《軟體測試發展》中將測試和偵錯區分開來,提出了測試的概念,指出測試的目的不僅僅是驗證還需要確認軟體是否滿足要求。1983年IEEE首次召開了軟體測試的技術會議,並給出了軟體測試的定義。IEEE定義的軟體測試明確指出測試的目的是為了檢驗軟體是否滿足需求,它是一門需要經過設計、開發和維護等完整階段的過程。隨著軟體研發模式從瀑布模式到敏捷模式再到DevOps(其各環節流程如圖1所示),DevOps注重Dev、Ops和QA(Tester)之間的協同合作,因此為了達到產品質量的持續改進,對測試環節流程自動化與持續進行都提出了更高的要求。
圖1. DevOps流程
為了應對日益增長的產品需求與繁重的測試任務,提升測試質量和測試效率,測試團隊會把測試專項能力向服務化能力轉型,建立自動化為主的測試能力。測試自動化的目的為了減少手工測試和手工操作,如圖2所示,測試自動化包括了自動化環境建立與部署、生成測試資料、執行自動化測試,生成測試結果與紀錄檔。並對測試相關結果進行自動化監控與分析,自動生成測試報告,以便進行測試定位失敗原因與快速修復。
圖2 測試自動化流程
隨著人工智慧、機器學習在各個領域的廣泛應用,以及應對日益增長的海量資料,自動化測試工具結合AI技術生成了更可靠有效的測試,改善了測試分析的效率等,加速現有的自動化測試需求和程序。 2018年Gil Tayar在文章《6 levels of AI-based testing: Have no fear, QA pros》說明了AI驅動測試的6個自動化階段,如圖3所示,從開始的人工分析與設計自動化測試,到更多環節結合AI輔助進行自動化測試的執行、設計與決策,測試自動化程度得到了有效的、持續的提升。
圖3 AI驅動測試
智慧化測試主要指在持續追求提升研發交付效能下,人工智慧技術在測試領域的應用,其本質是結合了AI演演算法和測試資料對測試多環節進行鍼對性的優化,具有更強的適應性和響應能力。智慧化測試是當前階段的熱門,正在越來越廣泛地深入到測試各環節中。智慧化測試用例全週期涉及了三個主要關鍵階段,包括用例生成,用例執行,用例分析。華為雲智慧化測試圍繞這三個階段,基於海量測試資料和AI演演算法輔助測試人員進行測試用例設計和用例生成、精準篩選測試用例執行以及測試資料智慧分析。
測試用例的生成當前主要靠人工設計,並且要求測試人員具有一定的經驗和專業水平,隨著雲化產品的功能日趨複雜、迭代週期不斷加快,完全基於經驗人工設計的介面測試效率十分低下。因此需要設計一種測試用例自動生成方法。
華為雲在智慧測試用例生成的實踐方面,提出了基於介面檔案和現網流量資料的智慧API測試生成技術,實現了單介面與多介面業務場景的雙覆蓋,做到真正幫助測試人員提高工作效率,並有力保障了雲化產品質量。該生成服務的具體流程如圖所示,其應用前景包括但不侷限於以下幾個方面:
1)對於小規模測試團隊或無專職測試人員的全功能團隊或測試小白,可基本實現少人蔘與或無人蔘與的無程式碼化高度自動化Rest 介面正常場景級測試用例生成,自動化執行和判定。
2) 對於有專職測試人員、測試專家的測試團隊,可低成本提升測試場景覆蓋率、缺陷攔截效率,減少測試設計投入。
3)可以正常場景API測試基礎上實現異常場景 (可靠性測試)和並行場景(效能壓力模型)的全自動化生成,完全替代現有介面fuzz測試,實現介面全場景測試無程式碼化。
在日常開發測試活動中,面對專案版本的快速迭代,通常為避免引入缺陷和最早期發現儘可能多的缺陷,測試人員需要在程式碼小範圍變動時進行測試用例的執行。同時,全量地對測試用例進行執行消耗人力、時間成本過高。華為雲智慧精準迴歸測試用例挑選,在區分黑盒(程式碼不可見)、白盒(程式碼可見)不同模式的情況下,黑盒模式根據測試用例歷史執行結果預測用例失敗率並進行排序,白盒模式通過挖掘程式碼原始檔(函數)與測試用例的關聯關係篩選測試用例,精準挑選和排序缺陷探測比高的測試用例進行,以最少的人力、時間成本,發現儘可能多的缺陷。
隨著軟體規模的持續增長以及產品迭代週期的不斷加快,自動化測試用例的數量越來越大,自動化測試工程中的失敗紀錄檔數量也越來越多,人工分析工作量大、時間成本高。測試資料智慧分析定位旨在結合智慧化演演算法根據失敗紀錄檔和相關測試資料分析可能存在的產品問題,提升分析效率。當前華為雲測試智慧分析是根據產品線測試紀錄檔資料特徵,在通用的紀錄檔預處理後,依照紀錄檔量採用不同方式進行特徵工程,生成紀錄檔特徵後,基於隨機森林、最近鄰、強化學習、神經網路等來做模型融合,進行失敗原因的定界與定位。
文章來自PaaS技術創新Lab,PaaS技術創新Lab隸屬於華為雲,致力於綜合利用軟體分析、資料探勘、機器學習等技術,為軟體研發人員提供下一代智慧研發工具服務的核心引擎和智慧大腦。我們將聚焦軟體工程領域硬核能力,不斷構築研發利器,持續交付高價值商業特性!加入我們,一起開創研發新「境界」!(詳情歡迎聯絡 [email protected];[email protected])
PaaS技術創新Lab主頁連結:https://www.huaweicloud.com/lab/paas/home.html
[1] What is DevOps, https://orangematter.solarwinds.com/2022/03/21/what-is-devops/
[2] 華為雲DevOps敏捷測試之道, https://support.huaweicloud.com/reference-devcloud/devcloud_reference_040302.html
[3] 6 levels of AI-based testing: Have no fear, QA pros, https://techbeacon.com/app-dev-testing/6-levels-ai-based-testing-have-no-fear-qa-pros
[4] 基於語意感知SBST的API場景測試智慧生成, https://bbs.huaweicloud.com/blogs/349307