軟件工程課件_第1頁
軟件工程課件_第2頁
軟件工程課件_第3頁
軟件工程課件_第4頁
軟件工程課件_第5頁
已閱讀5頁,還剩842頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

軟件測試

軟件錯誤案例

軟件測試的目的和原則

軟件測試用例設(shè)計(jì)

軟件測試策略

軟件測試種類

程序調(diào)試軟件錯誤案例※1994年12月30日;ThomasR.Nicely博士在實(shí)驗(yàn)中,發(fā)現(xiàn)了奔騰CPU的除法問題

(4195835∕3145727)×31435727―4195835=?

5億美元VS27000年/次;企業(yè)VS公眾迪斯尼獅子王故事※2003年8月,位于美國俄亥俄州的第一能源(FirstEnergy)公司下屬的電力監(jiān)測與控制管理系統(tǒng)“XA/21”出現(xiàn)軟件錯誤,導(dǎo)致北美東北部大規(guī)模停電;

※2003年4月,一個軟件故障導(dǎo)致美國航空集團(tuán)公司損失數(shù)千美元,因?yàn)橛行C(jī)票的價格被誤定為1.86美元;

※千年蟲問題:更換或升級類似程序以解決潛在的2000年問題的費(fèi)用已經(jīng)達(dá)到數(shù)千億。※1996年6月4日,阿麗亞娜5型火箭第一次鑒定發(fā)射,因火箭導(dǎo)航電腦軟件系統(tǒng)發(fā)生故障而失?。?/p>

41秒=71億美元,十幾個國家,數(shù)萬技術(shù)人員※1999年12月3日,美國航天局的火星極地登陸者號探測器試圖在火星表面著陸時失蹤;

※美國愛國者導(dǎo)彈防御系統(tǒng)首次應(yīng)用在海灣戰(zhàn)爭中對抗伊拉克飛毛腿導(dǎo)彈的防御戰(zhàn)中,一次在沙特阿拉伯的多哈擊斃了28名美國士兵;軟件測試的目的和原則基本概念軟件測試的目的軟件測試的原則軟件測試的對象測試信息流(測試過程)測試與軟件開發(fā)各階段的關(guān)系軟件測試概念經(jīng)典定義:是在規(guī)定條件下對程序進(jìn)行操作,以發(fā)現(xiàn)錯誤,對軟件質(zhì)量進(jìn)行評估。IEEE定義:“使用人工或自動手段來運(yùn)行或測試某個系統(tǒng)的過程,其目的在于檢驗(yàn)它是否滿足規(guī)定的需求或是弄清楚預(yù)期結(jié)果與實(shí)際結(jié)果之間的差別”。軟件缺陷的定義1. 軟件未實(shí)現(xiàn)產(chǎn)品說明書要求的功能。2. 軟件出現(xiàn)了產(chǎn)品說明書指明不應(yīng)該出現(xiàn)的錯誤。3. 軟件實(shí)現(xiàn)了產(chǎn)品說明書未提到的功能。4. 軟件未實(shí)現(xiàn)產(chǎn)品說明書雖未明確提及但應(yīng)該實(shí)現(xiàn)的目標(biāo)。5. 軟件難以理解、不易使用、運(yùn)行緩慢或者——從測試員的角度看——最終用戶會認(rèn)為不好。軟件測試的目的基于不同立場,存在兩種測試目的。用戶:希望測試暴露軟件中隱藏的錯誤和缺陷。開發(fā)者:希望測試表明軟件不存在錯誤,驗(yàn)證軟件已實(shí)現(xiàn)預(yù)期功能,確立人們對軟件質(zhì)量的信心。Myers軟件測試目的(1)測試是程序的執(zhí)行過程,目的在于發(fā)現(xiàn)錯誤;(2)一個好的測試用例在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤;(3)一個成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯誤的測試。換言之,測試的目的是以最少的時間和人力,系統(tǒng)地找出軟件中潛在的各種錯誤和缺陷。

測試不能表明軟件中不存在錯誤,它只能說明軟件中存在錯誤。

軟件測試的原則1.應(yīng)當(dāng)把“盡早地和不斷地進(jìn)行軟件測試”作為軟件開發(fā)者的座右銘。2.測試用例應(yīng)由測試輸入數(shù)據(jù)、預(yù)期輸出結(jié)果兩部分組成。3.程序員應(yīng)避免檢查自己的程序。4.在設(shè)計(jì)測試用例時,應(yīng)包括合理的輸入條件和不合理的輸入條件。5.充分注意測試中的群集現(xiàn)象。6.嚴(yán)格執(zhí)行測試計(jì)劃,排除測試的隨意性。7.應(yīng)當(dāng)對每一個測試結(jié)果做全面檢查。8.妥善保存測試計(jì)劃,測試用例,出錯統(tǒng)計(jì)和最終分析報(bào)告,為維護(hù)提供方便。

9.完全測試是不可能的。10.軟件測試是有風(fēng)險的行為。

最優(yōu)測試量測試不足過度測試測試費(fèi)用漏掉的缺陷圖3-2每一個軟件項(xiàng)目都有一個最優(yōu)的測試量11.測試無法顯示潛伏的軟件缺陷。12.注意殺蟲劑怪事:對測試的免疫力。13.并非所有的軟件缺陷都要修復(fù)。14.軟件測試員在產(chǎn)品小組中不受歡迎。

MikhailRakhunov測試十原則

1.Testearlyandtestoften.

2.Integratetheapplicationdevelopmentandtestinglifecycles.You‘llgetbetterresultsandyouwon’thavetomediatebetweentwoarmedcampsinyourITshop.

3.Formalizeatestingmethodology;you‘lltesteverythingthesamewayandyou’llgetuniformresults.

4.Developacomprehensivetestplan;itformsthebasisforthetestingmethodology.

5.Usebothstaticanddynamictesting.

6.Defineyourexpectedresults.

7.Understandthebusinessreasonbehindtheapplication.You‘llwriteabetterapplicationandbettertestingscripts.

8.Usemultiplelevelsandtypesoftesting(regression,systems,integration,stressandload).

9.Reviewandinspectthework,itwilllowercosts.

10.Don’tletyourprogrammerschecktheirownwork;they‘llmisstheirownerrors.MikhailRakhunov測試十原則人際關(guān)系十大挑戰(zhàn)

10獲得軟件測試培訓(xùn)

9與開發(fā)人員保持良好關(guān)系

8無測試工具

7使管理人員了解測試

6與客戶保持交流

5分配測試時間

4測試“扔過墻“的軟件

3滿足不斷變化的需求

2解決兩難問題

1學(xué)會如何說不

軟件測試的對象

軟件測試并不等于程序測試。軟件測試應(yīng)貫穿于軟件定義與開發(fā)的整個期間。軟件測試的對象:需求規(guī)格說明、概要設(shè)計(jì)規(guī)格說明、詳細(xì)設(shè)計(jì)規(guī)格說明、源程序……為把握各個環(huán)節(jié)的正確性,需要V&V。驗(yàn)證(Verification)Areweproducingtheproductright?表明滿足規(guī)定要求;強(qiáng)調(diào)過程的正確性。確認(rèn)(Validation):Areweproducingtherightproduct?表明滿足預(yù)期用途或應(yīng)用要求;強(qiáng)調(diào)結(jié)果的正確性。測試信息流(測試過程)測試信息流軟件配置:軟件需求規(guī)格說明、軟件設(shè)計(jì)規(guī)格說明、源代碼等;測試配置:測試計(jì)劃、測試用例、測試程序等;測試工具:測試數(shù)據(jù)自動生成程序、靜態(tài)分析程序、動態(tài)分析程序、測試結(jié)果分析程序、以及驅(qū)動測試的測試數(shù)據(jù)庫等等。測試結(jié)果分析:比較實(shí)測結(jié)果與預(yù)期結(jié)果,評價錯誤是否發(fā)生。排錯(調(diào)試):對已經(jīng)發(fā)現(xiàn)的錯誤進(jìn)行錯誤定位和確定出錯性質(zhì),并改正這些錯誤,同時修改相關(guān)的文檔。修正后的文檔再測試:直到通過測試為止。通過收集和分析測試結(jié)果數(shù)據(jù),對軟件建立可靠性模型利用可靠性分析,評價軟件質(zhì)量:

軟件的質(zhì)量和可靠性達(dá)到可以接受的程度;

所做的測試不足以發(fā)現(xiàn)嚴(yán)重的錯誤;如果測試發(fā)現(xiàn)不了錯誤,可以肯定,測試配置考慮得不夠細(xì)致充分,錯誤仍然潛伏在軟件中。測試與軟件開發(fā)各階段的關(guān)系軟件開發(fā)過程是一個自頂向下,逐步細(xì)化的過程軟件計(jì)劃階段定義軟件作用域軟件需求分析建立軟件信息域、功能和性能需求、約束等軟件設(shè)計(jì)把設(shè)計(jì)用某種程序設(shè)計(jì)語言轉(zhuǎn)換成程序代碼測試過程是依相反順序安排的自底向上,逐步集成的過程。軟件測試模型-V模型軟件測試模型-W模型軟件測試模型-V模型按照軟件開發(fā)過程的階段來分根據(jù)測試執(zhí)行的特點(diǎn)來分按照測試用例依據(jù)的信息軟件測試方法分類1、按照軟件開發(fā)過程的階段來分

