單元測試范文

時間:2023-04-07 09:55:58

導(dǎo)語:如何才能寫好一篇單元測試,這就需要搜集整理更多的資料和文獻,歡迎閱讀由公務(wù)員之家整理的十篇范文,供你借鑒。

篇1

一、選擇題(每題2分,共30分)

【 】1、家庭電路中接入的電能表,其作用是

A.給家用電路提供電能 B.提高家用電器效率

C.測量電路消耗的電能 D.保護電路避免火災(zāi)

【 】2、許多家用電器的三腳插頭有一特別之處:三腳插頭中與用電器金屬外殼連接的那個插腳比另兩個插腳夫要稍長,如圖1所示。這樣設(shè)計是為了

A.插頭插入插座時,電器外殼先接地;撥出時,電器外殼后離開地線

B.方便識別火線和零線插腳

C.延長插頭使用壽命 D.使插頭的造型更美觀

圖2

1

【 】3、某同學(xué)家室內(nèi)的電燈均正常工作,當(dāng)他把“220V 8W”的臺燈插頭插入插座后,

閉合臺燈開關(guān),室內(nèi)電燈全部熄滅,發(fā)生這一現(xiàn)象的原因可能是

A.插座處短路 B.臺燈插頭處短路 C.臺燈開關(guān)處短路 D.臺燈燈頭處短路

【 】4、圖2是某家庭電路,閉合開關(guān),燈不亮。用試電筆接觸c點氖管不發(fā)光,接觸

d點氖管發(fā)光。已知該電路有兩處故障,則下列判斷正確的是

A、ac間斷路、bd間斷路 B、ac間斷路、eb間斷路

C、ac

間斷路、cd間短路 D、eb間斷路、cd間短路

【 】5、下列圖3四種情況中,人相對安全的是

【 】6、李明同學(xué)寒假在家看電視,為了取暖,他將一個電熱器插頭插入插座時,聽到

“叭”的一聲,同時從插座中冒一股黑煙,電視機和電燈都熄滅了,其原因是

A.電視機燒壞了 B.短路引起空氣開關(guān)斷開 C.電曖器燒壞了 D.燈絲燒斷

【 】7、下列四幅圖中,符合安全用電的是

圖4

【 】8、 暑期,徐延同學(xué)家新裝了一臺3kW的空調(diào)機,試用了一會兒,家中突然停電,檢查發(fā)現(xiàn)熔絲斷了。導(dǎo)致上述故障的原因可能是

A.插頭和插座接觸不良 B.電路中用電器的總功率過大

C.空調(diào)機內(nèi)部斷路 D.控制空調(diào)機的開關(guān)短路

【 】9、 如圖5所示,當(dāng)開關(guān)S閉合后,發(fā)現(xiàn)電燈L不亮,用測電筆測試c、d兩點時,氖管都發(fā)光,測試a、b兩點時,只有a點氖管發(fā)光,則故障可能是

A.火線與零線短路 B.a(chǎn)、d之間某處斷路

C.b、c之間某處斷路 D.電燈的燈絲斷了

b a

c

圖7 圖5

圖6

【 】10、如圖6,教室的講臺旁邊裝有一盞白熾燈和白熾燈的控制開關(guān),老師需要在講臺上安裝一個插座,下面是幾位同學(xué)的安裝方案,其中正確的是

A.從白熾燈控制開關(guān)的兩個接線柱上分別引出兩根線將插座接入

B.從白熾燈燈頭接線盒內(nèi)的兩個接線柱上分別引出兩根線將插座接入

C.剝開a、b分別引出兩根線將插座接入

D.剝開a、c分別引出兩根線將插座接入

【 】11、某同學(xué)在學(xué)習(xí)家庭電路時,安裝了兩盞額定電壓均為220V的完好的白熾燈(甲和乙)和兩個插座,如圖7所示,如果兩個插座均未連入家用電器,將電路中的開關(guān)全部閉合,保險絲未熔斷,那么各用電器工作的情況是

A、甲、乙都正常工作 B、只有乙正常工作

C、甲、乙都不正常工作 D、只有甲正常工作

【 】12、 當(dāng)有人發(fā)生觸電事故時,下列做法中,正確的是

A. 迅速用手將人脫離觸電區(qū) B. 用水果刀將電線割斷

C. 立即斷開閘刀開關(guān)或空氣開關(guān),或者用干燥竹竿挑開電線 D.趕快逃離現(xiàn)場

【 】13、家用電器中的總阻的變化情況是

A.只開一盞燈時,電路中總電阻最小 B.不開燈時,電路中電阻為零

C.所有燈都開時,電路中的總電阻最大 D.所有燈都開時,電路中的總電阻最小

【 】14、圖8甲所示為一個“一開三孔”開關(guān)

(即一個開關(guān)和一個三孔插座連在一起),它連入電路

如圖8乙所示。下列說法正確的是

A.燈和插座是串聯(lián)的

B.燈和插座是并聯(lián)的

C.開關(guān)只控制插座

D.開關(guān)同時控制燈和插座

【 】15、小寧設(shè)計了一種照明電路圖, 圖8 其設(shè)計要求是:用兩個開關(guān)控制一盞燈,兩個

開關(guān)同時閉合燈才能發(fā)光,只閉合其中任意一個開關(guān)燈都不能發(fā)光。圖9所示的四幅電路圖中,既符合上述設(shè)計要求,又符合安全用電要求的是

圖9

二、填空題(每空1分,共24分)

16、家庭電路中每盞燈都有一個開關(guān),跟電燈 ,用來控制電燈的通斷,其他家用電器也都有自己的開關(guān)。家用電器要 聯(lián)接入電路中。

17、家庭電路的兩根線,一根叫火線,另一根叫零線。在低電壓供電的電源處, 線是接地的。所以在正常情況下, 線與地之間沒有電壓, 線和地之間有220V的電壓。

18、家庭電路中要裝 表,它用來測用戶在一定時間內(nèi)消耗多少千瓦時的電能。電能表要裝在家庭電路的 路上。

19、辨別火線和零線可以用測電筆,使用時一定要用手接觸筆尾的 體,筆尖接觸電線的裸露部分,氖管發(fā)光表明筆尖接觸的是 線。

20、家用保險絲是由電阻 、熔點 的鉛銻合金制成。保險絲是 聯(lián)在電路中。如果沒有備用的保險絲, (填“能”或“不能”)用銅絲或鐵絲代替保險絲。保險絲是利用 工作的。更換保險絲時,一定要先 電源。

21、三孔插座比兩孔插座多的那個孔是跟 連接的。當(dāng)用電器的三腳插頭插在三孔插座里時,除把用電部分連入電路外,還要把用電器的 與 連接起來。

22、安全用電的原則是,不 低壓帶電體,不 高壓帶電體。

23、小明在家看電視,突然斷電,發(fā)現(xiàn)空氣開關(guān)跳閘。原來是樓上鄰居家水管漏水,水流入小明家的插座中,因為流入插座的水是 (選填“導(dǎo)體”或“絕緣體”),使電路發(fā)生 路,導(dǎo)致空氣開關(guān)跳閘。

24、如圖10所示,甲圖是小明家臥室的一個插座,他用試電筆測試插座的A孔,氖管發(fā)光,則A孔接的是 線;乙圖是一個臺燈的電路示意圖,當(dāng)把臺燈接入電路時,為了安全,應(yīng)將臺燈插頭的 (選填“C”或“D”)插腳接火線。

10

三、作圖題(每題2分,共10分)

25、請用筆畫線代替導(dǎo)線將圖11乙中的三孔插座正確接入照明電路.

圖12 圖

11

26、小寶想在臥室安裝一盞照明電燈,請在圖12中幫他把燈和開關(guān)接入電路。

27、小森家有兩盞墻壁燈,由一個開關(guān)控制,其元件符號如圖13所示,試連接電路圖。

