




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1.軟件測(cè)試概述1.1 什么是軟件測(cè)試 理解軟件測(cè)試的含義,首先需要了解什么是軟件: 可能大家對(duì)軟件不陌生,但對(duì)軟件準(zhǔn)確含義的理解并不十分清楚。 軟件就是為了在計(jì)算機(jī)上實(shí)現(xiàn)某些任務(wù)而產(chǎn)生的指令代碼和數(shù)據(jù)集合,也包括了所有與指令代碼和數(shù)據(jù)集合相聯(lián)系的表示方法。換句話說,軟件不但包含老程序源代碼,還包含了所有在需求,分析設(shè)計(jì)等階段產(chǎn)生的模型的表示方法(包括大量的標(biāo)準(zhǔn)輸出組件,數(shù)據(jù)設(shè)計(jì)模型,設(shè)計(jì)設(shè)計(jì)模型,遠(yuǎn)景規(guī)劃,風(fēng)險(xiǎn)列表等等)。 明白了軟件的定義,接下來說明什么是軟件測(cè)試: 軟件測(cè)試:軟件測(cè)試是發(fā)現(xiàn)并指出軟件中存在缺陷的過程,這個(gè)過程指明和標(biāo)注問題存在的正確位置,詳細(xì)記錄導(dǎo)致問題出現(xiàn)的操作步驟,即
2、使儲(chǔ)存當(dāng)時(shí)的錯(cuò)誤狀態(tài),以上組合在一起便于測(cè)試后問題能夠準(zhǔn)確再現(xiàn)。1.軟件測(cè)試概述1.2 軟件測(cè)試目的 G.J.Myers 在其所著的The art of Software Testing中列出了4條測(cè)試觀點(diǎn): 軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程; 測(cè)試是為了證明程序有錯(cuò),而不是證明程序無錯(cuò)誤; 一個(gè)好的測(cè)試用例在于它能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯(cuò)誤; 一個(gè)成功的測(cè)試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。 軟件測(cè)試并不以發(fā)現(xiàn)錯(cuò)誤為唯一目的,除此之外,還包括如下目的: 證明我們所做的是客戶所需的; 確保編碼人員正確理解設(shè)計(jì)的意圖; 通過回歸測(cè)試來保證目前運(yùn)行的程序在將來仍然可以正常工作。1.軟件測(cè)試概述1.3
3、 軟件測(cè)試原則 盡早和不斷的測(cè)試; 徹底的測(cè)試不可能; 由小到大的測(cè)試范圍; 避免檢查自己的代碼; 追溯至用戶需求; 考慮到各種輸入; 錯(cuò)誤集中發(fā)現(xiàn)現(xiàn)象; 跟蹤測(cè)試錯(cuò)誤結(jié)果; 合理安排測(cè)試計(jì)劃; 錯(cuò)誤的關(guān)聯(lián)和依賴; 測(cè)試結(jié)果的全面檢查; 及時(shí)更新測(cè)試。2.單元測(cè)試概述2.1 什么是單元測(cè)試 單元通俗的說就是指一個(gè)實(shí)現(xiàn)簡(jiǎn)單功能的函數(shù)。單元測(cè)試就是只用一組特定的輸入(測(cè)試用例)測(cè)試函數(shù)是否功能正常,并且返回了正確的輸出。單元測(cè)試的覆蓋種類1.語句覆蓋:語句覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)試程序,使得每一條可執(zhí)行語句至少執(zhí)行一次。2.判定覆蓋(也叫分支覆蓋):設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行所測(cè)程序,使
4、程序中每個(gè)判斷的取真分支和取假分支至少執(zhí)行一次。3.條件覆蓋:設(shè)計(jì)足夠的測(cè)試用例,運(yùn)行所測(cè)程序,使程序中每個(gè)判斷的每個(gè)條件的每個(gè)可能取值至少執(zhí)行一次。4.判定條件覆蓋:設(shè)計(jì)足夠的測(cè)試用例,運(yùn)行所測(cè)程序,使程序中每個(gè)判斷的每個(gè)條件的每個(gè)可能取值至少執(zhí)行一次,并且每個(gè)可能的判斷結(jié)果也至少執(zhí)行一次。5.條件組合測(cè)試:設(shè)計(jì)足夠的測(cè)試用例,運(yùn)行所測(cè)程序,使程序中每個(gè)判斷的所有條件取值組合至少執(zhí)行一次。6.路徑測(cè)試:設(shè)計(jì)足夠的測(cè)試用例,運(yùn)行所測(cè)程序,要覆蓋程序中所有可能的路徑。2.單元測(cè)試概述2.2 單元測(cè)試誤區(qū) 單元測(cè)試不是規(guī)范單元測(cè)試是一種有力的手段,它體現(xiàn)了一種特殊文檔形式,而且可以自動(dòng)執(zhí)行,單元測(cè)
5、試提供的約束條件,似乎使它成為了整個(gè)系統(tǒng)的規(guī)范,但是單元測(cè)試存在固有弊端,我們最好將單元測(cè)試看做是規(guī)范的補(bǔ)充,而不是整個(gè)規(guī)范。 它浪費(fèi)了太多的時(shí)間實(shí)踐中,進(jìn)行完整的單元測(cè)試和編寫實(shí)際的代碼所花費(fèi)的精力大致上是相同的。一旦完成了這些單元測(cè)試工作,很多BUG將被糾正,在確信已完成的系統(tǒng)穩(wěn)定可靠的情況下,實(shí)現(xiàn)人員能夠進(jìn)行更高效的集成工作,所以單元測(cè)試是對(duì)項(xiàng)目可用時(shí)間更高效的利用。 它僅僅是證明這些代碼做了什么簡(jiǎn)單的測(cè)試代碼做了什么,無法證明任何事情。測(cè)試不僅僅要發(fā)現(xiàn)編譯器給出的BUG,還要理解這個(gè)被測(cè)單元原本要做什么,而不是它實(shí)際做了什么。 是不是可以不進(jìn)行單元測(cè)試編碼不是一個(gè)可以一次性通過的過程,
6、你所認(rèn)為的正確局限在你的正確思維中,或者局限在某個(gè)時(shí)間段中,而當(dāng)這種正確性因?yàn)榄h(huán)境而被否定時(shí),Bug就產(chǎn)生了 集成測(cè)試將會(huì)抓住所有的BUG測(cè)試無法達(dá)到它所應(yīng)該有的全面性,一些缺陷將被遺漏,很多BUG將被忽略。2.單元測(cè)試概述2.3 測(cè)試用例2.3.1 測(cè)試用例概念及類型 測(cè)試用例是期望值,執(zhí)行條件,實(shí)際值的集合(部分特殊測(cè)試用例包含測(cè)試數(shù)據(jù)),根據(jù)測(cè)試目的的不同可分為如下3種具體類型: 需求測(cè)試用例測(cè)試需求是否富豪需求規(guī)范。一個(gè)好的需求用例可以用少量的測(cè)試用例就能偶覆蓋所有的程序功能。 設(shè)計(jì)測(cè)試用例測(cè)試設(shè)計(jì)是否符合系統(tǒng)邏輯結(jié)構(gòu)。設(shè)計(jì)測(cè)試用例可以涉及到需求測(cè)試用例沒有覆蓋的代碼空間(例如界面的設(shè)
7、計(jì))。 代碼測(cè)試用例測(cè)試代碼的邏輯結(jié)構(gòu)和使用的數(shù)據(jù)。代碼測(cè)試用例是基于運(yùn)行軟件和數(shù)據(jù)結(jié)構(gòu)的,它保證可以覆蓋所有的程序分支,最小的語句和輸出。2.單元測(cè)試概述2.3.2 測(cè)試用例構(gòu)成 不管哪種測(cè)試用例,都不可避免地在內(nèi)容中涉及到三類數(shù)據(jù):正常數(shù)據(jù),邊界值和錯(cuò)誤數(shù)據(jù): 正常數(shù)據(jù)在測(cè)試中所用的正常數(shù)據(jù)的量是最大的,而且也是最關(guān)鍵的。 邊界值邊界測(cè)試是介于正常數(shù)據(jù)和錯(cuò)誤數(shù)據(jù)之間的一種數(shù)據(jù)。對(duì)數(shù)據(jù)的使用多考慮0值,負(fù)值等特殊情況。 錯(cuò)誤數(shù)據(jù)錯(cuò)誤數(shù)據(jù)是編寫與程序輸入規(guī)范不符的數(shù)據(jù)從而檢測(cè)輸入篩選,錯(cuò)誤處理等程序的分支,好的系統(tǒng)錯(cuò)誤處理語句是正常執(zhí)行語句的2倍。3.Junit單元測(cè)試3.1 Junit單元測(cè)
8、試好處 在JAVA編程環(huán)境中,Junit Framework是一個(gè)已經(jīng)被多數(shù)JAVA程序員采用和實(shí)證的優(yōu)秀測(cè)試框架。開發(fā)人員只需要按照J(rèn)unit的約定編寫測(cè)試代碼,就可以對(duì)自己要測(cè)試的代碼進(jìn)行測(cè)試。Junit單元測(cè)試有如下好處: 可以使用測(cè)試代碼與產(chǎn)品代碼分開; 針對(duì)某一個(gè)類的測(cè)試代碼通過較少的改動(dòng)便可以應(yīng)用與另一個(gè)類的測(cè)試; 易于集成到測(cè)試人員的構(gòu)建過程中,Junit和Ant的結(jié)合可以實(shí)施增量開發(fā); Junit是公開源代碼的,可以進(jìn)行二次開發(fā); 可以方便的對(duì)Junit進(jìn)行擴(kuò)展。3.Junit單元測(cè)試3.2 Junit安裝與配置Junit 是以jar文件(junit.jar)的形式分發(fā)的。為了
9、使用Junit的應(yīng)用程序編寫測(cè)試,只需把Junit的jar文件添加到項(xiàng)目的編譯classPath中。具體步驟如下: 從下載Junit(本次實(shí)驗(yàn)用JUnit3.8.1); 把Junit.zip釋放到計(jì)算機(jī)目錄(例Windows下的E:); 該目錄中,unzip會(huì)為下載的Junit創(chuàng)建一個(gè)子目錄(E:junit3.8.1); 修改系統(tǒng)的環(huán)境變量,在系統(tǒng)變量中增加”CLASS_PATH”關(guān)鍵字,并添加字符串”E:Junit3.8.1Junit.jar”(注意,若CLASS_PATH關(guān)鍵字已經(jīng)存在,則用”;”分隔各個(gè)字符串),確定之后Junit的集成環(huán)境就可以應(yīng)用了。3.Junit單
10、元測(cè)試3.3 Junit測(cè)試設(shè)計(jì)原則 不要測(cè)試簡(jiǎn)單的事 測(cè)試任何可能出錯(cuò)的地方 測(cè)試邊界條件 作為詳細(xì)設(shè)計(jì)文檔和類文檔的衍生 自動(dòng)化 必須100%通過 測(cè)試重用 測(cè)試用例應(yīng)該獨(dú)立 測(cè)試依賴于接口3.Junit單元測(cè)試3.4 Junit核心類及接口類類/接口接口責(zé)任責(zé)任Assert類當(dāng)條件成立時(shí),assert方法保持沉默,但若條件不成立就拋出異常TestResult類該類包含了測(cè)試中發(fā)生的所有錯(cuò)誤或者失敗Test接口可以運(yùn)行Test并把結(jié)果傳遞給TestResultTestListener接口測(cè)試中若產(chǎn)生事件(開始,結(jié)束,錯(cuò)誤,失?。?huì)通知TestListenerTestCase類該類定義了可以
11、用于運(yùn)行多項(xiàng)測(cè)試的環(huán)境(或者說固定設(shè)備)TestSuite類該類運(yùn)行一組Test Case(可包含其他test suite),它是Test的組合BaseTestRunner類Test runner用來啟動(dòng)測(cè)試用戶界面,該類即為超類。以上僅是對(duì)Junit核心類及接口的簡(jiǎn)單介紹,詳細(xì)情況請(qǐng)參閱其他參考書。4.Junit GUI4.1 Junit運(yùn)行包 Junit.runner包中定義了Junit測(cè)試框架的交互形式,該包也是整個(gè)Junit的交互框架(InterFace_Framework)。BaseTestRunner抽象類是這個(gè)包的核心,所有Junit框架和外界進(jìn)行交互的行為都被此包定義。Base
12、TestRunner抽象類分別被Junit中awtui,swingui和textui三個(gè)包中的同名TestRunner方法共同繼承,則海洋形成了三種不同的Junit交互模式,即: 字符串模式:包名為textui; Swing模式:包名為swingui。 AWT模式:包名為awtui;由于時(shí)間關(guān)系,僅對(duì)前兩種模式的操作方法做簡(jiǎn)單介紹,其他內(nèi)容請(qǐng)參考相關(guān)資料。4.Junit GUI4.2 Junit.Textui字符執(zhí)行包 Junit.textui包是Junit測(cè)試框架的第一類消息表示層包,和它的包名一樣該包所有的測(cè)試結(jié)果信息均使用文本字符串輸出到系統(tǒng)后臺(tái),這樣也提高了整個(gè)測(cè)試執(zhí)行速度,因此該模式
13、是Junit推薦的測(cè)試執(zhí)行模式。 例:使用字符界面運(yùn)行JUnit3.8.1下的所有測(cè)試?yán)樱?在Windows下打開一個(gè)命令行窗口到 E:junit3.8.1目錄下(cd /d E:junit3.8.1 ),然后執(zhí)行如下命令: java -cp junit.jar;. junit.textui.TestRunner junit.samples.AllTests 執(zhí)行完成后,界面顯示測(cè)試所用時(shí)間及測(cè)試通過的用例個(gè)數(shù)(圓點(diǎn)表示)。4.Junit GUI4.3 Junit.Swingui圖形執(zhí)行包 Junit.Swingui包是Junit測(cè)試框架的第三類消息表示層包,和它的包名一樣該包使用了Java
14、 Swing圖形組件將所有的測(cè)試結(jié)果以圖形方式輸出,執(zhí)行的速度較慢。本次實(shí)驗(yàn)主要應(yīng)用該模式。例:使用圖形界面運(yùn)行JUnit3.8.1下的所有測(cè)試?yán)樱?在Windows下打開一個(gè)命令行窗口到 E:junit3.8.1目錄下(cd /d E:junit3.8.1 ),然后執(zhí)行如下命令: java -cp junit.jar;. junit.swingui.TestRunner junit.samples.AllTests也可以執(zhí)行: java -cp junit.jar;. junit.swingui.TestRunner 命令,然后選擇執(zhí)行部分測(cè)試。 執(zhí)行完成后,界面綠色進(jìn)度條表示測(cè)試通過,紅
15、色表示測(cè)試失敗。5. Junit應(yīng)用實(shí)例演示示例1:參見程序:Calculator.java和TestCalculator.java,其中Calculator.java是被測(cè)試程序,包含簡(jiǎn)單的四則運(yùn)算函數(shù),用來實(shí)現(xiàn)加減乘除運(yùn)算; TestCalculator.java是測(cè)試程序,測(cè)試上述函數(shù)的正確性,具體操作方法如下:打開命令行窗口到該兩個(gè)程序的文件夾(例:E:testjava),執(zhí)行如下命令:Javac cp .junit3.8.1junit.jar *java;(編譯所有JAVA文件)Java cp .;.junit3.8.1junit.jar junit.swingui.TestRunn
16、er;(啟動(dòng)圖形測(cè)試界面,選擇相應(yīng)測(cè)試用例執(zhí)行即可!)5. Junit應(yīng)用實(shí)例演示示例2:參見程序: SimpleTestCase.java ,該程序并不測(cè)試其他函數(shù)的正確性,僅是對(duì)Junit中斷言方法的簡(jiǎn)單應(yīng)用,具體見程序內(nèi)容: 具體操作方法如下:打開命令行窗口到該程序的文件夾(例:E:testjava),執(zhí)行如下命令:Javac cp .junit3.8.1junit.jar *java;(編譯所有JAVA文件)執(zhí)行該測(cè)試用例有如下兩種方法:1)直接啟動(dòng)圖形界面,選擇相應(yīng)測(cè)試用例執(zhí)行,應(yīng)用如下命令:Java cp .;.junit3.8.1junit.jar junit.swingui.T
17、estRunner;2)使用Junit的Main方法:需要在程序中加入main方法(分圖形模式和文本模式),參見上述程序執(zhí)行命令如下:Java cp .;.junit3.8.1junit.jar SimpleTestCase5. Junit應(yīng)用實(shí)例演示示例3: 本示例是一個(gè)項(xiàng)目工程(工程名為eclipseSample),需要在Eclipse集成開發(fā)平臺(tái)中運(yùn)行。 該程序設(shè)計(jì)了多個(gè)接口,并編寫程序?qū)崿F(xiàn)了接口,之后對(duì)實(shí)現(xiàn)類進(jìn)行了多方測(cè)試,有興趣的同學(xué)可以好好熟悉本程序。6. Junit測(cè)試IDE 目前已經(jīng)有很多JAVA的IDE編輯工具集成了Junit插件,可以直接在其繼承編碼環(huán)境中自動(dòng)生成測(cè)試框架,例如Eclipse,NetBeans等開發(fā)工具。 相關(guān)配置開發(fā)方法可以參見其他參考書籍,在此不再詳解。實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)?zāi)康模簩?shí)驗(yàn)?zāi)康模?.加深對(duì)軟件測(cè)試方法的理解;2.培養(yǎng)學(xué)生分析、設(shè)計(jì)測(cè)試用例的能力;3.重點(diǎn)掌握應(yīng)用Junit框架設(shè)計(jì)測(cè)試用例的方法。實(shí)驗(yàn)時(shí)間:實(shí)驗(yàn)時(shí)間:4學(xué)時(shí)實(shí)驗(yàn)內(nèi)容:實(shí)驗(yàn)內(nèi)容: 編寫類似于“冒泡排序算法”、“求素?cái)?shù)”等模塊程序,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 合同之冷凍食品購(gòu)銷合同
- 創(chuàng)新思維訓(xùn)練在小學(xué)數(shù)學(xué)思維提升教案
- 建筑勞務(wù)鋼筋工分包合同
- 2025年陽江貨運(yùn)資格證模擬考試題庫(kù)
- 抽真空合同范文6篇
- 客服回訪合同模板7篇
- 2025年高中化學(xué)新教材同步 必修第一冊(cè) 第2章 第3節(jié) 第1課時(shí) 物質(zhì)的量 摩爾質(zhì)量
- 認(rèn)識(shí)三角形(2)教學(xué)設(shè)計(jì)-2024-2025學(xué)年北師大版(2024)七年級(jí)數(shù)學(xué)下冊(cè)
- 中學(xué)生拒絕校園霸凌 從我做起班會(huì)教案
- 土地糾紛調(diào)解合同范本
- 海綿城市建設(shè)技術(shù)標(biāo)準(zhǔn) DG-TJ08-2298-2019
- 2024年2天津理工大學(xué)馬克思主義基本原理概論(期末考試題+答案)
- 跟著名著《小王子》學(xué)高考英語讀后續(xù)寫絕佳的續(xù)寫清單-高中英語作文復(fù)習(xí)專項(xiàng)
- 產(chǎn)教融合大學(xué)科技園建設(shè)項(xiàng)目實(shí)施方案
- 交通法律與交通事故處理培訓(xùn)課程與法律解析
- 廣西版四年級(jí)下冊(cè)美術(shù)教案
- 《換熱器及換熱原理》課件
- 兒童權(quán)利公約演示文稿課件
- UPVC排水管技術(shù)標(biāo)準(zhǔn)
- MSA-測(cè)量系統(tǒng)分析模板
- 血透室公休座談水腫的護(hù)理
評(píng)論
0/150
提交評(píng)論