軟件測(cè)試第3章-白盒測(cè)試-教學(xué)PPT課件_第1頁(yè)
軟件測(cè)試第3章-白盒測(cè)試-教學(xué)PPT課件_第2頁(yè)
軟件測(cè)試第3章-白盒測(cè)試-教學(xué)PPT課件_第3頁(yè)
軟件測(cè)試第3章-白盒測(cè)試-教學(xué)PPT課件_第4頁(yè)
軟件測(cè)試第3章-白盒測(cè)試-教學(xué)PPT課件_第5頁(yè)
已閱讀5頁(yè),還剩55頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第3章 白盒測(cè)試 邏輯覆蓋法 插樁法3.1 邏輯覆蓋法邏輯覆蓋法是最常用的白盒測(cè)試方法,它包括以下5種方法: 語(yǔ)句覆蓋 判定覆蓋 條件覆蓋 判定-條件覆蓋 條件組合覆蓋3.1.1 語(yǔ)句覆蓋語(yǔ)句覆蓋(Statement Coverage)又稱行覆蓋、段覆蓋、基本塊覆蓋,它是最常見(jiàn)的覆蓋方式。3.1.1 語(yǔ)句覆蓋語(yǔ)句覆蓋的目的是測(cè)試程序中的代碼是否被執(zhí)行,它只測(cè)試代碼中的執(zhí)行語(yǔ)句,這里的執(zhí)行語(yǔ)句不包括頭文件、注釋、空行等。3.1.1 語(yǔ)句覆蓋語(yǔ)句覆蓋在多分支的程序中,只能覆蓋某一條路徑,使得該路徑中的每一個(gè)語(yǔ)句至少被執(zhí)行一次,但不會(huì)考慮各種分支組合情況。3.1.1 語(yǔ)句覆蓋在代碼中,AND表示邏輯

2、運(yùn)算&,OR表示邏輯運(yùn)算|,第12行代碼表示如果x0成立并且y2成立或者z0成立,則執(zhí)行z=z+(x+y)語(yǔ)句。示例代碼IF x0 AND y2 OR z0 /條件2 z=z+(x+y)3.1.1 語(yǔ)句覆蓋在代碼運(yùn)行流程圖中,a、b、c、d、e表示程序執(zhí)行分支。在語(yǔ)句覆蓋測(cè)試用例中,使程序中每個(gè)可執(zhí)行語(yǔ)句至少被執(zhí)行一次。3.1.1 語(yǔ)句覆蓋設(shè)計(jì)測(cè)試用例:Test1:x=1 y=-1 z=2執(zhí)行測(cè)試用例,程序運(yùn)行路徑為acd??梢钥闯龀绦蛑衋cd路徑上的每個(gè)語(yǔ)句都能被執(zhí)行。但是語(yǔ)句覆蓋對(duì)多分支的邏輯無(wú)法全面反映,僅僅執(zhí)行一次不能進(jìn)行全面覆蓋,因此,語(yǔ)句覆蓋是弱覆蓋方法。3.1.1 語(yǔ)句覆蓋語(yǔ)句覆

3、蓋雖然可以測(cè)試執(zhí)行語(yǔ)句是否被執(zhí)行到,但卻無(wú)法測(cè)試程序中存在的邏輯錯(cuò)誤。例如,如果上述程序中的邏輯判斷符號(hào)“AND”誤寫(xiě)了“OR”,使用測(cè)試用例Test1同樣可以覆蓋acd路徑上的全部執(zhí)行語(yǔ)句,但卻無(wú)法發(fā)現(xiàn)錯(cuò)誤。同樣,如果將x0誤寫(xiě)成x=0,使用同樣的測(cè)試用例Test1也可以執(zhí)行acd路徑上的全部執(zhí)行語(yǔ)句,但卻無(wú)法發(fā)現(xiàn)x=0的錯(cuò)誤。3.1.1 語(yǔ)句覆蓋語(yǔ)句覆蓋無(wú)需詳細(xì)考慮每個(gè)判斷表達(dá)式,可以直觀地從源程序中有效測(cè)試執(zhí)行語(yǔ)句是否全部被覆蓋,由于程序在設(shè)計(jì)時(shí),語(yǔ)句之間存在許多內(nèi)部邏輯關(guān)系,而語(yǔ)句覆蓋不能發(fā)現(xiàn)其中存在的缺陷,因此語(yǔ)句覆蓋并不能滿足白盒測(cè)試的測(cè)試所有邏輯語(yǔ)句的基本需求。3.1.2 判定覆

