測(cè)試驅(qū)動(dòng)開發(fā)及開發(fā)實(shí)踐_圖文_第1頁(yè)
測(cè)試驅(qū)動(dòng)開發(fā)及開發(fā)實(shí)踐_圖文_第2頁(yè)
測(cè)試驅(qū)動(dòng)開發(fā)及開發(fā)實(shí)踐_圖文_第3頁(yè)
測(cè)試驅(qū)動(dòng)開發(fā)及開發(fā)實(shí)踐_圖文_第4頁(yè)
測(cè)試驅(qū)動(dòng)開發(fā)及開發(fā)實(shí)踐_圖文_第5頁(yè)
已閱讀5頁(yè),還剩16頁(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、第卷第期年月計(jì)算機(jī)技術(shù)與發(fā)展)匱測(cè)試驅(qū)動(dòng)開發(fā)及開發(fā)實(shí)踐張揚(yáng),黃厚寬(北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院,北京)摘要:極限編程是適應(yīng)于中小型團(tuán)隊(duì)在需求不明確或迅速變化的情況下進(jìn)行軟件開發(fā)的輕量級(jí)方法學(xué)。測(cè)試驅(qū)動(dòng)開發(fā)作為極限編程思想的一種主要實(shí)踐,可以有效地讓程序開發(fā)人員開發(fā)出更高品質(zhì)的、經(jīng)過(guò)完整測(cè)試的程序。文中介紹了測(cè)試驅(qū)動(dòng)開發(fā)思想,對(duì)測(cè)試驅(qū)動(dòng)開發(fā)過(guò)程給出了清晰的流程,總結(jié)了測(cè)試驅(qū)動(dòng)開發(fā)的多種模式。最后介紹了如何用進(jìn)行測(cè)試驅(qū)動(dòng)開發(fā)。關(guān)鍵詞:極限編程;測(cè)試驅(qū)動(dòng)開發(fā);中圖分類號(hào):耶文獻(xiàn)標(biāo)識(shí)碼:文章編號(hào):(),(如蝴,):()(),舢,山:;極限編程與測(cè)試驅(qū)動(dòng)開發(fā)極限編程(,)是適應(yīng)于中小型團(tuán)隊(duì)在需求不

2、明確或迅速變化的情況下進(jìn)行軟件開發(fā)的輕量級(jí)方法學(xué)】。極限編程是一種輕量、高效、低風(fēng)險(xiǎn)、柔性、可預(yù)測(cè)、科學(xué)而且充滿樂(lè)趣的軟件開發(fā)方式。它作為一種方法論有如下特點(diǎn):周期較短,在短周期內(nèi)進(jìn)行早期、具體和持續(xù)的反饋。遞增地進(jìn)行計(jì)劃編制。這種方法迅速提供一個(gè)總體計(jì)劃,然后在項(xiàng)目的整個(gè)生命周期內(nèi)不斷發(fā)展。具有針對(duì)不斷變化的業(yè)務(wù)需求靈活地對(duì)功能的實(shí)現(xiàn)進(jìn)行計(jì)劃的能力。依賴于由程序員或客戶編寫的自動(dòng)測(cè)試來(lái)監(jiān)控開發(fā)進(jìn)度,使得系統(tǒng)得以發(fā)展并及早捕獲缺陷。依賴于口頭交流、測(cè)試和源代碼來(lái)溝通系統(tǒng)的結(jié)構(gòu)和意圖。依賴于在系統(tǒng)存在期間一直持續(xù)的進(jìn)化式設(shè)計(jì)過(guò)程。收稿日期:一一作者簡(jiǎn)介:張揚(yáng)(一),男,山西呂梁人,碩士研究生,研

