課件02-嵌入式軟件測試_第1頁
課件02-嵌入式軟件測試_第2頁
課件02-嵌入式軟件測試_第3頁
課件02-嵌入式軟件測試_第4頁
課件02-嵌入式軟件測試_第5頁
已閱讀5頁,還剩84頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

嵌入式軟件測試

第二部分測試類型測試類型—提要代碼類測試類型規(guī)格說明類測試類型質(zhì)量特性類測試類型代碼類測試類型代碼審查(Codeinspections)代碼走查(Codewalkthroughs)靜態(tài)分析邏輯覆蓋測試(Logic-CoverageTesting)數(shù)據(jù)流測試變元測試(mutationtest)代碼審查—內(nèi)容與方法主要測試內(nèi)容檢查代碼和設(shè)計的一致性檢查代碼執(zhí)行標(biāo)準(zhǔn)的情況檢查代碼邏輯表達的正確性檢查代碼結(jié)構(gòu)的合理性檢查代碼的可讀性方法審查會依據(jù)代碼審查單逐項審查代碼審查—過程計劃介紹準(zhǔn)備審查會返工后續(xù)跟蹤代碼審查—審查會評審組長產(chǎn)品開發(fā)人員記錄人員評審人員SQA人員系統(tǒng)維護人員用戶代表代碼審查—準(zhǔn)入條件一組技術(shù)上有能力且經(jīng)過培訓(xùn)的審查人員一個受過培訓(xùn)的審查組長正確的計劃和材料的分發(fā)良好的專業(yè)態(tài)度在審查會召開之前的全面準(zhǔn)備已完成的設(shè)計文檔和源代碼已確認的檢查單或編碼標(biāo)準(zhǔn)代碼審查—需要解決的實際問題審查工作流于形式,缺乏操作性參與審查工作的人員缺乏相應(yīng)的培訓(xùn),審查過程中得不到適當(dāng)?shù)闹笇?dǎo)、監(jiān)督對審查工作的重要性和嚴肅性認識不足,沒有合理的計劃,審查前準(zhǔn)備不充分,審查工作變成一種臨時性的即興活動審查人員的審查技能或?qū)I(yè)知識不足代碼審查—需要解決的實際問題審查會偏離主題,演變成解決方案研討或技術(shù)攻關(guān)會,審查效率低下沒有對審查中發(fā)現(xiàn)的問題進行跟蹤,使審查工作功虧一簣,前功盡棄沒有建立測量數(shù)據(jù)收集機制,不分析審查工作的有效性,管理人員和技術(shù)人員體會不到審查帶來的效益和效果,不利于全員參與代碼審查—工作指南審查作為項目計劃的一部分考慮,分配資源和時間為每個要審查的工作產(chǎn)品建立一個檢查表限制參與人數(shù),3–5名成員最佳制定議程,并且遵守議程審查會的時間不要超過兩個小時以建設(shè)性的方式討論問題,不要針對被審查產(chǎn)品的設(shè)計者代碼類—代碼審查工作指南將注意力集中在驗證和確認參與者提出的意見,避免探討解決方案限制爭論和辯駁,對提出的問題有不同意見時,通過記下問題并另行專題討論來結(jié)束爭論將討論的意見及其驗證和確認的結(jié)果形成文檔建立跟蹤機制,確保返工活動具有滿意的性能代碼走查—內(nèi)容與方法主要測試內(nèi)容代碼執(zhí)行邏輯的正確性代碼數(shù)據(jù)操作的正確性代碼的健壯性方法人工執(zhí)行測試用例采用會議形式,關(guān)鍵在于用例執(zhí)行過程中的討論靜態(tài)分析—內(nèi)容與方法主要測試內(nèi)容控制流分析數(shù)據(jù)流分析接口分析表達式分析質(zhì)量度量最差情況分析方法自動測試工具輔助靜態(tài)分析—復(fù)雜性度量使用McCabe復(fù)雜度度量作為指標(biāo)對循環(huán)嵌套進行計算對控制流圖進行直觀檢查對數(shù)據(jù)流圖進行直觀檢查靜態(tài)分析—關(guān)注點未定義但被引用的變量必須從代碼中消除全局變量異常(局部覆蓋全局)必須從代碼中消除消除不使用的內(nèi)容不可達的代碼(包括過程)聲明但未使用的變量定義的變量但未在作用域中使用應(yīng)在代碼中文檔化說明靜態(tài)分析—關(guān)注點變量定義后未使用又被重新定義應(yīng)在代碼中文檔化說明可疑的拋投(信息丟失,不匹配)如果不可避免,使用顯示拋投應(yīng)在代碼中文檔化說明設(shè)計架構(gòu)問題對控制流圖進行直觀檢查過程參數(shù)異常(僅引用,僅定義,未使用)靜態(tài)分析—關(guān)注點被零除范圍檢查錯棧溢出錯堆溢出錯無效指針操作浮點上溢出浮點下溢出無效浮點運算對象未初始化邏輯覆蓋測試—覆蓋要求語句覆蓋分支覆蓋條件覆蓋條件分支覆蓋修正條件分支覆蓋(MC/DC)條件組合覆蓋基本路徑覆蓋邏輯覆蓋測試—控制流圖一個段是一個或多個無條件連續(xù)執(zhí)行的語句一個段在控制流圖中用一個結(jié)點表示,結(jié)點可以用任何方便的形式命名一個控制條件轉(zhuǎn)移是一個分支,一個分支段在控制流圖中用一個輸出邊表示一個程序的入口點用入口結(jié)點表示,它是一個沒有輸入邊的結(jié)點,一個程序的出口點用出口結(jié)點表示,它是一個沒有輸出邊的結(jié)點邏輯覆蓋測試—程序?qū)嵗齰oidDoWork(intx,inty,intz){intk=0,j=0;if((x>3)&&(z<10)){k=x*y-1;j=sqrt(k);}if((x==4)||(y>5)){j=x*y+10;}j=j%3;}邏輯覆蓋測試—控制流圖例A:1,2,3B:4C:5,6,7,8D:9E:10,11,12F:13,14ABDFEC邏輯覆蓋測試—復(fù)雜度度量圈復(fù)雜度V(G)計算1V(G)=e–n+2e表示控制流圖中邊的數(shù)量,n表示控制流圖中節(jié)點的數(shù)量計算2V(G)=區(qū)域數(shù)計算3V(G)=判定節(jié)點數(shù)+1邏輯覆蓋測試—語句覆蓋程序中每條語句至少被執(zhí)行一次C1覆蓋、行覆蓋、段覆蓋、基本塊覆蓋語句覆蓋的盲點(循環(huán);條件)語句覆蓋是最起碼的測試要求邏輯覆蓋測試—語句覆蓋用例{x=4、y=5、z=5}執(zhí)行路徑ABCDEFABDFEC判定1:(x>3)&&(z<10)判定2:(x==4)||(y>5)邏輯覆蓋測試—分支覆蓋程序中的每一個分支至少通過一次C2覆蓋、決策覆蓋、判定覆蓋分支覆蓋的盲點短路估值使分支覆蓋不必考慮所有條件分支覆蓋不能保證所有入口-出口路徑都被執(zhí)行邏輯覆蓋測試—分支覆蓋用例{x=4、y=6、z=5}{x=2、y=5、z=5}執(zhí)行路徑ABCDEFABDFABDFEC12判定1:(x>3)&&(z<10)判定2:(x==4)||(y>5)邏輯覆蓋測試—條件覆蓋判定中的每個條件獲得各種可能的結(jié)果不要求測試所有可能的分支邏輯覆蓋測試—條件覆蓋用例{x=4、y=6、z=15}{x=2、y=5、z=5}執(zhí)行路徑ABDEFABDF12ABDFEC判定1:(x>3)&&(z<10)判定2:(x==4)||(y>5)邏輯覆蓋測試—條件分支覆蓋判定中每個條件的所有可能取值至少執(zhí)行一次同時每個判定的所有可能判定結(jié)果至少執(zhí)行一次邏輯覆蓋測試—條件分支覆蓋用例{x=4、y=6、z=5}{x=2、y=5、z=15}執(zhí)行路徑ABCDEFABDF判定1:(x>3)&&(z<10)判定2:(x==4)||(y>5)12ABDFEC邏輯覆蓋測試—MC/DC修正條件分支覆蓋(MC/DC)程序里的每一個判定都至少取所有可能的輸出一次程序中判定的每一個條件都取所有可能的輸出至少一次判定中的每一個條件都被證明可以獨立影響判定的輸出邏輯覆蓋測試—MC/DC用例編號條件(與)判定1x>3z<1011TTT12TFF13FTF用例編號條件(或)判定2x==4y>521TFT22FTT23FFF邏輯覆蓋測試—MC/DC用例{x=4、y=5、z=5}11,

