【課程簡介】
單元測試是在軟件開發(fā)過程中要進行的很低級別的測試活動,在單元測試活動中,軟件的獨立單元將在與程序的其他部分相隔離的情況下進行測試。相對于系統(tǒng)測試,單元測試發(fā)現(xiàn)缺陷的成本更低。而對于嵌入式系統(tǒng),單元測試是檢查軟件缺陷最經(jīng)濟有效的一種方法,他能使測試盡早開始,并且可以獨立于目標硬件平臺,不受硬件缺陷的影響,降低測試成本。
在國內(nèi)許多較成熟的軟件企業(yè)已有了專門的測試工程師,對測試工作已經(jīng)比較專業(yè)化了,然而這些專業(yè)化的工作大都局限于黒盒化的系統(tǒng)測試,很少有企業(yè)在項目中要求執(zhí)行單元測試,就算有些組織號稱做單元測試,其實也不是真正的單元測試。因此,程序員掌握單元測試技能對于提升產(chǎn)品質(zhì)量、降低開發(fā)成本和縮短開發(fā)周期都有重要的意義。
【培訓特色】
? 課程完整介紹項目級以及產(chǎn)品級測試體系,以及軟件測試4大活動(單元測試、集成測試、系統(tǒng)測試、驗收測試)的基本職責、方法。
? 系統(tǒng)化的課程內(nèi)容:全面分析測試理論、測試實踐、測試流程、團隊管理、工具模板及敏捷測試管理。
? 講師在國內(nèi)成熟企業(yè)(華為、阿里巴巴、藍韻集團)工作時的切身實踐體會和16年多的軟件開與與測試管理經(jīng)歷,能夠深入淺出地分析討論各種軟件測試管理遇到的問題, 并列舉大量的測試管理案例,有助于管理人員借鑒與參考。
? 講師有國外項目背景,曾參與國際化項目的測試項目管理工作,與美國及印度的同事深入合作,積累了很多國際化軟件測試的典型實踐。
? 課程專業(yè),內(nèi)容豐富而精彩,不但讓測試管理者了解測試知識,而且還能從中學習到研發(fā)管理流程,QA等方面的知識。
? 課程實踐性較強,所有的方法、工具和模板都是來自講師從事一線管理時的經(jīng)驗和教訓。
【目標收益】
本課程將以什么是單元測試、為什么做單元測試為切入點,澄清人們普遍對單元測試的一些誤解,揭開單元測試的神秘面紗,同時,會對測試相關(guān)概念和方法。接下來會以單元測試過程為主線,對單元測試計劃、單元測試環(huán)準備、單元測試用例設(shè)計,單元測試執(zhí)行和測試結(jié)果分析,在測試計劃環(huán)節(jié)會對單元測試所涉及測試工具做介紹。后期講解集成測試。集成測試是若干單元集成起來的測試,如果采用自底向上不打樁的單元測試方法,這樣的單元測試實際同時完成了集成測試,因此,本課程對集成測試不做突出介紹。
本課程是以講解、演練和點評相穿插的形式進行,40%時間是知識講解,40%時間演練,20%時間演練結(jié)果點評,所有演練都是以JAVA系統(tǒng)為對象的。在第二天的課程里,所有的演練都是以一個虛擬的軟件項目作為演練對象,從單元測試計劃開始,到最后的測試結(jié)束,學員會經(jīng)歷完整的單元測試過程,從而系統(tǒng)地掌握單元測試技能,培訓后能夠立刻從事單元測試活動,而不是僅僅停留在對知識的理解層面上。培訓中演練活動所使用的工具、模板等都可以直接為學員在日后的實際工作中使用。
【培訓對象】
? 研發(fā)副總裁、研發(fā)總監(jiān)、項目總監(jiān)、研發(fā)經(jīng)理、測試經(jīng)理、軟件測試人員、軟件開發(fā)人員、項目經(jīng)理、質(zhì)量保證人員等
【課程大綱】
1、 軟件單元測試概述
本章節(jié)學習目標:主要讓學員了解為什么需要軟件測試,軟件測試對于軟件質(zhì)量保證的重要性,以及軟件測試在整個產(chǎn)品質(zhì)量體系中的位置。并列舉軟件測試的原則與方法。
1.1 軟件測試管理面臨的常見問題
1.2 測試在質(zhì)量體系中的位置
1.3 測試原則與方法
1.4 為什么要盡早測試
1.5 木桶原理 ·20/80原則 ·Good-Enough原則·多快好省原則
1.6 錯誤、缺陷、故障、失效 ·測試成本分析
1.7 測試、調(diào)試、測試與調(diào)試的關(guān)系和區(qū)別
1.8 測試方法分類
1.8.1 白盒測試、黑盒測試、灰盒測試
1.8.2 測試策略 ·單元測試、集成測試、系統(tǒng)測試、驗收測試
1.8.3 ALPHA測試、BETA測試、功能測試、性能測試
1.8.4 動態(tài)測試、靜態(tài)測試
1.8.5 手工測試、自動化測試、負載測試、壓力測試、性能測試
本單元研討案例:A公司軟件項目測試環(huán)節(jié)存在的典型問題,并分組討論,派代表上臺發(fā)言。
2、 軟件單元測試工程過程
本章節(jié)學習目標:讓學員了解測試工程過程和流程管理,掌握軟件測試的關(guān)鍵活動和管理流程,并向?qū)W員展現(xiàn)每個階段的測試模板。
2.1 什么是軟件測試工程 (從阿里巴巴的性能測試談起)
2.2 測試在軟件工程中的位置(基于不同開發(fā)流程中的測試角色)
2.3 瀑布模型測試過程
2.4 W型測試過程
2.5 V型測試過程
2.5.1 單元測試計劃 ·單元測試 ·單元測試報告與詳細設(shè)計關(guān)系
2.5.2 集成測試計劃 ·集成測試·集成測試報告與概要設(shè)計關(guān)系
2.5.3 系統(tǒng)測試計劃 ·系統(tǒng)測試 ·系統(tǒng)測試報告與需求規(guī)格設(shè)計關(guān)系
2.5.4 測試用例
2.5.5 測試缺陷管理
2.5.6 測試報告
2.6 代碼審查與走讀過程
2.6.1 召開審查走讀會議
2.6.2 專人書面評審
2.6.3 使用統(tǒng)計和分析工具
2.7 單元測試過程
2.7.1 什么是樁(Stub)、驅(qū)動器(Driver)、模擬器(Simulator)
2.7.2 單元測試環(huán)境
2.7.3 單元測試工具選型
2.7.4 單元/部件測試準備
2.7.5 單元/部件測試執(zhí)行
2.7.6 測試計劃和用例評審查檢表、測試記錄、缺陷報告
2.8 集成測試過程
2.8.1 集成測試策略的確定時機
2.8.2 集成測試基本概念 ·集成測試對象 ·集成測試中的角色定義
2.8.3 集成測試的特點
2.8.4 集成測試順序確定
2.8.5 集成測試準備 ·集成測試執(zhí)行 ·缺陷跟蹤
2.8.6 集成測試質(zhì)量目標 ·典型集成測試平臺構(gòu)造
2.8.7 集成測試工作開展的制約因素
2.8.8 集成測試成敗關(guān)鍵因素分析
2.9 系統(tǒng)測試過程
2.9.1 轉(zhuǎn)測試操作流程和標準
2.9.2 系統(tǒng)測試基本概念(定義、對象、依據(jù))
2.9.3 系統(tǒng)測試過程 ·系統(tǒng)測試輸入、輸出
2.9.4 系統(tǒng)測試準備
2.9.5 系統(tǒng)測試執(zhí)行
2.9.6 測試環(huán)境的規(guī)劃和管理
2.9.7 問題跟蹤反饋 ·基于產(chǎn)品平臺的測試策略
2.9.8 系統(tǒng)測試成敗關(guān)鍵因素分析 ·“黑白唱”
2.10 文檔測試過程
2.10.1 安裝包文字和圖片
2.10.2 安裝與設(shè)置指南
2.10.3 用戶手冊
2.10.4 在線幫助
2.11 驗收測試
2.11.1 驗收的基本定義與目的
2.11.2 驗收測試類型
2.11.3 根據(jù)合同驗收
2.11.4 用戶驗收測試
2.11.5 運行測試
2.11.6 現(xiàn)場測試
2.11.7 測試人員在客戶驗收過程中的職責
模板展示:測試計劃、測試用例、單元測試、集成測試、驗收測試、文檔測試等模板展示。
3、 單元測試實戰(zhàn)演練
本單元學習目標:以一個虛擬項目(或客戶實際項目)做為演練對象,從計劃到測試總結(jié)分析,做全程實戰(zhàn)演練。
3.1 單元測試計劃
3.1.1 單元測試計劃內(nèi)容:制定測試策略,選擇需要進行單元測試的模塊
3.1.2 確定各模塊的測試順序
3.1.3 測試工具的選擇
3.1.4 進行時間安排,單元測試活動貫穿于項目始終,并非只有在編碼結(jié)束后才開始進行單元測試活動
3.1.5 人員安排,為了保證測試的有效性,可采用交叉測試,同時交叉人員能夠熟悉對方模塊,有能力發(fā)現(xiàn)問題
3.1.6 演練:針對虛擬的軟件項目,制定單元測試計劃
3.2 單元測試環(huán)境準備
3.2.1 針對嵌入式系統(tǒng),如何搭建單元測試環(huán)境,包括建立測試運行環(huán)境,制定測試驅(qū)動和結(jié)果輸出的代碼模板,以及工具如何嵌入到測試環(huán)境當中
3.2.2 演練:針對虛擬的軟件項目,并根據(jù)測試計劃的演練結(jié)果,進行單元測試環(huán)境準備
3.3 單元測試用例設(shè)計
3.3.1 根據(jù)前面環(huán)節(jié)所搭建好的測試環(huán)境,如何簡潔高效的進行單元測試用例設(shè)計
3.3.2 演練:針對虛擬的軟件項目,并根據(jù)測試環(huán)境準備的演練結(jié)果進行單元測試用例設(shè)計
3.4 單元測試執(zhí)行
3.4.1 根據(jù)前面環(huán)節(jié)所設(shè)計的測試用例,編寫測試代碼,構(gòu)造測試數(shù)據(jù)
3.4.2 執(zhí)行測試
3.4.3 缺陷管理,如何對一個缺陷從提出到后期關(guān)閉進行跟蹤管理
3.4.4 演練:針對虛擬的軟件項目,并根據(jù)測試用例設(shè)計的演練結(jié)果執(zhí)行單元測試
3.4.5 根據(jù)前面環(huán)節(jié)所設(shè)計的測試用例,編寫測試代碼,構(gòu)造測試數(shù)據(jù)
3.4.6 執(zhí)行測試
3.4.7 缺陷管理,如何對一個缺陷從提出到后期關(guān)閉進行跟蹤管理
3.4.8 演練:針對虛擬的軟件項目,并根據(jù)測試用例設(shè)計的演練結(jié)果執(zhí)行單元測試
3.5 單元測試結(jié)果分析
3.5.1 根據(jù)測試所產(chǎn)生的數(shù)據(jù),如工作量、測試數(shù)、缺陷數(shù)和缺陷分類,評估測試的有效性,評估測試對象的質(zhì)量情況
3.5.2 介紹測試度量分析方法
3.5.3 演練:針對虛擬的軟件項目,并根據(jù)測試執(zhí)行的演練結(jié)果進行單元測試結(jié)果分析
4、 單元測試組織與團隊
本章節(jié)學習目標:了解如何管理一個測試團隊,包括個人技能,團隊能力,沖突管理,績效考核,測試團隊成員的選、用、育、留等環(huán)節(jié)。
4.1 企業(yè)測試體系典型問題分析
4.2 測試技能發(fā)展歷程
4.3 測試體系如何從無到有建設(shè)?
4.4 如何從功能測試到測試平臺建設(shè)?
4.5 測試組織發(fā)展歷程
4.6 建立獨立的測試組織
4.7 如何建設(shè)高水平的測試部門?
4.8 企業(yè)測試文化的建立及培養(yǎng)
4.9 團隊組織架構(gòu)
4.10 個能技能
4.11 測試團隊角色分類
4.12 測試團隊的溝通
4.13 測試團隊沖突管理
4.13.1 正確對待缺陷
4.13.2 具備良好的態(tài)度
4.13.3 開發(fā)和測試的合作
4.14 績效考核管理
4.15 招聘優(yōu)秀的軟件測試工程師
4.16 測試人員的職業(yè)通道
4.17 激勵測試人員
4.18 測試團隊的培養(yǎng)和提升
實例演練1:在進度緊張的情況下,測試人員如何處理好和項目經(jīng)理,開發(fā)人員的關(guān)系?
5、 單元測試過程和工具介紹(包括開源工具和商用工具舉例)
本單元學習目標:熟悉單元測試過程和所使用的工具,包括嵌入式系統(tǒng)的測試工具的介紹和使用。
5.1 介紹單元測試活動整個軟件開發(fā)過程中的分布,以及與其它項目活動之間的關(guān)系
5.2 介紹單元測試所涉及測試工具,如覆蓋度統(tǒng)計工具、內(nèi)存檢查工具等
5.3 演練:工具使用練習
5.4 腳本和腳本語言(TCL/TK、PYTHON、VB、RUBY、SHELL等)
5.5 測試缺陷管理工具(QC、BUGZILLA、IBM lutos notes)
5.6 測試用例管理工具(TD、TESTLINK、BUGFREE等)
5.7 測試工具部署
5.8 自動化測試框架介紹
5.9 開源測試工具
5.10 單元測試工具開發(fā)
5.11 單元測試工具分類
5.12 單元測試工具的收益分析
5.13 項目研討:單元測試是否可以促進項目進度,節(jié)省質(zhì)量成本?
6、 基于敏捷開發(fā)模式的單元測試管理
本章節(jié)學習目標:了解在敏捷開發(fā)模式下的測試管理,測試人員如何參與敏捷項目。
6.1 敏捷測試的必要性
6.2 敏捷的價值
6.3 敏捷測試團隊中角色與活動場景演練
6.4 敏捷測試團隊的運作方式
6.5 敏捷測試員的十條法則
6.6 面向技術(shù)的測試管理
6.7 敏捷測試四象限管理
6.8 敏捷測試成功的關(guān)鍵要素
6.9 敏捷開發(fā)過程中的單元測試策略
6.10 測試人員和開發(fā)人員的單元測試任務(wù)的分工
6.11 敏捷單元測試的典型實踐
6.12 研討:如何構(gòu)建高效敏捷單元測試團隊?
7、 構(gòu)建企業(yè)級測試體系建設(shè)
本章節(jié)主要學習單元測試如何推進?
7.1 案例:某企業(yè)測試體系存在的問題分析
7.2 企業(yè)測試體系典型問題分析
7.3 測試技能發(fā)展歷程
7.4 測試體系如何從無到有建設(shè)?
7.5 如何從功能測試到測試平臺建設(shè)?
7.6 測試組織發(fā)展歷程
7.7 建立獨立的測試組織
7.8 如何建設(shè)高水平的產(chǎn)品測試部門?
8、 課程總結(jié)與回顧
本章節(jié)學習目標:針對兩天的課程,進行課程回顧,總結(jié)學習成果。
研討:根據(jù)我公司現(xiàn)狀,如何推進軟件單元測試管理體系?