3、究方向?yàn)閿?shù)據(jù)挖掘與數(shù)據(jù)倉(cāng)庫(kù);黃厚寬,教授,博士生導(dǎo)師,研究方向?yàn)槿斯ぶ悄芗澳J阶R(shí)別。對(duì)程序員的技術(shù)水平要求不高,但要求他們緊密協(xié)作。既可滿足程序員的短期本能,也滿足項(xiàng)目的長(zhǎng)期利益。極限編程有個(gè)原則,分別為溝通、簡(jiǎn)單、反饋和勇氣。旨在采用許多只能通過(guò)溝通完成的實(shí)踐來(lái)保持良好的溝通,如單元測(cè)試、結(jié)對(duì)編程及任務(wù)估算。假設(shè)不用深謀遠(yuǎn)慮,想的很深很遠(yuǎn)才開始動(dòng)手。它要求今天能實(shí)現(xiàn)今天的設(shè)計(jì)就可,不去預(yù)先考慮解決明天或后天的事情。強(qiáng)調(diào)即時(shí)的反饋。它有兩種反饋模式,分別以分鐘和天的級(jí)別進(jìn)行反饋;以周和月的級(jí)別進(jìn)行反饋。程序員為系統(tǒng)中所有可能出錯(cuò)的邏輯編寫單元測(cè)試。他們每分鐘都得到有關(guān)系統(tǒng)狀態(tài)的具體反饋。客戶隔

4、兩到三周檢查一次日程,查看開發(fā)團(tuán)隊(duì)的整體速度是否與計(jì)劃相符,并隨之調(diào)整計(jì)劃。要求程序員有勇氣即時(shí)地修復(fù)缺陷,即使這使原來(lái)運(yùn)行通過(guò)的測(cè)試中出現(xiàn)了錯(cuò)誤;如果一天快要結(jié)束,而代碼依然失控,要求程序員有勇氣放棄原來(lái)的代碼??傊瑯O限編程要求程序員快速反饋,把每個(gè)問(wèn)題都看成可以用近乎荒謬的簡(jiǎn)單設(shè)計(jì)來(lái)解決,遞增進(jìn)行微小更改來(lái)解決問(wèn)題。測(cè)試驅(qū)動(dòng)開發(fā)(,)作為編程思想的一種主要實(shí)踐,可以有效地讓程序開發(fā)人員開發(fā)出更高品質(zhì)的、經(jīng)過(guò)完整測(cè)試的程序。測(cè)試驅(qū)動(dòng)開第期張揚(yáng)等:測(cè)試驅(qū)動(dòng)開發(fā)及開發(fā)實(shí)踐發(fā)以測(cè)試作為開發(fā)過(guò)程的開端,它要求在編寫任何產(chǎn)品代碼之前,首先編寫用于定義產(chǎn)品代碼行為的測(cè)試,而編寫的產(chǎn)品代碼又要以使測(cè)試通

5、過(guò)為目標(biāo)。不是一種開發(fā)工具,也不是一種測(cè)試方法,它是一種編碼之前進(jìn)行單元測(cè)試的軟件開發(fā)思想。測(cè)試驅(qū)動(dòng)開發(fā)過(guò)程與模式測(cè)試驅(qū)動(dòng)開發(fā)流程 開發(fā)過(guò)程有別于傳統(tǒng)開發(fā)流程(),它在進(jìn)行簡(jiǎn)單的概要設(shè)計(jì)后,首先進(jìn)行的是測(cè)試用例的編寫,然后執(zhí)行測(cè)試用例進(jìn)行測(cè)試。測(cè)試失敗,則進(jìn)行編碼驅(qū)使測(cè)試通過(guò),這就是所謂的測(cè)試驅(qū)動(dòng)。最終,測(cè)試得到通過(guò),再對(duì)代碼進(jìn)行重構(gòu),優(yōu)化代碼結(jié)構(gòu)和性能。而傳統(tǒng)流程則先進(jìn)行概要設(shè)計(jì),然后在概要設(shè)計(jì)基礎(chǔ)上進(jìn)行詳細(xì)設(shè)計(jì),在詳細(xì)設(shè)計(jì)階段盡可能設(shè)想到全部問(wèn)題和需求的解決方法,然后才開始編碼實(shí)現(xiàn)詳細(xì)設(shè)計(jì)。開發(fā)流程圖如圖所示。一、(翌苧蘭璺苧)圖開發(fā)流程圖測(cè)試驅(qū)動(dòng)開發(fā)的精髓在于:將測(cè)試方案設(shè)計(jì)工作提前,在

