官术网_书友最值得收藏!

前言

這是一個軟件定義的百年未有之大變局時代!

基于軟件定義,以信息平臺為基礎載體,以數據資源為關鍵要素,融合應用以全要素數字化轉型為驅動力的新技術、新產品、新模式、新業態,代際躍升,群體演進,推進以綠色、智能及泛在為特征的關鍵引領技術跨越發展,構成紛繁的物理—數字時空,自然世界與虛擬世界深度融合,原子世界向比特世界高歌猛進。軟件已成為國民經濟和社會發展的基礎性、戰略性、先導性產業。碳基只是載體,軟件才是核心。

一個日益增長的需求是:軟件應具有檢定合格的質量和持續交付能力。然而,快速增加的系統復雜性、不確定性、演化性及需求過載、集成變更、版本迭代、海量增長的數據,無處不在的Bug(程序錯誤),導致軟件質量形成及改進面臨前所未有的挑戰,即便是日常生活中的一般應用亦概莫能外。無人駕駛、軌道交通、宇航探索、核安控制、金融服務等可靠性、安全性攸關的系統,對軟件質量提出了新的更高要求。與此同時,隨著大規模敏捷、DevSecOps、持續集成交付等開發模式的迭代演進,大數據集成及增強現實、混合數據架構、開放彈性業務架構及應用容器化、微服務及無服務架構等的廣泛應用,語言模型構成了一個全新的軟件棧基礎,日益復雜及不斷重構的過程中異構軟件功能難以形成合力,進一步加劇了質量風險。我們惶恐地生活在質量的大堤之下。未來已來,與有榮焉?

軟件質量構建于富有彈性的設計、規范有序的管理、充分完備的測試、持續改進且不斷增強的過程能力之上,是區分產品與服務的核心要素。在快速迭代演進的研發模式下,如何實現軟件質量控制及改進的重大提升,是軟件測試人員或團隊必須面對并著力研究解決的問題。業界將關注的重點集中于兩端:一端基于系統構建,進行全程測試,檢出缺陷,規避過程及產品質量風險;另一端基于用戶體驗,在關鍵路徑抽取關鍵績效指標(Key Performance Indicator,KPI),進行全棧分析,測試驗證質量目標的實現情況。而不幸的是,有望從根本上改進軟件質量的代碼生成、服務重用、應用程序編程接口(Application Programming Interface,API)推薦、形式化設計等先進軟件開發及自主測試、程序正確性證明、形式化驗證、超級自動化測試等重大關鍵技術,尚待進一步突破和實踐檢驗。敢問路在何方?

軟件測試是在確定的環境中,運行并測定軟件,檢出錯誤,度量并評價軟件的符合性、正確性、適用性、完全性、穩定性及交付能力是否滿足使用要求的過程活動,是軟件錯誤的過濾器,是軟件質量的把關者,是用戶權益的捍衛者,是流程治理的實踐者,是過程改進的創新者,是軟件文明的守望者。通過業界卓絕的探索和廣泛實踐,邏輯、數據、流程驅動的軟件測試技術已臻成熟,剖面、能力驅動的軟件測試技術亦取得長足進展,為軟件測試技術發展奠定了堅實的基礎。持續測試、超級自動化測試、人工智能測試、基于測試驅動的質量工程,是軟件測試技術發展的重要方向。隨著人工智能技術的快速發展,基于人工智能生成內容的高效學習效率、生成式大模型的多模態處理能力,給測試用例生成、文本輸入生成、自動化執行與回歸、智能缺陷檢測、缺陷自動修復、智能協作等技術發展注入了新的動能,推動軟件測試技術實現新發展。但即便如此,存在的問題比已有答案多得多。

軟件測試是基于軟件行為建模的數據抽樣驗證,是基于測試過程模型、能力模型、價值模型,序化演進的系統工程過程。整合離散的測試資源,建設集基礎設施、測試環境、測試用例、場景數據、環境數據、缺陷數據等資產于一體,測試驗證、分析評價、認可認證相互融合,云化承載的測試基礎能力體系,建設創新驅動、嵌套閉環、開放融合、持續改進的質量提升生態,面向過程,聚焦測試策劃,著眼測試設計,著力測試執行,以質量、效率、能力驅動可視、可測、可信的測試過程改進及能力提升,實現邏輯覆蓋、業務覆蓋、能力覆蓋與質量目標綜合,錯誤檢測、故障預測及健康管理融合,軟件測試與系統驗證、能力評價、質量保證及組織戰略交聯,以測保質、以測促研、以測促產、以測促用,推進基于測試驅動的客戶價值提升。這是軟件測試的初心和使命。

軟件測試人,是對軟件問題最敏感、對軟件質量最敬畏的群體之一。七十多年來,通過幾代軟件測試人的執著探索,勇毅實踐,軟件測試從迷茫到覺悟,從概念到體系,從抽象到具體,從具象歸于抽象。這是軟件工程發展的必然結果,是質量工程發展的必然選擇,而這些都離不開技術的創新、方法的運用、知識的積淀、能力的支撐及實踐的驅動,更加離不開軟件測試人艱辛的努力和智慧的付出。如果來時的方向只靠不斷回望,必將裹足不前,需不斷審視、探索與踐行,超越絕對的積極與消極、純粹的樂觀與悲觀,在極端的不對稱中發現契機,尋找逆襲點,再出發。