21{x=2、y=5、z=9}13,

23{x=6、y=6、z=15}12,

22執(zhí)行路徑ABCDEFABDFABDEF12ABDFEC3邏輯覆蓋測試—條件組合覆蓋每個判定中條件的各種組合至少出現(xiàn)一次達到了條件組合覆蓋,所有的語句、分支和條件都將覆蓋,但不保證路徑覆蓋在實際測試中,由于謂詞表達式的短路估值和排它性條件使得達到所有條件組合不可能邏輯覆蓋測試—條件組合覆蓋用例{x=4、y=6、z=5}{x=4、y=5、z=15}{x=2、y=6、z=5}{x=2、y=5、z=15}執(zhí)行路徑ABCDEFABDEFABDEFABDFABDFEC1423判定1:(x>3)&&(z<10)判定2:(x==4)||(y>5)邏輯覆蓋測試—基本路徑覆蓋基本路徑數(shù)=圈復(fù)雜度(C)基本路徑覆蓋要求測試C條不同的入口-出口路徑在某些程序中,分支覆蓋可在少于C條路徑的情況下獲得基本路徑覆蓋可能既沒有獲得語句覆蓋也沒有獲得分支覆蓋邏輯覆蓋測試—基本路徑覆蓋圈復(fù)雜度C=7-6+2=3用例{x=4、y=6、z=5}{x=4、y=5、z=15}{x=2、y=5、z=15}執(zhí)行路徑ABCDEFABDEFABDFABDFEC132邏輯覆蓋測試—覆蓋分析器覆蓋分析器是分析測試覆蓋率的工具覆蓋分析器工作原理通過對源代碼的詞法分析,插入可跟蹤代碼,再編譯連接;當(dāng)裝配過可跟蹤代碼的軟件執(zhí)行時,就會產(chǎn)生一個跟蹤文件;測試完成后,利用跟蹤文件生成覆蓋報告。邏輯覆蓋測試—覆蓋率的作用發(fā)現(xiàn)不可執(zhí)行的路徑或條件不可能到達或冗余的代碼不充分的測試用例集邏輯覆蓋測試—覆蓋與缺陷查找覆蓋與發(fā)現(xiàn)缺陷之間沒有必然聯(lián)系達到85%容易,達到100%困難不可到達的代碼(控制流無法到達)復(fù)雜序列(很難使控制流到達)數(shù)據(jù)流覆蓋測試通過一定的覆蓋準(zhǔn)則檢查程序中每個數(shù)據(jù)對象的每次定義、使用和消除數(shù)據(jù)流模型(DUK)數(shù)據(jù)流覆蓋策略變元測試測試覆蓋被測實現(xiàn)的指定的變體,如測試探測到變元,則變體“退役”,如測試探測不到變元,則修正測試包變元是指為程序植入小的變化,一般是常出現(xiàn)的錯誤,如將>=改寫成>用于檢查系統(tǒng)的容錯能力和測試套件的充分性規(guī)格說明類測試功能測試性能測試接口測試人機交互界面測試功能測試詳盡測試每一個軟件功能功能——產(chǎn)品能夠完成的任務(wù),如:特征/命令/任務(wù)標(biāo)識等組合功能的測試測試基本流(最簡單執(zhí)行路徑)測試備選流(特定條件下的執(zhí)行路徑)功能測試—要求檢驗功能的完備性檢驗功能的正確性需要滿足精度等要求測試功能的健壯性功能測試—用例設(shè)計方法單項功能邊界值分析等價類劃分組合邏輯分析組合功能場景測試(Scenariotesting)狀態(tài)轉(zhuǎn)換性能測試性能測試是對軟件需求規(guī)格說明或設(shè)計文檔中的性能需求逐項進行的測試,以驗證其性能是否滿足規(guī)定的指標(biāo)要求性能測試有時可理解為有定量指標(biāo)要求的一些功能,其基礎(chǔ)是功能滿足要求,所以通常在功能測試的基礎(chǔ)上再做性能測試性能測試—性能系統(tǒng)或組件對于其及時性和資源利用性目標(biāo)的符合程度良好的性能需求定義有前提條件性能測試—及時性在規(guī)定條件下,軟件產(chǎn)品執(zhí)行其功能時,提供適當(dāng)?shù)捻憫?yīng)和處理時間以及吞吐率的能力響應(yīng)時間系統(tǒng)對事件產(chǎn)生響應(yīng)所需要的時間吞吐量特定時間內(nèi)能夠處理的事件數(shù)量性能測試—時間限制類型實時嵌入式系統(tǒng)的時間限制類型最大時間:一個事件和另一個事件發(fā)生的時間間隔最大不超過t個單位時間最小時間:兩個事件之間發(fā)生的時間間隔最小不小于t個單位時間持續(xù)時間:一種狀態(tài)必須存在t個單位時間性能測試—資源利用率在規(guī)定條件下,軟件產(chǎn)品執(zhí)行其功能時,使用合適數(shù)量和類別的資源的能力主要包括內(nèi)存使用CPU負載數(shù)據(jù)庫連接數(shù)接口飽和度磁盤利用率性能測試—性能約束需要弄清影響性能指標(biāo)要求的全部潛在因素的約束條件考慮系統(tǒng)能力(硬件、支撐軟件)網(wǎng)絡(luò)負載情況,典型/峰值的并發(fā)需訪問的數(shù)據(jù)庫,類型、數(shù)量、結(jié)構(gòu)、布局,數(shù)據(jù)庫中的數(shù)據(jù)量網(wǎng)絡(luò)的結(jié)構(gòu),帶寬性能測試—合格判據(jù)實時系統(tǒng)往往考慮最差情況強實時系統(tǒng)的一次性能不滿足要求,往往就是功能失效非實時系統(tǒng)通常考慮平均情況性能測試—方法從軟件性能需求中獲得性能測試需求確定需測試的性能指標(biāo)確定關(guān)鍵用例、關(guān)鍵場景最重要、最耗時、最頻繁等確定影響被測性能指標(biāo)的負載規(guī)模準(zhǔn)備測試環(huán)境執(zhí)行測試用例,記錄測試結(jié)果分析、計算結(jié)果判定性能測試—性能數(shù)據(jù)采集方法系統(tǒng)監(jiān)視器程序監(jiān)視器系統(tǒng)事件記錄器外部程序事件記錄器內(nèi)部事件記錄器性能測試—環(huán)境時間測量外部觀察,適用于精度要求不高時,如使用秒表計時插樁探測,使用數(shù)字示波器,或機器時鐘,關(guān)鍵在于測量分辨率測量資源利用率系統(tǒng)自帶測量工具專門設(shè)計的方法性能測試—執(zhí)行考慮盡可能多的情況,反復(fù)測試,如實記錄每次測試結(jié)果在測試記錄中要記清相應(yīng)的測試環(huán)境,尤其是關(guān)鍵影響因素,以便做出正確判斷在得到一系列數(shù)據(jù)后再作判斷實時系統(tǒng)通常根據(jù)最差情況判斷非實時系統(tǒng)通常根據(jù)數(shù)據(jù)分布判斷性能測試—最差運行時間(WCET)獲取最差運行時間(WCET)的常用手段動態(tài)測量技術(shù)軟件動態(tài)運行獲取測試所有情況比較困難需要專門的測量儀器和設(shè)備靜態(tài)分析技術(shù)分析目標(biāo)代碼結(jié)果精確接口測試從系統(tǒng)和子系統(tǒng)設(shè)計規(guī)格說明、軟件接口需求規(guī)格說明中獲得接口測試需求測試所有外部接口,檢查接口信息的格式及內(nèi)容,考核異常情況的管理測試所有內(nèi)部接口的功能和性能接口測試—主要接口類型參數(shù)接口數(shù)據(jù)通過參數(shù)從一個過程傳遞到另一個過程共享存儲器接口在過程或函數(shù)之間共享存儲器API接口一系列的過程被封裝成子系統(tǒng),供另一個子系統(tǒng)調(diào)用消息接口一個子系統(tǒng)向其它子系統(tǒng)請求服務(wù)接口測試—主要接口錯誤類型接口誤用一個組件調(diào)用另一個組件時,在使用其接口時產(chǎn)生了錯誤接口誤解在調(diào)用組件中嵌入了對被調(diào)用組件行為的不正確假設(shè)同步誤差調(diào)用和被調(diào)用的組件以不同的速度運行,訪問到過時的信息接口測試—通信協(xié)議測試嵌入式系統(tǒng)的通信協(xié)議種類很多標(biāo)準(zhǔn)協(xié)議私有協(xié)議接口驅(qū)動程序采用非貨架產(chǎn)品時,需要測試非應(yīng)用層協(xié)議的實現(xiàn)正確性測試健壯性測試需要接口測試設(shè)備接口測試—指南設(shè)計超出被調(diào)用組件參數(shù)范圍的測試對于指針參數(shù),一定要測試空指針設(shè)計可導(dǎo)致組件失效的測試在消息傳遞系統(tǒng)中,使用強度測試在共享存儲器系統(tǒng)中,改變組件活動的次序人機交互界面測試操作和顯示界面及界面風(fēng)格與需求規(guī)格說明中要求的一致性和符合性(正確性、有效性)以非常規(guī)操作、誤操作、快速操作來檢驗人機界面的可靠性對錯誤命令或非法數(shù)據(jù)輸入的檢測能力與提示情況(健壯性)對錯誤操作流程的檢測與提示對照用戶或操作手冊逐條進行操作和觀察質(zhì)量特性類測試類型容量測試余量測試強度測試安全性測試信息安全測試可靠性測試容量測試容量測試的目的是檢驗軟件的能力最高能達到什么程度,確定系統(tǒng)的可伸縮性,從容量規(guī)劃的角度確定軟件的使用等級限制可伸縮性是系統(tǒng)在對其功能要求增加的情況下,繼續(xù)實現(xiàn)響應(yīng)時間或吞吐量目標(biāo)的能力有時系統(tǒng)容量作為系統(tǒng)指標(biāo),有時系統(tǒng)的實際容量需要測試才能得到容量測試—用例設(shè)計確定進行容量測試的性能指標(biāo)或指標(biāo)的成分確定影響指標(biāo)行為的因素,給出這些影響因素在“正常”情況下的典型要求確定性能負載增加的增量值確定到達不正常后,尋找臨界值(容量點)的方法,如二分法容量測試—執(zhí)行測試前做好分析,確定容量測試不會造成系統(tǒng)損傷測試執(zhí)行時,通過向系統(tǒng)逐步施加不斷增大的性能負載,確定系統(tǒng)能否可靠地適應(yīng)性能負載的增加記錄每次性能負載增加的測試結(jié)果仔細觀察系統(tǒng)的響應(yīng)結(jié)果,與“正常情況”進行對比根據(jù)測試結(jié)果,綜合分析,確定系統(tǒng)能可靠處理的最大性能負載,評估系統(tǒng)的可伸縮性余量測試余量測試是對軟件是否達到需求規(guī)格說明中要求的余量的測試余量測試時,需要獲得測試量的最大值,剩下的是余量。用什么辦法能說明獲得的測試量是最大值是關(guān)鍵例如時間片規(guī)定是50ms,規(guī)定要求余量是30%,需要說明測試中考慮了消耗時間最長情況,其結(jié)果也在35ms以內(nèi)余量測試—動因嵌入式軟件常常通過裕度設(shè)計提高系統(tǒng)的可靠性在實際應(yīng)用中,由于某些預(yù)料不到的情況的發(fā)生,系統(tǒng)會在某些時刻以某種方式膨脹,如:處理時間變長,數(shù)據(jù)從正常區(qū)域波動到非正常區(qū)域等,設(shè)計留有余量將可以容納這些意外波動,維持系統(tǒng)正常運行規(guī)格說明中無明確要求時,一般至少留有20%的余量余量測試—目標(biāo)存儲器使用輸入/輸出通道使用處理時間吞吐量注意:不是所有的性能要求都需要余量測試強度測試強制軟件運行在不正常到發(fā)生故障的情況下(設(shè)計的極限狀態(tài)到超出極限),檢驗軟件可以運行到何種程度需要弄清被測對象什么叫不正常,什么叫發(fā)生故障,它們表現(xiàn)形式是什么通?;趩我蛩丶僭O(shè),選取不同因素反復(fù)測試和試驗發(fā)現(xiàn)軟件的性能瓶頸,提供優(yōu)化方案強度測試—相關(guān)思考找出臨界點是關(guān)鍵測試過程中負載逐步增加,反復(fù)測試找到一個最低的導(dǎo)致故障的點也存在達不到故障點的情況關(guān)于連續(xù)運行時間強度需要連續(xù)不中斷的運行,應(yīng)該構(gòu)造一個較大的測試用例庫作為支撐,測試用例庫的測試用例重復(fù)周期要超過指定的時間長度最好能實現(xiàn)自動測試強度測試—與其它測試的關(guān)系正常運行不正常但可運行性能測試故障容量測試強度測試正常運行設(shè)計規(guī)范余量測試工作極限破壞極限正常工作區(qū)設(shè)計裕度過應(yīng)力安全性測試對防止危險狀態(tài)措施的有效性和每個危險狀態(tài)下的反應(yīng)的測試對設(shè)計中用于提高安全性的結(jié)構(gòu)、算法、容錯、冗余、中斷處理等方案的測試對異常條件下系統(tǒng)/軟件的處理和保護能力的測試,以表明不會導(dǎo)致不安全狀態(tài)對雙工切換、多機替換的正確性和連續(xù)性的測試安全性測試—要點應(yīng)明確系統(tǒng)的安全狀態(tài)以及對軟件處理的要求安全性測試重點關(guān)注安全相關(guān)的功能,因此需求的分類管理很重要進行安全性測試時,應(yīng)對測試的后果預(yù)先進行評估,防止測試導(dǎo)致?lián)p失,在真實環(huán)境下測試前應(yīng)在仿真環(huán)境下預(yù)先驗證安全性測試應(yīng)關(guān)注系統(tǒng)各級別上安全機制的協(xié)調(diào)性和合理性信息安全測試對具有防止非法進入軟件并保護軟件的數(shù)據(jù)完整性能力的測試對重要數(shù)據(jù)的抗非法訪問能力的測試防止數(shù)據(jù)完整性被破壞能力的測試防止系統(tǒng)可用性遭受破壞能力的測試邏輯炸彈等惡意邏輯和功能檢測信息安全測試—焦點嵌入式系統(tǒng)關(guān)注的信息安全特征A(可用性)-I(完整性)-C(機密性),控制的可用性和完整性最重要,數(shù)據(jù)平均信息量較低,機密性要求不高許多控制系統(tǒng)提供0.999999的可用性,安全不能降低可用性!信息安全測試—安全功能驗證身份識別與驗證系統(tǒng)對用戶身份進行鑒別權(quán)限管理通過鑒別的用戶的特權(quán)和訪問許可完整性避免數(shù)據(jù)訛誤保密性維持數(shù)據(jù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論