6、編寫代碼之前先做這一項(xiàng)工作;從測(cè)試的角度來(lái)驗(yàn)證設(shè)計(jì),推導(dǎo)設(shè)計(jì);同時(shí)將測(cè)試方案當(dāng)作行為的準(zhǔn)繩,有效地利用其檢驗(yàn)代碼編寫的每一步,實(shí)時(shí)驗(yàn)證其正確性,實(shí)現(xiàn)軟件開發(fā)過(guò)程的“小步快走”。測(cè)試驅(qū)動(dòng)開發(fā)預(yù)期有更好的代碼質(zhì)量。因?yàn)樗械拇a都是由測(cè)試驅(qū)動(dòng)而來(lái),所以所有代碼都是可以測(cè)試和必需的。在測(cè)試驅(qū)動(dòng)開發(fā)過(guò)程中,調(diào)試較傳統(tǒng)開發(fā)方式更加容易,因?yàn)樵诖酥八械拇a都已成功通過(guò)測(cè)試,總是由那些新添的測(cè)試或代碼引入的。在傳統(tǒng)的開發(fā)方式中,有時(shí)候程序員很難準(zhǔn)確定位的真正所在,這是一件很頭疼的事情。測(cè)試驅(qū)動(dòng)開發(fā)較之傳統(tǒng)流程開發(fā)有更小的開發(fā)壓力,它強(qiáng)調(diào)今天做好今天事情既可,而且盡可能簡(jiǎn)甲地實(shí)現(xiàn)眼前的需求。而每一個(gè)今天的

7、開始又建立在正確而健壯的以往代碼的基礎(chǔ)上。測(cè)試驅(qū)動(dòng)開發(fā)較之傳統(tǒng)流程開發(fā)有更快的開發(fā)速度,因?yàn)槊恳粋€(gè)當(dāng)前需要實(shí)現(xiàn)的功能都有測(cè)試需求作為依托,從而明確并且規(guī)模很小,這有利于程序員所謂的“小步快走”。測(cè)試驅(qū)動(dòng)開發(fā)的詳細(xì)開發(fā)過(guò)程如圖所示。圖詳細(xì)開發(fā)流程圖最后的重構(gòu)步驟指在不改變代碼外在行為的前提下,對(duì)代碼做出修改,以改進(jìn)程序的內(nèi)部結(jié)構(gòu),提高其可理解性,降低其修改成本。對(duì)極限編程而言,重構(gòu)并非“預(yù)先設(shè)計(jì)”的替代品,只是減輕了“預(yù)先設(shè)計(jì)”的壓力??梢栽诘玫降谝粋€(gè)可被接受的解決方案后開始編程,而不需要保證“預(yù)先設(shè)計(jì)”正確無(wú)誤。重構(gòu)應(yīng)該隨時(shí)隨地進(jìn)行。測(cè)試驅(qū)動(dòng)開發(fā)模式在測(cè)試驅(qū)動(dòng)開發(fā)中,關(guān)鍵的問(wèn)題如下:什么時(shí)候進(jìn)