(1)、軟件開發(fā)過程中的測試

單元測試、集成測試、系統(tǒng)測試、驗(yàn)收測試;(2)軟件產(chǎn)品測試功能測試、性能測試、a測試、B測試;

(3)專門的軟件產(chǎn)品測試可靠性測試、標(biāo)準(zhǔn)符合性測試、互操作性測試、安全性測試、強(qiáng)度測試

2、根據(jù)測試執(zhí)行的特點(diǎn)來分(1)、動態(tài)測試(2)、靜態(tài)測試3、按照測試方法來分(1)、白盒測試(2)、黒盒測試(3)、灰盒測試黑盒測試本質(zhì)特征:把測試對象看做一個黑盒子;測試依據(jù):完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)需求規(guī)格說明書;測試目的:檢查程序的功能是否符合它的功能說明;黑盒測試又叫做功能測試或數(shù)據(jù)驅(qū)動測試。黑盒測試方法主要發(fā)現(xiàn)以下錯誤:

是否有不正確或遺漏了的功能?

輸入能否正確地接受?能否輸出正確的結(jié)果?性能上是否能夠滿足要求?

是否有初始化或終止性錯誤?

用黑盒方法測試程序,必須:窮舉所有可能的輸入條件;容易引發(fā)爆炸問題。如:程序P有:

輸入量X和Y;

輸出量Z。限制:X、Y、Z的字長為32位。要求:計(jì)算黑盒方法的測試數(shù)目。白盒測試本質(zhì)特征:把測試對象看做透明盒子;測試依據(jù):利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息,設(shè)計(jì)或選擇測試用例測試目的:對程序內(nèi)部邏輯路徑進(jìn)行測試白盒測試又稱為結(jié)構(gòu)測試或邏輯驅(qū)動測試。白盒測試方法主要檢查:對程序模塊的所有獨(dú)立的執(zhí)行路徑至少測試一次;對所有的邏輯判定,取“真”與取“假”的兩種情況都至少測試一次;在循環(huán)的邊界和運(yùn)行界限內(nèi)執(zhí)行循環(huán);測試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性等。窮舉測試:窮舉程序內(nèi)部的所有路徑;導(dǎo)致爆炸問題;如下圖:計(jì)算路徑數(shù)量。黑盒測試的測試用例設(shè)計(jì)

等價類劃分

邊界值分析

錯誤推測法

因果圖場景分析法等價類劃分依據(jù):完全不考慮程序的內(nèi)部結(jié)構(gòu),只依據(jù)程序的規(guī)格說明來設(shè)計(jì)測試用例。概念:等價類是指某個輸入域的子集合。在該子集合中,各個輸入數(shù)據(jù)對于揭露程序中的錯誤都是等效的。測試某等價類的代表值就等價于對這一類其它值的測試思想:等價類劃分方法把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分,然后從每一部分中選取少數(shù)有代表性的數(shù)據(jù)做為測試用例。步驟:劃分等價類(列出等價類表)*

選取測試用例等價類劃分等價類的劃分有兩種不同的情況:

有效等價類:是指對于程序的規(guī)格說明來說,是合理的,有意義的輸入數(shù)據(jù)構(gòu)成的集合。

無效等價類:是指對于程序的規(guī)格說明來說,是不合理的,無意義的輸入數(shù)據(jù)構(gòu)成的集合。在設(shè)計(jì)測試用例時,要同時考慮有效等價類和無效等價類的設(shè)計(jì)。劃分等價類劃分等價類等價類的原則。

(1)

如果輸入條件規(guī)定了取值范圍,或值的個數(shù),則可以確立一個有效等價類和兩個無效等價類。

例如,在程序的規(guī)格說明中,對輸入條件有一句話:

“……項(xiàng)數(shù)可以從1到999……”

則有效等價類是“1≤項(xiàng)數(shù)≤999”兩個無效等價類是“項(xiàng)數(shù)<1”或“項(xiàng)數(shù)>999”。在數(shù)軸上表示成:

(2)如果輸入條件規(guī)定了輸入值的集合,或者是規(guī)定了“必須如何”的條件,這時可確立一個有效等價類和一個無效等價類。例如,在Pascal語言中對變量標(biāo)識符規(guī)定為“以字母打頭的……串”。那么所有以字母打頭的構(gòu)成有效等價類,而不在此集合內(nèi)(不以字母打頭)的歸于無效等價類。

(3)如果輸入條件是一個布爾量,則可以確定一個有效等價類和一個無效等價類。

(4)如果規(guī)定了輸入數(shù)據(jù)的一組值,而且程序要對每個輸入值分別進(jìn)行處理。這時可為每一個輸入值確立一個有效等價類,此外針對這組值確立一個無效等價類,它是所有不允許的輸入值的集合。例如,在教師上崗方案中規(guī)定對教授、副教授、講師和助教分別計(jì)算分?jǐn)?shù),做相應(yīng)的處理。因此可以確定4個有效等價類為教授、副教授、講師和助教,一個無效等價類,它是所有不符合以上身分的人員的輸入值的集合。

(5)如果規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則,則可以確立一個有效等價類(符合規(guī)則)和若干個無效等價類(從不同角度違反規(guī)則)。例如,Pascal語言規(guī)定“一個語句必須以分號‘;’結(jié)束”??梢源_定:一個有效等價類“以‘;’結(jié)束”,若干個無效等價類“以‘:’結(jié)束”、“以‘,’結(jié)束”、“以‘’結(jié)束”、“以LF結(jié)束”等。確立測試用例

在確立了等價類之后,建立等價類表,列出所有劃分出的等價類。按以下原則選擇測試用例:

(1)

為每一個等價類規(guī)定一個唯一編號;

(2)

設(shè)計(jì)一個新的測試用例,使其盡可能多地覆蓋尚未被覆蓋的有效等價類,重復(fù)這一步,直到所有的有效等價類都被覆蓋為止;

(3)

設(shè)計(jì)一個新的測試用例,使其僅覆蓋一個尚未被覆蓋的無效等價類,重復(fù)這一步,直到所有的無效等價類都被覆蓋為止。舉例我們可以設(shè)三角形的3條邊分別為A,B,C。如果它們能夠構(gòu)成三角形的3條邊,必須滿足:A>0,B>0,C>0,且A+B>C,B+C>A,A+C>B。如果是等腰的,還要判斷A=B,或B=C,或A=C。如果是等邊的,則需判斷是否A=B,且B=C,且A=C。舉例輸入條件有效等價類無效等價類是否三角形的三條邊(A>0),(1)(B>0),(2)(C>0),(3)(A+B>C),(4)(B+C>A),(5)(A+C>B),(6)(A≤0),(7)(B≤0),(8)(C≤0),(9)(A+B≤C),(10)(B+C≤A),(11)(A+C≤B),(12)是否等腰三角形(A=B),(13)(B=C),(14)(C=A),(15)(A≠B)and(B≠C)and(C≠A)(16)是否等邊三角形(A=B)and(B=C)and(C=A)(17)(A≠B),(18)(B≠C),(19)(C≠A),(20)舉例序號【A,B,C】覆蓋等價類輸出1【3,4,5】(1),(2),(3),(4),(5),(6)一般三角形2【0,1,2】(7)不能構(gòu)成三角形3【1,0,2】(8)4【1,2,0】(9)5【1,2,3】(10)6【1,3,2】(11)7【3,1,2】(12)8【3,3,4】(1),(2),(3),(4),(5),(6),(13)等腰三角形9【3,4,4】(1),(2),(3),(4),(5),(6),(14)10【3,4,3】(1),(2),(3),(4),(5),(6),(15)11【3,4,5】(1),(2),(3),(4),(5),(6),(16)非等腰三角形12【3,3,3】(1),(2),(3),(4),(5),(6),(17)是等邊三角形13【3,4,4】(1),(2),(3),(4),(5),(6),(14),(18)非等邊三角形14【3,4,3】(1),(2),(3),(4),(5),(6),(15),(19)15【3,3,4】(1),(2),(3),(4),(5),(6),(13),(20)注意:

選擇分類時必須仔細(xì)——等價類劃分的目標(biāo)縮減測試用例集,但仍然足以測試軟件。因?yàn)檫x擇了不完全測試,就要冒風(fēng)險.

例2:某一PASCAL語言規(guī)定:標(biāo)識符是由字母開頭;

后跟字母或數(shù)字的任意組合構(gòu)成。有效字符數(shù)為8個”且

標(biāo)識符必須先說明,再使用。

在同一說明語句中,標(biāo)識符至少必須有一個。”

用等價類劃分方法,建立輸入等價類表:下面選取了9個測試用例,它們覆蓋了所有的等價類。

①VARx,T1234567:REAL;

BEGINx:=3.414;

T1234567:=2.732;

...…(1),(2),(4),(8),(9),(12),(14)

②VAR:REAL;

(3)

③VARx,:REAL;(5)

④VART12345678:REAL;

(6)⑤VART12345......:REAL;

(7)

多于80個字符⑥VART$:CHAR;

(10)⑦VARGOTO:INTEGER;

(11)⑧VAR2T:REAL;

