01株灸、測試基礎-學習目標、課程內容芦劣、引入
掌握什么是軟件測試;
掌握測試的目的;
掌握軟件生命周期的各個階段以及相互關系;
初步了解軟件生命周期各階段的具體工作內容;
大致了解軟件研發(fā)團隊的組織形式和研發(fā)流程。
軟件測試的定義和目的
軟件生命周期
軟件研發(fā)組織和流程
軟件中產生缺陷的原因
問題討論
網上購物/瀏覽網頁是不是軟件測試?? 不是? ? 軟件使用
用手機/電腦打游戲是不是軟件測試?? 不是? ? 軟件使用
使用Office辦公軟件是不是軟件測試?? 不是? ? 軟件使用
什么是軟件測試特咆?
1.特定的目的 (購物的增刪改查 軟件運行時的性能) 2.測試是有一定的方法
3.提交缺陷 跟蹤缺陷
軟件測試演示
軟件測試并不神秘,快速入門并不難
功能測試演示
性能測試演示
02、測試基礎-軟件測試的定義
梅爾斯? 《軟件測試的藝術》
G.J.Myers認為(1979):
1 程序測試是為了 發(fā)現錯誤 而執(zhí)行程序的過程;
2 好的測試方案是極可能發(fā)現迄今為止尚未發(fā)現的錯誤的測試方案;
3 成功的測試是發(fā)現了至今為止尚未發(fā)現的錯誤的測試录粱。
25年之后, G.J.Myers在《軟件測試的藝術第二版》中;
所謂軟件測試,就是一個過程或一系列過程,用來確認 計算機代碼
完成了其應該完成的 功能 ,不執(zhí)行其不該有的操作腻格。
什么是軟件測試
目前沒有公認非常完整的定義形式。
1983,IEEE提出的軟件工程標準術語,軟件測試定義如下:
"使用人工和自動手段來運行或測試某個系統(tǒng)的 過程 ",在其目的在于檢驗它是
否滿足規(guī)定的需要或是弄清? 預期結果 與 實際結果 之間的差別"啥繁。
沒有必要一定要背一個概念出來,搞清軟件測試的含義即可:
軟件測試是一個過程,包含若干活動,運行軟件進行測試只是活動之一;
進行軟件測試可以人工方式也可以借助于工具;
進行軟件測試可以 運行軟件 也可以 不運行軟件;
動態(tài) 靜態(tài)
軟件測試的目的不僅僅是為了發(fā)現錯誤菜职。
03、測試基礎-軟件測試的目的
人們對軟件測試目的的認識也經歷了一個過程旗闽。
證明 ? 檢測 預防
表明軟件能夠工作 發(fā)現錯誤? ? ? ? ? 管理質量
20世紀60年代 20世紀70年代中期? ? ? 20世紀90年代
軟件測試目的之證明
20世紀60年代
測試是證明軟件沒有問題酬核。
現在
獲取系統(tǒng)在可接受風險范圍內可用的信心;
嘗試在非正常情況和條件下的功能和特性;
保證一個工作產品是完整的并且可用或者被集成。
軟件測試目的之檢測
20世紀70年代中期
測試是為了發(fā)現錯誤适室。
現在
發(fā)現缺陷嫡意、錯誤和系統(tǒng)不足;
定義系統(tǒng)的能力和局限性;
提供組件、工作產品和系統(tǒng)發(fā)質量信息捣辆。
軟件工程: 1.開發(fā)技術
2.開發(fā)管理
軟件測試目的之預防
預防下一版本可能出現的問題
預防用戶使用軟件時可能出現的問題
提前發(fā)現開發(fā)過程中的問題和風險
大大較低開發(fā)的風險
提供可以用以分析的測試結果數據
了解哪些缺陷的原因和以前的數據進行分析
針對薄弱的環(huán)境進行加強(未雨綢繆)
軟件測試觀念的轉變
傳統(tǒng)測試 現在測試
在開發(fā)的后期介入 已經擴展到了整個軟件生命周期
基于代碼運行的測試 已經擴展到了靜態(tài)的范疇
已發(fā)現錯誤為目的 已經擴展到了錯誤預防的范疇
希望通過測試收集和分析一些數據起到預防缺陷的作用
04蔬螟、測試基礎-軟件測試常見的誤區(qū)
調試和測試是一樣的;
調試是定位錯誤修改程序? ? 測試是找錯誤
調試是隨機性的(程序員)? ? 測試是目的性的
測試組應當為保證質量負責;
質量是做出來的,不是測出來的
過分依賴Beta測試;
(Beta測試是一種驗收測試。所謂驗收測試是軟件產品完成了功能測試和系統(tǒng)測試之后汽畴,在產品發(fā)布之前所進行的軟件測試活動,它是技術測試的最后一個階段,通過了驗收測試琐鲁,產品就會進入發(fā)布階段。驗收測試一般根據產品規(guī)格說明書嚴格檢查產品佑吝,逐行逐字地對照說明書上對軟件產品所做出的各方面要求, 確保所開發(fā)的軟件產品符合用戶的各項要求绳匀。 通過綜合測試之后芋忿,軟件已完全組裝起來,接口方面的錯誤也已排除疾棵,軟件測試的最后一步——驗收測試即可開始戈钢。驗收測試應檢查軟件能否按合同要求進行工作,即是否滿足軟件需求說明書中的確認標準是尔。)
把測試作為新員工的一個過渡工作;
把不合格的開發(fā)人員安排做測試;
關注于測試的執(zhí)行而忽略測試的設計;
測試自動化是萬能的;
測試是可以窮盡的;
測試是為了證明軟件的正確性;
測試是枯燥乏味,缺乏創(chuàng)造力的工作;
非常要求創(chuàng)造力的工作
軟件測試發(fā)主要工作
軟件測試工程師一般會承擔以下一些具體工作;
檢視代碼殉了、評審開發(fā)文檔
進行測試設計、寫作測試文檔(測試計劃拟枚、測試方案薪铜、測試用例等)
目的性,條理性
執(zhí)行測試,發(fā)現軟件缺陷,提交缺陷報告,并確認缺陷最終得到了修正
出現bug會造成什么后果
通過測試度量軟件的質量
05、軟件生命周期-計劃
軟件測試的定義和目的
軟件生命周期
軟件生命周期的各個階段
計劃----需求分析----設計----編碼-----測試-----運行----評價--計劃
軟件研發(fā)組織和流程
軟件中產生缺陷的原因
計劃
工作內容 計算器例子
確定軟件開發(fā)總目標 ? 研發(fā)一個計算器
給出軟件的功能恩溅、性能隔箍、可靠性以及接口等方面的設想; 支持加、減脚乡、乘蜒滩、除,所有運算都需在一定時間之內完成;
研究完成該項目的可行性,探討問題 該項目目前不存在任何技術障礙;
解決方案; 需要在3個月之內完成所有開發(fā)和測試工作,并推向市場;
對可供開發(fā)使用的資源、成本奶稠、可取得
的效益和開發(fā)進度作出估計; 具體計劃參見項目一級計劃(比如測試計劃 質量保證計劃 配置管理計劃)俯艰。
制定完成開發(fā)任務的實施計劃
06、軟件生命周期-需求分析
需求分析(重要 復雜)
客戶(沒有IT背景) 說服客戶
工作內容:
對開發(fā)的軟件進行詳細的定義,由 需求分析人員 和 用戶共同 討論決定,哪些需求 可以滿足 的,并且給予 計算器例子
確切的描述 ,寫出軟件需求說明書SRS(Software Requirement Specification) 功能需求:
十進制加锌订、減竹握、乘、除
八進制加辆飘、減涩搓、乘、除
軟件研發(fā)的類型不同,需求的來源也不同,需求分析中的"用戶"針對的具體對象也不同 二進制加劈猪、減、乘良拼、除
十六進制加战得、減、乘庸推、除
針對 產品 的軟件研發(fā)
需求來源:市場調研(來源市場 女性 男性 兒童 ...) 性能需求:
用戶:市場調研人員 32位十進制加法需在2秒內完成
特點:自己想研發(fā)什么,自己就來研發(fā) 16位十六進制乘法需在10秒內完成
針對 項目 的軟件研發(fā)
需求來源:客戶要求
用戶:實際的客戶
特點:別人想研發(fā)什么,我們幫著研發(fā)
-----------------------------------------------------------------------------------------
設計
工作內容
設計是軟件工程的技術核心,這個階段需要完成設計說明書
概要設計(HLD),在設計階段吧各項需求轉換成相應的體系結構,每一部分是功能明確的模塊;
詳細設計(LLD),對每個模塊要完成的工作進行具體的描述常侦。
計算器例子
概要設計
整個軟件分成六個模塊:界面模塊浇冰、主控模塊、加法模塊
減法模塊聋亡、乘法模塊肘习、除法模塊,主控模塊調用后四個模塊。
加法模塊包含五個函數:加法主函數坡倔、十進制加法函數漂佩、八進制加法函數、二進制加法函數罪塔、
十六進制加法函數投蝉、主函數調用后四個函數。
詳細設計
加法主函數的流程圖(或者偽代碼)
08征堪、軟件生命周期-編碼瘩缆、測試、運行和維護
編碼
工作內容 計算器例子
把軟件設計轉換成計算機可以 用C語言實現詳細設計說明書中描述的所以函數佃蚜。
接受的程序,即寫成以某個程序
設計語言表示的源程序清單,使用RDBMS工具建立數據庫庸娱。
測試
工作內容 計算機例子
測試是檢驗軟件是否符合客戶需求,達到質量要求,一般由獨立的小組執(zhí)行,測試工作分為: 單元測試
單元測試 參照LLD(詳設)
對每一個函數進行測試
集成測試 集成測試
參照HLD(概設)
對函數與函數的集成、模塊與模塊的集成進行測試
系統(tǒng)測試 系統(tǒng)測試
參照SRS
對每一個功能需求谐算、性能需求等進行測試
運行和維護
工作內容
這個階段將軟件交付用戶投入正式使用,可能有多種原因需要對它進行修改,如軟件錯誤 計算機例子
熟尉、系統(tǒng)軟件升級、增強軟件功能氯夷、提高性能等臣樱。 計算器提供給用戶使用,用戶在使用過程中如發(fā)現問題可通過技術支持人員反映,
問題解決后為用戶進行軟件升級....
09、軟件研發(fā)組織和流程-軟件研發(fā)組織
軟件測試的定義和目的
軟件生命周期
軟件研發(fā)組織和流程
軟件中產生缺陷的原因
軟件研發(fā)相關要素
人員 只有合適的人員借助合適的
過程 ? ? ? ? 工具經過合適的過程才能研發(fā)出高質量的軟件
工具
軟件項目組人員組成
項目組一般由 項目經理 領導并負責制定 項目計劃 ,分配任務腮考。
項目組一般有下列人員參與:
分析人員
設計人員
開發(fā)人員
測試人員
配置管理人員
SQA:(軟件質量保證 軟件質量保證(SQA-Software Quality Assurance)是建立一套有計劃雇毫,有系統(tǒng)的方法,來向管理層保證擬定出的標準踩蔚、步驟棚放、實踐和方法能夠正確地被所有項目所采用。軟件質量保證的目的是使軟件過程對于管理人員來說是可見的馅闽。它通過對軟件產品和活動進行評審和審計來驗證軟件是合乎標準的飘蚯。軟件質量保證組在項目開始時就一起參與建立計劃、標準和過程福也。這些將使軟件項目滿足機構方針的要求局骤。)
常見項目組架構
項目經理 -----? SQA(監(jiān)控整個軟件研發(fā)的過程)
開發(fā)經理 測試經理 配置經理
軟件開發(fā)組 軟件測試組 配置管理組
分析人員 測試人員 配置管理員 CMO
設計人員
開發(fā)人員
10、軟件研發(fā)組織和流程-瀑布模型
基本軟件研發(fā)流程
常見的軟件研發(fā)流程:
瀑布模型(00:40)增加了開發(fā)的風險 用戶只能到最后才能看到 開發(fā)后期的測試階段才能發(fā)現 帶來了嚴重的后果
應用的最為廣泛的一種模型,也是最容易理解和掌握的模型,
然而它的缺陷也是顯而易見的暴凑。
螺旋模型
綜合了基本的瀑布式模型和演化/漸增原型方法峦甩。
RUP流程
所有工作流在各個階段都有體現。
IPD流程
從整個產品角度出發(fā),不僅僅針對研發(fā)现喳。
11凯傲、軟件研發(fā)組織和流程-螺旋模型
螺旋模型(00:05) 非橙剑看重風險分析的
確定目標、替代方案和限制
評價替代方案和標識與解決風險
優(yōu)點:設計比較靈活? 使客戶每個階段都可以客戶去參與
缺點:周期長
12冰单、軟件研發(fā)組織和流程-RUP
RUP流程是IBM公司提出來的
工作流
過程
業(yè)務建模
需求
分析和設計
實現
測試
分布
支持
配置與變更管理
項目管理
環(huán)境
階段
初始化 細化 構造 發(fā)布
初始 細化*1 細化*2 構造*1........
13幌缝、軟件研發(fā)組織和流程-IPD
IPD流程? 思想來源一家公司PRTM? ? IBM公司使用
階段 概念 計劃 開發(fā) 驗證 發(fā)布 生命周期
IPMT
PDT
財務
系統(tǒng)工程
研發(fā)
硬件開發(fā)
軟件開發(fā)
結構開發(fā)
工業(yè)設計
測試
資料開發(fā)
技術支持
制造
采購
市場
銷售
14、軟件中產生缺陷的原因
軟件缺陷和Bug
軟件缺陷:既指 靜態(tài) 存在于軟件工作產品(文檔诫欠、代碼)中的錯誤,
也指軟件運行時由于這些錯誤被激發(fā)引起的和軟件產品預期屬性的偏離現象涵卵。
Bug:代碼中的缺陷。有時也被泛指因軟件產品顳部的缺陷引起的軟件產品最終運行時和
預期屬性的偏離呕诉。
軟件錯誤缘厢、軟件缺陷、Bug在實工作中可以認為一樣甩挫。
常見的其他引入缺陷的原因
軟件復雜度越來越高
編程中產生錯誤
需求不斷變更
項目進度的壓力
不重視開發(fā)文檔
...
缺陷類型
所有缺陷可以歸結為三類:
遺漏贴硫;規(guī)定的或預期的需求未體現在產品中(可能未將規(guī)格說明全面實現,也可能需求分析階段就遺漏了需求)
錯誤: 未將規(guī)格說明正確實現(可能設計錯誤、也可能編碼錯誤)
額外的實現:規(guī)格說明并未規(guī)定的需求被納入產品,得到實現
缺陷的放大模型
需求階段缺陷----概要設計階段缺陷----詳細設計階段缺陷----編碼設計階段缺陷
常見的其他引入缺陷的原因
軟件復雜度越來越高
編程中產生錯誤
需求不斷變更
項目進度的壓力
不重視開發(fā)文檔
...