28、如圖14所示,S1是光控開關(guān),夜晚自動閉臺,白天斷開;S2是聲控開關(guān),有聲音時自動閉合,安靜時斷開。請把圖連接成聲光控樓道節(jié)能照明電路。

29、如圖15甲所示,是小明常用的一個插線板。他在使用中發(fā)現(xiàn):插線板上的指示燈在開關(guān)閉合時會發(fā)光,插孔正常通電;如果指示燈損壞,開關(guān)閉合時插孔也能正常通電。根據(jù)上述現(xiàn)象,在圖15乙中畫出插線板中開關(guān)、指示燈和插孔的連接方式,并與電源線接通。

火線 零線

指示燈

四、計算題(6分)

30、 某電路安裝的電能表上標(biāo)有“220V 5(10)A”,問這電路中除使用2盞“220V 40W”的電燈,一臺60W的電視機外,

①是否還可以同時使用“220V 800W”的電爐?

②如果不使用電爐,只再安裝一些“220V 40W”的電燈,最多還可以再安裝多少盞?

單元測試

1. C 2.A 3.

D 4.

B 5.B 6.

B 7.

D 8.B 9.C 10.C 11.D 12.C 13.D 14.B 15.B

16.串聯(lián) 并 17.零 零 火 18.電能 干 19.金屬 火

20.大 低 串 不能 電流的熱效應(yīng) 切斷 21.大地 金屬外殼 大地

22.接觸 靠近 23.導(dǎo)體 短 24.火 D

25. 26. 27.

篇2

1. 圖1是一些汽車品牌的標(biāo)志,其中是中心對稱圖形但不是軸對稱圖形的共有().

A. 2個B.3個C. 4個D. 5個

2. 四張撲克牌如圖2(1)所示放在桌子上,小敏把其中兩張旋轉(zhuǎn)180°后如圖2(2)所示,那么她所旋轉(zhuǎn)的牌從左起是().

A. 第一張、第二張 B. 第二張、第三張

C. 第三張、第四張 D. 第四張、第一張

3. 如圖3,該圖形圍繞自己的旋轉(zhuǎn)中心,按下列角度順時針旋轉(zhuǎn)后,不能與其自身重合的是().

A. 72° B. 108°

C. 144° D. 216°

4. 如圖4,已知?荀ABCD的兩條對角線AC與BD交于平面直角坐標(biāo)系的原點O,點A的坐標(biāo)為(-2,3),則點C的坐標(biāo)為().

A. (-3,2) B. (-2,-3)

C. (3,-2) D. (2,-3)

5. 如圖5,在等邊ABC中,AC=9,點O在AC上,且AO=3,點P是AB上一動點,連接OP,將線段OP繞點O逆時針旋轉(zhuǎn)60°得到線段OD.要使點D恰好落在BC上,則AP的長是().

A. 4B. 5C. 6D. 8

6. 圖6中這些復(fù)雜的圖案都是在一個圖案的基礎(chǔ)上,在“幾何畫板”軟件中拖動一點后形成的,它們中每一個圖案都可以由一個“基本圖案”通過連續(xù)旋轉(zhuǎn)得來,旋轉(zhuǎn)的角度是().

A. 30° B. 45° C. 60° D. 90°

二、填空題

7. 下午2點30分時,時鐘的分針與時針?biāo)山堑亩葦?shù)為______.

8. 如圖7,直線y=-x+4與x軸、y軸分別交于A,B兩點,把AOB繞點A順時針旋轉(zhuǎn)90°后得到AO′B′,則點B′的坐標(biāo)是______.

9. 如圖8,E,F(xiàn)分別是正方形ABCD的邊BC,CD上的一點,且BE+DF=EF,則∠EAF=______.

10. 如圖9,用等腰直角三角板畫∠AOB=45°,并將三角板沿OB方向平移到如圖所示的虛線處后繞點M逆時針方向旋轉(zhuǎn)22°,則三角板的斜邊與射線OA的夾角α為______度.

11. 如圖10,小新從A點出發(fā)前進10 m,向右轉(zhuǎn)15°,再前進10 m,又向右轉(zhuǎn)15°…這樣一直走下去,他第一次回到出發(fā)點A時,一共走了______m.

12. 如圖11,直角梯形ABCD中,AD∥BC,ABBC,AB=1,AD=2,BC=3,將腰CD以D為中心逆時針旋轉(zhuǎn)90°至ED,連接AE,CE,則ADE的面積是______.

三、解答題

13. 如圖12,網(wǎng)格中有一個四邊形和兩個三角形.

(1) 請你畫出三個圖形關(guān)于點O的中心對稱圖形.

(2) 將(1)中畫出的圖形與原圖形看成一個整體圖形,請寫出這個整體圖形對稱軸的條數(shù).試問:這個整體圖形至少旋轉(zhuǎn)多少度才能與自身重合?

14. 如圖13,矩形ABCD中,AB=3,BC=4,若將矩形折疊,使C點和A點重合,求折痕EF的長.

15. 認真觀察圖14中4個圖中陰影部分構(gòu)成的圖案,回答下列問題.

(1) 請寫出這四個圖案都具有的兩個共同特征.

(2) 請再設(shè)計一個你心中最美麗的圖案,使它也具備你所寫出的上述特征.

16. 一位同學(xué)拿了兩個全等的45°三角尺MNK和ACB,并做了一項探究活動:將MNK的直角頂點M放在ABC斜邊AB的中點處,設(shè)AC=BC=4.

(1) 如圖15(1),兩三角尺的重疊部分為ACM,則重疊部分的面積為______,周長為______.

(2) 將圖15(1)中的MNK繞頂點M逆時針旋轉(zhuǎn)45°,得到圖15(2),此時重疊部分的面積為______,周長為______.

(3) 如果將MNK繞M旋轉(zhuǎn)到不同于圖15(1)和圖15(2)的位置,如圖15(3),請你猜想此時重疊部分的面積:______.

(4)在圖15(3)情況下,若AD=1,求出重疊部分圖形的周長.

17. 如圖16,點O是等邊ABC內(nèi)一點,∠AOB=110°,∠BOC=α.將BOC繞點C按順時針方向旋轉(zhuǎn)60°得ADC,連接OD.

(1) 求證:COD是等邊三角形.

(2) 當(dāng)α=150°時,試判斷AOD的形狀,并說明理由.

(3) 探究:當(dāng)α為多少度時,AOD是等腰三角形?

參考答案

一、1. A 2. A 3. B 4. D 5. C 6. C

二、7. 105 8. (7,3) 9. 45° 10. 22 11. 240 12. 1

三、13. (1)略. (2)4條,90°.

14. 如圖17,連接AF.∠FOC=90°,AC=5,AO=OC=.可得AF=.

OF 2=AF 2-OA2,得OF=.所以EF=.

15. (1) 4個圖中陰影部分的面積相等.它們都是軸對稱圖形和中心對稱圖形. (2) 圖形設(shè)計略.

篇3

關(guān)鍵詞:軟件測試;認知誤區(qū);嵌入式;單元測試流程

1 軟件測試簡述

軟件測試是在軟件投入商用前,對軟件需求分析報告、設(shè)計規(guī)格說明書和編碼的最終復(fù)查,是軟件質(zhì)量保證的關(guān)鍵方法,軟件測試并不等于程序測試。它貫穿于軟件定義和開發(fā)的整個過程,因此,軟件需求分析、軟件概要設(shè)計、軟件詳細設(shè)計和程序編碼等各階段所得到的文檔,包括需求規(guī)格說明書、概要設(shè)計說明書、詳細設(shè)計說明書,以及源代碼都是軟件測試的測試對象。隨著軟件規(guī)模的不斷擴大,以及軟件設(shè)計復(fù)雜程度不斷的提高,軟件開發(fā)中出現(xiàn)失誤或缺陷的概率越來越大。隨著市場對軟件質(zhì)量重要性的認知程序的提高,因此軟件測試在軟件項目實施過程中的重要性尤為突出。軟件測試將會成為一個具有很大發(fā)展前景的行業(yè),市場將需要更多具有豐富測試技術(shù)和先進管理經(jīng)驗的測試技術(shù)員和項目經(jīng)理。