(13)⑨VARPAR:REAL;

(15)

BEGIN......

PAP:=SIN(3.14*0.8)/6;邊界值分析邊界值分析也是一種黑盒測試方法,是對等價類劃分方法的補(bǔ)充。人們從長期的測試工作經(jīng)驗(yàn)得知,大量的錯誤是發(fā)生在輸入或輸出范圍的邊界上,而不是在輸入范圍的內(nèi)部。因此針對各種邊界情況設(shè)計(jì)測試用例,可以查出更多的錯誤。

比如,在做三角形計(jì)算時,要輸入三角形的三個邊長:A、B和C。我們應(yīng)注意到這三個數(shù)值應(yīng)當(dāng)滿足

A>0、B>0、C>0、

A+B>C、A+C>B、B+C>A,才能構(gòu)成三角形。但如果把六個不等式中的任何一個大于號“>”錯寫成大于等于號“≥”,那就不能構(gòu)成三角形。問題恰出現(xiàn)在容易被疏忽的邊界附近。思想:五點(diǎn)法或七點(diǎn)法練習(xí)1、偽代碼測試條件IFV_X>=5.PERFORM

RunningAELSE.PERFORMRunningBENDIF.V_X=4V_X=5V_X=6練習(xí)2、偽代碼測試條件IFV_X=5ANDV_Y=6.PERFORMA_SUCCESS.ELSE.PERFORMA_ERROR.ENDIF.V_X=5

且V_Y=6V_X≠5

V_Y=6V_X=5

V_Y≠6V_X≠5

V_Y≠6一些原則1)如果輸入條件規(guī)定了值的范圍,則應(yīng)取剛達(dá)到這個范圍的邊界的值,以及剛剛超越這個范圍邊界的值作為測試輸入數(shù)據(jù).

2)如果輸入條件規(guī)定了值的個數(shù),則用最大個數(shù),最小個數(shù),比最小個數(shù)少一,比最大個數(shù)多一的數(shù)作為測試數(shù)據(jù).

3)根據(jù)規(guī)格說明的每個輸出條件,使用前面的原則1).

4)根據(jù)規(guī)格說明的每個輸出條件,應(yīng)用前面的原則2).

5)如果程序的規(guī)格說明給出的輸入域或輸出域是有序集合,則應(yīng)選取集合的第一個元素和最后一個元素作為測試用例.

6)如果程序中使用了一個內(nèi)部數(shù)據(jù)結(jié)構(gòu),則應(yīng)當(dāng)選擇這個內(nèi)部數(shù)據(jù)結(jié)構(gòu)的邊界上的值作為測試用例.

7)分析規(guī)格說明,找出其它可能的邊界條件.邊界條件類型情況數(shù)值速度字符地點(diǎn)位置尺寸數(shù)量第一個/最后一個最小值/最大值開始/完成超過/在內(nèi)空/滿最短/最長最慢/最快最早/最遲最大/最小最高/最低相鄰/最遠(yuǎn)邊界條件特征情況錯誤推測法人們也可以靠經(jīng)驗(yàn)和直覺推測程序中可能存在的各種錯誤,從而有針對性地編寫檢查這些錯誤的例子。這就是錯誤推測法。錯誤推測法的基本想法是:列舉出程序中所有可能有的錯誤和容易發(fā)生錯誤的特殊情況,根據(jù)它們選擇測試用例。因果圖

如果在測試時必須考慮輸入條件的各種組合,需要利用因果圖分析方法。

因果圖方法最終生成的就是判定表。它適合于檢查程序輸入條件的各種組合情況。用因果圖生成測試用例的基本步驟

(1)

分析軟件規(guī)格說明描述中,哪些是原因,哪些是結(jié)果,并賦予標(biāo)識符。

(2)

分析原因與結(jié)果、原因與原因的對應(yīng)關(guān)系,畫因果圖。

(3)標(biāo)記特殊情況。

(4)

把因果圖轉(zhuǎn)換成判定表。

(5)

把判定表的每一列拿出來作為依據(jù),設(shè)計(jì)測試用例。

在因果圖中出現(xiàn)的基本符號

通常在因果圖中用Ci表示原因,用Ei表示結(jié)果,各結(jié)點(diǎn)表示狀態(tài),可取值“0”或“1”。“0”表示某狀態(tài)不出現(xiàn),“1”表示某狀態(tài)出現(xiàn)。主要的原因和結(jié)果之間的關(guān)系有:表示約束條件的符號

為了表示原因與原因之間,結(jié)果與結(jié)果之間可能存在的約束條件,在因果圖中可以附加一些表示約束條件的符號。

例如,有一個處理單價為5角錢的飲料的自動售貨機(jī)軟件測試用例的設(shè)計(jì)。其規(guī)格說明如下:

若投入5角錢或1元錢的硬幣,押下〖橙汁〗或〖啤酒〗的按鈕,則相應(yīng)的飲料就送出來。若售貨機(jī)沒有零錢找,則一個顯示〖零錢找完〗的紅燈亮,這時在投入1元硬幣并押下按鈕后,飲料不送出來而且1元硬幣也退出來;若有零錢找,則顯示〖零錢找完〗的紅燈滅,在送出飲料的同時退還5角硬幣?!?1)分析這一段說明,列出原因和結(jié)果

原因:1.

售貨機(jī)有零錢找

2.

投入1元硬幣

3.

投入5角硬幣

4.

押下橙汁按鈕

5.

押下啤酒按鈕

建立中間結(jié)點(diǎn),表示處理中間狀態(tài)

11.

投入1元硬幣且押下飲料按鈕

12.

押下〖橙汁〗或〖啤酒〗的按鈕

13.

應(yīng)當(dāng)找5角零錢并且售貨機(jī)有零錢找

14.

錢已付清

結(jié)果:21.

售貨機(jī)〖零錢找完〗燈亮

22.

退還1元硬幣

23.

退還5角硬幣

24.

送出橙汁飲料

25.

送出啤酒飲料

(2)畫出因果圖。所有原因結(jié)點(diǎn)列在左 邊,所有結(jié)果結(jié)點(diǎn)列在右邊。

(3)

由于2與3,4與5不能同時發(fā)生,

分別加上約束條件E。

(4)因果圖

(5)轉(zhuǎn)換成判定表

場景法

現(xiàn)在的軟件幾乎都是用事件觸發(fā)來控制流程的,事件觸發(fā)時的情景便形成了場景,而同一事件不同的觸發(fā)順序和處理結(jié)果就形成事件流。提出這種測試思想的是Rational公司。用例場景用來描述流經(jīng)用例的路徑,從用例開始到結(jié)束遍歷這條路徑上所有基本流和備選流。基本流和備選流基本流和備選流按照上圖中每個經(jīng)過用例的路徑,可確定用例場景:場景1基本流場景2基本流備選流1場景3基本流備選流1備選流2場景4基本流備選流3場景5基本流備選流3備選流1場景6基本流備選流3備選流1備選流2場景7基本流備選流4場景8基本流備選流3備選流4注:為方便起見,場景5、6和8只考慮了備選流3循環(huán)執(zhí)行一次的情況。舉例白盒測試的測試用例設(shè)計(jì)

邏輯覆蓋基本路徑測試邏輯覆蓋

語句覆蓋

判定覆蓋

條件覆蓋

判定-條件覆蓋

條件組合覆蓋邏輯覆蓋是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的設(shè)計(jì)測試用例的技術(shù)。它屬白盒測試。設(shè)計(jì)若干個測試用例,運(yùn)行被測程序,使得每一可執(zhí)行語句至少執(zhí)行一次一、語句覆蓋例一:程序Intfunction(boola,boolb,boolc){intx;X=0;If(a&&(b||c))X=1;returnx;}開始X=0(a)AND(bORc)X=1T結(jié)束F測試用例

為了使上述程序中的每條語句都能夠至少執(zhí)行一次,我們構(gòu)造以下測試用例就可實(shí)現(xiàn)。

