版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
軟件工程導論主講:李傳科Tel-mail:lichuanke8815@163.com1海軟院軟件工程系第7講實現(編碼與測試)7.1編碼7.2軟件測試基礎7.3單元測試7.4集成測試7.5確認測試7.6白盒測試技術7.7黑盒測試技術7.8調試2海軟院軟件工程系8.1編碼
編碼就是把軟件設計結果翻譯成用某種程序設計語言書寫的程序。
程序設計語言分類:機器語言;匯編語言;高級語言主流程序設計語言:面向對象程序設計語言(C++;C#;Java;VB;Dephi
等);腳本語言(Javascript;Vbscript;Jsp;Php;Perl;Ruby/Rails;Python等)3海軟院軟件工程系2程序設計風格(1)源程序文檔化(2)數據說明(3)語句結構(4)輸入/輸出方法1、選擇程序設計語言4海軟院軟件工程系(1)源程序文檔化1.
標識符命名2.
添加注釋3.
程序的視覺組織5海軟院軟件工程系(2)數據說明在設計階段已經確定了數據結構的組織及其復雜性。在編寫程序時,則需要注意數據說明的風格。為了使程序中數據說明更易于理解和維護,必須注意以下幾點:
a.
數據說明的次序應該標準化。有次序易查閱,能加速測試、調試和維護的過程。b.
當多個變量名在一個語句中說明時,應該按字母順序排列這些變量6海軟院軟件工程系(3)語句構造:簡單明了構造語句時應該遵循的原則是,每個語句都應該簡單而直接,不能為了提高效率而使程序變得過分復雜;也不要刻意追求技巧性,使程序編寫得過于緊湊。
例如:A[I]=A[I]+A[T];
A[T]=A[I]-A[T];
A[I]=A[I]-A[T];
temp=A[T];
A[T]=A[I];
A[I]=temp;7海軟院軟件工程系
下述規(guī)則有助于使語句簡單明了:不要為了節(jié)省空間而把多個語句寫在同一行;盡量避免復雜的條件測試;盡量減少對“非”條件的測試;
if(!(char<0||char>9))
改成
if(char>=0&&char<=9)
避免大量使用循環(huán)嵌套和條件嵌套;利用括號使邏輯表達式或算術表達式的運算次序清晰直觀。8海軟院軟件工程系
在設計和編寫程序時應該考慮下述有關輸入輸出風格的規(guī)則:對所有的輸入數據都要進行檢驗,識別錯誤的輸入,以保證每個數據的有效性;檢查輸入項的各種重要組合的合法性,必要時報告輸入狀態(tài)信息;使得輸入的步驟和操作盡可能簡單,并保持簡單的輸入格式;輸入數據時,應允許使用自由格式輸入;應允許缺省值;(4)輸入輸出9海軟院軟件工程系案例: 案例11963年,美國飛往火星的火箭爆炸,損失$10million。原因:FORTRAN循環(huán):
DO5I=1,3誤寫為DO5I=1.3
案例2美國迪斯尼公司的獅子王游戲軟件bug 原因:系統(tǒng)兼容性問題 案例3跨世紀“千年蟲”問題
原因:系統(tǒng)時間計算缺陷7.2軟件測試基礎軟件缺陷10海軟院軟件工程系如何定義是軟件存在缺陷? 由于不能報告沒有看見的問題,因此,沒有看見就不能說存在軟件缺陷!
“一片樹葉飄落在森林中沒有人聽見,眼見為實11海軟院軟件工程系軟件缺陷的定義:(1)軟件未達到產品說明書中已經標明的功能;
(2)軟件出現了產品說明書中指明不會出現的錯誤;
(3)軟件未達到產品說明書中雖未指出但應當達到的目標;
(4)軟件功能超出了產品說明書中指明的范圍;
(5)軟件測試人員認為軟件難以理解、不易使用,或者最終用戶認為該軟件使用效果不良。12海軟院軟件工程系Exchange2000Windows2000項目經理25人約250人開發(fā)人員140人約1700人測試人員350人約3200人測試人員/開發(fā)人員5:2約2:1微軟Exchange2000和Windows2000中的人員結構:軟件產品最大的成本是檢測軟件錯誤、修正軟件錯誤的成本。
在整個軟件開發(fā)中,測試的工作量一般占整個項目工作量的40%左右,甚至>=50%。7.2軟件測試基礎13海軟院軟件工程系“證明程序是正確的!”
?測試不能證明軟件是正確的,也不能證明錯誤的不存在;測試階段測試人員設計出的一系列測試方案,是為了“破壞”已經建造好的軟件系統(tǒng)—竭力證明程序中有錯誤!
7.2.1軟件測試的目的14海軟院軟件工程系【定義】:為尋找錯誤而運行程序的過程?!境晒y試的標準】:能夠發(fā)現錯誤的測試是成功的測試,否則是失敗的測試?!緶y試的目標】: (1)預防錯誤:幾乎不可實現 (2)盡力發(fā)現錯誤軟件測試目標:15海軟院軟件工程系(1)所有測試都應該能追溯到用戶需求;(2)盡早地完成測試計劃;(3)軟件測試不等于程序測試;(4)應由獨立的第三方測試機構來構造測試;(5)測試用例應由輸入數據和預期的輸出結果兩部分組成,并兼顧合理的輸入和不合理的輸入數據;(6)窮舉測試是不可能的;(7)程序修改后要回歸測試;(8)應長期保留測試用例,直至系統(tǒng)廢棄。7.2.2軟件測試準則16海軟院軟件工程系軟件缺陷產生的原因其他6%軟件產品說明書(需求)56%設計8%編寫代碼30%軟件缺陷產生的原因分布17海軟院軟件工程系窮舉測試實例:設程序含5個分支,循環(huán)次數≤20,從A到B的可能路徑
執(zhí)行時間:設測試一次需2ms
窮舉測試需5億年.=5+5+..+5+5≈1020121914AB18海軟院軟件工程系4.如何測試?關鍵技術
---設計測試方案。測試方案
---包括:具體的測試目的,應該輸入的測試數據和預期的結果(測試用例)。不同的測試數據發(fā)現程序錯誤的能力差別很大,為了提高測試效率降低測試成本,應該選用高效的測試數據。因為不可能進行窮盡的測試,選用少量“最有效的”測試數據,做到盡可能完備的測試就變很重要了。19海軟院軟件工程系7.2.3測試方法20海軟院軟件工程系【黑盒法】:如果已經知道了產品應該具有的功能,可以通過測試來檢驗是否每個功能都能正常使用;只關心軟件功能是否正確與完善?!景缀蟹ā浚喝绻喇a品的內部工作過程,可以通過測試來檢驗產品內部動作是否按照規(guī)格說明的規(guī)定正常進行;只關心軟件內部邏輯實現是否正確無誤。7.2.3測試方法21海軟院軟件工程系7.2.4測試步驟22海軟院軟件工程系7.3單元(模塊)測試7.3.1測試重點-5個方面
1.模塊接口-對模塊接口傳遞數據的正確性測試
2.局部數據結構-發(fā)現局部數據說明、初始化等錯誤
3.重要的執(zhí)行通路-選擇最具代表性的通路測試
4.出錯處理通路-設計適當的出錯處理通路
5.邊界條件-測試數據邊界值 單元測試和編碼屬于軟件過程的同一階段;主要使用白盒測試技術。23海軟院軟件工程系7.3.2代碼審查
由審查小組(組長,程序設計者,程序編寫者,程序測試者),人工測試源程序稱為代碼審查。它是一種非常有效的程序驗證技術,對于典型的程序來說,可以查出30%~70%的邏輯設計錯誤和編碼錯誤。單元(模塊)測試方法審查的步驟:小組成員先研究設計說明書,力求理解這個設計。由設計者扼要地介紹他的設計。審查會上程序的編寫者逐個語句地解釋是怎樣用程序代碼實現這個設計的。審查會上對照程序設計常見錯誤,分析審查這個程序。當發(fā)現時,記錄錯誤,繼續(xù)審查。24海軟院軟件工程系7.3.3計算機測試
單元測試通常在編碼階段進行,使用一些輔助模塊去模擬與被測模塊相聯(lián)系的其他模塊。主要有:驅動軟件和存根(樁)軟件。驅動程序:相當于調用被測模塊的“主程序”。(2)
存根(樁)程序:用來代替被測試的模塊所調用的模塊,也稱為“虛擬子程序”。它使用被它代替的模塊的接口,可能做最少量的數據操作,印出對入口的檢驗或操作結果,并且把控制歸還給調用它的模塊。單元(模塊)測試方法25海軟院軟件工程系 驅動程序和存根程序是為了進行單元測試編寫的測試軟件—只是測試用!輸入的測試數據輸出的測試結果驅動模塊被測模塊樁模塊1樁模塊2樁模塊326海軟院軟件工程系7.4集成測試集成測試是測試和組裝軟件的系統(tǒng)化技術,其主要目標是發(fā)現與接口有關的問題。測試任務: (1)數據穿越模塊接口時是否會丟失;
(2)一個模塊是否對另一個模塊產生不利影響;
(3)各子功能組合起來能否達到預期的功能;
(4)個別看來是可以接受的誤差積累是否會放大到不能接受的程度;27海軟院軟件工程系集成測試有兩種方法。
1、非漸增式測試方法,即:先分別測試每個模塊,再把所有模塊按設計要求放在一起結合成所要的程序進行測試。
2、漸增式測試,即:先把下一個要測試的模塊同已經測試好的那些模塊結合起來進行測試,測試完以后再把下一個應該測試的模塊結合進來測試。這種每次增加一個模塊的方法實際上同時完成單元測試和集成測試.
目前在進行集成測試時普遍采用漸增式測試方法。7.4集成測試28海軟院軟件工程系漸增方式把模塊結合到程序中去時,有自頂向下和自底向上兩種集成策略。但在實踐中常采用混合的策略。7.4.1自頂向下集成7.4.2自底向上集成深度(寬度)優(yōu)先組裝,需要存根程序自底向上組裝,需要驅動程序29海軟院軟件工程系7.5確認測試確認測試也稱為驗收測試,它的目標是驗證軟件的有效性。什么是軟件的有效性?7.5.1確認測試的范圍7.5.2軟件配置復查7.5.3Alpha和Beta測試30海軟院軟件工程系7.6黑盒測試技術如果已經知道了產品應該具有的功能,可以通過測試來檢驗是否每個功能都能正常使用—稱為黑盒測試?!魴z查程序各功能是否實現◆性能上是否能夠滿足要求◆又稱為功能測試、數據驅動測試或基于規(guī)格說明的測試里面有是什么東東?31海軟院軟件工程系黑盒測試技術等價類測試邊界值測試錯誤推測回歸測試7.6黑盒測試技術-測試用例設計32海軟院軟件工程系
1等價類劃分法(等價分配)起因窮舉測試不可能希望達到測試的完備和無冗余基本思想把所有可能的輸入數據(有效的和無效的)劃分成若干個等價的子集(稱為等價類別或等價區(qū)間),使得每個子集中的一個典型值在測試中的作用與這一子集中所有其它值的作用相同。33海軟院軟件工程系如何劃分等價類?等價類
有效等價類(合理等價類)無效等價類(不合理等價類)
劃分原則
覆蓋:所選類別應能覆蓋所有可能的類別不相交:一種取值只測試某一種等價類代表性:取值能代表某一種等價類34海軟院軟件工程系劃分等價類的規(guī)則
0100
有效等價類0≤成績≤100無效等價類成績>100
無效等價類成績<0如果輸入條件規(guī)定了取值范圍,可定義一個有效等價類和兩個無效等價類。規(guī)則1
例:輸入學生成績,范圍是0~10035海軟院軟件工程系劃分等價類的規(guī)則:如果規(guī)定了輸入數據的個數,則可定義一個有效等價類和一個無效等價類。規(guī)則2如規(guī)定了輸入數據的一組值,且程序對不同輸入值做不同處理,則每個允許的輸入值是一個有效等價類,并有一個無效等價類(所有不允許的輸入值的集合)。規(guī)則3如果規(guī)定了輸入數據應該遵守的規(guī)則,則可以將符合規(guī)則劃分為一個有效的等價類,而將不符合規(guī)則作為一個無效的等價類規(guī)則4如果規(guī)定輸入的數據必須是整數,則可以劃分出正整數、零、負整數等三個有效類
規(guī)則536海軟院軟件工程系根據等價類設計測試用例:形成等價類表,每一等價類規(guī)定一個惟一的編號設計一測試用例,使其盡可能多地覆蓋尚未覆蓋的有效等價類,重復這一步驟,直到所有有效等價類均被測試用例所覆蓋;設計一新測試用例,使其只覆蓋一個無效等價類,重復這一步驟直到所有無效等價類均被覆蓋;步驟37海軟院軟件工程系案例
例:某報表處理系統(tǒng)要求用戶輸入處理報表的日期,日期限制在2005年1
月至2011年12月,即系統(tǒng)只能對該段期間內的報表進行處理,如日期不在此范圍內,則顯示輸入錯誤信息。系統(tǒng)日期規(guī)定由年、月的6位數字字符組成,前四位代表年,后兩位代表月。如何用等價類劃分法設計測試用例,
來測試程序的日期檢查功能?38海軟院軟件工程系步驟1:等價類劃分“報表日期”輸入條件的等價類表輸入等價類
有效等價類
無效等價類
6位數字字符(1)有非數字字符
(4)少于6個數字字符
(5)多于6個數字字符
(6)年份范圍在2005~2011之間
(2)小于2005
(7)大于2011
(8)月份范圍在1~12之間(3)小于1
(9)大于12
(10)報表日期的類型及長度39海軟院軟件工程系(1)6位數字字符(2)年在2005~2011之間(3)月在1~12之間步驟2:設計有效類的測試用例對表中編號為1,2,3的3個有效等價類用一個測試用例覆蓋.
測試數據
期望結果覆蓋范圍200505等價類(1)(2)(3)輸入有效40海軟院軟件工程系步驟3:設計無效類的測試用例對上表中每個無效類至少設計一個測試用例測試數據期望結果覆蓋范圍001WAY200552005005200405201205200500200513輸入無效輸入無效輸入無效輸入無效輸入無效輸入無效輸入無效等價類(4)等價類(5)等價類(6)等價類(7)等價類(8)等價類(9)等價類(10)不能出現相同的測試用例41海軟院軟件工程系2邊界值分析法被測試子域測試內點測試外點邊界值分析法是使用一些輸入/輸出值正好等于、小于或大于邊界值的測試用例對程序進行測試。邊界值分析法作為一種測試技術,通常作為等價分類法的補充基本思想
42海軟院軟件工程系邊界條件類型的確定
如果軟件測試問題包含確定的邊界,那么數據類型可能是:數值字符位置數量速度地址尺寸……還要考慮數據類型的特征:第一個/最后一個最小值/最大值開始/完成空/滿最慢/最快相鄰/最遠超過/在內……43海軟院軟件工程系
3錯誤推測法(errorguessing)列舉出程序可能有的錯誤和容易發(fā)生錯誤的特殊情況,并據此設計測試用例?;舅枷?/p>
輸入數據為0或使輸出數據為0的輸入最有可能出現錯誤。如果分別使用每組測試數據都沒有問題,可以輸入這些數據的組合。錯誤的確定44海軟院軟件工程系7.7白盒測試技術—戴上X光眼睛測試檢查內部操作是否按規(guī)定執(zhí)行各功能是否得到充分使用又稱為結構測試、邏輯驅動測試或基于程序本身的測試如果知道產品的內部工作過程,可以通過測試來檢驗產品內部動作是否按照規(guī)格說明書的規(guī)定正常進行
--稱為白盒測試。45海軟院軟件工程系測試方法邏輯覆蓋法基本路徑測試語句覆蓋判斷覆蓋條件覆蓋判定條件覆蓋條件組合覆蓋46海軟院軟件工程系案例:程序流程圖條件:T1:a>1T2:b<2T3:a==3T4:x>3執(zhí)行路徑:L13:p1p3L14:p1p4L23:p2p3L24:p2p447海軟院軟件工程系7.7白盒測試技術—語句覆蓋設計若干個測試用例,運行被測試程序,使得每一條可執(zhí)行語句至少執(zhí)行一次。48海軟院軟件工程系輸入預期輸出通過路徑abcxx31103L24測試用例設計案例分析語句覆蓋是最弱的邏輯覆蓋開始a>1ANDb<2a==3ORx>3輸出x=c+1x=x+cFFTTP1P2P3P449海軟院軟件工程系7.7白盒測試技術—判定覆蓋設計若干個測試用例,運行所測程序,使程序中每個判斷的取真分支和取假分支至少執(zhí)行一次
(“L24和L13”或者“L23和L14”)50海軟院軟件工程系測試用例設計案例分析判定仍然是弱的邏輯覆蓋輸入預期輸出通過路徑abcxx21307L2442200L1321102L2342145L14開始a>1ANDb<2a==3ORx>3輸出x=c+1x=x+cFFTTP1P2P3P451海軟院軟件工程系7.7白盒測試技術—條件覆蓋設計足夠多的測試用例,運行所測程序,使程序中每個判斷的每個條件(T1,T2,T3,T4)的每個可能取值至少執(zhí)行一次。52海軟院軟件工程系測試用例設計案例分析條件覆蓋不一定滿足判定覆蓋輸入預期輸出通過路徑abcxx31307L2412200L1331205L2412145L14開始a>1ANDb<2a==3ORx>3輸出x=c+1x=x+cFFTTP1P2P3P453海軟院軟件工程系7.7白盒測試技術—判定/條件覆蓋設計足夠多的測試用例,運行所測程序,使程序中每個判斷的每個條件的每個可能取值至少執(zhí)行一次,并且每個可能的判斷結果也至少執(zhí)行一次。54海軟院軟件工程系開始a>1ANDb<2a==3ORx>3輸出x=c+1x=x+cFFTTP1P2P3P4測試用例設計案例分析能同時滿足判定、條件兩種覆蓋標準輸入預期輸出通過路徑abcxx30307L2412200L1355海軟院軟件工程系7.7白盒測試技術—條件組合覆蓋設計足夠多的測試用例,運行所測程序,使程序中每個判斷的所有可能的條件取值組合至少執(zhí)行一次
。56海軟院軟件工程系測試用例設計案例分析是較好的覆蓋指標。但當判定表達式較為復雜的時
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 消防公考面試題目及答案
- 過境通過制度
- 跨村聯(lián)建議事制度
- 試論北京高職院校自主招生制度
- 2026年及未來5年市場數據中國醫(yī)療責任保險行業(yè)發(fā)展?jié)摿︻A測及投資戰(zhàn)略、數據研究報告
- 2025年央企在線筆試題目及答案
- 2025年筆試錄取前幾名去面試及答案
- 2025年上海事業(yè)編應屆生考試及答案
- 2025年燕山石化校招筆試題庫及答案
- 2025年亳州骨科醫(yī)院筆試題目及答案
- DB36∕T 2141-2025 兒童福利機構兒童檔案管理規(guī)范
- 玻璃幕墻施工專項方案
- 醫(yī)院患者風險評估表及管理流程
- GB/T 21790-2025閃點的測定用小型閉杯試驗儀測定閃燃非閃燃和閃點的方法
- 肝臟代謝重編程-洞察與解讀
- 2025年無人機電池熱管理技術在低空經濟中的應用前景報告
- 2025年水利工程質量檢測員資格考試模擬試題:(混凝土工程)復習題庫及答案
- 龍湖物業(yè)質量管理標準操作手冊
- 《腹部手術圍手術期疼痛管理指南(2025版)》解讀
- 2025年醫(yī)療器械經營自查報告
- 道路硬化安全施工方案
評論
0/150
提交評論