4、蓋判定覆蓋(Decision Coverage)又稱為分支覆蓋,其原則是設(shè)計(jì)足夠多的測(cè)試用例,在測(cè)試過(guò)程中保證每個(gè)判定至少有一次為真值,有一次為假值。3.1.2 判定覆蓋判定覆蓋的作用是使真假分支均被執(zhí)行,雖然判定覆蓋比語(yǔ)句覆蓋測(cè)試能力強(qiáng),但仍然具有和語(yǔ)句覆蓋一樣的單一性。3.1.2 判定覆蓋以3.1.1節(jié)程序?yàn)槔?,設(shè)計(jì)判定覆蓋測(cè)試用例。測(cè)試用例xyz執(zhí)行語(yǔ)句路徑test12-11acdtest2-31-1abdtest33-15acetest431-1abe3.1.2 判定覆蓋上述4個(gè)測(cè)試用例覆蓋了acd、abd、ace、abe四條路徑,使得每個(gè)判定語(yǔ)句的取值都滿足了各有一次“真”與“假”。

5、相比于語(yǔ)句覆蓋,判定覆蓋的覆蓋范圍更廣泛。判定覆蓋雖然保證了每個(gè)判定至少有一次為真值,有一次為假值。3.1.2 判定覆蓋判定覆蓋并沒(méi)有考慮到程序內(nèi)部取值的情況。例如,測(cè)試用例test4,沒(méi)有將x2作為條件進(jìn)行判斷,僅僅判斷了z0的條件。此外,若將判定條件z0誤寫(xiě)成z1 OR c1、c1、c0S1x2S3x0-S1x2-S3y0S4y0-S2z0取真值(即x0成立)的情況,-S1標(biāo)記x0取假值(即x0不成立)的情況。同理,使用S2、S3、S4標(biāo)記y2、z0取真值,使用-S2、-S3、-S4標(biāo)記y2、z0取假值,最后得到執(zhí)行條件判斷語(yǔ)句的8種狀態(tài)3.1.3 條件覆蓋設(shè)計(jì)測(cè)試用例時(shí),要保證每種狀態(tài)都

6、至少出現(xiàn)一次。設(shè)計(jì)測(cè)試用例的原則是盡量以最少的測(cè)試用例達(dá)到最大的覆蓋率。測(cè)試用例xyz條件標(biāo)記執(zhí)行路徑Test1315S1、-S2、S3、S4abeTest2-31-1-S1、-S2、-S3、-S4abdTest33-11S1、S2、S3、-S4ace3.1.3 條件覆蓋從條件覆蓋的測(cè)試用例可知,使用3個(gè)測(cè)試用例就達(dá)到了使每個(gè)邏輯條件取真值與取假值都至少出現(xiàn)了一次,但從測(cè)試用例的執(zhí)行路徑來(lái)看,條件分支覆蓋的狀態(tài)下仍舊不能滿足判定覆蓋,即沒(méi)有覆蓋acd路徑。相比于語(yǔ)句覆蓋與判定覆蓋,條件覆蓋達(dá)到了邏輯條件的最大覆蓋率,但卻不能保證判定覆蓋,仍舊不能滿足白盒測(cè)試覆蓋所有分支的需求。3.1.4 判定