浸淫于軟件測試近二十載,除了誠心敬畏每一行代碼,認真對待每一個問題,在這條不只局限于技術概念的道路上,常有所思,偶有所得,卻未能分杯于斯。自發的演練,并非偶然。在內心的反復掙扎之后,鼓起勇氣,站在前人的肩膀上,把對軟件測試的思和想,情感與共鳴集結到一起,期望能夠在軟件測試及質量工程界,營造一種能夠引起廣泛興趣的學術氛圍,為軟件測試專業化、服務化、融合化、產業化發展構造一個創新驅動、技術引領、開放融合的技術生態與工程實踐示范。

全書分為11章。第1章分析軟件質量、軟件測試技術的現狀及存在的問題,跟蹤軟件測試的發展歷程,研究軟件測試的發展趨勢,為本書結構構建及內容展開建立基礎。第2章基于軟件質量模型,簡述軟件測試及其相關概念,構建軟件可測試性生命周期過程模型,討論不同級別的可測試性問題;定義軟件缺陷,分析軟件失效機理,為基于軟件失效行為及故障假設的軟件測試奠定基礎。第3章基于軟件測試過程模型及成熟度模型,構建軟件測試價值模型,給出軟件測試模型開發及選擇策略。第4章基于軟件測試價值模型,提出基于目標、基于風險、基于能力驅動的測試策略及測試策劃的實踐者方法,介紹軟件測試的不確定性及控制方法。第5章基于圖結構及圖元素,介紹邏輯覆蓋、路徑覆蓋、循環結構覆蓋、符號執行等經典邏輯驅動測試技術,討論邏輯驅動測試的邊界值問題,介紹同源檢測、基于語義檢測與規則集聚類的靜態分析融合方法。第6章基于軟件可用性理論,介紹等價類劃分、邊界值分析、場景驅動、決策表驅動、因果圖分析、功能圖分析、正交試驗設計、均勻試驗設計、組合測試、被動測試等數據驅動測試的概念、理論基礎、技術原理及工程實踐方法。第7章面向服務軟件,構建面向服務的測試框架,基于服務模型的形式化描述及求解,討論服務實體、有狀態服務實體及基于時間波動的服務實時性測試技術及實踐者方法。第8章基于軟件運行周期的可靠性風險,構建軟件運行剖面,介紹隨機過程類、非隨機過程類、構件軟件可靠性模型,討論軟件可靠性增長測試、可靠性驗證測試的概念、技術原理、充分性準則及基于蒙特卡羅方法的軟件可靠性測試。第9章基于大數據架構模型及大數據應用安全要素,構建大數據及應用測試體系,討論大數據及算法、大數據應用性能、大數據應用安全性測試技術與方法。第10章基于系統行為模型,構建基于環境應力剖面、軟件狀態剖面、多域任務場景綜合的一體化測試剖面,介紹數據歸納及統計容差修正、基于動態故障樹的失效不確定性建模,以及基于退化模型及多域任務場景驅動的一體化測試技術及方法。第11章構建基于質量、效率驅動的軟件測試框架及開放融合的測試類型集,以豐富的案例,分享文檔類、代碼類、數據類、功能類、性能類、接口類和專項類軟件測試的技術要求、測試策略、環境構建及實踐者方法。

由于編著者水平有限,雖筆耕不輟,數易其稿,難免蕭蘭并擷,珉玉雜陳,不當之處,懇請讀者批評指正。作為一門快速發展與持續演進的學科,本書只是軟件測試技術研究和實踐的一個起點。以有限的時間和認知,探索軟件測試的無盡難題,路漫漫永難窮盡,還需要業界和同仁們的大力支持和共同努力。

在本書的編著過程中,參考并采用了中國船舶工業軟件測試中心的部分研究成果,對相應項目組及成員艱辛的探索、智慧的創新、卓越的成果致以由衷的敬意!另外,中國船舶工業軟件測試中心費琪高工提供了部分靜態分析案例,哈爾濱工程大學韓啟龍教授、Shopify公司數據分析師Sun ruolun審閱了書稿并提出了建設性的意見和建議,電子工業出版社徐薔薇編輯,精心策劃、悉心指導、逐字審閱,保證了書稿的編輯出版質量,在此一并致謝!在本書的編著過程中參考了相關網絡文獻,難以逐一列出,特向作者及信息發布者致謝!

編 著 者

2024年5月

主站蜘蛛池模板: 武城县| 长白| 永川市| 八宿县| 威海市| 杭州市| 三门峡市| 永安市| 彩票| 蓬安县| 泽库县| 北京市| 罗田县| 错那县| 邯郸县| 博罗县| 黄山市| 景东| 循化| 吉林市| 科技| 靖边县| 长泰县| 卓资县| 玉树县| 贵州省| 民丰县| 湖南省| 府谷县| 新乐市| 齐河县| 循化| 合水县| 嘉祥县| 科技| 张家口市| 大余县| 奈曼旗| 古田县| 九龙坡区| 双柏县|