2 軟件開發(fā)項目測試的誤區(qū)

軟件測試從1990年左右進入中國,目前國內(nèi)大的測評中心、大型企業(yè)已經(jīng)完全掌握了軟件測試的測試策略和測試方法。小企業(yè)普遍存在測試人員不懂什么是單元測試,怎樣進行單元測試,很少能看懂代碼的細節(jié)。而開發(fā)人員很少能夠提供完整的詳細設(shè)計報告、需求報告。導(dǎo)致單元測試,以拼湊測試報告為目的。

認知誤區(qū)一:軟件測試是軟件開發(fā)的最后一道步驟,工程師們一般認為,軟件實際項目要經(jīng)過下面六個階段:需求分析,概要設(shè)計,詳細設(shè)計,軟件編碼,軟件測試,軟件。因而,認為軟件測試只是編碼后的一個孤立的階段,這就是不了解軟件測試流程的認知偏差。軟件測試是一個系列的活動過程,是一個開放的體系,包括軟件測試需求分析,測試計劃設(shè)計,測試用例設(shè)計,執(zhí)行測試。從而,軟件測試應(yīng)當(dāng)貫穿于軟件項目的整個生命周期,并不是軟件開發(fā)后最后一道步驟。認知誤區(qū)二:軟件商用后如果發(fā)現(xiàn)質(zhì)量問題,就武斷認為是軟件測試人員的工作失誤。這種認識很狹隘,很是打擊軟件測試人員的工作積極性。軟件測試只能確認軟件存在錯誤,不能保證軟件沒有錯誤。因為從根本上講,軟件測試不可能發(fā)現(xiàn)全部錯誤,軟件后的錯誤可能來自軟件項目中的各個過程。認知誤區(qū)三:軟件測試對測試人員技術(shù)要求不高,任何人都可以做。很多工程師認為軟件測試就是安裝并運行程序,按按鍵盤的重復(fù)性工作。隨著軟件測試技術(shù)的不斷改進和完善,新測試方法、新流程、新工具都在不斷被開發(fā)出來。這就需要軟件測試工程師掌握和學(xué)習(xí)很多專業(yè)測試新理念和新技能。認知誤區(qū)四:只有編寫程序的高手才是軟件專家,而軟件測試沒有前途。由于我國軟件行業(yè)整體研發(fā)能力比較低,軟件開發(fā)過程不規(guī)范。不少軟件項目的開發(fā)都還停留在“累加堆疊“階段。項目開發(fā)依靠個別程序員決定,他們一人負責(zé)總體設(shè)計和代碼編寫,給人的印象是程序員是真正的牛人,完成了所有的軟件項目開發(fā)工作。但在微軟等世界知名軟件企業(yè)里,軟件測試人員的待遇和數(shù)量與一般程序員沒有多少差異,優(yōu)秀測試人員的待遇甚至比普通程序員要高的多。

3 嵌入式軟件單元測試流程

單元測試是指對軟件中的最小可測試單元進行檢查和驗證。單元是規(guī)格說明書中的最小單元,包括函數(shù)、子程序、程序。單元測試關(guān)注獨立的函數(shù)功能,是測試過程中最低級別的測試活動。需要開發(fā)一個或多個測試用例執(zhí)行單元測試。把代碼問題縮小范圍在開發(fā)階段鎖定Bug是單元測試的主旨要求,以下將介紹一種容易操作的嵌入式單元測試實戰(zhàn)流程。

第一階段,制定測試記錄表,記錄測試過程,和測試情況。測試記錄表包含:源文件名,子函數(shù)名,用例標(biāo)號,用例名稱,用例個數(shù),用例通過個數(shù),語句覆蓋率,分支覆蓋率,MC/DC覆蓋率,測試結(jié)果,問題描述,測試人員,測試時間。針對第一階段的測試結(jié)果,此時需要大家分析出問題的代碼,各抒己見,總結(jié)問題,給出解決方法。

第二階段,解決部分測試用例failed問題,找出阻止生成用例的共性。常見問題匯總:局部變量未初始化,調(diào)用函數(shù)未聲明,局部變量直接賦值,結(jié)構(gòu)體嵌套、結(jié)構(gòu)體指針、聲明問題、聲明位置問題,函數(shù)指針,大循環(huán)、死循環(huán),絕對地址,指針變量,C語言程序中帶有g(shù)oto語句。解決辦法:局部變量聲明后,需要賦初值再使用。調(diào)用函數(shù)未聲明,該問題發(fā)生在隔離測試階段,屬于代碼書寫不規(guī)范問題。解決方法:自定義的函數(shù)都需要在頭文件中做統(tǒng)一聲明。局部變量直接賦初值:該問題發(fā)生在測試用例無法生成階段,屬于代碼書寫不規(guī)范問題。解決方法,結(jié)構(gòu)體局部變量,指針變量需要先聲明后賦初值。結(jié)構(gòu)體嵌套、結(jié)構(gòu)體指針、聲明問題、聲明位置問題:該問題也屬于代碼書寫不規(guī)范問題。解決方法:根據(jù)MISRA代碼書寫規(guī)范,結(jié)構(gòu)體需要放在頭文件中統(tǒng)一聲明。大循環(huán)、死循環(huán):單元測試需要有程序結(jié)束的出口。解決方法:把大循環(huán)改為小循環(huán),注釋掉死循環(huán)(if(1)、for(; ;),while(1))。絕對地址:單元測試不連接真實的硬件設(shè)備。遇到寄存器等絕對地址時,需要對寄存器做變量處理。指針變量:需要聲明一個同類的數(shù)組,然后把數(shù)組的首地址,賦給指針變量。函數(shù)指針:需要虛構(gòu)一個函數(shù)實體,取函數(shù)地地址賦給函數(shù)指針,完成映射。C語言程序中帶有g(shù)oto語句:需要改變程序結(jié)構(gòu),增加判斷語句,去除所有的goto語句,以便確保C語言程序的穩(wěn)定性。

測試第三階段:基本圈復(fù)雜度高于MISRA閥值要求的函數(shù),先考慮把復(fù)雜函數(shù)改為幾個小函數(shù)。改不了的由開發(fā)人員寫聲明以及具體原因,再按照路徑分支來設(shè)計測試用例。匯總測試結(jié)果,提交測試問題報告單,并提交行業(yè)標(biāo)準(zhǔn)測試報告。

4 結(jié)束語

文章簡述了軟件測試的基本概念,澄清了軟件測試工程實踐中的幾個誤區(qū),依據(jù)單元測試實踐的具體案例,介紹了一種高效、容易操作的嵌入式單元測試的流程。

參考文獻

[1]胡丹,杜新華.基于目標(biāo)機的嵌入式軟件單元測試[J].電子測量技術(shù),2006(2).

[2]趙正海,王寧.跟蹤雷達“指示引導(dǎo)”功能軟件測試方法研究[J].現(xiàn)代電子技術(shù),2013(36).

[3]于園園.軟件測試技術(shù)與測試管理研究[J].江蘇科技信息,2016(7).

[4]王琨.嵌入式計算機軟件測試關(guān)鍵技術(shù)探討[J].科技創(chuàng)新與應(yīng)用,2016(7).

[5]張金環(huán),田洪濤.淺析設(shè)備軟件測試與質(zhì)量保證[J].電子工業(yè)專用備,2016,45(1).

作者簡介:張軍(1988-),男,陜西武功人,工學(xué)碩士,助理工程師,主要研究方向:雷達信號處理算法、數(shù)字中頻收發(fā)機和嵌入式軟件測試。

篇4

滿分:100分 時間60分鐘 班 級 : 姓 名 :

一yī、直zhí接jiē寫xiě出chū得dé數(shù)shù。(12×1=12分)