a=T,b=T,c=T。例二:1:PRINT“HelloWorld”2:IFDate$=“01-01-2000”THEN3:PRINT“HappyNewYear”4:ENDIF5:PRINT“Thedateis:”;Date$6:PRINT“Thetimeis:”;Time$7:END測試用例Date$ 執(zhí)行語句行01-01-20001,2,3,4,5,6,7設(shè)計(jì)若干個測試用例,運(yùn)行被測程序,使得程序中每個判斷的取真分支和取假分支至少經(jīng)歷一次,判定覆蓋又稱為分支覆蓋。二、判定覆蓋例一:開始X=0(a)AND(bORc)X=1T結(jié)束F測試用例為了使上述程序中的每個判定能夠至少執(zhí)行一次,我們構(gòu)造以下測試用例就可實(shí)現(xiàn)。a=T,b=T,c=T。a=F,b=F,c=F。例二:1:PRINT“HelloWorld”2:IFDate$=“01-01-2000”ANDTime$=“00:00:00”THEN3:PRINT“HappyNewYear”4:ENDIF5:PRINT“Thedateis:”;Date$6:PRINT“Thetimeis:”;Time$7:END測試用例Date$Time$執(zhí)行語句行01-01-000011:11:111,2,5,6,701-01-000000:00:001,2,5,6,701-01-200011:11:111,2,5,6,701-01-200000:00:001,2,3,4,5,6,7三、條件覆蓋設(shè)計(jì)若干個測試用例,運(yùn)行被測程序,使得程序中每個判斷的每個邏輯條件的可能取值至少執(zhí)行一次。如在我們前面的例子中,判定:(a)AND(bORc)包含了三個條件:a,b,c。例一:開始X=0(a)AND(bORc)X=1T結(jié)束F測試用例為了使程序達(dá)到100%的條件覆蓋,可是使用以下測試用例。a=F,b=T,c=F。a=T,b=F,c=T。注意仔細(xì)分析可發(fā)現(xiàn),上述用例在滿足條件覆蓋的同時,把判定的兩個分支也覆蓋了,這是否可以說,達(dá)到條件覆蓋就必然實(shí)現(xiàn)了判定覆蓋呢?如選擇a=F,b=T,c=Ta=T,b=F,c=F發(fā)現(xiàn)覆蓋了條件的用例并未覆蓋分支。條件覆蓋序號abcA&&(b||c)條件覆蓋(%)判定覆蓋%1FTTF100502TFFF例二:1:PRINT“HelloWorld”2:IFDate$=“01-01-2000”ANDTime$=“00:00:00”THEN3:PRINT“HappyNewYear”4:ENDIF5:PRINT“Thedateis:”;Date$6:PRINT“Thetimeis:”;Time$7:END測試用例Date$Time$執(zhí)行語句行01-01-0000 11:11:111,2,5,6,701-01-000000:00:001,2,5,6,701-01-200011:11:111,2,5,6,701-01-200000:00:001,2,3,4,5,6,7四、判定-條件覆蓋設(shè)計(jì)足夠的測試用例,使得:判斷中每個條件的所有可能取值至少執(zhí)行一次,同時每個判定的所有可能取值至少執(zhí)行一次。例一:開始X=0(a)AND(bORc)X=1T結(jié)束F測試用例為了滿足100%條件判定組合覆蓋,使用以下測試用例。a=T,b=T,c=T。a=F,b=F,c=F。五、條件組合覆蓋設(shè)計(jì)足夠的測試用例,運(yùn)行被測程序,使得每個判斷的所有可能的條件取值組合至少執(zhí)行一次。顯然,滿足多條件覆蓋的測試用例是一定滿足判定覆蓋、條件覆蓋和條件判定組合覆蓋的。測試用例(2^3=8)序號abcA&&(b||c)1TTTT2TTFT3TFTT4TFFF5FTTF6FTFF7FFTF8FFFF覆蓋率使用原則覆蓋率不是目的,只是一種手段不可能針對所有的覆蓋指標(biāo)進(jìn)行測試,但如果只考慮一種覆蓋率指標(biāo)也是不恰當(dāng)?shù)牟灰非蠼^對100%的覆蓋率各種覆蓋率評價覆蓋率度量評價標(biāo)準(zhǔn)可自動化性可獲得性可理解性可維護(hù)性完整性語句覆蓋好好好好差判定覆蓋好好好好較差判定條件覆蓋較好好好好較好條件組合覆蓋較好較好較好好較好基本路徑測試基本路徑測試方法把覆蓋的路徑數(shù)壓縮到一定限度內(nèi),程序中的循環(huán)體最多只執(zhí)行一次。它是在程序控制流圖的基礎(chǔ)上,分析控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí)行路徑集合,設(shè)計(jì)測試用例的方法。設(shè)計(jì)出的測試用例要保證在測試中,程序的每一個可執(zhí)行語句至少要執(zhí)行一次。

1.程序的控制流圖符號○為控制流圖的一個結(jié)點(diǎn),表示一個或多個無分支的PDL語句或源程序語句。箭頭為邊,表示控制流的方向。在選擇或多分支結(jié)構(gòu)中,分支的匯聚處應(yīng)有一個匯聚結(jié)點(diǎn)。邊和結(jié)點(diǎn)圈定的區(qū)域叫做區(qū)域,當(dāng)對區(qū)域計(jì)數(shù)時,圖形外的區(qū)域也應(yīng)記為一個區(qū)域。如果判斷中的條件表達(dá)式是由一個或多個邏輯運(yùn)算符

(OR,AND,...)

連接的復(fù)合條件表達(dá)式,則需改為一系列只有單個條件的嵌套的判斷。2.程序環(huán)路復(fù)雜性程序的環(huán)路復(fù)雜性給出了程序基本路徑集中的獨(dú)立路徑條數(shù),這是確保程序中每個可執(zhí)行語句至少執(zhí)行一次所必需的測試用例數(shù)目的上界。從控制流圖來看,一條獨(dú)立路徑是至少包含有一條在其它獨(dú)立路徑中從未有過的邊的路徑。例如,在圖示的控制流圖中,一組獨(dú)立的路徑是

path1:1-11

path2:1-2-3-4-5-10-1-11

path3:1-2-3-6-8-9-10-1-11

path4:1-2-3-6-7-9-10-1-11路徑path1,path2,path3,path4組成了控制流圖的一個基本路徑集。3.導(dǎo)出測試用例導(dǎo)出測試用例,確?;韭窂郊械拿恳粭l路徑的執(zhí)行。根據(jù)判斷結(jié)點(diǎn)給出的條件,選擇適當(dāng)?shù)臄?shù)據(jù)以保證某一條路徑可以被測試到

—用邏輯覆蓋方法。每個測試用例執(zhí)行之后,與預(yù)期結(jié)果進(jìn)行比較。如果所有測試用例都執(zhí)行完畢,則可以確信程序中所有的可執(zhí)行語句至少被執(zhí)行了一次。必須注意,一些獨(dú)立的路徑(如例中的路徑1),往往不是完全孤立的,有時它是程序正常的控制流的一部分,這時,這些路徑的測試可以是另一條路徑測試的一部分。

軟件測試的策略測試過程按4個步驟進(jìn)行,即單元測試、組裝測試、確認(rèn)測試和系統(tǒng)測試。開始是單元測試,集中對用源代碼實(shí)現(xiàn)的每一個程序單元進(jìn)行測試,檢查各個程序模塊是否正確地實(shí)現(xiàn)了規(guī)定的功能。組裝測試把已測試過的模塊組裝起來,主要對與設(shè)計(jì)相關(guān)的軟件體系結(jié)構(gòu)的構(gòu)造進(jìn)行測試。確認(rèn)測試則是要檢查已實(shí)現(xiàn)的軟件是否滿足了需求規(guī)格說明中確定了的各種需求,以及軟件配置是否完全、正確。系統(tǒng)測試把已經(jīng)經(jīng)過確認(rèn)的軟件納入實(shí)際運(yùn)行環(huán)境中,與其它系統(tǒng)成份組合在一起進(jìn)行測試。單元測試(UnitTesting)單元測試又稱模塊測試,是針對軟件設(shè)計(jì)的最小單位─程序模塊,進(jìn)行正確性檢驗(yàn)的測試工作。其目的在于發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種差錯。單元測試需要從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測試用例。多個模塊可以平行地獨(dú)立進(jìn)行單元測試。1.單元測試的內(nèi)容在單元測試時,測試者需要依據(jù)詳細(xì)設(shè)計(jì)說明書和源程序清單,主要采用白盒測試的測試用例,輔之以黑盒測試的測試用例,使之對任何合理的輸入和不合理的輸入,都能鑒別和響應(yīng)。

(1)模塊接口測試在單元測試的開始,應(yīng)對通過被測模塊的數(shù)據(jù)流進(jìn)行測試。測試項(xiàng)目包括:調(diào)用本模塊的輸入?yún)?shù)是否正確;本模塊調(diào)用子模塊時輸入給子模塊的參數(shù)是否正確;全局量的定義在各模塊中是否一致;

在做內(nèi)外存交換時要考慮:文件屬性是否正確;

OPEN與CLOSE語句是否正確;緩沖區(qū)容量與記錄長度是否匹配;在進(jìn)行讀寫操作之前是否打開了文件;在結(jié)束文件處理時是否關(guān)閉了文件;正文書寫/輸入錯誤,

I/O錯誤是否檢查并做了處理。

(2)局部數(shù)據(jù)結(jié)構(gòu)測試不正確或不一致的數(shù)據(jù)類型說明使用尚未賦值或尚未初始化的變量錯誤的初始值或錯誤的缺省值變量名拼寫錯或書寫錯不一致的數(shù)據(jù)類型全局?jǐn)?shù)據(jù)對模塊的影響

(3)路徑測試選擇適當(dāng)?shù)臏y試用例,對模塊中重要的執(zhí)行路徑進(jìn)行測試。應(yīng)當(dāng)設(shè)計(jì)測試用例查找由于錯誤的計(jì)算、不正確的比較或不正常的控制流而導(dǎo)致的錯誤。對基本執(zhí)行路徑和循環(huán)進(jìn)行測試可以發(fā)現(xiàn)大量的路徑錯誤。(4)錯誤處理測試出錯的描述是否難以理解出錯的描述是否能夠?qū)﹀e誤定位顯示的錯誤與實(shí)際的錯誤是否相符對錯誤條件的處理正確與否在對錯誤進(jìn)行處理之前,錯誤條件是否已經(jīng)引起系統(tǒng)的干預(yù)等(5)邊界測試注意數(shù)據(jù)流、控制流中剛好等于、大于或小于確定的比較值時出錯的可能性。對這些地方要仔細(xì)地選擇測試用例,認(rèn)真加以測試。如果對模塊運(yùn)行時間有要求的話,還要專門進(jìn)行關(guān)鍵路徑測試,以確定最壞情況下和平均意義下影響模塊運(yùn)行時間的因素。