8、行測(cè)試、如何選擇要測(cè)試的邏輯和如何選擇要測(cè)試的數(shù)據(jù)。測(cè)試驅(qū)動(dòng)開發(fā)模式指導(dǎo)程序員如何解決上述問(wèn)題。測(cè)試相互獨(dú)立。在測(cè)試驅(qū)動(dòng)開發(fā)中,所運(yùn)行的各種測(cè)試之間關(guān)系的期望狀態(tài)是沒(méi)有任何相互影響的。相互獨(dú)立的測(cè)試意味著所有的測(cè)試都是不依賴于順序的,可以隨便從這些測(cè)試中挑出部分測(cè)試來(lái)運(yùn)行。程序員必須將自己的問(wèn)題分解為一些彼此正交的小問(wèn)題,這樣就使得為每個(gè)測(cè)試搭建環(huán)境簡(jiǎn)單而快捷。獨(dú)立測(cè)試鼓勵(lì)利用高度內(nèi)聚、低度耦合的對(duì)象組合來(lái)解決問(wèn)題。寫出測(cè)試列表。程序員在開始寫測(cè)試之前,應(yīng)該寫一個(gè)包含所有必須要編寫的測(cè)試的清單。那么,記錄到列表上的就是當(dāng)前程序員要去實(shí)現(xiàn)的測(cè)試。首先將需要實(shí)現(xiàn)的每種操作的范例都記錄在清單上。對(duì)于

9、目前尚不存在的操作,將其空版本記錄在清單上。測(cè)試和斷言優(yōu)先。在測(cè)試驅(qū)動(dòng)開發(fā)中,程序員構(gòu)建一個(gè)系統(tǒng)應(yīng)該是從其對(duì)最終系統(tǒng)的描述開始的。程序員應(yīng)該從希望最終代碼能夠通過(guò)的測(cè)試開始編寫一項(xiàng)功能。相應(yīng)地,程序員應(yīng)該從測(cè)試完成時(shí)能夠通過(guò)的斷言開始編寫一個(gè)測(cè)試。在測(cè)計(jì)算機(jī)技術(shù)與發(fā)展第卷試優(yōu)先的測(cè)試?yán)锍绦騿T應(yīng)該盡量使用容易讓人理解的數(shù)據(jù),一般不用一個(gè)常量來(lái)表達(dá)多種意思。一般從測(cè)試列表中選擇具有指導(dǎo)意義并且比較有把握實(shí)現(xiàn)的測(cè)試來(lái)進(jìn)行編寫。當(dāng)使用一個(gè)新類里的一種新的方法時(shí),不直接用它來(lái)編寫程序,而是編寫一個(gè)小測(cè)試來(lái)驗(yàn)證這個(gè)的工作是否符合人們的愿望。當(dāng)出現(xiàn)某種與當(dāng)前討論話題并不直接相關(guān)的想法時(shí),那么就在列表中增加一

10、個(gè)測(cè)試然后重新回到論題上來(lái)。當(dāng)發(fā)現(xiàn)一個(gè)錯(cuò)誤的時(shí)候,首先寫個(gè)盡可能小的測(cè)試并使其運(yùn)行,然后再去修復(fù)這個(gè)錯(cuò)誤。利用進(jìn)行測(cè)試驅(qū)動(dòng)開發(fā)單元測(cè)試()指許多段的程序,寫這些程序的目的是用來(lái)成批執(zhí)行,以驗(yàn)證程序員所寫的類(鶴)。每一格都負(fù)責(zé)送一個(gè)消息()給一個(gè)特定的,并且驗(yàn)證所傳回來(lái)的值就是該所預(yù)期的答案。單元測(cè)試即用來(lái)測(cè)試程序員在主要程序中所有類的公共介面()的程式。單元測(cè)試的重點(diǎn)在于驗(yàn)證程序員所寫方法()所產(chǎn)生的結(jié)果與預(yù)期相同。常用編程語(yǔ)言及其對(duì)應(yīng)可用來(lái)進(jìn)行作其測(cè)試工具的單元測(cè)試工具,如表所示。表單元測(cè)試工具表鋤毋瑚】面蚴單元測(cè)試框架眥就是語(yǔ)言的一套程序庫(kù)(),適合于普通程序員使用原本就熟悉的開發(fā)語(yǔ)言(

11、)以及開發(fā)工具()寫出這些單元測(cè)試來(lái)。源自于由(極限編程創(chuàng)始人)所設(shè)計(jì)的單元測(cè)試框架()。利用進(jìn)行測(cè)試驅(qū)動(dòng)開發(fā)在建立測(cè)試,并進(jìn)行驅(qū)動(dòng)開發(fā)?,F(xiàn)在開發(fā)一個(gè)“”的例子。按照的規(guī)則,應(yīng)該在代碼建立以前先把測(cè)試寫好。為了能夠在某處開始,假設(shè)未來(lái)的類名是,并且有一個(gè)方法(),這個(gè)方法返回的值(例如“!”)。根據(jù)設(shè)定的程序功能,寫出測(cè)試代碼如下:;()();()();(“!”,();()();建立測(cè)試案例的步驟如下:)建立一個(gè)的實(shí)例。)定義一些以“”開頭的無(wú)返回方法(例如(),(),等等)。包含這些:的子類和一個(gè)叫做()的方法。這個(gè)方法調(diào)用了()函數(shù),它用來(lái)比較預(yù)期的值和由()返回的值。()方法用來(lái)運(yùn)行測(cè)試