7+70= 35+5= 66-6= 83-3=

43-3= 4+60= 90+9= 3+40=

50-40= 97-7= 80-60= 50+5=

二èr、我wǒ會huì填tián。(每空1分,共20分)

1. 10個è一yī是shì( ),10個è十shí是shì( )。7個è十shí和hé6個è一yī合hé起qǐ來lái是shì( ),

6個è一yī和hé5個è十shí是shì( )。

2. 34里lǐ面miàn有yǒu( )個è十shí和hé( )個è一yī。80里lǐ面miàn有yǒu( )個è十shí。47里lǐ

有yǒu( )個è十shí和hé( )個è一yī。

3.與yǔ80相xiān鄰lín的de兩liǎn個è數(shù)shù是shì( )和hé( )。

4.七qī十shí二èr寫xiě作zuò( ),68讀dú作zuò( )。

5. 58里lǐ面miàn的de“5”在zài( )位wèi上shàn,表biǎo示shì( )個è( )。

6.比bǐ91小xiǎo,比bǐ88大dà的de數(shù)shù是shì( )和hé( )。

7.最zuì大dà的de兩liǎn位wèi數(shù)shù是shì( ),最zuì小xiǎo的de兩liǎn位wèi數(shù)shù是shì( )。

三sān、擺bǎi一yì擺bǎi,填tián一yì填tián。(4×3=12分)

1. 2個è同tón樣yàn的de正zhèn方fān形xín可kě以yǐ拼pīn成chén一yí個è( )。

2.( )個è同tón樣yàn的de正zhèn方fān形xín可kě以yǐ拼pīn成chén一yí個è大dà正zhèn方fān形xín。

3.2個è同tón樣yàn的de長chán方fān形xín可kě以yǐ拼pīn成chén一yí個è( )或huò( )。

4.擺bǎi一yí個è三sān角jiǎo形xín最zuì少shǎo用yòn( )根ēn同tón樣yàn長chán的de小xiǎo棒bàn。

四sì、判pàn斷duàn題tí。(對的在括號里畫“√”,錯的畫“×”)(5×1=5分)

1.和hé80相xiān鄰lín的de數(shù)shù是shì81和hé82。 ( ) 2. 36后hòu面miàn第dì五wǔ個è數(shù)shù是shì41。 ( )

3. 100里lǐ面miàn有yǒu100個è十shí。 ( ) 4. 80比bǐ70少shǎo一yì些xiē。 ( )

5.個è位wèi是shì5,十shí位wèi是shì2,這zhè個è數(shù)shù是shì52。 ( )

五wǔ、比bǐ一yì比bǐ。(在內(nèi)填上“>”、“<”或“=”)(12×1=12分)

9390-3 8085-3 10090+9 78-880

42+849 20+630 5+50100 69-970

53-350 2022-2 3+7037 9999-9

六liù、連lián一yì連lián。(3×4=12分)

1.下xià面miàn哪nǎ兩liǎn部bù分fēn可kě以yǐ拼pīn成chén一yí個è完wán整zhěn的de圖tú形xín?

2.把bǎ小xiǎo動dòn物wù送sòn回huí家jiā。

3.右yòu圖tú:蘋pín果uǒ是shì從cón哪n??胟ē樹shù上shàn摘zhāi下xià來lái的de?

七qī、數(shù)shǔ一yì數(shù)shù,填tián一yì填tián。(8分)

八bā、解jiě決jué問wèn題tí。(9分)

1.一yí共òn數(shù)shǔ了le多duō少shǎo顆kē星xīn星xin。

2.一yí共òn有yǒu46架jià飛fēi機jī。

3.王wán強qián看kàn一yì本běn58頁yè的de書shū,看kàn了le一yì些xiē后hòu,還hái剩shèn8頁yè,他tā已yǐ經(jīng)jīn看kàn了le幾jǐ頁yè?

九jiǔ、動dòn動don腦nǎo。(10分)

篇5

傳統(tǒng)的單元測試包括了調(diào)用被測模塊(driver)和樁模塊(stub)。調(diào)用被測模塊的目的很單純,就是為了訪問類庫的屬性和方法,來檢測類庫的功能是否正確;

調(diào)用被測模塊是用來模擬被測試模塊的上一級模塊,相當(dāng)于被測模塊的主程序。它接收數(shù)據(jù),將相關(guān)數(shù)據(jù)傳送給被測模塊,啟用被測模塊,并打印出相應(yīng)的結(jié)果。

Normal002falsefalsefalseEN-USKOX-NONEMicrosoftInternetExplorer4如果被測試模塊中的函數(shù)是提供給其他函數(shù)調(diào)用的,在設(shè)計測試用例時就應(yīng)該設(shè)計調(diào)用被測模塊(Driver)。

篇6

關(guān)鍵詞:單元測試 LDRA Testbed 覆蓋分析

中圖分類號:TP311.52 文獻標(biāo)識碼:A 文章編號:1007-9416(2015)09-0000-00

隨著計算機軟件技術(shù)的深入使用,各種軟件系統(tǒng)的復(fù)雜度不斷加深,為了更好,更有效率的完成任務(wù),節(jié)省時間和人力資源,這就對測試軟件有了更高的要求。LDRA Testbed測試工具的使用給工作帶來了很多便利,它是軟件驗證與確認的質(zhì)量工具,提供源代碼的測試和分析,主要應(yīng)用于需要軟件具有高可靠性,高健壯性,甚至要求盡可能達到零缺陷的領(lǐng)域[1]。

1測試準(zhǔn)備

為了提高測試的方便性,在用Testbed之前應(yīng)該做好準(zhǔn)備工作。建立一個包含項目各個模塊的文檔,對每個模塊創(chuàng)建合適的用例,包括邊界和特殊情況;并對各種不同的情況設(shè)計測試數(shù)據(jù),并計算出自己的期望值。如圖1。

圖1 單元測試數(shù)據(jù)表

2 Testbed單元測試

2.1 創(chuàng)建測試用例

選擇項目程序進行測試,Tbrun進行單元模塊測試進行了有效的自動化,創(chuàng)建測試序列,選擇單元模塊進行白盒測試。Tbrun利用了代碼評審和設(shè)計評審的結(jié)果自動對系統(tǒng)的每一個單元產(chǎn)生測試驅(qū)動;用戶被提示輸入數(shù)據(jù)(測試準(zhǔn)備文檔中模塊數(shù)據(jù))并與產(chǎn)生的結(jié)果進行比較,是否期望與實際結(jié)構(gòu)一致(如圖2)。 Tbrun保存并維護所有的測試信息,方便在以后任何時候生成相同的驅(qū)動進行回歸測試。

圖2 對比結(jié)果圖

2.2 覆蓋率分析

覆蓋率分析有三種常用的覆蓋測試,分別是語句覆蓋,分支覆蓋和MC/DC覆蓋。語句覆蓋是常用的覆蓋方法,也是最弱的邏輯覆蓋準(zhǔn)則。即使語句覆蓋率達到100%,也不能保證被測程序100%的被覆蓋,其缺點是不能發(fā)現(xiàn)某些程序結(jié)構(gòu)的邏輯錯誤[2]。

輸入了數(shù)據(jù)產(chǎn)生結(jié)果對比后會生成覆蓋分析報告,里面包含了結(jié)果對比情況和覆蓋率情況(如圖3),其中含有*的語句表示測試用例并沒有包含這些語句,我們需要進行分析測試用例是否包含了這種情況;如果包含,則這些語句是多余的,否則增加此種情況的用例。

圖3 覆蓋分析報告

3 結(jié)語

軟件測試工具與人力的結(jié)合提高了測試效率,使軟件單元設(shè)計中的問題提早暴露,保證了項目質(zhì)量并縮短了項目周期。Testbed是一個比較方便的測試工具,可以節(jié)省資源,提高產(chǎn)品質(zhì)量。不僅在編程階段可以檢測和修改軟件的錯誤與缺點,而且覆蓋率的測試提供了測試方案和必要信息。