2.單元測試的步驟模塊并不是一個獨(dú)立的程序,在考慮測試模塊時,同時要考慮它和外界的聯(lián)系,用一些輔助模塊去模擬與被測模塊相聯(lián)系的其它模塊。

驅(qū)動模塊(driver)

樁模塊(stub)如果一個模塊以包的形式出現(xiàn),可將該模塊看成由幾個小程序組成。必須對其中的每個小程序先進(jìn)行單元測試要做的工作,對關(guān)鍵模塊還要做性能測試。對支持某些標(biāo)準(zhǔn)規(guī)程的程序,更要著手進(jìn)行互聯(lián)測試。組裝測試(IntegratedTesting)組裝測試(集成測試、聯(lián)合測試)通常,在單元測試的基礎(chǔ)上,需要將所有模塊按照設(shè)計(jì)要求組裝成為系統(tǒng)。這時需要考慮的問題是:在把各個模塊連接起來的時侯,穿越模塊接口的數(shù)據(jù)是否會丟失;

一個模塊的功能是否會對另一個模塊的功能產(chǎn)生不利的影響;

各個子功能組合起來,能否達(dá)到預(yù)期要求的父功能;

全局?jǐn)?shù)據(jù)結(jié)構(gòu)是否有問題;

單個模塊的誤差累積起來,是否會放大,從而達(dá)到不能接受的程度。

把模塊組裝成為系統(tǒng)的方式有兩種一次性組裝方式增殖式組裝方式1.一次性組裝方式(bigbang)它是一種非增殖式組裝方式。也叫做整體拼裝。首先對每個模塊分別進(jìn)行模塊測試;然后把所有模塊組裝在一起進(jìn)行測試;最終得到要求的軟件系統(tǒng)。2.增殖式組裝方式這種組裝方式又稱漸增式組裝首先對一個個模塊進(jìn)行模塊測試,然后將這些模塊逐步組裝成較大的系統(tǒng)在組裝的過程中邊連接邊測試,以發(fā)現(xiàn)連接過程中產(chǎn)生的問題。

(1)自頂向下的增殖方式這種組裝方式將模塊按系統(tǒng)程序結(jié)構(gòu),沿控制層次自頂向下進(jìn)行組裝。自頂向下的增殖方式在測試過程中較早地驗(yàn)證了主要的控制和判斷點(diǎn)。選用按深度方向組裝的方式,可以首先實(shí)現(xiàn)和驗(yàn)證一個完整的軟件功能。(2)自底向上的增殖方式這種組裝的方式是從程序模塊結(jié)構(gòu)的最底層的模塊開始組裝和測試。因?yàn)槟K是自底向上進(jìn)行組裝,所以不再需要樁模塊。自頂向下增殖的方式和自底向上增殖的方式各有優(yōu)缺點(diǎn)。一般來講,一種方式的優(yōu)點(diǎn)是另一種方式的缺點(diǎn)。(3)混合增殖式測試衍變的自頂向下的增殖測試強(qiáng)化輸入/輸出模塊和引入新算法模塊的測試;

再自底向上組裝成為功能相當(dāng)完整且相對獨(dú)立的子系統(tǒng);

然后由主模塊開始自頂向下進(jìn)行增殖測試。自底向上

自頂向下的增殖測試首先對含讀操作的子系統(tǒng)自底向上直至根結(jié)點(diǎn)模塊進(jìn)行組裝和測試;

然后對含寫操作的子系統(tǒng)做自頂向下的組裝與測試。回歸測試這種方式采取自頂向下的方式測試被修改的模塊及其子模塊;

然后將這一部分視為子系統(tǒng),再自底向上測試。關(guān)鍵模塊問題在組裝測試時,應(yīng)當(dāng)確定關(guān)鍵模塊,對這些關(guān)鍵模塊及早進(jìn)行測試。關(guān)鍵模塊的特征:

①滿足某些軟件需求;

②在程序的模塊結(jié)構(gòu)中位于較高的層次(高層控制模塊);

③較復(fù)雜、較易發(fā)生錯誤;

④有明確定義的性能要求。

確認(rèn)測試(ValidationTesting)確認(rèn)測試又稱有效性測試。任務(wù)是驗(yàn)證軟件的功能和性能及其它特性是否與用戶的要求一致。對軟件的功能和性能要求在軟件需求規(guī)格說明書中已經(jīng)明確規(guī)定。它包含的信息就是軟件確認(rèn)測試的基礎(chǔ)。1.進(jìn)行有效性測試(黑盒測試)有效性測試是在模擬環(huán)境下,運(yùn)用黑盒測試方法,驗(yàn)證被測軟件是否滿足需求規(guī)格說明書的需求。步驟:制定測試計(jì)劃、準(zhǔn)備測試方案、設(shè)計(jì)測試用例、執(zhí)行測試等。通過實(shí)施預(yù)定的測試計(jì)劃和測試步驟,確定軟件的特性是否與需求相符;所有的文檔都是正確且便于使用;同時,對其它軟件需求,例如可移植性、兼容性、出錯自動恢復(fù)、可維護(hù)性等,也都要進(jìn)行測試在全部軟件測試的測試用例運(yùn)行完后,所有的測試結(jié)果可以分為兩類:

測試結(jié)果與預(yù)期的結(jié)果相符。

測試結(jié)果與預(yù)期的結(jié)果不符。2.軟件配置復(fù)查

軟件配置復(fù)查的目的是保證軟件配置的所有成分都齊全;各方面的質(zhì)量都符合要求;具有維護(hù)階段所必需的細(xì)節(jié);而且已經(jīng)編排好分類的目錄。應(yīng)當(dāng)嚴(yán)格遵守用戶手冊和操作手冊中規(guī)定的使用步驟,以便檢查完整性和正確性。3、α測試和β測試在軟件交付使用之后,用戶將如何實(shí)際使用程序,對于開發(fā)者來說是無法預(yù)測的。α測試是由一個用戶在開發(fā)環(huán)境下進(jìn)行的測試,也可以是公司內(nèi)部的用戶在模擬實(shí)際操作環(huán)境下進(jìn)行的測試。α測試的目的是評價軟件產(chǎn)品的FLURPS(即功能、局域化、可使用性、可靠性、性能和支持)。注重產(chǎn)品界面和特色。α測試從軟件產(chǎn)品編碼結(jié)束之時開始,也可以在確認(rèn)測試過程中產(chǎn)品達(dá)到一定的穩(wěn)定和可靠程度之后再開始。

β測試是由軟件的多個用戶在實(shí)際使用環(huán)境下進(jìn)行的測試。測試時,開發(fā)者通常不在測試現(xiàn)場。因而,β測試是在開發(fā)者無法控制的環(huán)境下進(jìn)行的軟件現(xiàn)場應(yīng)用。β測試主要衡量產(chǎn)品的FLURPS。著重于產(chǎn)品的支持性,包括文檔、客戶培訓(xùn)和支持產(chǎn)品生產(chǎn)能力。只有當(dāng)α測試達(dá)到一定的可靠程度時,才能開始β測試。4、驗(yàn)收測試(AcceptanceTesting)驗(yàn)收測試是以用戶為主的測試。軟件開發(fā)人員和QA人員也應(yīng)參加。由用戶參加設(shè)計(jì)測試用例,使用生產(chǎn)中的實(shí)際數(shù)據(jù)進(jìn)行測試。測試要點(diǎn):功能、性能、可移植性、兼容性、可維護(hù)性、錯誤的恢復(fù)功能等。確認(rèn)測試的兩種結(jié)果:軟件可以接受軟件與客戶目標(biāo)有差異系統(tǒng)測試(SystemTesting)將軟件與計(jì)算機(jī)硬件、外設(shè)、某些支持軟件、數(shù)據(jù)和人員等其它系統(tǒng)元素結(jié)合在一起,在實(shí)際運(yùn)行環(huán)境下,對計(jì)算機(jī)系統(tǒng)進(jìn)行一系列的組裝測試和確認(rèn)測試。系統(tǒng)測試的目的在于通過與系統(tǒng)的需求定義作比較,發(fā)現(xiàn)軟件與系統(tǒng)的定義不符合或與之矛盾的地方。測試種類功能測試 功能測試是在規(guī)定的一段時間內(nèi)運(yùn)行軟件系統(tǒng)的所有功能,以驗(yàn)證這個軟件系統(tǒng)有無嚴(yán)重錯誤??煽啃詼y試 如果系統(tǒng)需求說明書中有對可靠性的要求,則需進(jìn)行可靠性測試。 ①平均失效間隔時間MTBF(MeanTimeBetweenFailures)是否超過規(guī)定時限?

②因故障而停機(jī)的時間MTTR(MeanTimeToRepairs)在一年中應(yīng)不超過多少時間。