12、和顯示輸出。的處理測(cè)試,提供基于圖像和文本的輸出表現(xiàn)形式。我們使用基于文本的版本,因?yàn)橹С炙?,且也適合我們。當(dāng)開始運(yùn)行后,基于文本的版本測(cè)試會(huì)以文本形式輸出,會(huì)把這些輸出自動(dòng)變成圖像界面的輸出?,F(xiàn)在建立被測(cè)試代碼:()(“!”);狀態(tài)條為綠,測(cè)試通過(guò),代碼實(shí)現(xiàn)既定目的。測(cè)試驅(qū)動(dòng)開發(fā)中容易陷入的誤區(qū)測(cè)試驅(qū)動(dòng)開發(fā)中容易陷入以下幾種誤區(qū):基于各種原因的不寫測(cè)試。程序員在很多情況下有很多客觀或情緒上的理由來(lái)排斥測(cè)試代碼先行。他們會(huì)想:進(jìn)度太緊,沒(méi)有時(shí)間寫測(cè)試;感覺(jué)比較古怪,無(wú)法接受;本項(xiàng)目有它自己的特殊性,并不適合測(cè)試驅(qū)動(dòng)開發(fā)的方式;有些代碼根本寫不出測(cè)試不論是在寫程序的時(shí)候,還是在應(yīng)用新的開發(fā)過(guò)程的

13、時(shí)候,人都是會(huì)犯錯(cuò)的。測(cè)試驅(qū)動(dòng)開發(fā)可以讓程序員很方便地研究它們、定義它們、檢查它們并可得到清晰的反饋結(jié)果。最終,程序員會(huì)發(fā)現(xiàn)他們不知不覺(jué)間解決了全部的問(wèn)題。測(cè)試的覆蓋面太小。有些人自詡也在應(yīng)用進(jìn)行開發(fā),但在上萬(wàn)行的工程代碼中,只有,個(gè)。只對(duì)某些“核心”模塊或復(fù)雜算法進(jìn)行測(cè)試驅(qū)動(dòng)?;蛘邇H僅是某個(gè)人試試的新功能的結(jié)果。這種使用方式根本不是真正的測(cè)試驅(qū)動(dòng)開發(fā)。測(cè)試用例并不是一條安全索,而是設(shè)計(jì)和實(shí)現(xiàn)的(下轉(zhuǎn)第頁(yè))第期楊利峰等:基于非監(jiān)督紋理分割的圖像查詢?cè)儓D像,查詢結(jié)果從左到右與查詢圖像的相似程度是遞減的,()為分割結(jié)果,這里的查詢圖像來(lái)自于數(shù)據(jù)庫(kù)。圖展示的是另外一個(gè)來(lái)自于數(shù)據(jù)庫(kù)的查詢圖像紋理的查詢