參考文獻

[1]石磊.LDRA Testbed在彈載軟件測試中的應(yīng)用怕[J].軟件導(dǎo)刊,2008.

[2]王瑋.Testbed中常用覆蓋測試方法研究[J].計算機光盤軟件與應(yīng)用,2015,13-14.

篇7

關(guān)鍵詞:軟件測試;單元測試;模擬對象

中圖分類號:TP311文獻標(biāo)識碼:A文章編號:1009-3044(2008)05-00ppp-0c

1 引言

隨著極限編程在實際軟件開發(fā)項目中的推廣,越來越多的項目開始采用測試驅(qū)動開發(fā)作為主要的軟件開發(fā)方法。單元測試不僅優(yōu)化了軟件系統(tǒng)設(shè)計,還大大簡化了功能測試的工作量[1]。但是另一方面.更多的項目在開始不久就發(fā)現(xiàn)在很多情況下針對一個類編寫單元測試比較困難.隨著項目的進行,越來越多的代碼無法進行單元測試.到最后整個項目無法繼續(xù)采用測試驅(qū)動的方式進行開發(fā)。因此,要將測試驅(qū)動開發(fā)真正在整個項目里貫徹執(zhí)行,必須有一種方法能夠相對容易的解決這些問題。本文將首先討論了單元測試和無法或很難進行單元測試的情況,然后引入Mock Object的概念,基于Mock Object實現(xiàn)單元測試。接下來討論在軟件開發(fā)過程中引入Mock Object對測試和設(shè)計的影響。最后簡述了Mock Object的局限性。

2 單元測試

2.1 什么是單元測試

單元測試是對程序中的單個子程序或過程進行測試的過程,也就是說,一開始并不是對整個程序進行測試,而是將注意力集中在對構(gòu)成程序的較小模塊的測試上面[2]。單元測試從兩個角度進行測試:一是測試數(shù)據(jù)都是針對程序的功能來設(shè)計的黑盒測試;二是針對程序的邏輯結(jié)構(gòu)來設(shè)計測試用例的白盒測試。

2.2 單元測試面對的難題

造成針對一個類難以進行單元測試的主要原因是因為這個類依賴于一些其它的難以測試的資源。主要有這三類最主要的資源:數(shù)據(jù)庫,第三方組件和網(wǎng)絡(luò)硬件資源。下面我們將對這三大類難以測試的資源進行分類討論。

2.2.1 數(shù)據(jù)庫

現(xiàn)在大部分的軟件項目都會采用數(shù)據(jù)庫作為數(shù)據(jù)存儲。常見的開發(fā)團隊會在每個開發(fā)人員的機器上安裝一個本地的數(shù)據(jù)庫,每個人針對自己的數(shù)據(jù)庫進行開發(fā)調(diào)試。這樣做的問題是:必須有一種方式同步數(shù)據(jù)庫的設(shè)計。如果有一個人修改了數(shù)據(jù)庫schema或者某個存儲過程,這個修改必須同步到所有開發(fā)者的本地數(shù)據(jù)庫以及測試服務(wù)器上。采用敏捷軟件開發(fā)的很多項目組往往會浪費大量的時間在數(shù)據(jù)庫設(shè)計同步上。更嚴重的是每周都會遇到由于數(shù)據(jù)庫設(shè)計不同步,修改沖突導(dǎo)致的問題導(dǎo)致整個項目的中心源碼庫在Auto Build時失敗。每個開發(fā)人員都有自己的測試數(shù)據(jù),除了上面提到的需要把這些測試數(shù)據(jù)同步到所有開發(fā)機器和測試服務(wù)器上外,還面臨更重大的問題。因為測試用例需要修改數(shù)據(jù)庫,因此還必須準(zhǔn)備一種機制能夠在每一個測試用例執(zhí)行結(jié)束后重新將所有的測試數(shù)據(jù)調(diào)入數(shù)據(jù)庫。采用最簡單直接的方法就是在每個測試用例執(zhí)行前都將數(shù)據(jù)庫清空,然后再將測試數(shù)據(jù)調(diào)入,這樣會大大減慢單元測試的時間。單元測試時間越長,開發(fā)者就越不愿意執(zhí)行這些測試用例,單元測試所發(fā)揮的作用越小,這也是很多測試驅(qū)動項目最終無法進行到底的一個重要原因。另一個非常嚴重的問題是為了清理測試環(huán)境,在針對商業(yè)邏輯的測試用例中加入了大量的數(shù)據(jù)訪問層的代碼。采用這樣的方式強迫開發(fā)者在開發(fā)商業(yè)邏輯層的同時開發(fā)數(shù)據(jù)訪問層,并且嚴重降低了可讀性。

2.2.2 第三方組件或應(yīng)用服務(wù)器

數(shù)據(jù)庫是最常見的第三方服務(wù)器。除此以外在越來越多的項目中使用第三方的組件和應(yīng)用服務(wù)器。例如:客戶環(huán)境中的ERP系統(tǒng),全球定位系統(tǒng)(GPS)的Web Service接口,繪圖引擎等。對于這些第三方提供的內(nèi)容,造成難以編寫單元測試的最根本的原因有:一是系統(tǒng)不透明:對于大部分商業(yè)組件或者服務(wù)來說,一個很重要的內(nèi)容是良好的封裝。但這個特性帶來的問題是在外界無法對其內(nèi)部狀態(tài)進行控制和訪問。往往經(jīng)過好幾個操作后才能在外部觀察到相應(yīng)的變化。二是環(huán)境配置困難。由于項目組成員計算機配置不同,加入項目的時間不同,在項目中負責(zé)的內(nèi)容不同導(dǎo)致無法為所有開發(fā)人員配置一個完全一致的環(huán)境。例如一個繪圖引擎的開發(fā)版的license是按照一個局域網(wǎng)內(nèi)部同時使用的人員個數(shù)收費的,就不可能只為了能夠進行完整的單元測試就為只編寫商業(yè)邏輯層的開發(fā)人員也安裝一套。

2.2.3 網(wǎng)絡(luò)資源和硬件資源

在稍大一些的項目中都或多或少的用到一些網(wǎng)絡(luò)資源。例如將文件部署到遠程的webDAV服務(wù)器上同時很多項目還會用到一些硬件資源。常見的有打印機、指紋識別驗證或者條形碼閱讀器等。這些資源有兩大特點導(dǎo)致很難針對與他們相關(guān)的類編寫測試用例。

一是資源訪問沖突。很多網(wǎng)絡(luò)資源對于并發(fā)訪問的響應(yīng)協(xié)調(diào)是通過鎖機制進行的,在實際項目中常見的是一個開發(fā)人員在調(diào)試本地代碼時導(dǎo)致遠端資源被鎖定導(dǎo)致其它開發(fā)者無法訪問這些資源。

二是環(huán)境可控因素。對于網(wǎng)絡(luò)資源和硬件資源相關(guān)代碼的測試與針對商業(yè)邏輯層代碼的測試最大的不同是環(huán)境的不確定性。訪問網(wǎng)絡(luò)資源有可能遇到的異常情況非常多,例如網(wǎng)絡(luò)忙造成訪問超時,也有可能建立鏈接后數(shù)據(jù)傳輸失敗,還有可能數(shù)據(jù)傳輸完成后校驗失敗。針對訪問這些資源的代碼進行的測試必須能夠覆蓋到所有可能出現(xiàn)的每一種情況。如果沒有一個可控,并且是全自動的環(huán)境輔助單元測試的話,這項任務(wù)基本上不可能完成。

3 模擬對象

3.1 什么是模擬對象