強(qiáng)度測試 強(qiáng)度測試是要檢查在系統(tǒng)運(yùn)行環(huán)境不正常乃至發(fā)生故障的情況下,系統(tǒng)可以運(yùn)行到何種程度的測試。例如:把輸入數(shù)據(jù)速率提高一個數(shù)量級,確定輸入功能將如何響應(yīng)。設(shè)計(jì)需要占用最大存儲量或其它資源的測試用例進(jìn)行測試。設(shè)計(jì)出在虛擬存儲管理機(jī)制中引起“顛簸”的測試用例進(jìn)行測試。設(shè)計(jì)出會對磁盤常駐內(nèi)存的數(shù)據(jù)過度訪問的測試用例進(jìn)行測試。

性能測試性能測試是要檢查系統(tǒng)是否滿足在需求說明書中規(guī)定的性能。性能測試常常需要與強(qiáng)度測試結(jié)合起來進(jìn)行,并常要求同時進(jìn)行硬件和軟件檢測。通常,對軟件性能的檢測表現(xiàn)在以下幾個方面:響應(yīng)時間、吞吐量、輔助存儲區(qū),例如緩沖區(qū),工作區(qū)的大小等、處理精度,等等?;謴?fù)測試 恢復(fù)測試是要證實(shí)在克服硬件故障(包括掉電、硬件或網(wǎng)絡(luò)出錯等)后,系統(tǒng)能否正常地繼續(xù)進(jìn)行工作,并不對系統(tǒng)造成任何損害。為此,可采用各種人工干預(yù)的手段,模擬硬件故障,故意造成軟件出錯。并由此檢查:

錯誤探測功能──系統(tǒng)能否發(fā)現(xiàn)硬件失效與故障;

能否切換或啟動備用的硬件;在故障發(fā)生時能否保護(hù)正在運(yùn)行的作業(yè)和系統(tǒng)狀態(tài);在系統(tǒng)恢復(fù)后能否從最后記錄下來的無錯誤狀態(tài)開始繼續(xù)執(zhí)行作業(yè),等等。

掉電測試:其目的是測試軟件系統(tǒng)在發(fā)生電源中斷時能否保護(hù)當(dāng)時的狀態(tài)且不毀壞數(shù)據(jù),然后在電源恢復(fù)時從保留的斷點(diǎn)處重新進(jìn)行操作。

啟動/停止測試 這類測試的目的是驗(yàn)證在機(jī)器啟動及關(guān)機(jī)階段,軟件系統(tǒng)正確處理的能力。 這類測試包括

反復(fù)啟動軟件系統(tǒng)

(例如,操作系統(tǒng)自舉、網(wǎng)絡(luò)的啟動、應(yīng)用程序的調(diào)用等)

在盡可能多的情況下關(guān)機(jī)。配置測試這類測試是要檢查計(jì)算機(jī)系統(tǒng)內(nèi)各個設(shè)備或各種資源之間的相互聯(lián)結(jié)和功能分配中的錯誤。它主要包括以下幾種:配置命令測試:驗(yàn)證全部配置命令的可操作性(有效性);特別對最大配置和最小配置要進(jìn)行測試。軟件配置和硬件配置都要測試。

安全性測試 安全性測試是要檢驗(yàn)在系統(tǒng)中已經(jīng)存在的系統(tǒng)安全性、保密性措施是否發(fā)揮作用,有無漏洞。模擬攻擊:正面攻擊或從側(cè)面、背面攻擊系統(tǒng)中易受損壞的那些部分;以系統(tǒng)輸入為突破口,利用輸入的容錯性進(jìn)行正面攻擊;

申請和占用過多的資源壓垮系統(tǒng),以破壞安全措施,從而進(jìn)入系統(tǒng);故意使系統(tǒng)出錯,利用系統(tǒng)恢復(fù)的過程,竊取用戶口令及其它有用的信息;通過瀏覽殘留在計(jì)算機(jī)各種資源中的垃圾(無用信息),以獲取如口令,安全碼,譯碼關(guān)鍵字等信息;瀏覽全局?jǐn)?shù)據(jù),期望從中找到進(jìn)入系統(tǒng)的關(guān)鍵字;瀏覽那些邏輯上不存在,但物理上還存在的各種記錄和資料等??墒褂眯詼y試可使用性測試主要從使用的合理性和方便性等出發(fā),發(fā)現(xiàn)人為因素或使用上的問題。要保證在足夠詳細(xì)的程度下,用戶界面便于使用;對輸入量可容錯、響應(yīng)時間和響應(yīng)方式合理可行、輸出信息有意義、正確并前后一致;出錯信息能夠引導(dǎo)用戶去解決問題;軟件文檔全面、正規(guī)、確切??芍С中詼y試 這類測試是要驗(yàn)證系統(tǒng)的支持策略對于公司與用戶方面是否切實(shí)可行。它所采用的方法是

試運(yùn)行支持過程(如對有錯部分打補(bǔ)丁的過程,熱線界面等);對其結(jié)果進(jìn)行質(zhì)量分析;

評審診斷工具;

維護(hù)過程、內(nèi)部維護(hù)文檔;

修復(fù)一個錯誤所需平均最少時間。安裝測試 安裝測試的目的不是找軟件錯誤,而是找安裝錯誤。在安裝軟件系統(tǒng)時,會有多種選擇。要分配和裝入文件與程序庫布置適用的硬件配置進(jìn)行程序的聯(lián)結(jié)。而安裝測試就是要找出在這些安裝過程中出現(xiàn)的錯誤。過程測試在一些大型的系統(tǒng)中,部分工作由軟件自動完成,其它工作則需由各種人員,包括操作員,數(shù)據(jù)庫管理員,終端用戶等,按一定規(guī)程同計(jì)算機(jī)配合,靠人工來完成。指定由人工完成的過程也需經(jīng)過仔細(xì)的檢查,這就是所謂的過程測試?;ミB測試互連測試是要驗(yàn)證兩個或多個不同的系統(tǒng)之間的互連性。兼容性測試這類測試主要想驗(yàn)證軟件產(chǎn)品在不同版本之間的兼容性。有兩類基本的兼容性測試:

向下兼容交錯兼容容量測試容量測試是要檢驗(yàn)系統(tǒng)的能力最高能達(dá)到什么程度。例如,對于編譯程序,讓它處理特別長的源程序;對于操作系統(tǒng),讓它的作業(yè)隊(duì)列“滿員”;對于信息檢索系統(tǒng),讓它使用頻率達(dá)到最大。 在使系統(tǒng)的全部資源達(dá)到“滿負(fù)荷”的情形下,測試系統(tǒng)的承受能力。

文檔測試 這種測試是檢查用戶文檔(如用戶手冊)的清晰性和精確性。用戶文檔中所使用的例子必須在測試中一一試過,確保敘述正確無誤。優(yōu)秀測試員應(yīng)具備的素質(zhì)具有編程方面的知識,不會害怕進(jìn)入陌生環(huán)境。善于發(fā)現(xiàn)問題的癥結(jié),喜歡解謎。不放過任何蛛絲馬跡具有創(chuàng)造性力求完美,不去苛求,而是盡力接近目標(biāo)判斷準(zhǔn)確注重策略和外交善于說服ABCDEF測試過程需要三類輸入:(A)、(B)和(C)。請選擇正確的答案填入下圖中以完成測試信息處理的全過程。A

C. ①接口選擇 ②軟件配置 ③硬件配置 ④測試配置 ⑤測試環(huán)境 ⑥測試工具

DF. ①排錯 ②可靠性分析③結(jié)果分析④數(shù)據(jù)分類

答案:A.②B.④C.⑥D(zhuǎn).③E.①F.②例:應(yīng)用等價類劃分和邊界值分析方法對考試系統(tǒng)“輸入學(xué)生成績”設(shè)計(jì)測試用例需求描述:考試分三個專業(yè),準(zhǔn)考證號第一位為專業(yè)代號,如:1-行政專業(yè),2-法律專業(yè),3-財(cái)經(jīng)專業(yè).行政專業(yè)準(zhǔn)考證號碼為:110001~111215法律專業(yè)準(zhǔn)考證號碼為:210001~212006財(cái)經(jīng)專業(yè)準(zhǔn)考證號碼為:310001~314015參考:有效等價類:(1)110001~111215(2)210001~212006(3)310001~314015

無效等價類:(4)-

~110000(5)111216~210000(6)212007~31000(7)314016~+

基本路徑法IntIsLeap(intyear)

{

if(year%4==0)

{

if(year%100==0)

{

if(year%400==0)

leap=1;

else

leap=0;

}

else

leap=1;

}

else

leap=0;

returnleap;

}【問題1】請畫出以上代碼的控制流圖?!締栴}2】請計(jì)算上述控制流圖的環(huán)路復(fù)雜度V(G)?!締栴}3】假設(shè)輸入的取值范圍是1000<year<2001,請使用基本路徑測試法為變量year設(shè)計(jì)測試用例,使其滿足基本路徑覆蓋的要求。

某些元素的一個集合或排列這些元素被組織起來以實(shí)現(xiàn)某種方法,過程或借助處理信息進(jìn)行控制?;谟?jì)算機(jī)的系統(tǒng)基于計(jì)算機(jī)系統(tǒng)的系統(tǒng)元素系統(tǒng)元素軟件—