7、-條件覆蓋判定-條件覆蓋(Condition/Decision Coverage)要求設(shè)計(jì)足夠多的測(cè)試用例,使得判定語(yǔ)句中所有條件的可能取值至少出現(xiàn)一次,同時(shí),所有判定語(yǔ)句的可能結(jié)果也至少出現(xiàn)一次。例如,對(duì)于判定語(yǔ)句if(a1 AND c1、c1、c1 AND c0、y2、z0,我們依然用S1、S2、S3、S4標(biāo)記這四個(gè)條件成立,而-S1、-S2、-S3、-S4標(biāo)記這些條件不成立。由于這四個(gè)條件每個(gè)條件都有取“真”、“假”兩個(gè)值,因此所有條件結(jié)果的組合有24=16種3.1.5 條件組合覆蓋序號(hào)組合含義1S1、S2、S3、S4x0成立,y2成立,z0成立。2-S1、S2、S3、S4x0不成立,y

8、2成立,z0成立。3S1、-S2、S3、S4x0成立,y2成立,z0成立。4S1、S2、-S3、S4x0成立,y2不成立,z0成立。5S1、S2、S3、-S4x0成立,y2成立,z0不成立。6-S1、-S2、S3、S4x0不成立,y2成立,z0成立。7-S1、S2、-S3、S4x0不成立,y2不成立,z0成立。8-S1、S2、S3、-S4x0不成立,y2成立,z0不成立。9S1、-S2、-S3、S4x0成立,y2不成立,z0成立。10S1、S2、-S3、-S4x0成立,y2不成立,z0不成立。11S1、-S2、S3、-S4x0成立,y2成立,z0不成立。12-S1、-S2、-S3、S4x0不成

9、立,y2不成立,z0成立。13-S1、-S2、S3、-S4x0不成立,y2成立,z0不成立。14S1、-S2、-S3、-S4x0成立,y2不成立,z0不成立。15-S1、S2、-S3、-S4x0不成立,y2不成立,z0不成立。16-S1、-S2、-S3、-S4x0不成立,y2不成立,z0不成立。3.1.5 條件組合覆蓋經(jīng)過(guò)分析可以發(fā)現(xiàn),第2、6、8、13這4種情況是不存在的,這幾種情況要求x0不成立,x2成立,這兩種結(jié)果相悖,因此最終圖3-1的所有條件組合情況有12種,根據(jù)這12種情況設(shè)計(jì)測(cè)試用例。3.1.5 條件組合覆蓋條件覆蓋測(cè)試用例序號(hào)組合測(cè)試用例條件1條件2覆蓋路徑xyztest1S1

10、、S2、S3、S43-1511acetest2S1、-S2、S3、S431501abetest3S1、S2、-S3、S41-1311acetest4S1、S2、S3、-S43-1111acetest5-S1、S2、-S3、S4-5-2101abetest6S1、-S2、-S3、S411101abetest7S1、S2、-S3、-S41-1110acdtest8S1、-S2、S3、-S461-201abetest9-S1、-S2、-S3、S4-11101abetest10S1、-S2、-S3、-S411-200abdtest11-S1、S2、-S3、-S4-2-1-300abdtest12-S1

11、、-S2、-S3、-S4-31-100abd3.1.5 條件組合覆蓋與判定-條件覆蓋相比,條件組合覆蓋包括了所有判定-條件覆蓋,因此它的覆蓋范圍更廣。但是當(dāng)程序中條件比較多時(shí),條件組合的數(shù)量會(huì)呈指數(shù)型增長(zhǎng),組合情況非常多,要設(shè)計(jì)的測(cè)試用例也會(huì)增加,這樣反而會(huì)使測(cè)試效率降低。3.1.6 實(shí)例:三角形邏輯覆蓋問(wèn)題根據(jù)三角形三邊的關(guān)系可將三角形分為4種類型:不構(gòu)成三角形、一般三角形、等腰三角形、等邊三角形。根據(jù)該原則實(shí)現(xiàn)一個(gè)判斷三角形的程序。三角形邏輯覆蓋3.1.6 實(shí)例:三角形邏輯覆蓋問(wèn)題INT A B C/三角形的三邊IF(A+BC)&(A+CB)&(B+C)A) /是否滿足三角形成立條件 IF

