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

前言

當前,信息需求的持續增長和信息技術的快速發展加快了軟件產品的研發速度,同時也大大增加了軟件產品的測試壓力。以互聯網、移動應用等產品為例,眾多軟件公司普遍采用微小改進、快速迭代、反饋收集、及時響應等手段來提高軟件的迭代速度,縮短軟件產品的發布流程。顯然,僅僅依賴測試人員已經難以滿足市場和客戶對產品質量的需求,這就要求開發人員也深入參與到軟件測試過程中,與測試人員共同完成軟件產品的質量保證工作。在本書中,我們定義由開發者承擔的與代碼相關的軟件測試工作為開發者測試。

本書從開發者測試出現的背景與意義、開發者所應掌握的基本和高級程序分析方法以及軟件測試技術、開發者所應掌握的軟件測試分析輔助工具、用于開發者測試教學和競賽的慕測平臺等多個方面對開發者測試進行系統性介紹。相信通過本書的學習,讀者可以對開發者參與測試的必要性、開發者測試所涵蓋的內容有初步的認識和了解,同時能夠結合本書的示例及平臺鍛煉自己的測試能力。

本書適用于兩類不同的讀者:1)在高等院校學習和工作的教師和學生,本書有助于他們理解和認識測試工作承擔者的責任,并為他們學習和鍛煉自身的測試能力提供方向和平臺;2)軟件產業的開發人員、測試人員和管理人員,本書有助于他們認識開發者在測試工作中的重要性和所應承擔的工作內容,以及開發者所應具備的測試技能。

本書講述的方法是通用的,可以用于測試任何類型的計算機軟件。但是,為了使讀者更好地理解和學習本書的開發者測試方法,本書提供了大量Java示例代碼以及面向Java的程序分析、測試工具。這些示例和工具可以在任何支持Java的操作系統(如Windows、Linux、Mac)、開發環境(如Eclipse、IntelliJ、Sublime Text)中開發、測試和運行。

本書共包含8章及一個附錄,除第7章與第8章外,其他章節的內容互不相關,因而讀者可選擇其中部分章節進行閱讀。

第1章:開發者測試概述。本章在研究和分析開發者與軟件測試關系的基礎上,介紹了開發者測試的定義、背景與意義。同時,本章還從靜態測試與動態測試、白盒測試與黑盒測試、不同測試工具間的對比中分析得到開發者測試所涉及的方法、技術與工具。此外,本章還討論了開發者測試技術未來的趨勢,并介紹了支持開發者測試教學與競賽的慕測平臺。

第2章:程序靜態分析。本章對軟件靜態測試的基礎——程序靜態分析方法進行了介紹。通過代碼評審、結構分析等方法可以有效地檢測出程序中的邏輯錯誤,而程序流程分析(如控制流分析、數據流分析)則可以更細粒度地反映程序中語句間、變量間的關聯。此外,本章還介紹了輔助程序正確性證明的靜態/動態符號執行方法,便于讀者了解更高級的程序分析方法。

第3章:白盒測試。白盒測試要求軟件內部的邏輯結構透明可見,因此更適合由軟件項目的開發者來承擔。本章介紹了兩類主要的白盒測試方法,包括以程序內部邏輯結構為基礎的邏輯覆蓋測試方法和以程序路徑為基礎的路徑覆蓋測試方法。與此同時,本章還比較了不同白盒測試方法的測試強度,并介紹了用于度量程序復雜度的環復雜度方法。

第4章:程序插樁與變異測試。本章介紹了用于獲取程序運行時信息的程序插樁方法,以及用于度量測試用例集缺陷檢測能力的變異測試方法。對于程序插樁方法,本章詳細介紹了插樁位置、類型、數量的選擇方法;對于變異測試方法,本章詳細介紹了變異算子的設計與選擇方法。同時,本章還介紹了工具JaCoCo和PITest,以便讀者體驗Java程序的運行時信息收集和變異測試過程。

第5章:單元測試。單元測試是對軟件基本組成單元(如方法、函數、過程)的測試。在測試過程中要完成初始狀態的創建、測試結果的驗證、測試資源的釋放等工作,這些工作適合開發者使用代碼控制開展。本章在介紹單元測試框架的基礎上,進一步闡述了單元測試的各項內容,使讀者能針對不同的測試對象分析、建立相應的測試模型。

第6章:集成測試。通過單元測試的軟件模塊并不能保證在整合后依然運行正確,因此需要做集成測試以進一步驗證。本章介紹了集成測試過程、集成測試所面向的缺陷類型以及分析方法,并詳細介紹了多種集成測試策略。同時,本章還討論了不同集成測試策略的優缺點,并對它們各自的適用場景進行了分析,測試人員可據此選擇合適的集成測試策略。

第7章:JUnit基礎。工欲善其事,必先利其器。JUnit是開發者開展單元測試的一把利器。本章對Java單元測試框架的基本功能(如注解、測試類與測試方法、錯誤與異常處理、批量測試)進行了詳細的介紹,使讀者對JUnit的功能和適用范圍有了詳細的了解。本章還穿插了數個JUnit示例程序,幫助讀者更快、更方便地學習Java單元測試。

第8章:JUnit深入應用。在前一章介紹JUnit基本功能的基礎上,本章對JUnit的高級功能進行了介紹,包括用于提高測試代碼開發效率的匹配器功能,面向Controller和Private函數的測試功能、Stup測試功能和Mock測試功能。同時,本章還介紹了JUnit與常用Java開發框架(如Ant、Maven)的集成方法,讀者可據此配置來構建更方便的Java單元測試環境。

附錄:慕測科技——開發者測試平臺。實踐練習是提高開發者測試能力的有效方法。本附錄介紹了支持開發者測試教學的慕測平臺,并說明了面向教師的賬號注冊、班級管理、考試管理等功能。同時,還對由慕測平臺提供技術支持的全國大學生軟件測試大賽進行了介紹,該賽事為軟件測試專業的宣傳及開發者測試理念的普及做出了重要貢獻。

主站蜘蛛池模板: 肃北| 合水县| 辽宁省| 江川县| 顺义区| 奈曼旗| 余干县| 上思县| 连南| 肇源县| 建宁县| 贵港市| 会泽县| 左贡县| 墨竹工卡县| 于都县| 贵定县| 岳阳县| 独山县| 淮南市| 互助| 安顺市| 壤塘县| 全南县| 嘉义市| 延吉市| 云霄县| 平安县| 湘阴县| 固原市| 长丰县| 福海县| 古田县| 家居| 儋州市| 沁水县| 岳普湖县| 四平市| 乾安县| 西林县| 屏南县|