計(jì)算機(jī)程序、數(shù)據(jù)結(jié)構(gòu)、相關(guān)文檔硬件—

電子計(jì)算設(shè)備(如CPU,存儲器)和外部機(jī)電設(shè)備(如傳感器、馬達(dá)等)人—

硬件和軟件的用戶數(shù)據(jù)庫—

一個大型的有組織的信息集合文檔—

手冊、表格和其它用以描述系統(tǒng)使用和操作的信息過程—

定義每一種系統(tǒng)元素的特定使用步驟,或系統(tǒng)駐留的過程性環(huán)境系統(tǒng)的層次結(jié)構(gòu)基于計(jì)算機(jī)的系統(tǒng)本身可以成為一個更大的基于計(jì)算機(jī)系統(tǒng)中的一個元素,并稱為那個更大系統(tǒng)的宏元素。工廠自動化

系統(tǒng)計(jì)算機(jī)系統(tǒng)工程計(jì)算機(jī)系統(tǒng)工程是一個問題求解活動,目的是揭示、分析所期望的功能,并把它們分配到各個單獨(dú)的系統(tǒng)元素中去。系統(tǒng)工程師的任務(wù)與用戶合作確認(rèn)用戶的目標(biāo)和約束導(dǎo)出功能、性能、接口、設(shè)計(jì)約束和信息結(jié)構(gòu)的表示將它們分配到每一個系統(tǒng)元素中需求識別系統(tǒng)分析過程的第一步就是識別用戶要求分析員必須考慮以下問題:功能和性能

可靠性和質(zhì)量

總的系統(tǒng)目標(biāo)

成本與進(jìn)度限制制造需求

市場與競爭情況

有效的技術(shù)

將來可能的擴(kuò)充系統(tǒng)分析識別希望的功能和性能范圍確定系統(tǒng)的功能、性能、約束和接口將功能賦予一個或多個系統(tǒng)元素(即軟件、硬件、人等)提出一些候選方案并做評價

項(xiàng)目考慮商業(yè)考慮技術(shù)分析生產(chǎn)評估

對同一功能,可以分配不同的系統(tǒng)元素為選取最有效的分配方案,使用一組權(quán)衡準(zhǔn)則進(jìn)行評價人員問題環(huán)境界面法律考慮1、項(xiàng)目考慮在預(yù)估的成本與進(jìn)度范圍內(nèi)所選的系統(tǒng)配置能否實(shí)現(xiàn)?與成本與進(jìn)度估算相關(guān)的風(fēng)險有哪些?

2、商業(yè)考慮所選的系統(tǒng)配置是最可能有效益的解決方案嗎?能否成功地占領(lǐng)市場?最終的報(bào)償是否能表明所冒的開發(fā)風(fēng)險是值得的?

3、技術(shù)分析是否具備開發(fā)所有系統(tǒng)元素的技術(shù)實(shí)力?能否確保功能和性能得到滿足?能否對這種系統(tǒng)配置進(jìn)行充分的維護(hù)?是否具備技術(shù)資源?與技術(shù)相關(guān)的風(fēng)險有哪些?

4、生產(chǎn)評估生產(chǎn)工具與設(shè)備是否有效?必需的過程是否短缺?是否充分地實(shí)施了質(zhì)量保證?

5、人員問題開發(fā)人員是否得到培訓(xùn)?是否存在政治問題?用戶是否了解這個系統(tǒng)將要做什么?

6、環(huán)境界面所提交的系統(tǒng)配置與系統(tǒng)的外部環(huán)境的接口是否合適?機(jī)器與機(jī)器、人與機(jī)器之間的通信是否以智能方式處理?

7、法律考慮這種配置是否會引入違法的責(zé)任風(fēng)險?對責(zé)任問題是否給予了足夠的保護(hù)?是否存在潛在的破壞問題?

可行性研究問題識別市場調(diào)查分析準(zhǔn)備環(huán)境分析物理分析功能分析信息分析動態(tài)分析確立系統(tǒng)方案,作出各種估算模型評審

問題的初步認(rèn)識了解系統(tǒng)應(yīng)解決的問題,這些問題是如何提出的設(shè)想這些問題如何解決才能滿足要求了解問題的結(jié)構(gòu)

市場調(diào)查了解市場對待開發(fā)軟件的需求情況調(diào)查市場上已有的類似軟件系統(tǒng)的功能、性能、價格情況

分析準(zhǔn)備確立分析計(jì)劃規(guī)定由誰參加分析作業(yè),任務(wù)分配對參加分析的人員進(jìn)行必要的培訓(xùn)

環(huán)境分析明確系統(tǒng)的目的和限制條件使用單位的狀況、經(jīng)營方針和組織機(jī)構(gòu)使用單位的計(jì)算機(jī)利用情況相關(guān)的硬件、軟件及其它接口部分用戶的操作環(huán)境及操作要求習(xí)慣、法律、制度上對軟件的制約開發(fā)能具備的技術(shù)條件和設(shè)備條件

物理分析了解實(shí)際業(yè)務(wù)活動狀況,特別對一些活動要點(diǎn)進(jìn)行分析明確在這些要點(diǎn)之間什么東西在流動,如何進(jìn)行流動對物理流量進(jìn)行分析對其模型化,得到實(shí)際業(yè)務(wù)系統(tǒng)(當(dāng)前系統(tǒng))的物理模型

功能分析決定系統(tǒng)應(yīng)具備的功能(工作域)分析功能的結(jié)構(gòu):功能展開和功能分配分析各功能之間的關(guān)系,整理它們之間傳遞的信息利用數(shù)據(jù)流圖,描述信息在系統(tǒng)流動與處理的情況

信息分析調(diào)查系統(tǒng)的輸入、輸出、保存信息明確信息的結(jié)構(gòu)及各信息之間的關(guān)系調(diào)查各信息的信息量調(diào)查各種報(bào)表和文件的格式建立粗略的數(shù)據(jù)詞典,定義系統(tǒng)中使用的數(shù)據(jù)

動態(tài)分析系統(tǒng)內(nèi)每一部分有幾種狀態(tài)各種狀態(tài)轉(zhuǎn)換的條件同步產(chǎn)生的條件與同步后狀態(tài)的變化

確立系統(tǒng)方案,進(jìn)行各種估算粗略地估算成本估算可能取得的效益提出可能需要的資源,包括人員、硬件、軟件等提出大概的進(jìn)度安排

模型評審將目標(biāo)系統(tǒng)的邏輯模型提出管理部分與用戶進(jìn)行評審復(fù)查問題定義、工程規(guī)模和系統(tǒng)目標(biāo)

下一步工作如何開展?系統(tǒng)工程的輸出是什么?可行性分析的輸出是什么?接下來要開展什么工作?

計(jì)算機(jī)系統(tǒng)工程師選擇硬件元件的某種組合以構(gòu)成基于計(jì)算機(jī)系統(tǒng)的硬件元素硬件工程過程可以分為三個階段計(jì)劃和定義階段設(shè)計(jì)和樣機(jī)實(shí)現(xiàn)階段生產(chǎn)、銷售和售后服務(wù)階段硬件和硬件工程

軟件與軟件工程為實(shí)現(xiàn)要求的功能和性能,必須制作或獲取一系列軟件部件軟件元素分為兩類

應(yīng)用軟件用來實(shí)現(xiàn)信息處理的功能

系統(tǒng)軟件完成使應(yīng)用軟件能與其它系統(tǒng)元素交互的控制功能

人與人類工程是應(yīng)用從心理學(xué)和方法論導(dǎo)出的知識來確定和設(shè)計(jì)高質(zhì)量HCI(HumanConversationInterface)的多學(xué)科活動人類工程過程包括以下步驟(1)活動分析──環(huán)境交互及劃分任務(wù),進(jìn)行任務(wù)分析

(2)語義分析和設(shè)計(jì)──動作精確定義,“對話”設(shè)計(jì)(3)語法和詞法設(shè)計(jì)──各個動作和命令的形式,硬件與軟件實(shí)現(xiàn)

(4)用戶環(huán)境設(shè)計(jì)──將硬件、軟件和其它系統(tǒng)生成元素組合起來形成用戶環(huán)境(5)原型──從人的角度出發(fā)來評價HCI數(shù)據(jù)庫和數(shù)據(jù)庫工程數(shù)據(jù)庫工程(包括數(shù)據(jù)庫分析、設(shè)計(jì)和實(shí)現(xiàn))對于使用數(shù)據(jù)庫的系統(tǒng),信息倉庫往往是所有功能的核心數(shù)據(jù)庫工程的應(yīng)用是在數(shù)據(jù)庫的信息域定義完成之后

系統(tǒng)工程師的作用是