12、(A=B)&(B=C) /等邊三角形 等邊三角形 ELSE IF(A=B)|(B=C)|(A=C) /等腰三角形 等腰三角形 ELSE/一般三角形 一般三角形ELSE 不是三角形 END3.1.6 實(shí)例:三角形邏輯覆蓋問(wèn)題三角形流程圖3.1.6 實(shí)例:三角形邏輯覆蓋問(wèn)題對(duì)程序進(jìn)行分析,程序的執(zhí)行路徑如右圖。圖中數(shù)字是代碼行號(hào),當(dāng)執(zhí)行程序輸入數(shù)據(jù)時(shí),程序根據(jù)條件判斷沿著不同的路徑執(zhí)行。3.1.6 實(shí)例:三角形邏輯覆蓋問(wèn)題使用判定覆蓋,使程序中每個(gè)判定語(yǔ)句至少有一次“真”值,至少有一次“假”值,根據(jù)流程圖和路徑圖分析,可設(shè)計(jì)4個(gè)測(cè)試用例。編號(hào)測(cè)試用例路徑預(yù)期輸出ABCtest16661-2-3-4

13、-11等邊三角形test26681-2-5-6-11等腰三角形test33451-2-7-8-11一般三角形test43361-9-10-11不構(gòu)成三角形3.2 插樁法程序插樁就是往被測(cè)試程序中插入測(cè)試代碼以達(dá)到測(cè)試目的的方法,插入的測(cè)試代碼被稱為探針。根據(jù)測(cè)試代碼插入的時(shí)間可以將插樁法分為目標(biāo)代碼插樁和源代碼插樁。3.2.1 目標(biāo)代碼插樁法目標(biāo)代碼插樁是指向目標(biāo)代碼(二進(jìn)制代碼)插入測(cè)試代碼,獲取程序運(yùn)行信息的測(cè)試方法,也稱為動(dòng)態(tài)程序分析方法。3.2.1 目標(biāo)代碼插樁法1、目標(biāo)代碼插樁原理目標(biāo)代碼插樁法的原理是在程序運(yùn)行平臺(tái)和底層操作系統(tǒng)之間建立中間層,通過(guò)中間層檢查執(zhí)行程序、修改指令,開(kāi)發(fā)

14、人員、軟件分析工程師等對(duì)運(yùn)行的程序進(jìn)行觀察,判斷程序是否被惡意攻擊或者出現(xiàn)異常行為,從而提高程序的整體質(zhì)量。3.2.1 目標(biāo)代碼插樁法2、目標(biāo)代碼插樁執(zhí)行模式 即時(shí)模式(Just-In-Time):原始的二進(jìn)制或可執(zhí)行文件沒(méi)有被修改或執(zhí)行,將修改部分的二進(jìn)制代碼生成文件副本存儲(chǔ)在新的內(nèi)存區(qū)域中,在測(cè)試時(shí)僅執(zhí)行修改部分的目標(biāo)代碼。3.2.1 目標(biāo)代碼插樁法 解釋模式(Interpretation Mode):在解釋模式中目標(biāo)代碼被視為數(shù)據(jù),測(cè)試人員插入的測(cè)試代碼作為目標(biāo)代碼指令的解釋語(yǔ)言,每當(dāng)執(zhí)行一條目標(biāo)代碼指令,程序就會(huì)在測(cè)試代碼中查找并執(zhí)行相應(yīng)的替代指令,測(cè)試通過(guò)替代指令的執(zhí)行信息就可以獲取

15、程序的運(yùn)行信息。 探測(cè)模式(Probe Mode):探測(cè)模式使用新指令覆蓋舊指令進(jìn)行測(cè)試,這種模式在某些體系結(jié)構(gòu)(如x86)中比較好用。PinDynamoRIO3.2.1 目標(biāo)代碼插樁法3、目標(biāo)代碼插樁工具3.2.2 源代碼插樁法源代碼插樁是指對(duì)源文件進(jìn)行完整的詞法、語(yǔ)法分析后,確認(rèn)插樁的位置,植入探針代碼。相比于目標(biāo)代碼插樁,源代碼插樁具有針對(duì)性和精確性。3.2.2 源代碼插樁法源代碼碼插樁模型3.2.2 源代碼插樁法相比于目標(biāo)代碼插樁,源代碼插樁實(shí)現(xiàn)復(fù)雜程度低。源代碼插樁是源代碼級(jí)別的測(cè)試技術(shù),探針代碼程序具有較好的通用性,使用同一種編程語(yǔ)言編寫(xiě)的程序可以使用一個(gè)探針代碼程序來(lái)完成測(cè)試。對(duì)