Mock這個單詞翻譯成中文大概的意思是假的,模擬的。如圖1所示:通過一個常見的對商業(yè)邏輯的測試描述了一個Mock Object。在圖中我們可以看出:測試代碼需要測試商業(yè)邏輯,而商業(yè)邏輯代碼需要通過IMyDataAccess接口訪問底層數(shù)據(jù)庫,這就是數(shù)據(jù)庫依賴問題。為了解決這個問題我們引入一個Mock Object,并將這個Mock Object而非真正的Data Access傳遞給商業(yè)邏輯代碼進行測試。這里的Mock Object不需要實現(xiàn)任何邏輯只需要根據(jù)商業(yè)邏輯的需要返回適當(dāng)?shù)膬?nèi)容就可以了。

圖1 使用Mock Object對商業(yè)邏輯進行測試

3.2 模擬對象實現(xiàn)單元測試應(yīng)用實例

現(xiàn)在我們寫好了類AccountService,具體如下:

public class AccountService {

private AccountManager accountManager;

public void setAccountManager(AccountManager manager) {

this.accountManager = manager;

}

public void transfer(String senderId, String beneficiaryId, long amount) {

Account sender = this.accountManager.findAccountForUser(senderId);

Account beneficiary =

this.accountManager.findAccountForUser(beneficiaryId);

sender.debit(amount);

beneficiary.credit(amount);

this.accountManager.updateAccount(sender);

this.accountManager.updateAccount(beneficiary);

}}

現(xiàn)在我們想測試transfer方法,它內(nèi)部調(diào)用的AccountManager的兩個方法。但是對于AccountManager來說,它只是個接口,如下:

public interface AccountManager {

Account findAccountForUser(String userId);

void updateAccount(Account account);

}

所以現(xiàn)在我們必須寫個MockAccountManager對象。而且里面的方法體都是非常簡單的,就是假定它就返回某某值。

我們這里還有Account類。

public class Account {

private String accountId;

private long balance;

public Account(String accountId, long initialBalance) {

this.accountId = accountId;

this.balance = initialBalance;

}public void debit(long amount) {

this.balance -= amount;

}

public void credit(long amount) {

this.balance += amount;

}

public long getBalance() {

return this.balance;

}

public String getAccountId() {

return accountId;

}}

public class AccountService1Tests extends TestCase {

public void testTransfer(){

AccountService as = new AccountService();

MockAccountManager mockAccountManager=new MockAccountManager();

Account accountA = new Account("A",3000);

Account accountB = new Account("B",2000);

mockAccountManager.addAccount(accountA);

mockAccountManager.addAccount(accountB);

as.setAccountManager(mockAccountManager);

as.transfer("A","B",1005);

assertEquals(accountA.getBalance(),1995);

assertEquals(accountB.getBalance(),3005);

}}

這里我們在假定AccountManager方法都工作正常的情況下,完成了對transfer方法的測試。

從以上代碼可以看出,采用Mock Object進行的單元測試基本上可以分為下面幾步:

(1)基于一個接口定義Mock并實現(xiàn)這個接口的所有函數(shù)。

(2)創(chuàng)建Mock Object的一個對象

(3)設(shè)置對象內(nèi)部屬性

(4)告訴對象測試代碼希望看到的反應(yīng)

(5)進行測試

(6)檢查Mock Object的確按照希望的順序進行工作。

3.3 模擬對象的優(yōu)點

3.3.1 模擬對象作為測試手段的優(yōu)點

Mock Object最直接的優(yōu)點在于提供單元測試的質(zhì)量和覆蓋率:

(1)只要在測試中對期待發(fā)生的問題指定好執(zhí)行的順序引入Mock Object對象后的單元測試就是在一個完全可控的環(huán)境里進行的。也就是說我們再也不會無法定位一個“時隱時現(xiàn)”的bug。相反我們可以非常迅速的將問題定位在一個類的內(nèi)部,而不是一個函數(shù)調(diào)用序列。

(2)于測試人員來說,最常見的問題是測試人員提交的bug無法在開發(fā)人員那里復(fù)現(xiàn)。有了Mock Object這個工具測試人員可以利用Mock Object明確的指定輸入和輸出編寫一個測試用例讓開發(fā)人員修復(fù)。

(3)超過8O% 的異常處理代碼沒有被充分測試過。主要原因是在沒有Mock Object之前很多情況是無法由人工進行控制的,例如寫文件失敗網(wǎng)絡(luò)連接超時,數(shù)據(jù)庫數(shù)據(jù)傳輸失敗或者從網(wǎng)絡(luò)接收到的數(shù)據(jù)已經(jīng)損壞。通過控制Mock Object我們很容易就可以模擬上面的這些情況。

3.3.2 模擬對象作為設(shè)計手段的優(yōu)點

雖然Mock Object最直接的優(yōu)點在于給予測試代碼更多的可控性和可操作性,它最大的優(yōu)點在于對軟件設(shè)計的影響[3]。

(1)測試驅(qū)動開發(fā)與Mock Object一起使用,可以寫出低耦合高內(nèi)聚,非常優(yōu)雅干凈的代碼。

(2)強迫設(shè)計者放棄對第三方庫的強依賴關(guān)系,取而代之的是比較弱的依賴關(guān)系。

(3)設(shè)計人員可以將更大的注意力放在商業(yè)邏輯的實現(xiàn)和測試.由于Mock Object的存在,我們不需要實現(xiàn)數(shù)據(jù)訪問層就可以對商業(yè)邏輯進行測試。而商業(yè)邏輯才是任何系統(tǒng)中對于客戶最重要的內(nèi)容,它的正確與否決定了整個系統(tǒng)是否能完成任務(wù),它的穩(wěn)定性決定了整個系統(tǒng)架構(gòu)的穩(wěn)定性。

(4)在項目初期,甚至是中期,將設(shè)計人員解放出來,不用對系統(tǒng)底層的基礎(chǔ)設(shè)施做出判斷。例如,在商業(yè)邏輯并不明確,需求還不穩(wěn)定的時候,我們是更多根據(jù)感覺來做出很多重要的判斷的,而這些判斷往往導(dǎo)致比較關(guān)鍵的決定。例如,在項目之初,誰能夠明確的回答到底需要什么樣的數(shù)據(jù)庫?Oracle?SQL Server?還是XML文件?到底需要什么樣的隊列服務(wù)器 MSMQ還是IBM―MQ?由于Mock Object的引入,我們可以將這些決策推遲到商業(yè)邏輯層更加明確之后進行,從而可以獲得更加準(zhǔn)確有針對性的答案。

3.4 模擬對象的局限性

Mock Object在實際項目中的應(yīng)用存在一些限制,一些是由于Mock Object本身性質(zhì)決定的,有一些則是由于其它類庫設(shè)計存在的缺陷導(dǎo)致的。

(1)一個典型的不是Mock Object的問題,而是類庫設(shè)計的問題。是Mock Object無法模擬比較深的對象樹。有一些第三方的類庫,尤其是一些消息處理函數(shù)的參數(shù),提供的不是接口而是一些對象。往往這些對象內(nèi)部有很多子對象,也就是我們常說的一棵大的對象樹。我們需要花費太多的精力去構(gòu)造這些對象來進行模擬,時間消耗巨大。

(2)一般性而言,單元測試的粒度越細,功能測試的粒度就可以越粗[4]。但是引入Mock Object的單元測試仍然無法取代功能測試。一個很好的例子就是誤差積累的測試,哪怕每個單元的誤差都在可接收范圍內(nèi),我們?nèi)匀恍枰粋€功能測試確保整體誤差也是可以接受的。

4 結(jié)束語

模擬對象解決了傳統(tǒng)單元測試的兩個問題:一是如何將需要測試的代碼與相關(guān)環(huán)境隔離;二是如何創(chuàng)建一個快速、可控的環(huán)境輔助測試開發(fā)。隨著模擬對象技術(shù)的成熟,基于模擬對象的單元測試會越來越廣泛地被采用。

參考文獻:

[1]Kent Beck.測試驅(qū)動開發(fā)[M].北京:中國電力出版社,2003.