14、結(jié)果,同樣,()也為分割結(jié)果。 圖多重濾波器查詢結(jié)構(gòu)圖 )理紋理紋理 ()紋理紋理紋理圖紋理圖像的查詢結(jié)果通過(guò)進(jìn)行非監(jiān)督紋理分割,可以簡(jiǎn)便地理解圖像的結(jié)構(gòu),同時(shí)可以提取一些紋理特征進(jìn)行圖像查詢。運(yùn)用假設(shè)檢驗(yàn),可以將紋理區(qū)域分到與它最類似的區(qū)域中。結(jié)論提出了一種非監(jiān)督分割框架用于紋理圖像查詢。通(上接第頁(yè))手段,是一個(gè)組成部分。測(cè)試跨度過(guò)大。提供了系統(tǒng)最外層的輸入,然后就變魔術(shù)般地輸出最終結(jié)果。作為驗(yàn)收測(cè)試是適當(dāng)?shù)?,而且一般?lái)說(shuō),寫下的第一個(gè)測(cè)試就是這樣的高層次測(cè)試。但是,僅僅有這種測(cè)試是不夠的。需要有更多的說(shuō)明產(chǎn)生這一結(jié)果的內(nèi)部過(guò)程機(jī)制的測(cè)試代碼。判斷測(cè)試跨度的一個(gè)標(biāo)準(zhǔn)就是,每個(gè)測(cè)試應(yīng)該在較短

15、時(shí)間內(nèi)得以通過(guò)(比如幾小時(shí)之內(nèi))。如果寫下一個(gè)測(cè)試后進(jìn)行一周編碼后此測(cè)試才能通過(guò),那么對(duì)你不會(huì)有太大的幫助。應(yīng)該盡快地通過(guò)虛擬對(duì)象通過(guò)高層測(cè)試,并將注意力集中到較低層次對(duì)象需要滿足的測(cè)試上。測(cè)試針對(duì)代碼而不是針對(duì)功能。測(cè)試驅(qū)動(dòng)開發(fā)中的測(cè)試是為了驅(qū)動(dòng)開發(fā),從而產(chǎn)生能過(guò)這種分割方法,自動(dòng)提取圖像各類別的一組特征參數(shù)?;谶@些特征參數(shù),可以進(jìn)行有效的紋理圖像查詢。(紋理紋理紋理()紋理紋理紋理圖紋理圖像的查詢結(jié)果參考文獻(xiàn):,:,:,():,():,:,():,:,實(shí)現(xiàn)預(yù)期功能和意圖的代碼,而不是求全的測(cè)試。測(cè)試驅(qū)動(dòng)開發(fā)中的測(cè)試不必求全覆蓋所有的測(cè)試情況,而應(yīng)該清楚地表達(dá)你希望程序達(dá)到的意圖,并保證程

16、序真的符合這些意圖。參考文獻(xiàn):(測(cè)試驅(qū)動(dòng)開發(fā)(中文版)孫平平譯北京:中國(guó)電力出版社,解析極限編程擁抱變化唐東銘譯北京:人民郵電出版社,(中文版)鮑志云譯北京:電子工業(yè)出版社,單元測(cè)試之道版使用陳偉柱譯北京:電子工業(yè)出版社,王東剛軟件測(cè)試與實(shí)踐北京:人民郵電出版社 測(cè)試驅(qū)動(dòng)開發(fā)及開發(fā)實(shí)踐作者:張揚(yáng), 黃厚寬, ZHANG Yang, HUANG Hou-kuan作者單位:北京交通大學(xué),計(jì)算機(jī)與信息技術(shù)學(xué)院,北京,100044刊名:計(jì)算機(jī)技術(shù)與發(fā)展英文刊名:COMPUTER TECHNOLOGY AND DEVELOPMENT年,卷(期:2006,16(5被引用次數(shù):5次參考文獻(xiàn)(5條1. 王東剛 軟件測(cè)試與Junit實(shí)踐 20052. Hunt A;Thomas D;陳偉柱 單元測(cè)試之道Java版-使用Junit 20053. Massol V;鮑志云 Junit IN ACTION 20054. Beck K;唐東銘 解析極限編程-擁抱變化 20025. Beck K;孫平平

溫馨提示

  • 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)論