版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
軟件測試毛新軍國防科技大學(xué)計算機(jī)學(xué)院xjmao@軟件工程內(nèi)容軟件測試概述軟件測試的思想和原理軟件測試的過程和策略軟件測試的活動及實施的方法軟件測試技術(shù)白盒和黑盒測試技術(shù)軟件測試計劃及輸出測試計劃制定及測試結(jié)果*1.1示例:軟件中存在缺陷,導(dǎo)致軟件失效軟件缺陷示例:上傳資源后資源數(shù)量沒有變化查找以前上傳的資源找不到示例:軟件中存在缺陷,導(dǎo)致軟件失效軟件缺陷示例:注冊成功卻無法登陸增加資源但沒有顯示......示例:軟件需求中的潛在問題軟件需求模型軟件需求缺陷:沒有正確描述用戶需求?沒有準(zhǔn)確地描述需求?…….示例:軟件設(shè)計中的潛在問題軟件設(shè)計存在缺陷沒有正確實現(xiàn)軟件需求?軟件設(shè)計存在問題?軟件設(shè)計模型示例:程序代碼中的潛在問題程序代碼中的缺陷代碼沒有正確實現(xiàn)功能?代碼編寫不正確?需求和設(shè)計缺陷問題會帶到代碼中,編碼時也會引入問題,導(dǎo)致代碼存在缺陷1.2軟件缺陷的危害無法滿足要求不能正常工作引發(fā)安全事故影響人員安全產(chǎn)生經(jīng)濟(jì)損失......波音737MAX事件
原軟件用于教練飛機(jī)某參數(shù)屏顯范圍±100,重用于新戰(zhàn)斗機(jī),該參數(shù)屏顯范圍應(yīng)該為±300!盡可能減少軟件缺陷非常重要1.2軟件缺陷不可避免人總是會犯錯誤的軟件工程師、用戶等軟件系統(tǒng)太復(fù)雜程序缺陷來自多個源頭需求、設(shè)計、編碼活動模型、文檔、程序制品缺陷成常態(tài)化對于復(fù)雜軟件系統(tǒng)而言缺陷不可避免很難做到無缺陷的軟件你所使用的軟件中是否發(fā)現(xiàn)有缺陷?思考和討論如何應(yīng)對軟件缺陷?如何避免和減少缺陷?如何發(fā)現(xiàn)和修復(fù)缺陷?如何應(yīng)對軟件缺陷?能否有效和快速地發(fā)現(xiàn)軟件缺陷方法:軟件測試(SoftwareTesting)軟件測試方法可以幫助發(fā)現(xiàn)軟件中潛藏的缺陷1.3何為軟件測試?軟件測試是運(yùn)行軟件或模擬軟件的執(zhí)行,發(fā)現(xiàn)軟件缺陷的過程注意點軟件測試通過運(yùn)行程序代碼的方式來發(fā)現(xiàn)程序代碼中潛藏的缺陷,這和代碼走查、靜態(tài)分析形成鮮明對比。軟件測試的目的是為了發(fā)現(xiàn)軟件中的缺陷。它只負(fù)責(zé)發(fā)現(xiàn)缺陷,不負(fù)責(zé)修復(fù)和糾正缺陷在程序代碼中找出軟件缺陷程序是運(yùn)行軟件的載體通過執(zhí)行代碼運(yùn)行軟件通過軟件運(yùn)行發(fā)現(xiàn)缺陷程序是軟件缺陷的載體缺陷分布在模型、文檔和代碼中最終會反映在程序代碼上代碼模型文檔缺陷缺陷缺陷需求和設(shè)計中存在的缺陷最終會反映在程序代碼之中思考和討論如何從程序代碼中找出軟件缺陷?1.4軟件測試的原理前提認(rèn)識:程序本質(zhì)上是對數(shù)據(jù)的處理方法思路:設(shè)計數(shù)據(jù)(測試用例)
運(yùn)行測試用例(程序來處理數(shù)據(jù))
判斷運(yùn)行結(jié)果(是否符合預(yù)期結(jié)果)運(yùn)行代碼程序代碼等測試數(shù)據(jù)結(jié)果評價預(yù)期結(jié)果軟件缺陷為軟件測試而設(shè)計的數(shù)據(jù)稱為測試用例(TestCase)測試用例實際結(jié)果示例:軟件測試的原理加法的功能A
=
B
+
C測試用例測試數(shù)據(jù)1,2,預(yù)期結(jié)果3運(yùn)行程序及測試用例判斷運(yùn)行的實際結(jié)果是否與預(yù)期結(jié)果相一致測試用例測試用例是一個四元偶輸入數(shù)據(jù):交由待測試程序代碼進(jìn)行處理的數(shù)據(jù)前置條件:程序處理輸入數(shù)據(jù)的運(yùn)行上下文,即要滿足前置條件測試步驟:程序代碼對輸入數(shù)據(jù)的處理可能涉及到一系列的步驟,其中的某些步驟需要用戶的進(jìn)一步輸入預(yù)期輸出:程序代碼的預(yù)期輸出結(jié)果示例:測試用例的設(shè)計“用戶登錄”模塊單元的測試用例設(shè)計輸入數(shù)據(jù):用戶賬號=“admin”,用戶密碼=“1234”前置條件:用戶賬號“admin”是一個尚未注冊的非法賬號,也即“T_User”表中沒有名為“admin”的用戶賬號。測試步驟:首先清除“T_User”表中名為“admin”的用戶賬號;其次用戶輸入“admin”賬號和“1234”密碼;第三,用戶點擊界面的確認(rèn)按鈕;最后,系統(tǒng)提示“用戶無法登錄系統(tǒng)”的信息預(yù)期輸出:系統(tǒng)將提示“用戶無法登錄系統(tǒng)”的提示信息1.5軟件測試的任務(wù)軟件測試待測試的程序代碼測試用例軟件缺陷報告,記錄通過測試發(fā)現(xiàn)的軟件缺陷軟件測試任務(wù)2356417盡可能多地找出軟件中缺陷軟件系統(tǒng)軟件缺陷可能隱藏的比較深,難以發(fā)現(xiàn)能否通過軟件測試的方法把軟件中的所有缺陷都找出來?軟件測試的目的目的發(fā)現(xiàn)軟件中的缺陷最大限度、盡可能多的找到缺陷功效發(fā)現(xiàn)的缺陷越多
軟件中遺留的缺陷越少
交付的軟件質(zhì)量越高
后期維護(hù)工作量就越少思考和討論軟件測試沒有發(fā)現(xiàn)缺陷是否意味著軟件就沒有缺陷?為什么?軟件測試方法能夠用于證明軟件無缺陷嗎?1.6軟件測試的步驟明確待測試對象什么粒度的程序代碼設(shè)計測試用例
{<Data,Result>}可能有許多運(yùn)行代碼和測試用例輸入和處理測試用例分析運(yùn)行結(jié)果對比運(yùn)行結(jié)果和預(yù)期結(jié)果,發(fā)現(xiàn)問題和缺陷示例:軟件測試的步驟明確測試對象完成用戶注冊功能的程序模塊(類)設(shè)計測試用例輸入:UserID=xjmao,Psw=se預(yù)期:在數(shù)據(jù)庫中有該用戶密碼的數(shù)據(jù)條目運(yùn)行測試用例運(yùn)行程序,輸入數(shù)據(jù)分析運(yùn)行結(jié)果用戶數(shù)據(jù)庫表中是否有該新用戶的密碼信息
1.7軟件測試面臨的主要挑戰(zhàn)設(shè)計測試用例C1:如何設(shè)計有效的測試用例,提高軟件測試的質(zhì)量C2:如何確保測試用例的合理性,盡可能地發(fā)現(xiàn)缺陷?發(fā)現(xiàn)程序缺陷C3:如何運(yùn)行程序和用例來發(fā)現(xiàn)軟件缺陷?C4:如何采用工具來自動地發(fā)現(xiàn)缺陷,提高測試的效率?軟件測試的前提和關(guān)鍵是要設(shè)計出有效的測試用例1.8軟件測試工程師負(fù)責(zé)軟件系統(tǒng)的測試工作,發(fā)現(xiàn)軟件系統(tǒng)中的缺陷,協(xié)助軟件開發(fā)工程師定位和修復(fù)缺陷服務(wù)于軟件開發(fā)工程師,幫助他們理解和解決軟件中的缺陷充當(dāng)客戶的技術(shù)代表,幫助客戶發(fā)現(xiàn)軟件中存在的各類問題,通過測試來演練客戶驗收內(nèi)容軟件測試概述軟件測試的思想和原理軟件測試的過程和策略軟件測試的活動及實施的方法軟件測試技術(shù)白盒和黑盒測試技術(shù)軟件測試計劃及輸出測試計劃制定及測試結(jié)果*思考和討論軟件缺陷會“潛伏”在程序代碼的哪些地方?2.1程序構(gòu)成及其缺陷的潛在位置程序模塊程序模塊程序模塊程序模塊程序模塊程序模塊程序模塊內(nèi)部程序模塊接口程序模塊間的交互整個軟件系統(tǒng)發(fā)現(xiàn)和消除基本模塊單元中缺陷2.2軟件測試活動需求分析概要設(shè)計詳細(xì)設(shè)計編碼單元測試集成測試確認(rèn)測試軟件開發(fā)過程軟件測試過程要對軟件進(jìn)行系統(tǒng)性、全方位的測試2.3軟件測試活動之間的關(guān)系單元測試單元測試集成測試確認(rèn)測試其他測試(性能、安全、強(qiáng)度等)循序漸進(jìn)、逐層遞進(jìn)地開展軟件測試2.4軟件測試過程制訂軟件測試計劃調(diào)試程序修復(fù)程序回歸測試評價測試有效性出現(xiàn)軟件失效單元測試集成測試確認(rèn)測試代碼檢查/走查評價測試效果1.單元測試測試對象對軟件基本模塊單元進(jìn)行測試過程、函數(shù)、方法、類測試方法大多采用白盒測試技術(shù)測試的內(nèi)容模塊接口測試模塊局部數(shù)據(jù)結(jié)構(gòu)測試模塊獨立執(zhí)行路徑測試模塊錯誤處理通道測試模塊邊界條件測試在軟件詳細(xì)設(shè)計階段就需要設(shè)計單元測試用例及制定單元測試計劃單元測試的運(yùn)行環(huán)境測試用例被測模塊樁模塊樁模塊驅(qū)動程序測試結(jié)果產(chǎn)生測試用例執(zhí)行測試程序生成測試報告<Data,
Result>……代碼運(yùn)行支撐2.集成測試測試對象對軟件模塊之間的接口進(jìn)行測試過程調(diào)用、函數(shù)調(diào)用、消息傳遞、遠(yuǎn)程過程調(diào)用測試技術(shù)采用黑盒測試技術(shù)集成測試的內(nèi)容過程調(diào)用函數(shù)調(diào)用消息傳遞遠(yuǎn)程過程調(diào)用網(wǎng)絡(luò)消息集成測試方法自頂向下集成深度優(yōu)先或者廣度優(yōu)先的策略把各個模塊進(jìn)行組裝和測試自底向上集成自底向上進(jìn)行組裝和測試M1M2M3M4M5M6M7M8M9M10在概要設(shè)計階段就需要設(shè)計集成測試用例及制定集成測試計劃自頂向下集成測試的過程以軟件主控模塊作為測試驅(qū)動模塊,把對主控模塊進(jìn)行單元測試時引入的所有樁模塊用實際模塊替代依據(jù)集成策略(深度優(yōu)先或廣度優(yōu)先),每次只替代一個樁模塊每集成一個模塊立即測試一遍只有每組測試完成后,才著手替換下一個樁模塊為避免修改引入新錯誤,須不斷進(jìn)行回歸測試(即全部或部分地重復(fù)已做過的測試)從步驟(2)開始循環(huán)執(zhí)行上述步驟,直至整個程序結(jié)構(gòu)集成完畢自底向上集成測試的過程把低層模塊集成起來形成實現(xiàn)某個子功能的模塊群(cluster)開發(fā)一個測試驅(qū)動模塊,控制測試數(shù)據(jù)的輸入和測試結(jié)果的輸出對每個模塊群進(jìn)行測試刪除測試使用的驅(qū)動模塊,用實際開發(fā)的高層模塊代替并形成能完成更大功能的新模塊群從步驟(1)開始循環(huán)執(zhí)行上述各步驟,直至整個程序集成完畢2.4.3確認(rèn)測試測試對象對軟件的功能和性能進(jìn)行測試判斷目標(biāo)軟件系統(tǒng)是否滿足用戶需求依據(jù)和標(biāo)準(zhǔn)軟件需求規(guī)格說明書測試技術(shù)采用黑盒測試技術(shù)在需求分析階段就需要設(shè)計確認(rèn)測試用例及制定確認(rèn)測試計劃測試和測試測試軟件開發(fā)公司組織內(nèi)部人員模擬各類用戶行為對即將面市的軟件產(chǎn)品(稱為α版本、內(nèi)部測試版)進(jìn)行測試,發(fā)現(xiàn)錯誤并修正盡可能逼真地模擬實際運(yùn)行環(huán)境和用戶對軟件產(chǎn)品的操作,并盡最大努力涵蓋所有可能的用戶操作方式經(jīng)α測試并進(jìn)行修改后的軟件產(chǎn)品稱為β版本(也稱外部測試版)
測試軟件開發(fā)公司組織各方面的典型用戶在日常工作中實際使用β版本,或為對外進(jìn)行宣傳而將β版本免費(fèi)贈送給典型用戶(很多情況下,β版本可以通過Internet免費(fèi)下載,也可以向軟件公司索?。?,并要求用戶報告異常情況、提出批評意見β測試是在與開發(fā)者無法控制的環(huán)境下進(jìn)行的軟件現(xiàn)場應(yīng)用4.面向?qū)ο筌浖y試OO軟件的構(gòu)成基礎(chǔ)與傳統(tǒng)結(jié)構(gòu)化程序設(shè)計不同OO軟件中數(shù)據(jù)和方法的隱藏與封裝OO編程中存在繼承、多態(tài)等多種機(jī)制OO開發(fā)過程和分析、設(shè)計的重點有所不同,并且關(guān)注于對象的交互與集成多視點的分析和設(shè)計模型、以及與代碼之間存在的映射,使得盡早測試成為可能需要專門針對面向?qū)ο筌浖臏y試方法類測試的前提需要開發(fā)測試驅(qū)動程序創(chuàng)建類實例、運(yùn)行測試用例、向類實例(對象)發(fā)送消息根據(jù)響應(yīng)的值、對象狀態(tài)來判斷是否有缺陷類方法的測試采用白盒測試方法類方法測試的過程設(shè)置測試消息的參數(shù)、全局變量為希望的取值設(shè)置被測對象為希望的狀態(tài)(設(shè)置屬性值)從測試驅(qū)動程序向被測對象實例發(fā)送測試消息測試檢查(1)把被測方法返回值與期望值進(jìn)行比較,若不同記錄未通過(2)對被測對象的狀態(tài)期望的進(jìn)行比較,若不同記錄未通過(3)捕獲所有異常,假如是期望的異常,確定它是否正確。假如無異?;蛴幸粋€不正確的異常,記錄未通過(4)假如必要,對全局變量的結(jié)果與期望的值進(jìn)行比較,若不同記錄未通過假如發(fā)生任何未通過,則診斷和修正該問題交互測試的前提測試驅(qū)動程序?qū)嵗瘏⑴c交互的類實例發(fā)送消息序列判斷結(jié)果交互完成后的輸出交互過程中各個對象的狀態(tài)注意事項消息的內(nèi)容、消息的次序正常的消息序列和不正常的消息序列繼承的測試可以先測試父類,再測試子類重用父類的測試用例來進(jìn)行子類的測試2.4.5非功能性測試性能測試強(qiáng)度測試配置和兼容性測試安全性測試可靠性測試用戶界面測試本地化測試Web測試安裝測試……在需求分析階段就需要設(shè)計非功能測試用例及制定非功能測試計劃對于人機(jī)物三元融合系統(tǒng)而言,非功能測試非常重要性能測試用例示例用例標(biāo)識:12306-NSF-1測試項:12306軟件的性能能否支持同時有10000個用戶登陸使用。并且平均響應(yīng)時間少于1秒。測試輸入:由模擬軟件模擬10000個用戶使用系統(tǒng)。前提條件:12306APP和服務(wù)器軟件已經(jīng)完成并且安裝成功。環(huán)境要求:使用n臺服務(wù)器,配置為××××;使用20臺微機(jī)作為客戶機(jī),配置為××××;模擬軟件在客戶機(jī)安裝;網(wǎng)絡(luò)通暢。測試步驟:(1)啟動服務(wù)器系統(tǒng);(2)由模擬軟件在每個客戶機(jī)分別依次發(fā)送50個用戶登陸請求,并模擬查詢車次的過程;(3)監(jiān)控程序把每個用戶的請求和服務(wù)器響應(yīng)過程、時間記錄在日志中;(4)對記錄結(jié)果進(jìn)行處理,判斷是否每個用戶均獲得成功的服務(wù),并計算平均響應(yīng)時間。預(yù)期輸出:每個模擬用戶都得到正確服務(wù),且對請求的平均響應(yīng)時間小于1秒。強(qiáng)度測試強(qiáng)度測試可被視為性能測試一部分性能測試是為測試軟件系統(tǒng)在正常使用時是否能夠達(dá)到一定性能指標(biāo)強(qiáng)度測試則是對系統(tǒng)不斷施加更大的壓力和使用強(qiáng)度,確定系統(tǒng)瓶頸或者不能接受性能點,來獲得系統(tǒng)能提供最大服務(wù)能力強(qiáng)度測試示例12306系統(tǒng)同時500個用戶使用情況下正常運(yùn)行屬于性能測試把測試場景定為上千用戶、甚至上萬用戶同時使用,那么就是一種強(qiáng)度測試了,以判斷系統(tǒng)能夠承受最大的強(qiáng)度是多少強(qiáng)度測試適用于在可變負(fù)載系統(tǒng)中運(yùn)行的軟件強(qiáng)度測試可與性能測試一起進(jìn)行,但需對測試用例中定義的測試環(huán)境、條件、輸入、步驟等內(nèi)容進(jìn)行調(diào)整,以適應(yīng)強(qiáng)度測試安全性測試設(shè)計測試用例來暴露軟件安全漏洞的過程如設(shè)法破壞數(shù)據(jù)庫管理系統(tǒng)的數(shù)據(jù)安全機(jī)制、突破重要領(lǐng)域軟件系統(tǒng)的用戶訪問控制等安全性測試的過程明確潛在的安全隱患,包括容易遭受攻擊的內(nèi)容、可能作為潛在入侵者的人員角色等明確潛在的入侵行為及時機(jī),例如事務(wù)初始化、系統(tǒng)輸入、執(zhí)行存儲和檢索操作等時候列出每種潛在安全隱患可能遭到的入侵行為及其可能性確定風(fēng)險較高的入侵點,這可通過對包括發(fā)生可能性、后果嚴(yán)重程度等因素進(jìn)行分析得到根據(jù)風(fēng)險的順序,設(shè)計測試用例來實施安全性測試用戶界面測試也稱易用性測試,測試用戶界面是否易于使用且具有較強(qiáng)實用性是否把常用的按鈕或菜單項放在醒目的位置軟件的輸出是否清晰、有序錯誤信息是否直觀和易于理解軟件錯誤順序是否符合用戶的業(yè)務(wù)過程界面的風(fēng)格是否一致Web測試基于Web軟件利用瀏覽器通過超鏈接把各個網(wǎng)頁聯(lián)系在一起,滿足用戶對信息的獲取需要測試大量的對象文本測試,對其中的術(shù)語、題目、內(nèi)容素材、電子郵件地址、電話號碼等信息的準(zhǔn)確度、時效性方面進(jìn)行檢查,文字的拼寫是否有誤也要經(jīng)常進(jìn)行檢查由于窗口縮放會引起文字段落改變,應(yīng)測試是否會導(dǎo)致格式混亂測試超級鏈接測試圖片和視頻測試表單2.5軟件測試的后續(xù)工作軟件測試軟件制品測試數(shù)據(jù)、工具測試評價預(yù)期結(jié)果軟件調(diào)試缺陷修復(fù)軟件缺陷修復(fù)后的軟件測試是為了發(fā)現(xiàn)錯誤,定位缺陷和糾正錯誤不屬于軟件測試的工作范疇軟件測試編寫代碼回歸測試修改程序可能會引入新的錯誤原先“正?!钡某绦颥F(xiàn)在變得“不正?!被貧w測試目的驗證軟件新版本是否從正常狀態(tài)回歸/退化到不正常狀態(tài)方法重新進(jìn)行測試,再次運(yùn)行所有的測試用例來發(fā)現(xiàn)缺陷回歸測試最好能夠自動化單元測試是回歸測試的基礎(chǔ)測試、調(diào)試和排錯目的測試發(fā)現(xiàn)缺陷調(diào)試定位缺陷排錯糾正錯誤獨立性不同測試由獨立的測試小組進(jìn)行調(diào)試和排錯由開發(fā)人員完成測試的重要性和特殊性軟件測試是軟件質(zhì)量保證活動中關(guān)鍵步驟對SRS、設(shè)計規(guī)格說明書以及編碼的最后復(fù)審其工作量往往占軟件開發(fā)總工作量的40%以上確保軟件質(zhì)量的一種有效和可操作的重要手段軟件測試有其特殊性和規(guī)律軟件是邏輯產(chǎn)品軟件有其復(fù)雜性軟件缺陷隱蔽性2.6軟件測試原則(1/2)測試應(yīng)該有計劃在開發(fā)初期就應(yīng)制定測試計劃,測試計劃應(yīng)該在測試之前就應(yīng)該制定所有的測試都應(yīng)該追溯到用戶需求將Pareto原則應(yīng)用于軟件測試80%的錯誤在大約20%的模塊中找到根源測試應(yīng)該從“微觀”開始,逐步轉(zhuǎn)向“宏觀”窮舉測試是不可能的每個測試用例都必須定義預(yù)期的輸出或結(jié)果盡量避免程序的開發(fā)人員來測試他自己編寫的代碼盡量避免程序開發(fā)組織測試其自己開發(fā)的程序軟件測試原則(2/2)應(yīng)詳細(xì)檢查每次測試的結(jié)果測試用例中不僅要說明合法有效的輸入條件,還應(yīng)該描述那些不期望的、非法的輸入條件檢查一個程序沒有完成希望它做的事情只是測試的一半任務(wù),還應(yīng)檢查程序是否執(zhí)行了不希望它做的事情避免隨意舍棄任何測試用例,即使非常簡單的測試用例不應(yīng)在事先假設(shè)不會發(fā)現(xiàn)錯誤的情況下來制定測試計劃一個程序模塊存在更多錯誤的可能性與該模塊已經(jīng)發(fā)現(xiàn)的錯誤數(shù)量成正比測試是一個具有相當(dāng)創(chuàng)新性和智力挑戰(zhàn)的活動內(nèi)容軟件測試概述軟件測試的思想和原理軟件測試的過程和策略軟件測試的活動及實施的方法軟件測試技術(shù)白盒和黑盒測試技術(shù)軟件測試計劃及輸出測試計劃制定及測試結(jié)果思考和討論如何來設(shè)計測試用例?要設(shè)計多少個測試用例?如何才能做到充分的軟件測試?即通過設(shè)計足夠多的測試用例來發(fā)現(xiàn)盡可能多的軟件缺陷3.1程序單元測試測試對象-程序單元基本模塊單元基本類方法、函數(shù)和過程測試內(nèi)容-四個方面執(zhí)行路徑錯誤處理模塊接口邊界條件測試依據(jù)-設(shè)計文檔程序流程程序單元是構(gòu)成軟件系統(tǒng)的基本要素,必須對其進(jìn)行測試以發(fā)現(xiàn)缺陷程序單元測試的依據(jù)和對象測試依據(jù):設(shè)計文檔測試對象:模塊代碼根據(jù)設(shè)計文檔編寫程序代碼根據(jù)設(shè)計信息來設(shè)計測試用例根據(jù)測試用例對代碼進(jìn)行測試示例:程序單元的設(shè)計描述-用戶注冊獲取用戶信息:ID和密碼連接用戶數(shù)據(jù)庫分析用戶ID合法性分析用戶密碼合法性將用戶ID和密碼信息寫到數(shù)據(jù)庫數(shù)字和字符組合不與已有的重復(fù)數(shù)字和字符組合不少于4個字符合法合法不合法不合法軟件設(shè)計的流程圖描述示例:程序單元的設(shè)計描述-用戶登錄軟件詳細(xì)設(shè)計信息的流程圖描述3.2程序單元測試需要解決的問題如何設(shè)計測試用例?根據(jù)設(shè)計文檔設(shè)計測試用例設(shè)計多少個測試用例測試用例的有效性:發(fā)現(xiàn)問題測試用例的簡練性:不冗余,造成重復(fù)測試如何運(yùn)行程序單元來發(fā)現(xiàn)缺陷?程序單元的運(yùn)行程序單元對測試數(shù)據(jù)的處理根據(jù)什么來發(fā)現(xiàn)缺陷設(shè)計程序單元的測試用例運(yùn)行程序單元和測試用例以發(fā)現(xiàn)缺陷3.3軟件測試技術(shù)如何設(shè)計和運(yùn)行測試用例白盒測試技術(shù)基于程序內(nèi)部的執(zhí)行流程來設(shè)計測試用例黑盒測試技術(shù)基于程序的外在功能和接口來設(shè)計測試用例程序內(nèi)部執(zhí)行流程盒子對應(yīng)于基本模塊單元(如類方法、函數(shù)、過程等),測試基本對象程序功能3.4軟件測試技術(shù)-白盒測試設(shè)計測試用例思想根據(jù)程序單元內(nèi)部工作流程來設(shè)計測試用例發(fā)現(xiàn)程序單元缺陷運(yùn)行待測試的程序,檢驗程序是否按內(nèi)部工作流程來運(yùn)行的,如果不是則存在缺陷特點必須了解程序的內(nèi)部工作流程才能設(shè)計測試用例模塊內(nèi)部流程白盒測試用例設(shè)計的指導(dǎo)原則如何設(shè)計測試用例?內(nèi)部執(zhí)行流程生成測試數(shù)據(jù)設(shè)計多少測試用例?遵循覆蓋原則測試用例覆蓋準(zhǔn)則語句覆蓋分支覆蓋路徑覆蓋基本路徑覆蓋12367845語句覆蓋分支覆蓋路徑覆蓋基本路徑覆蓋程序的路徑可能有無窮條,但是基本路徑只有有限條基本路徑測試的思想思想路徑
基本路徑
基本路徑測試基本路徑至少引入一個新語句或者新判斷的程序通道前提軟件模塊的邏輯結(jié)構(gòu)(流程圖)據(jù)此可掌握模塊的基本路徑如何設(shè)計測試用例實現(xiàn)基本路徑覆蓋哪些基本路徑
流圖
流程圖基本路徑測試可實現(xiàn)基本路徑的測試覆蓋步驟1:根據(jù)程序邏輯畫出流程圖voidFunc(intnPosX,intnPosY){ while(nPosX>0){ intnSum=nPosX+nPosY; if(nSum>1){ nPosX減一;nPosY減一; } else{ if(nSum<-1)nPosX-=2; elsenPosX減四; } } //endofwhile}注意流程圖的正確畫法!軟件模塊設(shè)計細(xì)節(jié)示例:程序流程圖獲取用戶信息:ID和密碼連接用戶數(shù)據(jù)庫分析用戶ID合法性分析用戶密碼合法性將用戶ID和密碼信息寫到數(shù)據(jù)庫數(shù)字和字符組合不與已有的重復(fù)數(shù)字和字符組合不少于4個字符合法合法不合法不合法用戶注冊模塊的流程圖步驟2:將流程圖轉(zhuǎn)換為流圖(1/2)何為流圖流圖刻畫程序控制結(jié)構(gòu)但不涉及程序過程性細(xì)節(jié)節(jié)點形式過程塊結(jié)合點判定點12,34,567891011流程圖流圖步驟2:將流程圖轉(zhuǎn)換為流圖(2/2)判定點過程塊結(jié)合點12,34,56789101110911流圖流程圖流圖中的判定點不應(yīng)含復(fù)合條件否則按下列方式增加判定點abXYcXIfaorbThenXElseYEndIfFTFT步驟3:確定基本路徑集合基本路徑的數(shù)量流圖Cyclomatic復(fù)雜度V(G)=E(dges)–N(odes)+2V(G)=11-9+2=41-111-2,3-6-7-9-10-1-111-2,3-4,5-10-1-111-2,3-6-8-9-10-1-1112,34,5678910114條基本路徑流圖步驟4:根據(jù)基本路徑設(shè)計測試用例1-11nPosX取-1,nPosY取任意值1-2,3-4,5-10-1-11nPosX取1,nPosY取11-2,3-6-7-9-10-1–11nPosX取1,nPosY取-11-2,3-6-8-9-10-1-11nPosX取1,nPosY取-3voidFunc(intnPosX,intnPosY){ while(nPosX>0){ intnSum=nPosX+nPosY; if(nSum>1){ nPosX減一;nPosY減一; } else{ if(nSum<-1)nPosX-=2; elsenPosX減四; } } //endofwhile}12,34,567891011流圖設(shè)計信息基本路徑描述每一個測試用例用例標(biāo)識:對該測試用例賦予一個唯一標(biāo)識用例開發(fā)者:誰編寫的本用例用例開發(fā)日期:編寫用例的日期測試項:描述將被測試的具體特征、代碼模塊等對象測試輸入:測試時為程序提供的輸入數(shù)據(jù)前提條件:執(zhí)行測試時系統(tǒng)應(yīng)處于的狀態(tài)或要滿足的條件等環(huán)境要求:執(zhí)行測試所需的軟硬件環(huán)境、測試工具、人員等測試步驟:(1)…;(如點擊“文件”菜單中的“新建”菜單項)(2)…;(如在“testcase”目錄下選擇“test5.dat”文件)……預(yù)期輸出:希望程序運(yùn)行得到的結(jié)果用例間的依賴性:該測試用例依賴或受影響的其它測試用例步驟5:運(yùn)行程序檢驗測試用例運(yùn)行待測試的程序代碼逐個輸入測試用例分析程序的運(yùn)行路徑如果運(yùn)行路徑與期望路徑不一樣,則存在缺陷程序單元測試的運(yùn)行環(huán)境測試用例被測模塊樁模塊樁模塊驅(qū)動程序測試結(jié)果產(chǎn)生測試用例執(zhí)行測試程序生成測試報告<Data,
Result>……單元測試工具C/C++語言-C++Test、Cunit、CppTest.Net開發(fā)-NunitJava語言–JunitPython語言-
PyUnit3.5JUnitJUnit是一個Java語言的單元測試框架由KentBeck和ErichGamma建立開源軟件/下載并安裝JUnit的提出者1997年ErichGamma和KentBeck為Java語言創(chuàng)建了一個簡單有效的單元測試框架ErichGamma《設(shè)計模式》作者之一KentBeck提出軟件開發(fā)方法“極限編程”《重構(gòu):改善既有代碼的設(shè)計》作者在Eclipse中使用JUnit建立一個被JUnit測試的類建立對應(yīng)的JUnitTest類針對自動生成的代碼進(jìn)行修改執(zhí)行測試用例1.建立一個被JUnit測試的類被測試的程序單元:類方法addString()被測試的對象2.建立對應(yīng)的JUnitTest類編寫測試類類似于主控模塊及樁模塊Assert方法(測試用例預(yù)期輸出)assertArrayEquals判斷兩個數(shù)組是否相等assertEquals判斷兩個對象是否相等assertFalse和assertTrue判斷布爾變量是否為False或TrueassertNotNull和assertNull判斷一個對象是否為空assertNotSame判斷兩個引用是否指向同一個對象Fail讓測試用例失敗用于判斷預(yù)期結(jié)果與實際結(jié)果是否一致3.針對自動生成的代碼進(jìn)行修改編寫樁模塊代碼樁模塊代碼4.測試用例執(zhí)行通過GreenBarKeepthebargreentokeepthecodeclean測試用例執(zhí)行失敗測試失敗會顯示紅色的信息JUnit的優(yōu)勢使測試代碼與產(chǎn)品代碼分開針對某一個類的測試代碼通過較少的改動便可以應(yīng)用于另一個類的測試開源軟件,可以進(jìn)行二次開發(fā)方便地對JUnit進(jìn)行擴(kuò)展與開發(fā)環(huán)境Eclipse相互集成單元測試的結(jié)果是什么?程序單元測試報告測試用例的設(shè)計程序單元的運(yùn)行運(yùn)行結(jié)果情況是否與預(yù)期相符一致誰負(fù)責(zé)撰寫該報告程序員程序單元測試報告什么時候?qū)嵤﹩卧獪y試?根據(jù)設(shè)計文檔,在程序代碼編寫之前設(shè)計好測試用例程序單元測試計劃程序代碼寫完之后開展程序單元測試設(shè)計測試用例、制定測試計劃與實際開展測試可在軟件開發(fā)的不同階段來開展!3.6單元測試的基本原則由程序設(shè)計人員來完成應(yīng)在基本功能/參數(shù)上驗證程序的正確性應(yīng)該產(chǎn)生可重復(fù)、一致的結(jié)果具有獨立性,單元測試運(yùn)行/通過/失敗不依賴于別的測試應(yīng)該覆蓋所有代碼路徑應(yīng)該集成到自動測試的框架中必須和產(chǎn)品代碼一起保存和維護(hù)誰負(fù)責(zé)開展程序單元測試?單元測試必須由最熟悉代碼的人來寫程序單元代碼的編寫者完成程序單元測試程序員必須保證自己編寫程序的質(zhì)量誰寫的代碼誰自己來負(fù)責(zé)單元測試思考和討論測試用例的設(shè)計是否可以在編碼階段來完成?為什么單元測試由程序員來完成,集成測試和確認(rèn)測試等由軟件測試工程師來完成?討論3.7黑盒測試思想根據(jù)已知的程序功能和性能(而非內(nèi)部細(xì)節(jié)),設(shè)計測試用例并通過測試檢驗程序的每個功能和性能是否正常依據(jù)程序的功能和性能描述特點知道程序功能和性能,不必了解程序內(nèi)部結(jié)構(gòu)和處理細(xì)節(jié)只清楚模塊的外在功能,不清楚其內(nèi)部的控制邏輯和算法黑盒測試發(fā)現(xiàn)的缺陷類型測試軟件系統(tǒng)是否滿足功能要求不正確或遺漏的功能模塊接口的錯誤數(shù)據(jù)結(jié)構(gòu)或外部數(shù)據(jù)庫訪問錯誤性能的錯誤初始化和終止條件錯誤黑盒測試的特點黑盒測試與軟件如何實現(xiàn)無關(guān),如果軟件實現(xiàn)發(fā)生變化,測試用例仍然可以使用黑盒測試用例的開發(fā)可以與軟件實現(xiàn)并行進(jìn)行,能夠縮短軟件開發(fā)周期黑盒測試-等價分類法思想把程序的輸入數(shù)據(jù)集合按輸入條件劃分為若干個等價類每一個等價類對于輸入條件而言為一組有效或無效的輸入為每一個等價類設(shè)計一個測試用例優(yōu)點減少測試次數(shù),不丟失發(fā)現(xiàn)錯誤的機(jī)會每個等價類中的數(shù)據(jù)具有相同的測試特征等價分類法的基本原則輸入條件為一范圍劃分出三個等價類(1)有效等價類(在范圍內(nèi)),(2)大于輸入最大值,(3)小于輸入最少值輸入條件為一值劃分為三個等價類(1)有效,(2)大于,(3)小于輸入條件為集合劃分二個等價類(1)有效(在集合內(nèi)),(2)無效(在集合外)輸入條件為一個布爾量劃分二個等價類(1)有效(此布爾量),(2)無效(布爾量的非)等價分類法示例z=func(x,y):當(dāng)0<x<1024且y=0,z=-1否則,z=x*lg(y)關(guān)于x的等價類(0,1024)(-#,0][1024,+#)關(guān)于y的等價類{0}(-#,0)(0,+#)X=1,y=0,z=-1X=1,y=-1,z=**X=1,y=1,z=**X=0,y=1,z=**X=0,y=-1,z=**X=0,y=1,z=**X=2000,y=0,z=**X=2000,y=-100,z=**X=2000,y=200,z=**設(shè)計的9個測試用例黑盒測試-邊界值分析法輸入條件是一范圍(a,b)a,b以及緊挨a,b左右的值應(yīng)作為測試用例輸入條件為一組數(shù)選擇這組數(shù)最大者和最小者,次大和次小者作為測試用例如果程序的內(nèi)部數(shù)據(jù)結(jié)構(gòu)是有界的應(yīng)設(shè)計測試用例使它能夠檢查該數(shù)據(jù)結(jié)構(gòu)的邊界軟件更容易在輸入的邊界上出現(xiàn)錯誤邊界值分析法示例z=func(x,y):當(dāng)0<x<1024且y=0,z=-1否則,z=x*lg(y)關(guān)于x的等價類-6個-1,0,11023,1024,1025關(guān)于y的等價類-3個-1,0,1X=1,y=0,z=-1X=1,y=-1,z=**X=1,y=1,z=**X=0,y=0,z=**X=0,y=-1,z=**X=0,y=1,z=**X=-1,y=0,z=**X=-1,y=-100,z=**X=-1,y=200,z=**……測試用例18個3.8基于CASE的軟件測試測試數(shù)據(jù)產(chǎn)生器運(yùn)行測試程序產(chǎn)生測試報告基于大模型的軟件測試自動生成測試用例自動生成測試代碼示例:基于ChatGPT的測試用例生成生成四個測試用例說明測試的目的、步驟和預(yù)期結(jié)果考慮對應(yīng)場景下的邊界條件和異常情況提供測試代碼示例內(nèi)容軟件測試概述軟件測試的思想和原理軟件測試的過程和策略軟件測試的活動及實施的方法軟件測試技術(shù)白盒和黑盒測試技術(shù)軟件測試計劃及輸出測試計劃制定及測試結(jié)果*4.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 燃?xì)夤艿腊踩[患排查方案
- 施工現(xiàn)場安全資料檔案管理方案
- 2025年中職護(hù)理解剖題庫附答案
- 青少年興趣班課程開發(fā)方案
- 安全員A證考試模擬卷包附完整答案詳解【典優(yōu)】
- 品牌形象管理部門工作制度
- 2026年零售行業(yè)數(shù)字化協(xié)議
- 安全員A證考試題庫(得分題)打印附完整答案詳解(奪冠)
- 安全員A證考試通關(guān)模擬卷【必考】附答案詳解
- 押題寶典安全員A證考試考試題庫附答案詳解【黃金題型】
- 2024年風(fēng)電、光伏項目前期及建設(shè)手續(xù)辦理流程匯編
- 不良資產(chǎn)合作戰(zhàn)略框架協(xié)議文本
- 先進(jìn)班級介紹
- 2025年浙江省輔警考試真題及答案
- 2025中國熱帶農(nóng)業(yè)科學(xué)院科技信息研究所第一批招聘4人備考題庫(第1號)附答案
- 雨課堂學(xué)堂在線學(xué)堂云《婚姻家庭法(武漢科大 )》單元測試考核答案
- 安徽寧馬投資有限責(zé)任公司2025年招聘派遣制工作人員考試筆試模擬試題及答案解析
- 2025版北師大版小學(xué)數(shù)學(xué)一年級上冊專項練習(xí)卷
- 酒店簽訂就餐協(xié)議合同
- DB51-T 192-2024 公園城市綠色景觀圍墻營建指南
- 《食品標(biāo)準(zhǔn)與法規(guī)》課件全套 第1-6章 緒論-食品生產(chǎn)經(jīng)營許可和認(rèn)證管理
評論
0/150
提交評論