[2]Myers.王峰,陳杰譯.軟件測試的藝術(shù)(第二版)[M]. 北京:機械工業(yè)出版社,2006.50-52.

[3]David Astels.崔凱,譯.測試驅(qū)動開發(fā)實用指南[M].北京:中國電力出版社,2004.120-130.

[4]Paul C Jorgensen.韓柯,杜旭濤,譯.軟件測試(第二版)[M].北京:機械工業(yè)出版社,2003.

篇8

關(guān)鍵詞:Java類;面向?qū)ο蟮膯卧獪y試;測試用例

中圖分類號:G642文獻標(biāo)識碼:A文章編號:1009-3044(2008)35-2435-02

Object-oriented Unit Testing of the Case Teaching Method

ZHENG Li-xiang

(Quanzhou Senior Technical School, Quanzhou 362000, China)

Abstract: This article describes a software testing in the curriculum, students have learned the combination of Java-related knowledge, the case teaching method used to explain the object-oriented unit testing the contents of teaching so that students can understand the theory of knowledge can master the practical skills and to improve their interest in learning to cultivate the ability of students.

Key words: Java class; object-orient unit test; test case

1 引言

面向?qū)ο蟮膯卧獪y試(簡稱為OO Unit Test)是檢驗面向?qū)ο蟪绦蜃钚挝?,即檢查類有無錯誤的測試工作。因為類是面向?qū)ο蟪绦蛑凶罨镜膯挝?,所以對于類的測試必須要100%通過,這樣面向?qū)ο髥卧獪y試就顯得非常重要了。面向?qū)ο蟮母拍罴俺绦蛟O(shè)計方法本身就是一個難點,那么要幫助學(xué)生理解和掌握面向?qū)ο髥卧獪y試就更困難了。學(xué)生們對此也覺得很枯燥,聽不懂,學(xué)不會,最后放棄了。為了讓學(xué)生掌握這方面的知識和技能,我采用的方法是以Java類為例,講解面向?qū)ο髥卧獪y試的基本操作過程,以案例代替概念,理論與實踐相結(jié)合,采用案例教學(xué)法。

為什么要采用Java類作為案例進行教學(xué)呢?這主要是考慮到以下兩點:

一是Java語言是當(dāng)前應(yīng)用前景非常好的軟件設(shè)計開發(fā)語言,現(xiàn)在的計算機專業(yè)一般都會開設(shè)這一課程,并且是在《軟件測試》之前開設(shè),學(xué)生有知識基礎(chǔ)。

二是Java語言是純面向?qū)ο蟮恼Z言,它摒棄了C/C++中的一些不易掌握的結(jié)構(gòu),如指針等,其最小處理單位就是類,而且Java語言的程序非常簡潔,理解起來比較容易。

當(dāng)然作為案例的Java類不能太難了,否則一開始學(xué)生就看不懂該Java類的功能,更不用說理解該類的測試過程了。

為了讓學(xué)生能夠掌握面向?qū)ο髥卧獪y試技術(shù),我根據(jù)學(xué)生的知識水平,選用合適的被測試的Java類,為其設(shè)計測試用例,執(zhí)行測試并生成測試文檔,用完整的案例進行教學(xué)。

2 針對面向?qū)ο笳Z言的特征,選擇自動化的單元測試方法

在一個典型的軟件項目中,有兩種類型的測試最為重要:程序員測試和用戶測試,或稱為單元測試和驗收測試。單元測試由程序設(shè)計師自行編寫測試代碼,目的在于驗證程序設(shè)計師所撰寫的代碼是否依據(jù)其所設(shè)想的方式執(zhí)行而產(chǎn)生符合預(yù)期的結(jié)果。即驗證程序代碼的正確性。如果是對采用面向?qū)ο蠓椒ㄔO(shè)計的軟件進行單元測試,就是面向?qū)ο髥卧獪y試了。

通常,在進行面向?qū)ο蟮膯卧獪y試前,我們都要分析幾個問題:

1) 面向?qū)ο蟮膯卧獪y試的對象是誰?

2) 采用人工測試還是自動化測試?

3) 如果是自動化測試,那么使用什么樣的工具合適?

4) 如何進行面向?qū)ο蟮膯卧獪y試?

對于不同的程序代碼來說,以上的問題可能都有不同的答案與之相對應(yīng),那么如果使用的是Java語言所編寫的代碼的話,該怎樣決定呢?

首先,我們知道Java語言是一種高級的、通用的、完全面向?qū)ο蟮某绦蛟O(shè)計語言,其程序的基本處理單位是類。所以單元測試的對象就是類,即Java的單元測試指的是面向?qū)ο蟮膯卧獪y試。

其次,隨著軟件的復(fù)雜程度越來越高,面向?qū)ο髥卧獪y試的工作量也隨之增加了,若采用人工測試恐怕難以完成。因此,自動化的單元測試要比人工測試要來得適用。再者,自動化測試的另一個好處是能生成測試文檔,這樣也可以減少文檔的撰寫工作。

當(dāng)然,如果選擇了自動化測試就需要工具來支持了,使用何種工具比較合適呢。在此,推薦使用JUnit,這是一種輕量級的測試框架。JUnit是一個開發(fā)源代碼的Java測試框架,用于編寫和運行可重復(fù)的測試。它是用于單元測試框架體系xUnit的一個實例(用于Java語言)。主要用于白盒測試,回歸測試。JUnit一般不需要另行安裝,通常集成的程序設(shè)計平臺,如Eclipse、JBuilder等都會裝有JUnit。

3 設(shè)計簡單的Java類的單元測試用例來解析面向?qū)ο髥卧獪y試

3.1 選取待測試的Java類

為使學(xué)生更易理解,案例的選擇要先易后難。我們可以用HelloWorld為例說明JUnit是如何進行單元測試的,因為每一種語言在其學(xué)習(xí)用書的第一個例子通常都是HelloWorld,它最簡單了。以下是代碼:

// HelloWorld.java

packageHelloWorld ;

public class helloWorld {

public String sayHello( ) {// 返回測試字符串的方法

returnstr;

}

private String str;

}

3.2 設(shè)計測試用例,幫助學(xué)生掌握測試步驟

為了對HelloWorld類進行測試,我編寫了以下測試用例,它本身也是一個Java類文件。代碼如下:

// HelloWorldTest.java;

package hello.Test ;

import helloWorld.*;

import junit.framework.*;// 引入junit.framework包

