探索智能化測試技術

摘要:隨着軟件迭代模式的不斷發展,測試環節的自動化程度也得到了有效的、持續的提升,智能化測試是結合AI算法和測試數據對測試多個環節進行針對性的優化。

本文分享自華為雲社區《【智能化測試專題】智能化測試技術探索》,作者: DevAI。

1. 發展階段

測試是評估和驗證輸入是否能得到符合預期輸出的過程。測試包含了軟件測試和硬件測試。測試的早期萌芽是在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驅動測試

2. 智能化測試

智能化測試主要指在持續追求提升研發交付效能下,人工智能技術在測試領域的應用,其本質是結合了AI算法和測試數據對測試多環節進行針對性的優化,具有更強的適應性和響應能力。智能化測試是當前階段的熱門,正在越來越廣泛地深入到測試各環節中。智能化測試用例全周期涉及了三個主要關鍵階段,包括用例生成,用例執行,用例分析。華為雲智能化測試圍繞這三個階段,基於海量測試數據和AI算法輔助測試人員進行測試用例設計和用例生成、精準篩選測試用例執行以及測試數據智能分析。

2.1 智能測試用例生成

測試用例的生成當前主要靠人工設計,並且要求測試人員具有一定的經驗和專業水平,隨着雲化產品的功能日趨複雜、迭代周期不斷加快,完全基於經驗人工設計的接口測試效率十分低下。因此需要設計一種測試用例自動生成方法。

華為雲在智能測試用例生成的實踐方面,提出了基於接口文檔和現網流量數據的智能API測試生成技術,實現了單接口與多接口業務場景的雙覆蓋,做到真正幫助測試人員提高工作效率,並有力保障了雲化產品質量。該生成服務的具體流程如圖所示,其應用前景包括但不局限於以下幾個方面:

1)對於小規模測試團隊或無專職測試人員的全功能團隊或測試小白,可基本實現少人參與或無人參與的無代碼化高度自動化Rest 接口正常場景級測試用例生成,自動化執行和判定。

2) 對於有專職測試人員、測試專家的測試團隊,可低成本提升測試場景覆蓋率、缺陷攔截效率,減少測試設計投入。

3)可以正常場景API測試基礎上實現異常場景 (可靠性測試)和並發場景(性能壓力模型)的全自動化生成,完全替代現有接口fuzz測試,實現接口全場景測試無代碼化。

2.2 回歸測試用例優選

在日常開發測試活動中,面對項目版本的快速迭代,通常為避免引入缺陷和最早期發現儘可能多的缺陷,測試人員需要在代碼小範圍變動時進行測試用例的執行。同時,全量地對測試用例進行執行消耗人力、時間成本過高。華為雲智能精準回歸測試用例挑選,在區分黑盒(代碼不可見)、白盒(代碼可見)不同模式的情況下,黑盒模式根據測試用例歷史執行結果預測用例失敗率並進行排序,白盒模式通過挖掘代碼源文件(函數)與測試用例的關聯關係篩選測試用例,精準挑選和排序缺陷探測比高的測試用例進行,以最少的人力、時間成本,發現儘可能多的缺陷。

2.3 測試數據智能分析定位

隨着軟件規模的持續增長以及產品迭代周期的不斷加快,自動化測試用例的數量越來越大,自動化測試工程中的失敗日誌數量也越來越多,人工分析工作量大、時間成本高。測試數據智能分析定位旨在結合智能化算法根據失敗日誌和相關測試數據分析可能存在的產品問題,提升分析效率。當前華為雲測試智能分析是根據產品線測試日誌數據特徵,在通用的日誌預處理後,依照日誌量採用不同方式進行特徵工程,生成日誌特徵後,基於隨機森林、最近鄰、強化學習、神經網絡等來做模型融合,進行失敗原因的定界與定位。

文章來自PaaS技術創新Lab,PaaS技術創新Lab隸屬於華為雲,致力於綜合利用軟件分析、數據挖掘、機器學習等技術,為軟件研發人員提供下一代智能研發工具服務的核心引擎和智慧大腦。我們將聚焦軟件工程領域硬核能力,不斷構築研發利器,持續交付高價值商業特性!加入我們,一起開創研發新「境界」!(詳情歡迎聯繫 [email protected][email protected])

PaaS技術創新Lab主頁鏈接://www.huaweicloud.com/lab/paas/home.html

參考文獻

[1] What is DevOps, //orangematter.solarwinds.com/2022/03/21/what-is-devops/

[2] 華為雲DevOps敏捷測試之道, //support.huaweicloud.com/reference-devcloud/devcloud_reference_040302.html

[3] 6 levels of AI-based testing: Have no fear, QA pros, //techbeacon.com/app-dev-testing/6-levels-ai-based-testing-have-no-fear-qa-pros

[4] 基於語義感知SBST的API場景測試智能生成, //bbs.huaweicloud.com/blogs/349307

 

點擊關注,第一時間了解華為雲新鮮技術~