16、 比3.2.2 源代碼插樁法通過(guò)一個(gè)小案例來(lái)講解源代碼插樁。該案例是一個(gè)除法運(yùn)算。#include #define ASSERT(y) if(y) printf(出錯(cuò)文件:%sn,_FILE_); printf(在%d行:n,_LINE_); printf(提示:除數(shù)不能為0!n); /定義ASSERT(y)int main() int x,y;printf(請(qǐng)輸入被除數(shù):);scanf(%d,&x);printf(請(qǐng)輸入除數(shù):);scanf(%d,&y);ASSERT(y=0); /插入的樁(即探針代碼)printf(%d,x/y);return 0;3.2.2 源代碼插樁法插入宏函數(shù)ASS

17、ERT(y),當(dāng)除數(shù)為0時(shí)打印錯(cuò)誤原因、出錯(cuò)文件、出錯(cuò)行數(shù)等信息提示。根據(jù)除法運(yùn)算規(guī)則設(shè)計(jì)測(cè)試用例。測(cè)試用例數(shù)據(jù)輸入預(yù)期輸出結(jié)果T11,11T21,-1-1T3-1,-11T4-1,1-1T51,0錯(cuò)誤T6-1,0錯(cuò)誤T70,0錯(cuò)誤T80,10T90,-103.2.2 源代碼插樁法程序插樁測(cè)試方法有效的提高了代碼測(cè)試覆蓋率,但是插樁測(cè)試方法會(huì)帶來(lái)代碼膨脹、執(zhí)行效率低下和HeisenBugs,在一般情況下插樁后的代碼膨脹率在20%40%,甚至膨脹率達(dá)到100%導(dǎo)致插樁測(cè)試失敗???結(jié) 小提示:HeisenBugsHeisenBugs稱為海森堡bug,它是一種軟件缺陷,這種缺陷的重現(xiàn)率很低,當(dāng)人們

18、試圖研究時(shí)bug會(huì)消失或改變行為。實(shí)際開(kāi)發(fā)軟件測(cè)試中,這種缺陷也比較常見(jiàn),測(cè)試人員測(cè)試到一個(gè)缺陷提交給開(kāi)發(fā)人員,開(kāi)發(fā)人員執(zhí)行缺陷重現(xiàn)步驟卻得不到報(bào)告的缺陷,缺陷已經(jīng)消失或者出現(xiàn)了其他缺陷。多學(xué)一招:黑盒測(cè)試與白盒測(cè)試異同1、黑盒測(cè)試和白盒測(cè)試比較黑盒測(cè)試過(guò)程中不用考慮內(nèi)部邏輯結(jié)構(gòu),僅僅需要驗(yàn)證軟件外部功能是否符合用戶實(shí)際需求。黑盒測(cè)試可發(fā)現(xiàn)以下缺陷: 外部邏輯功能缺陷,如界面顯示信息錯(cuò)誤等 兼容性錯(cuò)誤,如系統(tǒng)版本支持、運(yùn)行環(huán)境等。 性能問(wèn)題,如運(yùn)行速度、響應(yīng)時(shí)間等。多學(xué)一招:黑盒測(cè)試與白盒測(cè)試異同1、黑盒測(cè)試和白盒測(cè)試比較白盒測(cè)試與黑盒測(cè)試不同,白盒測(cè)試可以設(shè)計(jì)測(cè)試用例盡可能覆蓋程序中分支語(yǔ)句