定義數(shù)據(jù)庫中包含的信息處理查詢的類型數(shù)據(jù)存取的方式數(shù)據(jù)庫的容量等數(shù)據(jù)分析和設(shè)計(jì)是基本的軟件工程活動229面向?qū)ο蟮母拍铋_發(fā)模式什么是面向?qū)ο髮ο箢惱^承230開發(fā)模式(Paradigm)開發(fā)模式又稱為范型或模式(Pattern)。定義了:特定問題和應(yīng)用開發(fā)過程遵循的步驟;用于表示問題和解的類型;利用類型表示與問題解決有關(guān)的抽象;直接得到問題的結(jié)構(gòu)。231開發(fā)模式的選擇影響到整個軟件開發(fā)生存期。就是說,它支配了設(shè)計(jì)方法編碼語言測試和檢驗(yàn)技術(shù)232面向過程開發(fā)模式面向過程開發(fā)模式產(chǎn)生過程的抽象。抽象的基礎(chǔ)是把軟件視為處理流,并定義成由一系列步驟構(gòu)成的算法。每一步驟都是帶有預(yù)定輸入和特定輸出的一個過程,把這些步驟串聯(lián)可產(chǎn)生合理的穩(wěn)定的貫通于整個程序的控制流,最終產(chǎn)生一個簡單的具有靜態(tài)結(jié)構(gòu)的體系結(jié)構(gòu)。

233面向?qū)ο箝_發(fā)模式面向過程開發(fā)模式優(yōu)先考慮過程抽象,而面向?qū)ο箝_發(fā)模式優(yōu)先考慮實(shí)體(問題論域的對象)。面向?qū)ο箝_發(fā)模式把標(biāo)識和模型化問題論域中的主要實(shí)體做為系統(tǒng)開發(fā)的起點(diǎn)。主要考慮對象的行為而不是必須執(zhí)行的一系列動作。234其它流行的開發(fā)模式目前流行多種開發(fā)模式,它們提供了許多方法,可進(jìn)行系統(tǒng)分解。面向過程的;面向?qū)ο蟮模幻嫦蚍矫娴模幻嫦蜻M(jìn)程的。235混合開發(fā)模式在大型系統(tǒng)的開發(fā)中,很難選擇一種開發(fā)模式。通常把大型問題分解成一組子問題。對于每個子問題采用適當(dāng)?shù)能浖_發(fā)模式。這種設(shè)計(jì)需要有某種實(shí)現(xiàn)語言或一組協(xié)同語言的支持。236什么是面向?qū)ο驝oad和Yourdon給出了一個定義:“面向?qū)ο?對象+類+繼承+通信”。一個面向?qū)ο蟪绦虻拿恳怀煞輵?yīng)是對象,計(jì)算是通過新的對象的建立和對象之間的通信來執(zhí)行的。237對象(object)對象是面向?qū)ο箝_發(fā)模式的基本成份。每個對象可用一組屬性和可以執(zhí)行的一組操作來定義。屬性一般只能通過執(zhí)行對象的操作來改變。操作又稱為方法或服務(wù),它描述了對象執(zhí)行的功能,若通過消息傳遞,還可以為其它對象使用。238消息(Message)消息是對象通信的手段,是要求某個對象執(zhí)行類中定義的某個操作的規(guī)格說明。發(fā)送給一個對象的消息定義了一個方法名和一個參數(shù)表(可能是空的),并指定某一個對象。一個對象接收到消息則調(diào)用消息中指定的方法,并將形式參數(shù)與參數(shù)表中相應(yīng)的值結(jié)合起來。239240241類(class)類是一組具有相同數(shù)據(jù)結(jié)構(gòu)和相同操作的對象的集合。類包括一組數(shù)據(jù)屬性和在數(shù)據(jù)上的一組合法操作。類可被視為一個具有類似特性與共同行為的對象的模板。242

類←兩個四邊形對象243Quadrilateral類的每個對象有同樣的一組實(shí)例變量和方法。就這個意義來講,類Quadrilateral給我們提供了一個模板,表示了所有四邊形對象。類常常可看做是一個抽象數(shù)據(jù)類型(ADT)的實(shí)現(xiàn)。但更合適的是把類看做是某種概念的模型。244繼承(Inheritance)繼承是使用已存在的定義做為基礎(chǔ)建立新定義的技術(shù)。新類的定義可以是既存類所聲明的數(shù)據(jù)和新類所增加的聲明的組合。新類復(fù)用既存的定義,而不要求修改既存類。既存類可當(dāng)做基類來引用,則新類相應(yīng)地可當(dāng)做派生類來引用。245246類的繼承層次247面向?qū)ο蠓椒ǖ拈_發(fā)過程面向?qū)ο蠓椒ǜ倪M(jìn)了生存期各階段間的接口,因?yàn)樯嫫诟麟A段開發(fā)出來的“部件”都是類。在面向?qū)ο笊嫫诘母鱾€階段對各個類的信息進(jìn)行細(xì)化,類成為分析、設(shè)計(jì)和實(shí)現(xiàn)的基本單元。248應(yīng)

期249類生存期250復(fù)用(Reusable)在軟件開發(fā)中,復(fù)用扮演了重要角色。軟件部件應(yīng)當(dāng)獨(dú)立于應(yīng)用而存在。部件的開發(fā)瞄準(zhǔn)局部設(shè)計(jì)和實(shí)現(xiàn),能幫助當(dāng)前問題的解決。但為了在以后的項(xiàng)目中使用,它們還應(yīng)當(dāng)足夠通用。251類就是一個希望能夠復(fù)用的單元,因此,提出了一個“類生存期”。類生存期是與應(yīng)用生存期是交叉的。類的開發(fā)應(yīng)能完整地描述一個基本實(shí)體。而不僅僅考慮當(dāng)前正在開發(fā)的系統(tǒng)。252類的定義一旦標(biāo)識了一個類,就給出了它的規(guī)格說明,包括類的實(shí)例可執(zhí)行的操作和它們的數(shù)據(jù)表示。對每一個,無論是在哪一個階段標(biāo)識的類都是如此。對于與數(shù)據(jù)庫交互的類,定義包括查找數(shù)據(jù)庫和向數(shù)據(jù)庫加入數(shù)據(jù)的行為。253類的設(shè)計(jì)與實(shí)現(xiàn)類的規(guī)格說明可指導(dǎo)對構(gòu)件庫進(jìn)行查找。根據(jù)查找結(jié)果,存在三個可能的方向:

原封不動的復(fù)用既存類演化既存類以得到滿足要求的類。重新開始進(jìn)行開發(fā)。254測試單個的類為測試提供了自然的單元。如果類的定義提供的界面比較狹窄,那么窮舉測試就有可能實(shí)現(xiàn)。類的測試在最抽象的層次開始,沿繼承關(guān)系繼續(xù)向下進(jìn)行。已經(jīng)測試過的部分不需要重新測試。重點(diǎn)放在對新類的測試和組裝測試。255求精和維護(hù)傳統(tǒng)的維護(hù)活動是針對應(yīng)用的求精過程針對類,及類之間的關(guān)系??蓸?biāo)識抽象的抽象,使繼承結(jié)構(gòu)通過一般化增加新層次,即在既存的根類之上增加新的層次。為便于類調(diào)整,應(yīng)盡量做到定義與實(shí)現(xiàn)分離。256面向?qū)ο箝_發(fā)過程分析階段:包括論域分析和應(yīng)用分析兩步驟。論域分析:開發(fā)問題論域的模型,對問題敞開思想考慮,分析覆蓋的范圍應(yīng)比直接要解決的問題更多。應(yīng)用分析:細(xì)化論域分析階段所開發(fā)出來的信息,并且把注意力集中于當(dāng)前要解決的問題。257面向?qū)ο箝_發(fā)過程高層設(shè)計(jì):設(shè)計(jì)應(yīng)用的頂層視圖;類設(shè)計(jì):建立各個對象的實(shí)例,實(shí)現(xiàn)問題的解決方案。

類開發(fā)實(shí)例建立組裝測試(類簇測試)應(yīng)用維護(hù)258面向?qū)ο蠓治雠c模型化流行的OOA方法論域分析—語義數(shù)據(jù)模型OMT方法Coad&Yourdon的OOA方法259面向?qū)ο蠓治雠c模型化面向?qū)ο蠓治鍪菃栴}定義階段。得到對問題論域的清晰、精確的定義。分析階段包括兩個步驟:論域分析和應(yīng)用分析。它們都要標(biāo)識問題論域中的抽象。260在分析中,需要

找到特定對象基于對象的公共特性組合它們標(biāo)識出對這個問題的抽象在分析階段中要標(biāo)識抽象之間的關(guān)系這些關(guān)系在應(yīng)用系統(tǒng)中常用對象之間的消息來表示,叫做消息連接。261流行的OOA方法-Booch方法包含“微開發(fā)過程”和“宏開發(fā)過程”。微開發(fā)過程定義了一組任務(wù),并在宏開發(fā)過程的每一步驟中反復(fù)使用它們,以維持演進(jìn)途徑。宏開發(fā)過程的任務(wù)包括:標(biāo)識類和對象、標(biāo)識類和對象的語義、定義類與對象間的關(guān)系,以及進(jìn)行一系列求精從而實(shí)現(xiàn)分析模型。262流行的OOA方法-Rumbaugh方法Rumbaugh和同事提出的對象模型化技術(shù)(OMT)用于分析、系統(tǒng)設(shè)計(jì)和對象級設(shè)計(jì)。分析活動建立三個模型:對象模型(描述對象、類、層次和關(guān)系)

動態(tài)模型(描述對象和系統(tǒng)的行為)

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論