public class HelloWorldTest extends TestCase{

//繼承TestCase類

public HelloWorldTest ( String name ) {

super ( name );

}

public static Test suite ( ){

returnnewTestSuite ( HelloWorldTest.class );

}

public static void main ( String args[] ) { //主方法

junit.textui.TestRunner.run ( suite ( ) ) ;

篇9

一、填空(每空1分,共15分)

1、在漫長的地質(zhì)歷史中,經(jīng)過自然界的作用,古代生物的(

)、(

)或(

)埋藏在地下變成了跟(

)一樣的東西,這些東西就是(

)。

2、英國生物學(xué)家達爾文,1859年出版了(《

》)一書,全面提出了(

)。他認為,生物的繁衍是在(

)的過程中發(fā)生的,同一物種內(nèi)哪些個體(

),它就比其他個體更容易(

)下來。

3、寫出馬的進化順序(

)、(

)、(

)、(

)、(

二、判斷題(在你認為對的題后畫√,錯的畫×)(5分)

1、化石的形成是它們自己死后變成的

2、達爾文的生物進化學(xué)說的核心就是自然選擇學(xué)說(

3、古代的馬與現(xiàn)代的馬沒有什么差別

4、喙大而強壯的地雀更適宜吃外殼堅硬的種子

5、為了吃到更高處的樹上的嫩葉,長頸鹿的頸長得特別長(

三、觀察與分析(17分)

1、觀察下圖是什么化石?推想:這種化石是怎樣形成的?(5分)

2、現(xiàn)有青色青蛙和淡黃色青蛙,研究它們的生存環(huán)境。(12分)

(1)如果都生活在有青草的水邊,哪種易被蛇吃掉?哪種易生存下來?(4分)

(2)如果都生活在有沙灘的水邊,哪種易被蛇吃掉?哪種易生存下來?(4分)

(3)通過以上分析,你有什么發(fā)現(xiàn)?(4分)

四、根據(jù)你學(xué)過的知識,回答下面的問題。(13分)

1、你見過或知道哪些具體的生物化石,請至少寫出四種。(4分)

篇10

1. 注音寫字:(8分)

癡想()  隱秘()  喧téng()  盤虬臥龍()

訓(xùn)誡( ) 聳立()  迂回()  仙露qióng()漿

lín峋() 卑微( ) 寬shù( ) 伶仃( )

zhù立( ) 瞬間() chuò泣() 鶴lì( )云端

2.原文填空。(5分)

(1)在千年之后,也許會有人對我留下的痕跡反復(fù)觀看,反復(fù)把玩,并且會忍不住輕輕地嘆息:“這是一顆怎樣 又怎樣 的心啊!”

(2)花和人都會遇到各種各樣的不幸,但是 。

(3)余憶童稚時,能張目對日, , ,故時有物外之趣。

3. 解釋文言字詞:(4分)

(1)項為之強( )(2)以叢草為林( )

(3)興正濃( ) (4)方出神( )

4.寫出句子所用的修辭方法。(3分)

(1)山那邊的山啊,鐵青著臉。( )

(2)在山的那邊,是海嗎?是的!人們啊,請相信——( )

(3)紫色的大條幅上,泛著點點銀光,就像迸濺的水花。( )

5.對文章作者及主旨,敘述錯誤的是:()(2分)

A.《在山的那邊》,“山”與“?!眱蓚€相對的形象,是富有象征意義的,這首詩抒寫童年的想望和困惑,成年的感悟和信念,啟示人們要實現(xiàn)遠大的理想,必須百折不撓,堅持奮斗,要一次次地戰(zhàn)勝失望,不停地翻過無數(shù)座山。

B.《走一步,再走一步》,是過來人的經(jīng)驗之談,在人生道路上,艱難險阻并不可怕,大困難可以化整為零,化難為易,走一步,再走一步,定能戰(zhàn)勝一切困難。作者是英國作家莫頓•亨特。

C. 《紫藤蘿瀑布》,由紫藤蘿瀑布的輝煌、藤蘿的命運,感悟生命的長河是無止境的,一時的不幸,個人的不幸,都不足畏;人生,也應(yīng)該是豁達的,樂觀的,奮發(fā)的,進取的。作者是當(dāng)代女作家宗璞。

D.《童趣》回憶童稚時代的種種情趣,人是有精神活動的,在精神作用之下,自能享受無窮的物外之趣。作者是清代文學(xué)家沈復(fù),字三白。本文選自《浮生六記》。

6.選出標(biāo)點有誤的一項:( )(2分)

A. “嗨,慢著,”我軟弱地哀求道,“我沒法——”

B.“我在開花!”它們在笑?!拔以陂_花!”它們在嚷嚷。

C.那里裝的是什么仙露瓊漿?我湊上去,想摘一朵。

D.流著流著,它帶走了這些時一直壓在我心上的焦慮和悲痛,那是關(guān)于生死謎,手足情的。

7.下列文言句子的停頓(“•”表示很短暫的停頓),有誤的一項是:( )(2分)

A.能/張目•對日B.昂首/觀之,項/為之•強

C.使/之沖煙/而飛鳴D.作/青云•白鶴/觀

8. 寫出我國四大名著:《 》《 》《 》《 》。(2分)二、古詩文閱讀理解 (共14分)

9.依據(jù)上下文提示默寫 (3分)

①夏蚊成雷, 。

② , ,蓋一癩蝦蟆

10,解釋下列文言語句中加點詞語的含義:(4分)

① 徐( )噴以煙。

② 果如鶴唳( )云端。

③ 神游其中,怡然( )自得。

④ 物外( )之趣

11,翻譯下列文言語句:(4分)

① 夏蚊成雷,私擬作群鶴舞于空中。

② 一日,見二蟲斗草間。

12,《童趣》一文的作者,童年時對著蚊子徐噴以煙,讓蚊子“沖煙而飛鳴”。他做這件事感受到 “物外之趣”。從這一事例中,你感到怎樣才能成為一個富有生活情趣的人? (3分)

(二)閱讀下面選自課外的文字,回答文后的問題。(共12分)

1989年發(fā)生在美國洛杉礬一帶的大地震,在不到4分鐘的時間里,使30萬人受到傷害。在混亂的廢墟中,一個年輕的父親安頓好受傷的妻子,便沖向他七歲的兒子上學(xué)的學(xué)校。他眼前,那個昔日充滿孩子們歡笑的漂亮的三層教室樓,已經(jīng)變成了一片廢墟。他頓時感到眼前一片漆黑,大喊:“阿曼達,我的兒子!”跪在地上大哭了一陣后,他猛地想起自己常對兒子說的一句話:“不論發(fā)生什么,我總會跟你在一起的?!彼麍远ǖ卣酒鹕?,向那片廢墟走去……

這位父親心中只有一個念頭:“兒子在等著我。”他挖了8個小時、12個小時、24個小時、36個小時,沒人再來阻擋他。他滿臉灰塵,渾身上下破爛不堪,到處是血跡。到第38個小時,他突然聽到底下傳出孩子的聲音:“爸爸,是你嗎?”

是兒子的聲音!父親大喊:“阿曼達,我的兒子!”“爸爸,真的是你嗎?”“是我,是爸爸,我的兒子?!薄拔腋嬖V同學(xué)們不要害怕,說只要我爸爸活著就一定會來救我,也就能救出大家。因為你說過不論發(fā)生什么,你總會和我在一起尸“你現(xiàn)在怎么樣?有幾個孩子活著?”“我們這里有14個同學(xué),都活著,我們都在教室的墻角,屋頂塌下來架了個大三角形,我們沒被砸著?!备赣H大聲向四周呼喊:“這里有14個孩子,都活著!快來人!”過路的幾個人趕緊上前幫忙,50分鐘后,一個安全的小出口開辟了出來。父親聲音顫抖地說:“出來吧!阿曼達?!薄安?,爸爸,先讓別的同學(xué)出去吧!我知道你會跟我在一起,我不怕。不論發(fā)生什么,我知道你總會和我在一起。”

這對了不起的父子在經(jīng)歷了巨大的磨難后,無比幸福地緊緊地擁抱在一起。

13:這里所選幾段文字,敘述了一個什么事件? (2分)

14.你認為文中畫橫線的句子寫得好嗎?請說明理由。 (2分)

15,請寫出文中表現(xiàn)阿曼達父子心心相連的一句話。(2分)

16,文章結(jié)尾段說這對父子“了不起”。仔細閱讀文章,根據(jù)文中對父子二人的描寫,說他們各有什么了不起的地方? (2分)

17.請你根據(jù)文章內(nèi)容的提示,想像地震剛剛發(fā)生、教室剛剛塌陷時阿曼達的處境,寫他的所見、所想和所做。篇幅不超過一百字。(4分)

答案12. 一個富有生活情趣的人,應(yīng)該富有觀察力和想像力,善于發(fā)現(xiàn)生活中的美。

13.阿曼達的父親在地震后懷著堅定的信念成功地搶救出兒子。(此題亦可從阿曼達的角度總結(jié)。)

14.劃線句子用了排比手法,渲染時間延續(xù)過程又長又慢,突出強調(diào)父親以堅韌不拔的毅力不停地行動,頑強地救出兒子。

深刻表現(xiàn)了他對兒子的摯愛之情。(這是一個開放型題目,可以從不同角度回答問題,能答出一個方面即可,不必求全。)

15.這句話是“不論發(fā)生什么,我總會跟你在一起”。