19、,分析程序內(nèi)部結(jié)構(gòu)。白盒測(cè)試常用于以下幾種情況: 源程序中含有多個(gè)分支,在設(shè)計(jì)測(cè)試用例時(shí)要盡可能覆蓋所有分支,提高測(cè)試覆蓋率。 內(nèi)存泄漏檢查迅速,黑盒測(cè)試只能在程序長(zhǎng)時(shí)間運(yùn)行中發(fā)現(xiàn)內(nèi)存泄漏問(wèn)題,而白盒測(cè)試能立即發(fā)現(xiàn)內(nèi)存泄露問(wèn)題。多學(xué)一招:黑盒測(cè)試與白盒測(cè)試異同2、測(cè)試階段測(cè)試名稱測(cè)試對(duì)象測(cè)試方法單元測(cè)試模塊功能(函數(shù)、類)白盒測(cè)試集成測(cè)試接口測(cè)試(數(shù)據(jù)傳遞)黑盒測(cè)試和白盒測(cè)試系統(tǒng)測(cè)試系統(tǒng)測(cè)試(軟件、硬件)黑盒測(cè)試驗(yàn)收測(cè)試系統(tǒng)測(cè)試(軟件、硬件、用戶體驗(yàn))黑盒測(cè)試#include int main() int i,mid,a3;for(i=0;i3;i+)scanf(%d,&ai);mid=a2;

20、if(a1a2) if(a0a1)mid=a1; else if(a0a1) mid=a1;else if(a0a2) mid=a0;printf(中間值是:%dn,mid);return 0;3.2.3 實(shí)例:求三個(gè)數(shù)的中間值3.2.3 實(shí)例:求三個(gè)數(shù)的中間值上述代碼是比較三個(gè)數(shù)中間值的源碼,使用探針LINE()對(duì)源程序進(jìn)行插樁,該探針監(jiān)視程序執(zhí)行過(guò)程。程序在執(zhí)行后,LINE()會(huì)將程序的執(zhí)行過(guò)程寫(xiě)入到一個(gè)名為prop.txt的文件中,若沒(méi)有prop.txt文件會(huì)自動(dòng)創(chuàng)建,若prop.txt文件已存在,則在每次執(zhí)行程序之后從文件開(kāi)始重新寫(xiě)入文件,覆蓋上一次程序?qū)懳募臄?shù)據(jù)。測(cè)試人員通過(guò)寫(xiě)入的

21、文件可以查看源程序執(zhí)行的過(guò)程。3.2.3 實(shí)例:求三個(gè)數(shù)的中間值插樁后的代碼: #include #define LINE() fprintf(_POINT_,%3d,_LINE_) FILE *_POINT_; int main()if(_POINT_=fopen(test.txt,w)=NULL)fprintf(stderr,不能打開(kāi)test.txt文件); int i,mid,a3;for(LINE(),i=0;i3;LINE(),i+)LINE(),scanf(%d,&ai);LINE(),mid=a2;if(LINE(),a1a2)if(LINE(),a0a1)LINE(),mid=

22、a1; else if(LINE(),a0a1)LINE(),mid=a1;else if(LINE(),a0a2LINE(),mid=a0;LINE(),printf(中間值是:%dn,mid);LINE(),fclose(_POINT_);return 0; 3.2.3 實(shí)例:求三個(gè)數(shù)的中間值設(shè)計(jì)測(cè)試用例測(cè)試用例測(cè)試數(shù)據(jù)預(yù)期輸出結(jié)果T11,1,21T21,2,32T33,2,12T43,3,33T56,4,5,5T66,8,46T78,4,983.2.3 實(shí)例:求三個(gè)數(shù)的中間值執(zhí)行測(cè)試用例之后發(fā)現(xiàn),T7結(jié)果與預(yù)期結(jié)果不一致。經(jīng)過(guò)分析prop.txt文件和代碼,發(fā)現(xiàn)程序中存在邏輯錯(cuò)誤:只要輸入的數(shù)據(jù)滿足a0和a2大于a1且a0小于a3時(shí),運(yùn)行結(jié)果就會(huì)錯(cuò)誤。

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論