




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
SOFTWAREENGINEERING第7章實(shí)現(xiàn)SOFTWAREENGINEERING第7章實(shí)現(xiàn)實(shí)現(xiàn)包括編碼和測(cè)試兩個(gè)階段編碼:把軟件設(shè)計(jì)的結(jié)果翻譯成計(jì)算機(jī)可以“理解”的形式—用某種程序設(shè)計(jì)語言書寫的程序。程序的質(zhì)量取決于軟件設(shè)計(jì)的質(zhì)量和選用的程序設(shè)計(jì)語言的特點(diǎn)及編碼風(fēng)格。軟件測(cè)試對(duì)軟件可靠性影響巨大。測(cè)試的目的:在軟件投入生產(chǎn)性運(yùn)行之前,盡可能多地發(fā)現(xiàn)軟件中的錯(cuò)誤。軟件測(cè)試:?jiǎn)卧獪y(cè)試和綜合測(cè)試。通常占軟件開發(fā)總工作量的40%SOFTWAREENGINEERING實(shí)現(xiàn)包括編碼和測(cè)試兩個(gè)階段SOFTWAREENGINEERSOFTWAREENGINEERING§7.1編碼7.1.1選擇程序設(shè)計(jì)語言編碼前的一項(xiàng)重要工作就是選擇一種適當(dāng)?shù)某绦蛟O(shè)計(jì)語言。程序設(shè)計(jì)語言分類:匯編語言高級(jí)語言語言選擇的目標(biāo):使根據(jù)設(shè)計(jì)去完成編碼時(shí)困難最小;需要的程序測(cè)試量較小;得出的程序容易閱讀和維護(hù)。SOFTWAREENGINEERING§7.1編碼7.1SOFTWAREENGINEERING§7.1編碼語言選擇的實(shí)用標(biāo)準(zhǔn):系統(tǒng)用戶的要求。--用戶熟悉的語言可以使用的編譯環(huán)境可以得到的軟件工具工程規(guī)模--過大,可以自己設(shè)計(jì)一個(gè)專用語言程序員的知識(shí)軟件可移植性要求軟件的應(yīng)用領(lǐng)域SOFTWAREENGINEERING§7.1編碼語言選適用各類應(yīng)用領(lǐng)域的語言
年代應(yīng)用領(lǐng)域主要語言其他語言20世紀(jì)60年代商業(yè)COBOLAssembler科學(xué)計(jì)算FORTRANALGOL、BASIC、APL系統(tǒng)AssemblerForth人工智能LISPSNOBOL
現(xiàn)代商業(yè)數(shù)據(jù)庫、C++、Java、電子表格lotus
C、PL/1科學(xué)計(jì)算FORTRAN、C、C++BASIC系統(tǒng)C、C++、JavaAda、Modula人工智能LISP、Prolog
適用各類應(yīng)用領(lǐng)域的語言年代應(yīng)用領(lǐng)域主要語言其他語言SOFTWAREENGINEERING§7.1編碼7.1.2編碼的風(fēng)格(1)好程序的標(biāo)準(zhǔn):簡(jiǎn)明清晰、易讀易懂。為了得到好程序需遵循的規(guī)則:A程序內(nèi)部的文檔:標(biāo)志符:文件名、變量名、常量名、函數(shù)名、數(shù)組名、子程序名、類型名等用戶定義的名稱的總稱。要選用含義鮮明的名字,若縮寫,縮寫規(guī)則要一致,給每個(gè)名字加注釋。注釋:程序員與程序讀者之間通信的重要手段。(模塊的注釋和語句的注釋)視覺組織:源程序清單的布局對(duì)程序的可讀性影響很大。(階梯形式使程序的層次結(jié)構(gòu)清晰)SOFTWAREENGINEERING§7.1編碼7.1【注釋規(guī)范】
一、函數(shù)
在函數(shù)開頭,用如下格式注釋:
/**********************************************/
/*Function:DelStringFromString*/
/*從一個(gè)String刪除另一個(gè)String。*/
/*參數(shù):strByDelete,strToDelete*/
/*strByDelete:被刪除的字符串(原來的字符串)*/
/*strToDelete:要從上個(gè)字符串中刪除的字符串。*/
/*返回:找到并刪除返回0,否則返回-1.*/
/**********************************************/
【注釋規(guī)范】
一、函數(shù)
在函數(shù)開頭,用如下格式注釋:
【編程風(fēng)格】
main()
{
inti,j;
........
for(i==0;i<100;i++)
{
..........
..........
if(i==0)
{
.........
.........
}
..........
..........
}
.........
}一、嚴(yán)格采用梯形層次對(duì)應(yīng)好各層次(鋸齒形風(fēng)格)。如右圖所示:【編程風(fēng)格】
main()
{
inti,j【編程風(fēng)格】
........
OnErrorGotoerrHandle
.......
ExitSub
errHandle:
SelectCaseErr
Case1:
....
Case2:
....
CaseElse:
....
EndSelect
EndSub
對(duì)于通用的錯(cuò)誤處理,可建立通用的錯(cuò)誤處理函數(shù),處理常見的通用的錯(cuò)誤。
錯(cuò)誤處理代碼一般放在函數(shù)末尾,如下(以VB程序?yàn)槔骸揪幊田L(fēng)格】
........
OnErrorGoSOFTWAREENGINEERING§7.1編碼7.1.2編碼的風(fēng)格B數(shù)據(jù)說明:數(shù)據(jù)說明次序標(biāo)準(zhǔn)化;(例按找數(shù)據(jù)結(jié)構(gòu)或類型確定次序)當(dāng)多個(gè)變量名在同一個(gè)語句中說明時(shí),應(yīng)該按字母順序排列這些變量;對(duì)于一個(gè)復(fù)雜的數(shù)據(jù)結(jié)構(gòu),則應(yīng)加注釋。C語句構(gòu)造:不要為了節(jié)省空間而將多條語句寫在同一行;盡量避免復(fù)雜的條件測(cè)試;盡量減少對(duì)“非”條件的測(cè)試;避免大量使用循環(huán)嵌套、條件嵌套;利用括號(hào)使邏輯表達(dá)式或算術(shù)表達(dá)式的運(yùn)算次序清晰直觀。SOFTWAREENGINEERING§7.1編碼7.1SOFTWAREENGINEERING§7.1編碼7.1.2編碼的風(fēng)格D.輸入/輸出對(duì)所有輸入數(shù)據(jù)都進(jìn)行檢驗(yàn);檢查輸入項(xiàng)重要組合的合法性;保持輸入格式簡(jiǎn)單;使用數(shù)據(jù)結(jié)束標(biāo)記,不要要求用戶指定數(shù)據(jù)的數(shù)目;明確提示交互式輸入的請(qǐng)求,詳細(xì)說明可用的選擇或邊界數(shù)值;當(dāng)程序設(shè)計(jì)語言對(duì)格式有嚴(yán)格要求時(shí),應(yīng)保持輸入格式一致。設(shè)計(jì)良好的輸出報(bào)表;給所有輸出數(shù)據(jù)加標(biāo)志。SOFTWAREENGINEERING§7.1編碼7.1SOFTWAREENGINEERING§7.1編碼7.1.2編碼的風(fēng)格E.效率:指程序執(zhí)行速度的快慢和程序占用存儲(chǔ)空間的大小。效率是性能的要求;(分析階段就已確定效率方面的要求)效率是靠好設(shè)計(jì)提高的;與程序的簡(jiǎn)單程度是一致的。三方面:程序運(yùn)行時(shí)間;(盡量避免使用多維數(shù)組、指針、復(fù)雜的表等)存儲(chǔ)器效率—使用能夠保持功能域的結(jié)構(gòu)化控制結(jié)構(gòu),是提高效率的好方法;輸入/輸出的效率。(用戶易理解)SOFTWAREENGINEERING§7.1編碼7.17.2軟件測(cè)試
所謂軟件測(cè)試是通過檢查和提供客觀證據(jù)表明軟件已經(jīng)滿足規(guī)定的需求。軟件測(cè)試是確保軟件質(zhì)量和降低軟件成本的重要手段,是軟件開發(fā)時(shí)期的最后一個(gè)階段,也是軟件質(zhì)量保證中至關(guān)重要的一個(gè)環(huán)節(jié)。本章將重點(diǎn)討論測(cè)試的策略與技術(shù),糾錯(cuò)的策略與技術(shù),以及多模塊軟件的軟件測(cè)試內(nèi)容與方法。7.2軟件測(cè)試所謂軟件測(cè)試是通過檢查和提供客SOFTWAREENGINEERING§7.2軟件測(cè)試基礎(chǔ)目的在軟件投入生產(chǎn)性運(yùn)行之前,盡可能多的發(fā)現(xiàn)軟件中的錯(cuò)誤,并及時(shí)改正它們。測(cè)試過程SOFTWAREENGINEERING§7.2軟件測(cè)試基7.2.1軟件測(cè)試的目標(biāo)測(cè)試的目標(biāo)或定義:為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過程。好的測(cè)試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的方案成功的測(cè)試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試SOFTWAREENGINEERING7.2.1軟件測(cè)試的目標(biāo)SOFTWAREENGINEERE.W.Dijkstra指出:“程序測(cè)試能證明錯(cuò)誤的存在,但不能證明錯(cuò)誤不存在.”
測(cè)試的目的是發(fā)現(xiàn)程序中的錯(cuò)誤,是為了證明程序有錯(cuò),而不是證明程序無錯(cuò).E.W.Dijkstra指出:
把證明程序無錯(cuò)當(dāng)作測(cè)試目的不僅是不正確的,完全做不到的,而且對(duì)做好測(cè)試沒有任何益處,甚至是十分有害的.
軟件測(cè)試要設(shè)法使軟件發(fā)生故障,暴露軟件錯(cuò)誤測(cè)試的“成功”與“失敗”
能夠發(fā)現(xiàn)錯(cuò)誤的測(cè)試是成功的測(cè)試,否則是失敗的測(cè)試。
把證明程序無錯(cuò)當(dāng)作測(cè)試目的不僅是不正確的,完全做不到7.2.1測(cè)試原則(1)所有的測(cè)試都應(yīng)追溯到用戶需求
最嚴(yán)重的錯(cuò)誤(從用戶角度)是那些導(dǎo)致軟件無法滿足需求的錯(cuò)誤。
7.2.1測(cè)試原則測(cè)試與開發(fā)前期工作的關(guān)系決定軟件與系統(tǒng)的配合關(guān)系需求分析概要設(shè)計(jì)詳細(xì)設(shè)計(jì)
編碼單元測(cè)試集成測(cè)試系統(tǒng)測(cè)試驗(yàn)收測(cè)試測(cè)試與開發(fā)前期工作的關(guān)系決定軟件與系統(tǒng)的配合關(guān)系需求分析概要軟件生存期各階段間需保持的正確性用戶要求用戶:我要什么?運(yùn)行結(jié)果計(jì)算機(jī):程序運(yùn)行得到的結(jié)果源程序程序員:我要讓計(jì)算機(jī)什么做?設(shè)計(jì)說明書設(shè)計(jì)員:我要讓軟件做什么?需求說明書分析員:我可以提供什么?12345理解正確性表達(dá)正確性理解正確性設(shè)計(jì)正確性表達(dá)正確性理解正確性運(yùn)行正確性輸入正確性相符嗎?軟件生存期各階段間需保持的正確性用戶要求用戶:運(yùn)行結(jié)果計(jì)算機(jī)開發(fā)前期出現(xiàn)錯(cuò)誤的擴(kuò)展計(jì)劃需求分析設(shè)計(jì)編碼測(cè)試AAB開發(fā)前期出現(xiàn)錯(cuò)誤的擴(kuò)展計(jì)劃需求設(shè)編測(cè)AAB
軟件測(cè)試不等于程序測(cè)試
軟件測(cè)試應(yīng)貫穿于軟件定義與開發(fā)的整個(gè)期間;
據(jù)美國一家公司統(tǒng)計(jì),查出的軟件錯(cuò)誤中,屬于需求分析和軟件設(shè)計(jì)的錯(cuò)誤約占64%,屬于程序編寫的錯(cuò)誤僅占36%。程序編寫的許多錯(cuò)誤是“先天的”。軟件測(cè)試不等于程序測(cè)試
(2)應(yīng)該遠(yuǎn)在測(cè)試開始之前就制定出測(cè)試計(jì)劃。完成需求模型就可以制定測(cè)試計(jì)劃,在建立了設(shè)計(jì)模型之后就可以開始設(shè)計(jì)詳細(xì)的測(cè)試方案。
測(cè)試原則測(cè)試原則(3)pareto原則:測(cè)試發(fā)現(xiàn)的錯(cuò)誤中80%很可能起源于20%的模塊中。應(yīng)孤立這些疑點(diǎn)模塊重點(diǎn)測(cè)試。(4)應(yīng)該從“小規(guī)模”測(cè)試開始,并逐步進(jìn)行“大規(guī)模”測(cè)試。(5)窮舉測(cè)試是不可能的。(6)應(yīng)由獨(dú)立的第三方來構(gòu)造測(cè)試。(開發(fā)和測(cè)試隊(duì)伍分別建立)測(cè)試原則(3)pareto原則:測(cè)試發(fā)現(xiàn)的錯(cuò)誤中80%很可能起源于2測(cè)試原則例:測(cè)試計(jì)算器程序加法測(cè)試1+0=……1+99999999999999999999999999999999=2+0=……2+99999999999999999999999999999999=……99999999999999999999999999999999+99999999999999999999999999999999=1.0+0.1=1.0+0.2=……減法測(cè)試乘法測(cè)試除法測(cè)試求平方根百分?jǐn)?shù)倒數(shù)測(cè)試原則例:測(cè)試計(jì)算器程序程序測(cè)試舉例例:程序Triangle,輸入三個(gè)整數(shù),表示一個(gè)三角形的三個(gè)邊長(zhǎng),該程序產(chǎn)生一個(gè)結(jié)果,指出該三角形是等邊三角形、等腰三角形還是不等邊三角形。程序測(cè)試舉例判斷三角型的測(cè)試用例設(shè)計(jì):
輸入數(shù)據(jù)預(yù)期結(jié)果(1)6;6;6等邊(2)8;8;4等腰(3)4;5;6一般
還應(yīng)輸入非法數(shù)據(jù):
0;7;9-7;3;5a;2;7
等判斷三角型的測(cè)試用例設(shè)計(jì):軟件測(cè)試信息流軟件配置測(cè)試測(cè)試配置測(cè)試工具結(jié)果分析排錯(cuò)可靠性分析測(cè)試結(jié)果錯(cuò)誤預(yù)期結(jié)果出錯(cuò)率
改正的軟件預(yù)測(cè)的可靠性需求規(guī)格說明書軟件設(shè)計(jì)說明書被測(cè)源程序
測(cè)試計(jì)劃測(cè)試用例(測(cè)試數(shù)據(jù))測(cè)試驅(qū)動(dòng)程序軟件測(cè)試信息流軟件測(cè)試測(cè)試測(cè)試結(jié)果排錯(cuò)可靠性測(cè)試錯(cuò)誤預(yù)期出錯(cuò)7.2.4測(cè)試步驟測(cè)試的層次性
單元(模塊)測(cè)試綜合(集成)測(cè)試—子系統(tǒng)測(cè)試,系統(tǒng)測(cè)試系統(tǒng)測(cè)試驗(yàn)收測(cè)試平行運(yùn)行程序錯(cuò)誤的類型
語法錯(cuò)誤結(jié)構(gòu)性錯(cuò)誤功能性錯(cuò)誤接口錯(cuò)誤7.2.4測(cè)試步驟測(cè)試的層次性層次測(cè)試的信息流單元測(cè)試單元測(cè)試單元測(cè)試被測(cè)模塊被測(cè)模塊子系統(tǒng)測(cè)試設(shè)計(jì)信息已測(cè)試的模塊系統(tǒng)測(cè)試已集成的模塊軟件需求驗(yàn)收測(cè)試已確認(rèn)的軟件可交付的軟件系統(tǒng)其他元素編碼測(cè)試驗(yàn)收層次測(cè)試的信息流單元單元單元被測(cè)模塊被測(cè)模塊子系統(tǒng)設(shè)計(jì)信息已SOFTWAREENGINEERING(1)模塊測(cè)試:目的是保證每個(gè)模塊作為一個(gè)單元能正確運(yùn)行,所以又稱單元測(cè)試,發(fā)現(xiàn):編碼和詳細(xì)設(shè)計(jì)階段的錯(cuò)誤。(2)子系統(tǒng)測(cè)試:把經(jīng)過單元測(cè)試的模塊放在一起形成一個(gè)子系統(tǒng)來測(cè)試,著重測(cè)試模塊的接口。(3)系統(tǒng)測(cè)試:把經(jīng)過測(cè)試的子系統(tǒng)裝配成一個(gè)完整的系統(tǒng)來測(cè)試。發(fā)現(xiàn):軟件設(shè)計(jì)、需求說明中的錯(cuò)誤。(4)驗(yàn)收測(cè)試:把軟件系統(tǒng)作為單一的實(shí)體進(jìn)行測(cè)試。發(fā)現(xiàn):系統(tǒng)需求說明書中的錯(cuò)誤。(5)平行運(yùn)行:同時(shí)運(yùn)行新開發(fā)出來的系統(tǒng)和將被它取代的舊系統(tǒng),以便比較新舊兩個(gè)系統(tǒng)的處理結(jié)果。7.2.4測(cè)試的步驟
SOFTWAREENGINEERING(1)模塊測(cè)試:7.SOFTWAREENGINEERING§7.3單元測(cè)試7.3.1測(cè)試重點(diǎn):(1)模塊接口:(對(duì)于所有的輸入數(shù)據(jù)均能校驗(yàn),對(duì)于合法的數(shù)據(jù)正常使用,對(duì)于非法的數(shù)據(jù)不能不予理睬,應(yīng)發(fā)出提示信息。)(2)局部的數(shù)據(jù)結(jié)構(gòu):(3)重要的執(zhí)行通路:(4)出錯(cuò)處理通路:(5)影響上述各方面特性的邊界條件。SOFTWAREENGINEERING§7.3單元測(cè)試7單元測(cè)試實(shí)施步驟實(shí)施步驟1、編譯2、靜態(tài)分析器檢查3、代碼評(píng)審4、計(jì)算機(jī)測(cè)試測(cè)試驅(qū)動(dòng)軟件測(cè)試存根軟件(樁模塊)在確定測(cè)試用例的同時(shí),應(yīng)給出對(duì)應(yīng)的期望結(jié)果。應(yīng)為測(cè)試模塊開發(fā)一個(gè)驅(qū)動(dòng)模塊(driver)和(或)若干個(gè)存根軟件(stub)。單元測(cè)試實(shí)施步驟實(shí)施步驟7.3.2代碼審查組成審查小組(通常4人)對(duì)源程序進(jìn)行人工測(cè)試。通??梢圆槌?0%~70%的邏輯設(shè)計(jì)錯(cuò)誤和編碼錯(cuò)誤審查小組構(gòu)成:組長(zhǎng),一個(gè)很有能力的程序員,但沒有直接參與這項(xiàng)工程程序的設(shè)計(jì)者程序的編寫者程序的測(cè)試者工作方式設(shè)計(jì)者介紹,編寫者解釋程序,其他人傾聽,發(fā)現(xiàn)錯(cuò)誤,組長(zhǎng)記錄預(yù)排,一個(gè)人扮演“測(cè)試者”,其他扮演“計(jì)算機(jī)”,給出測(cè)試方案,“計(jì)算機(jī)”執(zhí)行,測(cè)試用例起到促進(jìn)思考引發(fā)討論的作用。發(fā)現(xiàn)錯(cuò)誤,記錄SOFTWAREENGINEERING7.3.2代碼審查組成審查小組(通常4人)對(duì)源程序進(jìn)行人工SOFTWAREENGINEERING7.3.2代碼審查人工測(cè)試與機(jī)器測(cè)試的區(qū)別:人工測(cè)試可以在一次測(cè)試中發(fā)現(xiàn)多個(gè)錯(cuò)誤以后慢慢加以改正;機(jī)器測(cè)試一次只發(fā)現(xiàn)一個(gè)錯(cuò)誤并加以改正;人工測(cè)試可以分配給不同人員,機(jī)器測(cè)試限用機(jī)器臺(tái)數(shù),前后可能受牽制;從速度上,人工測(cè)試好于機(jī)器測(cè)試。SOFTWAREENGINEERING7.3.2代碼審查7.3.3計(jì)算機(jī)測(cè)試
考慮到被測(cè)模塊與其它模塊的聯(lián)系,因此測(cè)試時(shí)需要使用兩類輔助模塊來模擬其他模塊。
驅(qū)動(dòng)軟件(driver)—
模擬主程序功能,用于向被測(cè)模塊傳遞數(shù)據(jù),接收、打印從被測(cè)模塊返回的數(shù)據(jù)。
存根軟件(stub)—
又稱為假模塊,用于模擬那些由被測(cè)模塊所調(diào)用的下屬模塊功能。被測(cè)模塊驅(qū)動(dòng)軟件存根軟件存根軟件7.3.3計(jì)算機(jī)測(cè)試 考慮到被測(cè)模塊與其它模塊的聯(lián)系,因此SOFTWAREENGINEERINGSOFTWAREENGINEERINGSOFTWAREENGINEERING§7.4集成測(cè)試測(cè)試內(nèi)容:(1)不正確的接口;(2)因存取全局?jǐn)?shù)據(jù)引起的塊間干擾;(3)不能接受的誤差積累。集成的策略(1)非漸增測(cè)試先分別測(cè)試每個(gè)模塊,再把所有模塊按設(shè)計(jì)要求放在一起,結(jié)合成所要的程序,這種方法稱為非漸增測(cè)試。SOFTWAREENGINEERING§7.4集成測(cè)試測(cè)SOFTWAREENGINEERING§8.3集成測(cè)試(2)漸增測(cè)試把下一個(gè)要測(cè)試的模塊同已經(jīng)測(cè)試好的那些模塊結(jié)合起來進(jìn)行測(cè)試,測(cè)試完以后再把下一個(gè)應(yīng)該測(cè)試的模塊結(jié)合進(jìn)來測(cè)試。這種每次增加一個(gè)模塊的方法稱為漸增測(cè)試。SOFTWAREENGINEERING§8.3集成測(cè)試(SOFTWAREENGINEERING非漸增測(cè)試與漸增測(cè)試比較非漸增測(cè)試:--分別測(cè)試每個(gè)模塊需要編寫的測(cè)試軟件多,工作量大。--最終組合發(fā)現(xiàn)問題難定位。--并行測(cè)試所有模塊,能充分利用人力,加快工程進(jìn)度。漸增測(cè)試:--利用已測(cè)試過的模塊作為部分測(cè)試軟件,開銷小--較早發(fā)現(xiàn)接口問題。--新、舊模塊同時(shí)測(cè)試,舊模塊在新的條件下受到新的檢驗(yàn),測(cè)試更徹底。SOFTWAREENGINEERING非漸增測(cè)試與漸增測(cè)試集成(組裝)測(cè)試步驟
自頂向下測(cè)試
先廣后深實(shí)施步驟
先深后廣實(shí)施步驟
由底向上測(cè)試混合方式測(cè)試(sandwichtesting)
集成(組裝)測(cè)試步驟自頂向下測(cè)試SOFTWAREENGINEERING自頂向下結(jié)合:從主控制模塊(“主程序”)開始,沿著軟件的控制層次向下移動(dòng),從而逐漸把每個(gè)模塊結(jié)合起來。SOFTWAREENGINEERING自頂向下結(jié)合:SOFTWAREENGINEERING深度優(yōu)先的結(jié)合方法:先組裝在軟件結(jié)構(gòu)的一條主控制通路上的所有模塊。寬度優(yōu)先的結(jié)合方法:沿軟件結(jié)構(gòu)水平地移動(dòng),把處于同一個(gè)控制層次上的所有模塊組裝起來。SOFTWAREENGINEERING深度優(yōu)先的結(jié)合方法:自頂而下增值M1M4M3M2M6M5程序模塊示意圖S5M1S1S1S1S2S2S2S3S3S3第一步,測(cè)試主控模塊M1設(shè)計(jì)樁模塊S1、S2、S3,模擬被M1調(diào)用的M2、M3、M4。M2M3M4第二步,依次用M2、M3、M4替代樁模塊S1、S2、S3,每替代一次進(jìn)行一次測(cè)試。S4S4S4S5S5第三步,對(duì)由主控模塊M1和模塊M2、M3、M4構(gòu)成的子系統(tǒng)進(jìn)行測(cè)試,設(shè)計(jì)樁模塊S4、S5。M5M6第四步,依次用模塊M5和M6替代樁模塊S4、S5,并同時(shí)進(jìn)行新的測(cè)試。組裝測(cè)試完畢。自頂而下增值M1M4M3M2M6M5程序模塊示意圖S5M1SSOFTWAREENGINEERING自底向上結(jié)合:從“原子”模塊(即在軟件結(jié)構(gòu)最底層的模塊)開始組裝和測(cè)試。SOFTWAREENGINEERING自底向上結(jié)合:確定集成過程的原則
自頂而下方法優(yōu)缺點(diǎn)(與自底向上相反)優(yōu)點(diǎn):在早期實(shí)現(xiàn)并驗(yàn)證系統(tǒng)的功能。缺點(diǎn):需要樁模塊、回歸測(cè)試、人員利用率底確定集成過程的原則自頂而下方法優(yōu)缺點(diǎn)(與自底向上相反)混合策略常見的混合策略:改進(jìn)的自頂而下早期先用自底而上測(cè)試關(guān)鍵模塊,再自頂而下集成總系統(tǒng)。混合法對(duì)較上層使用自頂而下,對(duì)較下層使用自底而上.混合策略常見的混合策略:SOFTWAREENGINEERING7.5驗(yàn)收測(cè)試
驗(yàn)收測(cè)試把軟件系統(tǒng)作為單一的實(shí)體進(jìn)行測(cè)試,測(cè)試內(nèi)容與系統(tǒng)測(cè)試基本類似,它與系統(tǒng)測(cè)試的主要區(qū)別是:在用戶的積極參與下進(jìn)行;使用現(xiàn)場(chǎng)數(shù)據(jù);軟件配置復(fù)查。SOFTWAREENGINEERING7.5驗(yàn)收測(cè)試7.5驗(yàn)收測(cè)試(validationtesting)任務(wù)其任務(wù)是驗(yàn)證系統(tǒng)的功能、性能等特性是否符合需求規(guī)格說明。選擇測(cè)試人員選擇測(cè)試用例實(shí)際運(yùn)行測(cè)試軟件計(jì)劃用戶文檔開發(fā)文檔源程序文本支持環(huán)境有效性測(cè)試軟件配置審查管理機(jī)構(gòu)裁決專家鑒定會(huì)交用戶運(yùn)行維護(hù)測(cè)試報(bào)告軟件配置7.5驗(yàn)收測(cè)試(validationtesting)任務(wù)測(cè)試和測(cè)試測(cè)試
用戶在開發(fā)者的場(chǎng)所進(jìn)行,開發(fā)者對(duì)用戶進(jìn)行指導(dǎo).測(cè)試
最終用戶在客戶場(chǎng)所進(jìn)行,開發(fā)者不在現(xiàn)場(chǎng).測(cè)試和測(cè)試測(cè)試用戶在開發(fā)者的場(chǎng)所進(jìn)行,開發(fā)者對(duì)用戶8.4主要測(cè)試技術(shù)
靜態(tài)分析(不執(zhí)行程序)動(dòng)態(tài)分析(執(zhí)行程序)程序測(cè)試代碼會(huì)審走查8.4主要測(cè)試技術(shù)靜態(tài)分析動(dòng)態(tài)分析程序代碼會(huì)審走動(dòng)態(tài)測(cè)試名稱黑盒測(cè)試白盒測(cè)試單元測(cè)試集成測(cè)試功能測(cè)試驗(yàn)收測(cè)試端到端測(cè)試健全測(cè)試衰竭測(cè)試接受測(cè)試回歸測(cè)試系統(tǒng)測(cè)試負(fù)載測(cè)試強(qiáng)力測(cè)試性能測(cè)試可用性測(cè)試安裝/卸載測(cè)試恢復(fù)測(cè)試兼容測(cè)試安全測(cè)試比較測(cè)試Alpha測(cè)試Beta測(cè)試動(dòng)態(tài)測(cè)試名稱黑盒測(cè)試負(fù)載測(cè)試靜態(tài)和動(dòng)態(tài)測(cè)試汽車的檢查過程:踩油門看車漆打開前蓋檢查發(fā)動(dòng)汽車聽聽發(fā)動(dòng)機(jī)聲音上路行使靜態(tài)測(cè)試動(dòng)態(tài)測(cè)試靜態(tài)和動(dòng)態(tài)測(cè)試汽車的檢查過程:靜態(tài)測(cè)試動(dòng)態(tài)測(cè)試靜態(tài)測(cè)試:基本特征是在對(duì)軟件進(jìn)行分析、檢查和審閱,不實(shí)際運(yùn)行被測(cè)試的軟件。靜態(tài)測(cè)試約可找出30~70%的邏輯設(shè)計(jì)錯(cuò)誤.
對(duì)需求規(guī)格說明書、軟件設(shè)計(jì)說明書、源程序做檢查和審閱,包括:是否符合標(biāo)準(zhǔn)和規(guī)范;通過結(jié)構(gòu)分析、流圖分析、符號(hào)執(zhí)行指出軟件缺陷;
靜態(tài)測(cè)試:基本特征是在對(duì)軟件進(jìn)行動(dòng)態(tài)測(cè)試:通過運(yùn)行軟件來檢驗(yàn)軟件的動(dòng)態(tài)行為和運(yùn)行結(jié)果的正確性動(dòng)態(tài)測(cè)試的兩個(gè)基本要素:
被測(cè)試程序測(cè)試數(shù)據(jù)(測(cè)試用例)動(dòng)態(tài)測(cè)試:通過運(yùn)行軟件來檢驗(yàn)軟件的動(dòng)態(tài)行為和運(yùn)行結(jié)果的正確性動(dòng)態(tài)黑盒測(cè)試—閉著眼睛測(cè)試軟件軟件輸入
不深入代碼細(xì)節(jié)的測(cè)試方法稱為動(dòng)態(tài)黑盒測(cè)試。軟件測(cè)試員充當(dāng)客戶來使用它。輸出動(dòng)態(tài)黑盒測(cè)試—閉著眼睛測(cè)試軟件軟件輸入不深入代碼細(xì)動(dòng)態(tài)白盒測(cè)試—帶上X光眼鏡測(cè)試軟件??????????????3581322.293419985680302829734315250*(1+0.015)*((1+0.015)^360-1)/0.015250*(1+0.015)*((1+0.015)^360-1)/0.015
假如知道一個(gè)盒子包含一臺(tái)計(jì)算機(jī),而另一個(gè)盒子是人用紙筆計(jì)算,就會(huì)選擇不同的測(cè)試用例了解軟件的運(yùn)作方式會(huì)影響測(cè)試手段動(dòng)態(tài)白盒測(cè)試—帶上X光眼鏡測(cè)試軟件????????????測(cè)試的文檔
測(cè)試計(jì)劃
測(cè)試項(xiàng)目的名稱各項(xiàng)測(cè)試的目的、步驟和進(jìn)度測(cè)試用例的設(shè)計(jì)
測(cè)試報(bào)告測(cè)試項(xiàng)目名稱實(shí)測(cè)結(jié)果與期望結(jié)果的比較發(fā)現(xiàn)的問題測(cè)試達(dá)到的效果
測(cè)試的文檔測(cè)試計(jì)劃設(shè)計(jì)測(cè)試方案的目標(biāo)選用最少量的測(cè)試數(shù)據(jù),作到盡可能完備的測(cè)試.好的測(cè)試方案是發(fā)現(xiàn)了迄今為止,尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試方案.測(cè)試方案包括預(yù)定要測(cè)試的功能,應(yīng)該輸入的測(cè)試數(shù)據(jù)和預(yù)期的結(jié)果。測(cè)試用例以發(fā)現(xiàn)錯(cuò)誤為目的而精心設(shè)計(jì)的彝族測(cè)試數(shù)據(jù)。測(cè)試用例=輸入數(shù)據(jù)+期望結(jié)果SOFTWAREENGINEERING設(shè)計(jì)測(cè)試方案的目標(biāo)SOFTWAREENGINEERING7.6白盒測(cè)試
被測(cè)對(duì)象基本上是源程序,以程序的內(nèi)部邏輯結(jié)構(gòu)為基礎(chǔ)設(shè)計(jì)測(cè)試用例。原則是:?
保證被測(cè)程序中每一條獨(dú)立的路徑至少執(zhí)行一次。?
保證所有判斷的每一分支至少執(zhí)行一次。?
保證每一循環(huán)都在邊界條件和一般條件下至少各執(zhí)行一次。?
驗(yàn)證所有各內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性。7.6白盒測(cè)試被測(cè)對(duì)象基本上是源程序,以程序邏輯復(fù)蓋語句覆蓋:選擇足夠多的測(cè)試數(shù)據(jù),使被測(cè)程序中每個(gè)語句至少執(zhí)行一次。判定覆蓋:又叫分支覆蓋,不僅每個(gè)語句至少執(zhí)行一次,而且每個(gè)判定的每種可能的結(jié)果都應(yīng)該至少執(zhí)行一次,也就是每個(gè)判定的每個(gè)分支都至少執(zhí)行一次。條件覆蓋:不僅每個(gè)語句至少執(zhí)行一次,而且使判定表達(dá)式中的每個(gè)條件都取到各種可能的結(jié)果。判定/條件覆蓋:選取足夠多的測(cè)試數(shù)據(jù),使得判定表達(dá)式中的每個(gè)條件都取到各種可能的值,而且每個(gè)判定表達(dá)式也都取到各種可能的結(jié)果。條件組合覆蓋:選取足夠多的測(cè)試數(shù)據(jù),使得每個(gè)判定表達(dá)式中條件的各種可能組合都至少出現(xiàn)一次。SOFTWAREENGINEERING邏輯復(fù)蓋語句覆蓋:選擇足夠多的測(cè)試數(shù)據(jù),使被測(cè)程序中每個(gè)語句白盒測(cè)試
邏輯復(fù)蓋測(cè)試法(logiccoveragetesting)
用流程圖來設(shè)計(jì)測(cè)試用例邏輯覆蓋測(cè)試的5種標(biāo)準(zhǔn)條件組合覆蓋求出判定中所有條件的各種可能組合值,每一可能的條件組合至少執(zhí)行一次發(fā)現(xiàn)錯(cuò)誤的能力
弱
強(qiáng)語句覆蓋每條語句至少執(zhí)行一次判定覆蓋每一判定的每個(gè)分支至少執(zhí)行一次條件覆蓋每一判定中的每個(gè)條件,分別按“真”、“假”至少各執(zhí)行一次判定/條件覆蓋同時(shí)滿足判定覆蓋和條件覆蓋的要求白盒測(cè)試邏輯復(fù)蓋測(cè)試法(logiccoveragete主要用于測(cè)試選擇結(jié)構(gòu)。
語句覆蓋:每個(gè)語句至少執(zhí)行一次。
Testcase:A=2,B=0,X=4.
問題:若AND錯(cuò)寫為OR,或X>1
錯(cuò)寫為X<1,則錯(cuò)誤無法由上例測(cè)出。入口A>1ANDB=0TA=2ORX>1TX=X/AX=X+1返回FF(1)語句覆蓋主要用于測(cè)試選擇結(jié)構(gòu)。入口A>1TA=2TX=X/?
每個(gè)判定的每個(gè)分支至少執(zhí)行一次
Testcases:①A=3,B=0,X=1
②A=2,B=1,X=1
問題:若X>1錯(cuò)寫為X<1,仍然無法被測(cè)出入口A>1ANDB=0TA=2ORX>1TX=X/AX=X+1返回FF(2)判定覆蓋:?每個(gè)判定的每個(gè)分支至少執(zhí)行一次入口A>1TA=2T(3)條件覆蓋
使每個(gè)判定的每個(gè)條件的可能取值至少執(zhí)行一次:第一判定表達(dá)式:設(shè)條件A>1
取真記為T1
假T1
條件B=0
取真記為T2
假T2第二判定表達(dá)式:設(shè)條件A=2
取真記為T3
假T3
條件X>1
取真記為T4
假T4滿足條件:T1,T1,T2,T2T3,T3T4,T4(3)條件覆蓋使每個(gè)判定的每個(gè)條件的可能取值至少執(zhí)行一入口A>1ANDB=0TA=2ORX>1TX=X/AX=X+1返回FF(3)條件覆蓋測(cè)試用例通過滿足的覆蓋ABX路徑條件分支103abeT1,T2,T3,T4b,e211abeT1,T2,T3,T4b,eabcde兩個(gè)測(cè)試用例覆蓋了四個(gè)條件八種可能取值。未覆蓋c、d分支,不滿足判定覆蓋的要求.入口A>1TA=2TX=X/AX=X+1(4)判定/條件覆蓋滿足條件:T1,T1,T2,T2T3,T3T4,T4開始(A>1)AND(B=0)(A=2)OR(X>1)返回X=X/AX=X+1FFTTabdce
選取足夠多的測(cè)試用例,使判斷中的每個(gè)條件的所有可能取值至少執(zhí)行一次,同時(shí)每個(gè)判斷本身的所有可能判斷結(jié)果至少執(zhí)行一次.(4)判定/條件覆蓋滿足條件:T1,T1,開始(4)判定/條件覆蓋測(cè)試用例
通過滿足的覆蓋ABX
路徑條件分支204aceT1,T2,T3,T4c,e111abdT1,T2,T3,T4b,d
能同時(shí)滿足判定、條件兩種覆蓋標(biāo)準(zhǔn)。取值。(4)判定/條件覆蓋測(cè)試用例通過滿足的每個(gè)判定表達(dá)式中條件的各種可能組合都至少出現(xiàn)一次。
全部可能的條件組合為:①A>1,B=0②A>1,B0③A1,B=0④A1,B0⑤A=2,X>1⑥A=2,X1⑦A2,X>1⑧A2,X1Testcases:①A=2,B=0,X=4(TT)②A=2,B=1,X=1(FT)③A=1,B=0,X=2(FT)④A=1,B=1,X=1(FF)
問題:沒有測(cè)試到(TF)的路徑入口A>1ANDB=0TA=2ORX>1TX=X/AX=X+1返回FF(5)條件組合覆蓋:每個(gè)判定表達(dá)式中條件的各種可能組合都至少出現(xiàn)一次。入口A>(6)路徑測(cè)試法路徑測(cè)試法(pathtesting)著眼于程序執(zhí)行路徑的測(cè)試方法
點(diǎn)覆蓋邊覆蓋路徑覆蓋(6)路徑測(cè)試法路徑測(cè)試法(pathtesting)7.6.2控制結(jié)構(gòu)測(cè)試常用方式:基本路徑測(cè)試基本路徑測(cè)試步驟:1.根據(jù)過程設(shè)計(jì)結(jié)構(gòu)畫出相應(yīng)的流圖
如何程序流程圖—流圖的轉(zhuǎn)換?2.計(jì)算流圖的環(huán)形復(fù)雜度p1373.確定線性獨(dú)立路徑的基本集合
獨(dú)立路徑:指至少引入程序的一個(gè)新處理語句集合或一個(gè)新條件的路徑,用流圖術(shù)語描述,獨(dú)立路徑至少包含一條在定義該路徑之前不曾用過的邊。
程序的環(huán)形復(fù)雜度決定了程序中獨(dú)立路徑的數(shù)量。它是確保獨(dú)立路徑至少被執(zhí)行一次所需測(cè)試數(shù)據(jù)的上界。4.設(shè)計(jì)可強(qiáng)制執(zhí)行基本集合中每條路徑的測(cè)試用例SOFTWAREENGINEERING7.6.2控制結(jié)構(gòu)測(cè)試常用方式:基本路徑測(cè)試SOFTWAR流程圖對(duì)應(yīng)的程序圖注意:結(jié)點(diǎn)2、3和4、5還有9和10流程圖對(duì)應(yīng)的程序圖注意:轉(zhuǎn)換時(shí)注意:
?
一條邊必須終止于一個(gè)結(jié)點(diǎn),在選擇結(jié)構(gòu)中分支匯聚處即使無語句也應(yīng)有一個(gè)匯聚結(jié)點(diǎn)。
?
如果判斷中的條件表達(dá)式是復(fù)合條件,則需改為一系列只有單個(gè)條件的嵌套判斷。如右圖所示:
ABTPFQA<BQQPA=B轉(zhuǎn)換時(shí)注意:ABTPFQA<BQQPA=B例:用基本路徑測(cè)試方法對(duì)以下的程序(偽碼描述)設(shè)計(jì)用例。Sort①
for(i=1;i<=n-1;i++)k=i;②
for(j=i+1;j<=n;j++)if(a[k]>a[j])k=jendfor
③
④
if(k!=i)swap(a[i],a[k])
⑦
endfor
⑤
⑥endSort例:用基本路徑測(cè)試方法對(duì)以下的程序(偽碼描述)Path1:1-7Path2:1-2-5-1-7Path3:1-2-5-6-1-7Path4:1-2-3-2-5-1-7Path5:1-2-3-4-2-5-6-1-7設(shè)計(jì)用例:輸入預(yù)期輸出結(jié)果通過路徑
n=1排序表中只有一個(gè)數(shù)Path1n≥2且輸入表已排序的輸出表Path4
中已排序
n≥2且輸入表已排序的輸出表Path5
中未排序
Path2和Path3無法單獨(dú)測(cè)試,但已包含在Path4和Path5中測(cè)試過了。Path1:1-7SOFTWAREENGINEERING基本路徑測(cè)試?yán)}求平均值過程的流圖SOFTWAREENGINEERING基本路徑測(cè)試?yán)}求平8.4.1黑盒測(cè)試
被測(cè)對(duì)象是功能獨(dú)立的模塊或構(gòu)件,注重測(cè)試軟件的功能需求。試圖發(fā)現(xiàn)以下幾類錯(cuò)誤:
?不正確或遺漏的功能;
?接口錯(cuò)誤;
?數(shù)據(jù)結(jié)構(gòu)或外部數(shù)據(jù)庫訪問錯(cuò)誤;
?性能錯(cuò)誤;
?初始化和終止條件錯(cuò)誤。幾種具體的方法:
(1)等價(jià)類劃分
(2)邊界值分析
(3)錯(cuò)誤推測(cè)
(4)使用判定表
8.4.1黑盒測(cè)試被測(cè)對(duì)象是功能獨(dú)立的模塊或構(gòu)件,注黑盒測(cè)試(等價(jià)類劃分)主要思想:
根據(jù)被測(cè)對(duì)象的功能說明和輸入域,按合理的或不合理劃分為若干等價(jià)類,為每個(gè)等價(jià)類設(shè)計(jì)一個(gè)測(cè)試用例,這樣大大減少測(cè)試次數(shù),提高測(cè)試效率。黑盒測(cè)試(等價(jià)類劃分)主要思想:如何劃分等價(jià)類?有效等價(jià)類(合理等價(jià)類)無效等價(jià)類(不合理等價(jià)類)
劃分等價(jià)類的標(biāo)準(zhǔn):覆蓋不相交代表性如何劃分等價(jià)類?等價(jià)類劃分該方法步驟如下:1.劃分等價(jià)類為每個(gè)等價(jià)類編號(hào)對(duì)被測(cè)程序功能說明的輸入域劃分等價(jià)類。以下是一些原則或經(jīng)驗(yàn):
①在輸入條件規(guī)定了取值范圍或值的個(gè)數(shù)的情況下,則可以確立一個(gè)有效等價(jià)類和兩個(gè)無效等價(jià)類.②在輸入條件規(guī)定了輸入值的集合或者規(guī)定了“必須如何”的條件的情況下,可確立一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類.③在輸入條件是一個(gè)布爾量的情況下,可確定一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類.④在規(guī)定了輸入數(shù)據(jù)的一組值(假定n個(gè)),并且程序要對(duì)每一個(gè)輸入值分別處理的情況下,可確立n個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類.⑤在確知已劃分的等價(jià)類中各元素在程序處理中的方式不同的情況下,則應(yīng)再將該等價(jià)類進(jìn)一步的劃分為更小的等價(jià)類.
⑥在規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則的情況下,可確立一個(gè)有效等價(jià)類(符合規(guī)則)和若干個(gè)無效等價(jià)類(從不同角度違反規(guī)則)
等價(jià)類劃分該方法步驟如下:1.劃分等價(jià)類為每個(gè)等價(jià)類編號(hào)2.設(shè)計(jì)一個(gè)測(cè)試用例,使其盡可能多地覆蓋尚未被覆蓋的合理等價(jià)類,重復(fù)這一步直到所有合理等價(jià)類都被覆蓋。3.設(shè)計(jì)一個(gè)測(cè)試用例,使其只覆蓋一個(gè)尚未被覆蓋的不合理等價(jià)類,重復(fù)這一步直到所有不合理等價(jià)類都被覆蓋。2.設(shè)計(jì)一個(gè)測(cè)試用例,使其盡可能多地覆蓋尚未被覆蓋的合理等價(jià)等價(jià)類劃分
例:設(shè)有一個(gè)檔案管理系統(tǒng),要求用戶輸入以年月表示的日期。假設(shè)日期限定在1990年1月~2049年12月,并規(guī)定日期由6位數(shù)字字符組成,前4位表示年,后2位表示月。現(xiàn)用等價(jià)類劃分法設(shè)計(jì)測(cè)試用例,來測(cè)試程序的"日期檢查功能。
等價(jià)類劃分例:設(shè)有一個(gè)檔案管理系統(tǒng),要求用戶輸①劃分等價(jià)類如下并為每個(gè)等價(jià)類編號(hào)①劃分等價(jià)類如下并為每個(gè)等價(jià)類編號(hào)②設(shè)計(jì)測(cè)試用例覆蓋所有的有效等價(jià)類測(cè)試數(shù)據(jù)
期望結(jié)果
覆蓋的有效等價(jià)類
200211
輸入有效
①、⑤、⑧③為每一個(gè)無效等價(jià)類設(shè)計(jì)一個(gè)測(cè)試用例測(cè)試數(shù)據(jù)
期望結(jié)果
覆蓋的無效等價(jià)類
95June
無效輸入
②
20036
無效輸入
③
2001006
無效輸入
④
198912
無效輸入
⑥
206401
無效輸入
⑦
200100
無效輸入
⑨
200113
無效輸入
⑩②設(shè)計(jì)測(cè)試用例覆蓋所有的有效等價(jià)類黑盒測(cè)試(邊界值分析法)(2)邊界值分析法使被測(cè)程序在邊界值及其附近運(yùn)行,從而更有效地暴露程序中潛藏的錯(cuò)誤。例:輸入數(shù)字范圍-32768~32767測(cè)試方案:①32767②-32768③32768④-32769黑盒測(cè)試(邊界值分析法)(2)邊界值分析法
邊界值分析法與等價(jià)類劃分法區(qū)別邊界值分析不是從某等價(jià)類中隨便挑一個(gè)作為代表,而是使這個(gè)等價(jià)類的每個(gè)邊界都要作為測(cè)試條件。被測(cè)試子域測(cè)試內(nèi)點(diǎn)測(cè)試外點(diǎn)軟件邊界與懸崖很類似被測(cè)試測(cè)試內(nèi)點(diǎn)測(cè)試外點(diǎn)軟件邊界與懸崖很類似軟件工程第七章--實(shí)現(xiàn)課件邊界條件類型
如果軟件測(cè)試問題包含確定的邊界,那么數(shù)據(jù)類型可能是:數(shù)值字符位置數(shù)量速度地址尺寸……還要考慮數(shù)據(jù)類型的特征:第一個(gè)/最后一個(gè)最小值/最大值開始/完成空/滿最慢/最快相鄰/最遠(yuǎn)超過/在內(nèi)……邊界條件類型如果軟件測(cè)試問題還要考慮數(shù)據(jù)類型的特征:例:某報(bào)表處理系統(tǒng)要求用戶輸入處理報(bào)表的日期,日期限制在2001年1
月至2005年12月,即系統(tǒng)只能對(duì)該段期間內(nèi)的報(bào)表進(jìn)行處理,如日期不在此范圍內(nèi),則顯示輸入錯(cuò)誤信息。系統(tǒng)日期規(guī)定由年、月的6位數(shù)字字符組成,前四位代表年,后兩位代表月。如何用邊界值分析設(shè)計(jì)測(cè)試用例,
來測(cè)試程序的日期檢查功能?例:某報(bào)表處理系統(tǒng)要求用戶輸入處理輸入條件報(bào)表日期的類型及長(zhǎng)度5個(gè)數(shù)字字符7個(gè)數(shù)字字符6個(gè)數(shù)字字符顯示出錯(cuò)顯示出錯(cuò)輸入有效年范圍月份范圍“報(bào)表日期”邊界值分析法測(cè)試用例測(cè)試用例說明測(cè)試數(shù)據(jù)期望結(jié)果選取理由200152001005200105在有效范圍邊界上選取數(shù)據(jù)200201200212200200200213200103200510200002200606輸入有效輸入有效顯示出錯(cuò)顯示出錯(cuò)輸入有效輸入有效顯示出錯(cuò)顯示出錯(cuò)在有效范圍邊界上選取數(shù)據(jù)比有效長(zhǎng)度少1比有效長(zhǎng)度多1類型及長(zhǎng)度均有效最小年份最大年份剛好小于最小年份剛好大于最大年份最小月份最大月份剛好小于最小月份剛好大于最大月份輸入報(bào)表日年月份“報(bào)表日期”邊界值分析法測(cè)試用例測(cè)試用例說明黑盒測(cè)試(錯(cuò)誤推測(cè)法)
(3)錯(cuò)誤猜測(cè)法(errorguessing)
猜測(cè)被測(cè)程序在哪些地方容易出錯(cuò)針對(duì)可能的薄弱環(huán)節(jié)來設(shè)計(jì)測(cè)試用例(4)使用判定表
如果功能說明中含有多個(gè)輸入條件的邏輯組合,可以建立判定表,判定表的每一列對(duì)應(yīng)一個(gè)測(cè)試用例。在實(shí)際測(cè)試中,綜合使用這些方法,以達(dá)到最有效的測(cè)試。黑盒測(cè)試(錯(cuò)誤推測(cè)法)(3)錯(cuò)誤猜測(cè)法(errorguSOFTWAREENGINEERING§7.6調(diào)試7.6.1任務(wù)在成功的測(cè)試之后,還必須進(jìn)一步診斷和改正程序中的錯(cuò)誤,這是調(diào)試的任務(wù)。7.6.2步驟(1)確定錯(cuò)誤的準(zhǔn)確位置;(2)仔細(xì)研究這段代碼以確定問題的原因,并設(shè)法改正錯(cuò)誤。7.6.2常用的糾錯(cuò)技術(shù)插入打印語句設(shè)置斷點(diǎn)掩蔽部分程序SOFTWAREENGINEERING§7.6調(diào)試7.6SOFTWAREENGINEERING8.6.4調(diào)試過程SOFTWAREENGINEERING8.6.4調(diào)試過SOFTWAREENGINEERING§8.6調(diào)試8.6.4調(diào)試策略(1)蠻干法:按著“讓計(jì)算機(jī)自己尋找錯(cuò)誤”的策略,印出內(nèi)存內(nèi)容,生成大量信息,希望發(fā)現(xiàn)錯(cuò)誤原因的線索。(2)回溯法:調(diào)試人員檢查錯(cuò)誤征兆,確定最先出現(xiàn)“癥狀”的地方,然后人工沿程序的控制流往回追蹤源程序代碼,直到找出錯(cuò)誤根源或確定故障范圍為止。(3)對(duì)分查找法:如果已經(jīng)知道每個(gè)變量在程序內(nèi)若干個(gè)關(guān)鍵點(diǎn)的正確值,則可以用賦值語句或輸入語句在程序中點(diǎn)附近“注入”這些變量的正確值,然后檢查程序的輸出。如果輸出結(jié)果是正確的,則故障在程序的前半部分;反之,在后半部分。(4)歸納法:就是從個(gè)別推斷一般的方法,這種方法從線索(錯(cuò)誤征兆)出發(fā),通過分析這些線索之間的關(guān)系而找出故障。(5)演繹法:先列出所有看來可能成立的原因或假設(shè),然后一個(gè)個(gè)地排除列舉出的原因,最后,證明剩下的原因確實(shí)是錯(cuò)誤的根源。SOFTWAREENGINEERING§8.6調(diào)試8.6歸納法
從測(cè)試結(jié)果發(fā)現(xiàn)的錯(cuò)誤入手,分析它們之間的聯(lián)系查找錯(cuò)誤。是一種從特殊推斷一般的系統(tǒng)化思考方法。收集有關(guān)數(shù)據(jù)組織數(shù)據(jù)研究數(shù)據(jù)間的關(guān)系糾正錯(cuò)誤能能不能不能列出所有已知的測(cè)試用例和程序執(zhí)行結(jié)果常用的構(gòu)造線索的技術(shù)是“分類法”分析線索之間的關(guān)系,找出矛盾,設(shè)計(jì)出錯(cuò)原因的假設(shè)歸納排錯(cuò)法步驟將假設(shè)與原始線索或數(shù)據(jù)進(jìn)行比較,能否解釋現(xiàn)象,證明假設(shè)。提出假設(shè)證明假設(shè)歸納法從測(cè)試結(jié)果發(fā)現(xiàn)的錯(cuò)誤入手,分析它們之間的聯(lián)系查演繹法
演繹法是一種從一般原理出發(fā),經(jīng)過排除和精化的過程,推導(dǎo)出結(jié)論的方法。列舉可能的原因排除不適當(dāng)?shù)脑驅(qū)ΡA舻募僭O(shè)繼續(xù)推斷證明假設(shè)糾正錯(cuò)誤收集更多的數(shù)據(jù)沒有剩余不能能有剩余演繹法排錯(cuò)的步驟有余演繹法演繹法是一種從一般原理出發(fā),經(jīng)過排除和精化的過程SOFTWAREENGINEERING§8.6調(diào)試8.6.5糾錯(cuò)的原則:(1)重在思考;(2)避免緊張;(3)修改要徹底;(4)防止糾錯(cuò)時(shí)又引入新的錯(cuò)誤。SOFTWAREENGINEERING§8.6調(diào)試8.6例:對(duì)招干考試系統(tǒng)“輸入學(xué)生成績(jī)”子模塊設(shè)計(jì)測(cè)試用例招干考試分三個(gè)專業(yè),準(zhǔn)考證號(hào)第一位為專業(yè)代號(hào),如:1-行政專業(yè),2-法律專業(yè),3-財(cái)經(jīng)專業(yè).
行政專業(yè)準(zhǔn)考證號(hào)碼為:110001~111215法律專業(yè)準(zhǔn)考證號(hào)碼為:210001~212006財(cái)經(jīng)專業(yè)準(zhǔn)考證號(hào)碼為:310001~314015例:對(duì)招干考試系統(tǒng)“輸入學(xué)生成績(jī)”
例:準(zhǔn)考證號(hào)碼的等價(jià)類劃分
有效等價(jià)類:
(1)110001~111215(2)210001~212006(3)310001~314015
無效等價(jià)類:
(4)-
~110000(5)111216~210000(6)212007~31000(7)314016~+例:準(zhǔn)考證號(hào)碼的等價(jià)類劃分7.9軟件可靠性的定義軟件可靠性是軟件在給定的時(shí)間間隔及給定的環(huán)境條件下,按設(shè)計(jì)要求,成功地運(yùn)行程序的概率。環(huán)境條件─指的是軟件的使用環(huán)境。無論是什么軟件,如果不對(duì)它的使用環(huán)境加以限制,都是會(huì)失效的。這種失效的數(shù)據(jù),不能用來度量軟件的可靠性。軟件的可用性是程序在給定的時(shí)間點(diǎn),按照規(guī)格說明書的規(guī)定,成功地運(yùn)行的概率。7.9軟件可靠性的定義軟件可靠性是軟件在給定的
成功地運(yùn)行程序─是指不僅程序能正確地運(yùn)行,滿足用戶對(duì)它的功能要求,而且當(dāng)程序一旦受到意外的傷害,或系統(tǒng)故障時(shí),能盡快恢復(fù),仍能正常地運(yùn)行。
成功地運(yùn)行程序─是指不僅程序能正確地運(yùn)行
推測(cè)錯(cuò)誤的產(chǎn)生頻度MTTF
估算錯(cuò)誤產(chǎn)生頻度的一種方法是估算平均無故障時(shí)間MTTF,估算公式如下IT表示程序長(zhǎng)度,ET表示測(cè)試前程序錯(cuò)誤總數(shù),EC(t)表示測(cè)試階段發(fā)現(xiàn)的錯(cuò)誤數(shù).
常數(shù)K取200.MTTF=IKEEtTTC(())-推測(cè)錯(cuò)誤的產(chǎn)生頻度MTTF估
設(shè)Ns是在測(cè)試前人為地向程序中植入的故障數(shù),ns是經(jīng)過一段時(shí)間測(cè)試后發(fā)現(xiàn)的播種故障數(shù)目,n是在測(cè)試中又發(fā)現(xiàn)的程序原有故障數(shù)。設(shè)測(cè)試用例發(fā)現(xiàn)植入故障和原有故障的能力相同,則程序中原有故障總數(shù)N(=ET)估算值為利用植入故障法估算ET設(shè)Ns是在測(cè)試前人為地向程序中植入的故
Hyman分別測(cè)試法ET
由兩個(gè)測(cè)試員同時(shí)互相獨(dú)立地測(cè)試同一程序的兩個(gè)副本,用
t表示測(cè)試時(shí)間,記t=0時(shí),程序中原有故障總數(shù)是B0;t=t1
時(shí),測(cè)試員甲發(fā)現(xiàn)的故障總數(shù)是B1;測(cè)試員乙發(fā)現(xiàn)的故障總數(shù)是B2;其中兩人發(fā)現(xiàn)的相同故障數(shù)目是bc;
Hyman分別測(cè)試法在大程序測(cè)試時(shí),頭幾個(gè)月兩個(gè)測(cè)試員測(cè)試的結(jié)果應(yīng)當(dāng)比較接近
在早期應(yīng)當(dāng)每隔一段時(shí)間,由兩個(gè)測(cè)試員再進(jìn)行分別測(cè)試,分析測(cè)試結(jié)果,估算B0,或幾次估算值的結(jié)果相差不多,則B0作為原有錯(cuò)誤總數(shù)的估算值。
在大程序測(cè)試時(shí),頭幾個(gè)月兩個(gè)測(cè)試員測(cè)試的結(jié)果應(yīng)當(dāng)比較接近SOFTWAREENGINEERING§7.6白盒測(cè)試技術(shù)設(shè)計(jì)測(cè)試方案的目標(biāo)選用最少量的測(cè)試數(shù)據(jù),作到盡可能完備的測(cè)試.好的測(cè)試方案是發(fā)現(xiàn)了迄今為止,尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試方案.8.5.2測(cè)試方案包括預(yù)定要測(cè)試的功能,應(yīng)該輸入的測(cè)試數(shù)據(jù)和預(yù)期的結(jié)果。8.5.3測(cè)試用例以發(fā)現(xiàn)錯(cuò)誤為目的而精心設(shè)計(jì)的彝族測(cè)試數(shù)據(jù)。測(cè)試用例=輸入數(shù)據(jù)+期望結(jié)果SOFTWAREENGINEERING§7.6白盒測(cè)試技SOFTWAREENGINEERING例題某城市的電話號(hào)碼由三部分組成,這三部分的名稱與內(nèi)容分別是:地區(qū)碼—空白或三位數(shù)字前綴—非0或1開頭的三位數(shù)字后綴—4位數(shù)字假設(shè)被測(cè)程序能接受一切符合上述規(guī)定的電話號(hào)碼,拒絕不符合規(guī)定的電話號(hào)碼。SOFTWAREENGINEERING例題某城市的電話號(hào)碼SOFTWAREENGINEERING輸入有效等價(jià)類無效等價(jià)類地區(qū)碼(1)空白(2)3位數(shù)字(5)有非數(shù)字字符(6)少于3位數(shù)字(7)多于3位數(shù)字前綴(3)200-999的3位數(shù)字(8)有非數(shù)字字符(9)少于3位數(shù)字(10)多于3位數(shù)字(11)0開頭(12)1開頭后綴(4)4位數(shù)字(13)有非數(shù)字字符(14)少于4位數(shù)字(15)多于4位數(shù)字SOFTWAREENGINEERING輸入有效等價(jià)類無效等SOFTWAREENGINEERING覆蓋有效等價(jià)類輸入覆蓋的有效等價(jià)類預(yù)期結(jié)果()234-5678(1)(3)(4)有效(123)234-5678(2)(3)(4)有效SOFTWAREENGINEERING覆蓋有效等價(jià)類輸入覆SOFTWAREENGINEERING覆蓋無效等價(jià)類輸入覆蓋無效等價(jià)類預(yù)期結(jié)果(1a3)222-3333(5)無效(12)333-4444(6)無效(1234)555-6666(7)無效(024)2a2-3333(8)無效(024)22-3333(9)無效(024)3333-7777(10)無效(024)012-3333(11)無效(024)111-3333(12)無效(024)333-a999(13)無效(024)555-333(14)無效(024)555-00000(15)無效SOFTWAREENGINEERING覆蓋無效等價(jià)類輸入覆SOFTWAREENGINEERING作業(yè)某報(bào)表處理系統(tǒng)要求用戶輸入處理報(bào)表的日期,日期限制在2001年1月至2005年12月,即系統(tǒng)只能對(duì)該段期間內(nèi)的報(bào)表進(jìn)行處理,如日期不在此范圍內(nèi),則顯示輸入錯(cuò)誤信息。系統(tǒng)日期規(guī)定由年、月的6位數(shù)字字符組成,前四位代表年,后兩位代表月。SOFTWAREENGINEERING作業(yè)某報(bào)表處理系統(tǒng)SOFTWAREENGINEERING第一步:等價(jià)類劃分輸入等價(jià)類有效等價(jià)類無效等價(jià)類
報(bào)表日期的類型及長(zhǎng)度6位數(shù)字字符(1)有非數(shù)字字符(4)少于6個(gè)數(shù)字字符(5)多于6個(gè)數(shù)字字符(6)年份范圍在2001~2005之間(2)小于2001(7)大于2005(8)月份范圍在1~12之間(3)“報(bào)表日期”輸入條件的等價(jià)類表小于1(9)大于12(10)SOFTWAREENGINEERING第一步:等價(jià)類劃分輸SOFTWAREENGINEERING
第二步:為有效等價(jià)類設(shè)計(jì)測(cè)試用例
對(duì)表中編號(hào)為1,2,3的3個(gè)有效等價(jià)類用一個(gè)測(cè)試用例覆蓋:
測(cè)試數(shù)據(jù)期望結(jié)果覆蓋范圍200105等價(jià)類(1)(2)(3)輸入有效SOFTWAREENGINEERING第二步:為有效SOFTWAREENGINEERING
第三步:為每一個(gè)無效等價(jià)類設(shè)至少計(jì)一個(gè)測(cè)試用例
測(cè)試數(shù)據(jù)期望結(jié)果覆蓋范圍001MAY等價(jià)類(4)輸入無效20015等價(jià)類(5)輸入無效2001005等價(jià)類(6)輸入無效200005等價(jià)類(7)輸入無效200805等價(jià)類(8)輸入無效200100等價(jià)類(9)輸入無效200113等價(jià)類(10)輸入無效不能出現(xiàn)相同的測(cè)試用例本例的10個(gè)等價(jià)類至少需要8個(gè)測(cè)試用例SOFTWAREENGINEERING第三步:為每一SOFTWAREENGINEERING輸入條件報(bào)表日期的類型及長(zhǎng)度1個(gè)數(shù)字字符5個(gè)數(shù)字字符7個(gè)數(shù)字字符有1個(gè)非數(shù)字字符全部是非數(shù)字字符6個(gè)數(shù)字字符顯示出錯(cuò)顯示出錯(cuò)顯示出錯(cuò)顯示出錯(cuò)顯示出錯(cuò)輸入有效年范圍月份范圍“報(bào)表日期”邊界值分析法測(cè)試用例測(cè)試用例說明測(cè)試數(shù)據(jù)期望結(jié)果選取理由52001520010052001.5MAY---200105月份為1月月份為12月月份<1月份>12200201200212200200200213200103200510200002200606輸入有效輸入有效顯示出錯(cuò)顯示出錯(cuò)輸入有效輸入有效顯示出錯(cuò)顯示出錯(cuò)在有效范圍邊界上選取數(shù)據(jù)僅有1個(gè)合法字符比有效長(zhǎng)度少1比有效長(zhǎng)度多1只有1個(gè)非法字符6個(gè)非法字符類型及長(zhǎng)度均有效最小年份最大年份剛好小于最小年份剛好大于最大年份最小月份最大月份剛好小于最小月份剛好大于最大月份SOFTWAREENGINEERING輸入報(bào)表日1個(gè)數(shù)字字SOFTWAREENGINEERINGASOFTWAREENGINEERINGASOFTWAREENGINEERINGSOFTWAREENGINEERINGSOFTWAREENGINEERINGD2006SOFTWAREENGINEERINGD2006SOFTWAREENGINEERINGBSOFTWAREENGINEERINGBSOFTWAREENGINEERINGB2007SOFTWAREENGINEERINGB2007SOFTWAREENGINEERINGB
SOFTWAREENGINEERINGB
SOFTWAREENGINEERINGBSOFTWAREENGINEERINGBSOFTWAREENGINEERINGABSOFTWAREENGINEERINGABSOFTWAREENGINEERING2008CASOFTWAREENGINEERING2008CASOFTWAREENGINEERINGDSOFTWAREENGINEERINGDSOFTWAREENGINEERING2009BSOFTWAREENGINEERING2009BSOFTWAREENGINEERINGCSOFTWAREENGINEERINGCSOFTWAREENGINEERINGSOFTWAREENGINEERINGSOFTWAREENGINEERING第7章實(shí)現(xiàn)SOFTWAREENGINEERING第7章實(shí)現(xiàn)實(shí)現(xiàn)包括編碼和測(cè)試兩個(gè)階段編碼:把軟件設(shè)計(jì)的結(jié)果翻譯成計(jì)算機(jī)可以“理解”的形式—用某種程序設(shè)計(jì)語言書寫的程序。程序的質(zhì)量取決于軟件設(shè)計(jì)的質(zhì)量和選用的程序設(shè)計(jì)語言的特點(diǎn)及編碼風(fēng)格。軟件測(cè)試對(duì)軟件可靠性影響巨大。測(cè)試的目的:在軟件投入生產(chǎn)性運(yùn)行之前,盡可能多地發(fā)現(xiàn)軟件中的錯(cuò)誤。軟件測(cè)試:?jiǎn)卧獪y(cè)試和綜合測(cè)試。通常占軟件開發(fā)總工作量的40%SOFTWAREENGINEERING實(shí)現(xiàn)包括編碼和測(cè)試兩個(gè)階段SOFTWAREENGINEERSOFTWAREENGINEERING§7.1編碼7.1.1選擇程序設(shè)計(jì)語言編碼前的一項(xiàng)重要工作就是選擇一種適當(dāng)?shù)某绦蛟O(shè)計(jì)語言。程序設(shè)計(jì)語言分類:匯編語言高級(jí)語言語言選擇的目標(biāo):使根據(jù)設(shè)計(jì)去完成編碼時(shí)困難最??;需要的程序測(cè)試量較小;得出的程序容易閱讀和維護(hù)。SOFTWAREENGINEERING§7.1編碼7.1SOFTWAREENGINEERING§7.1編碼語言選擇的實(shí)用標(biāo)準(zhǔn):系統(tǒng)用戶的要求。--用戶熟悉的語言可以使用的編譯環(huán)境可以得到的軟件工具工程規(guī)模--過大,可以自己設(shè)計(jì)一個(gè)專用語言程序員的知識(shí)軟件可移植性要求軟件的應(yīng)用領(lǐng)域SOFTWAREENGINEERING§7.1編碼語言選適用各類應(yīng)用領(lǐng)域的語言
年代應(yīng)用領(lǐng)域主要語言其他語言20世紀(jì)60年代商業(yè)COBOLAssembler科學(xué)計(jì)算FORTRANALGOL、BASIC、APL系統(tǒng)AssemblerForth人工智能LISPSNOBOL
現(xiàn)代商業(yè)數(shù)據(jù)庫、C++、Java、電子表格lotus
C、PL/1科學(xué)計(jì)算FORTRAN、C、C++BASIC系統(tǒng)C、C++、JavaAda、Modula人工智能LISP、Prolog
適用各類應(yīng)用領(lǐng)域的語言年代應(yīng)用領(lǐng)域主要語言其他語言SOFTWAREENGINEERING§7.1編碼7.1.2編碼的風(fēng)格(1)好程序的標(biāo)準(zhǔn):簡(jiǎn)明清晰、易讀易懂。為了得到好程序需遵循的規(guī)則:A程序內(nèi)部的文檔:標(biāo)志符:文件名、變量名、常量名、函數(shù)名、數(shù)組名、子程序名、類型名等用戶定義的名稱的總稱。要選用含義鮮明的名字,若縮寫,縮寫規(guī)則要一致,給每個(gè)名字加注釋。注釋:程序員與程序讀者之間通信的重要手段。(模塊的注釋和語句的注釋)視覺組織:源程序清單的布局對(duì)程序的可讀性影響很大。(階梯形式使程序的層次結(jié)構(gòu)清晰)SOFTWAREENGINEERING§7.1編碼7.1【注釋規(guī)范】
一、函數(shù)
在函數(shù)開頭,用如下格式注釋:
/**********************************************/
/*Function:DelStringFromString*/
/*從一個(gè)String刪除另一個(gè)String。*/
/*參數(shù):strByDelete,strToDelete*/
/*strByDelete:被刪除的字符串(原來的字符串)*/
/*strToDelete:要從上個(gè)字符串中刪除的字符串。*/
/*返回:找到并刪除返回0,否則返回-1.*/
/**********************************************/
【注釋規(guī)范】
一、函數(shù)
在函數(shù)開頭,用如下格式注釋:
【編程風(fēng)格】
main()
{
inti,j;
........
for(i==0;i<100;i++)
{
..........
..........
if(i==0)
{
.........
.........
}
..........
..........
}
.........
}一、嚴(yán)格采用梯形層次對(duì)應(yīng)好各層次(鋸齒形風(fēng)格)。如右圖所示:【編程風(fēng)格】
main()
{
inti,j【編程風(fēng)格】
........
OnErrorGotoerrHandle
.......
ExitSub
errHandle:
SelectCaseErr
Case1:
....
Case2:
....
CaseElse:
....
EndSelect
EndSub
對(duì)于通用的錯(cuò)誤處理,可建立通用的錯(cuò)誤處理函數(shù),處理常見的通用的錯(cuò)誤。
錯(cuò)誤處理代碼一般放在函數(shù)末尾,如下(以VB程序?yàn)槔骸揪幊田L(fēng)格】
........
OnErrorGoSOFTWAREENGINEERING§7.1編碼7.1.2編碼的風(fēng)格B數(shù)據(jù)說明:數(shù)據(jù)說明次序標(biāo)準(zhǔn)化;(例按找數(shù)據(jù)結(jié)構(gòu)或類型確定次序)當(dāng)多個(gè)變量名在同一個(gè)語句中說明時(shí),應(yīng)該按字母順序排列這些變量;對(duì)于一個(gè)復(fù)雜的數(shù)據(jù)結(jié)構(gòu),則應(yīng)加注釋。C語句構(gòu)造:不要為了節(jié)省空間而將多條語句寫在同一行;盡量避免復(fù)雜的條件測(cè)試;盡量減少對(duì)“非”條件的測(cè)試;避免大量使用循環(huán)嵌套、條件嵌套;利用括號(hào)使邏輯表達(dá)式或算術(shù)表達(dá)式的運(yùn)算次序清晰直觀。SOFTWAREENGINEERING§7.1編碼7.1SOFTWAREENGINEERING§7.1編碼7.1.2編碼的風(fēng)格D.輸入/輸出對(duì)所有輸入數(shù)據(jù)都進(jìn)行檢驗(yàn);檢查輸入項(xiàng)重要組合的合法性;保持輸入格式簡(jiǎn)單;使用數(shù)據(jù)結(jié)束標(biāo)記,不要要求用戶指定數(shù)據(jù)的數(shù)目;明確提示交互式輸入的請(qǐng)求,詳細(xì)說明可用的選擇或邊界數(shù)值;當(dāng)程序設(shè)計(jì)語言對(duì)格式有嚴(yán)格要求時(shí),應(yīng)保持輸入格式一致。設(shè)計(jì)良好的輸出報(bào)表;給所有輸出數(shù)據(jù)加標(biāo)志。SOF
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國輻射防護(hù)涂料市場(chǎng)調(diào)查研究報(bào)告
- 企業(yè)人才資源共享合同書
- 項(xiàng)目合作合同還款協(xié)議書樣本
- 2025年專業(yè)英文銷售合同示例
- 2025年二樓庭院年維護(hù)合同
- 古琴購買合同范本
- 承接噴漆合同范本
- 叉車出售合同違約合同范本
- 2025-2030年中國鍍硅鋼卷行業(yè)運(yùn)行狀況及發(fā)展前景分析報(bào)告
- 2025-2030年中國鋰電池鋁塑膜行業(yè)運(yùn)營狀況及發(fā)展前景分析報(bào)告
- 新漢語水平考試(HSK6級(jí))真題
- 2025年安徽省合肥市中考數(shù)學(xué)模擬試卷(附答案解析)
- 數(shù)字孿生與光伏儲(chǔ)能集成
- 2025屆高考語文復(fù)習(xí):補(bǔ)寫語句+課件
- Siemens WinCC:WinCC趨勢(shì)圖與歷史數(shù)據(jù)技術(shù)教程.Tex.header
- 保護(hù)和傳承中國傳統(tǒng)文化遺產(chǎn)閱讀題答案
- 人教版生物八年級(jí)下冊(cè)全冊(cè)教學(xué)課件
- 四川省高職單招汽車類《汽車文化》復(fù)習(xí)備考試題庫(濃縮500題)
- 養(yǎng)牛購料購銷合同范本
- 衛(wèi)生健康大數(shù)據(jù)底座建設(shè)需求
- 勞動(dòng)合同范本1997
評(píng)論
0/150
提交評(píng)論