單元測(cè)試范文
時(shí)間:2023-04-07 09:55:58
導(dǎo)語:如何才能寫好一篇單元測(cè)試,這就需要搜集整理更多的資料和文獻(xiàn),歡迎閱讀由公務(wù)員之家整理的十篇范文,供你借鑒。
篇1
一、選擇題(每題2分,共30分)
【 】1、家庭電路中接入的電能表,其作用是
A.給家用電路提供電能 B.提高家用電器效率
C.測(cè)量電路消耗的電能 D.保護(hù)電路避免火災(zāi)
【 】2、許多家用電器的三腳插頭有一特別之處:三腳插頭中與用電器金屬外殼連接的那個(gè)插腳比另兩個(gè)插腳夫要稍長(zhǎng),如圖1所示。這樣設(shè)計(jì)是為了
A.插頭插入插座時(shí),電器外殼先接地;撥出時(shí),電器外殼后離開地線
B.方便識(shí)別火線和零線插腳
C.延長(zhǎng)插頭使用壽命 D.使插頭的造型更美觀
圖2
圖
1
【 】3、某同學(xué)家室內(nèi)的電燈均正常工作,當(dāng)他把“220V 8W”的臺(tái)燈插頭插入插座后,
閉合臺(tái)燈開關(guān),室內(nèi)電燈全部熄滅,發(fā)生這一現(xiàn)象的原因可能是
A.插座處短路 B.臺(tái)燈插頭處短路 C.臺(tái)燈開關(guān)處短路 D.臺(tái)燈燈頭處短路
【 】4、圖2是某家庭電路,閉合開關(guān),燈不亮。用試電筆接觸c點(diǎn)氖管不發(fā)光,接觸
d點(diǎn)氖管發(fā)光。已知該電路有兩處故障,則下列判斷正確的是
A、ac間斷路、bd間斷路 B、ac間斷路、eb間斷路
C、ac
間斷路、cd間短路 D、eb間斷路、cd間短路
【 】5、下列圖3四種情況中,人相對(duì)安全的是
【 】6、李明同學(xué)寒假在家看電視,為了取暖,他將一個(gè)電熱器插頭插入插座時(shí),聽到
“叭”的一聲,同時(shí)從插座中冒一股黑煙,電視機(jī)和電燈都熄滅了,其原因是
A.電視機(jī)燒壞了 B.短路引起空氣開關(guān)斷開 C.電曖器燒壞了 D.燈絲燒斷
【 】7、下列四幅圖中,符合安全用電的是
圖4
【 】8、 暑期,徐延同學(xué)家新裝了一臺(tái)3kW的空調(diào)機(jī),試用了一會(huì)兒,家中突然停電,檢查發(fā)現(xiàn)熔絲斷了。導(dǎo)致上述故障的原因可能是
A.插頭和插座接觸不良 B.電路中用電器的總功率過大
C.空調(diào)機(jī)內(nèi)部斷路 D.控制空調(diào)機(jī)的開關(guān)短路
【 】9、 如圖5所示,當(dāng)開關(guān)S閉合后,發(fā)現(xiàn)電燈L不亮,用測(cè)電筆測(cè)試c、d兩點(diǎn)時(shí),氖管都發(fā)光,測(cè)試a、b兩點(diǎn)時(shí),只有a點(diǎn)氖管發(fā)光,則故障可能是
A.火線與零線短路 B.a(chǎn)、d之間某處斷路
C.b、c之間某處斷路 D.電燈的燈絲斷了
b a
c
圖7 圖5
圖6
【 】10、如圖6,教室的講臺(tái)旁邊裝有一盞白熾燈和白熾燈的控制開關(guān),老師需要在講臺(tái)上安裝一個(gè)插座,下面是幾位同學(xué)的安裝方案,其中正確的是
A.從白熾燈控制開關(guān)的兩個(gè)接線柱上分別引出兩根線將插座接入
B.從白熾燈燈頭接線盒內(nèi)的兩個(gè)接線柱上分別引出兩根線將插座接入
C.剝開a、b分別引出兩根線將插座接入
D.剝開a、c分別引出兩根線將插座接入
【 】11、某同學(xué)在學(xué)習(xí)家庭電路時(shí),安裝了兩盞額定電壓均為220V的完好的白熾燈(甲和乙)和兩個(gè)插座,如圖7所示,如果兩個(gè)插座均未連入家用電器,將電路中的開關(guān)全部閉合,保險(xiǎn)絲未熔斷,那么各用電器工作的情況是
A、甲、乙都正常工作 B、只有乙正常工作
C、甲、乙都不正常工作 D、只有甲正常工作
【 】12、 當(dāng)有人發(fā)生觸電事故時(shí),下列做法中,正確的是
A. 迅速用手將人脫離觸電區(qū) B. 用水果刀將電線割斷
C. 立即斷開閘刀開關(guān)或空氣開關(guān),或者用干燥竹竿挑開電線 D.趕快逃離現(xiàn)場(chǎng)
【 】13、家用電器中的總阻的變化情況是
A.只開一盞燈時(shí),電路中總電阻最小 B.不開燈時(shí),電路中電阻為零
C.所有燈都開時(shí),電路中的總電阻最大 D.所有燈都開時(shí),電路中的總電阻最小
【 】14、圖8甲所示為一個(gè)“一開三孔”開關(guān)
(即一個(gè)開關(guān)和一個(gè)三孔插座連在一起),它連入電路
如圖8乙所示。下列說法正確的是
A.燈和插座是串聯(lián)的
B.燈和插座是并聯(lián)的
C.開關(guān)只控制插座
D.開關(guān)同時(shí)控制燈和插座
【 】15、小寧設(shè)計(jì)了一種照明電路圖, 圖8 其設(shè)計(jì)要求是:用兩個(gè)開關(guān)控制一盞燈,兩個(gè)
開關(guān)同時(shí)閉合燈才能發(fā)光,只閉合其中任意一個(gè)開關(guān)燈都不能發(fā)光。圖9所示的四幅電路圖中,既符合上述設(shè)計(jì)要求,又符合安全用電要求的是
圖9
二、填空題(每空1分,共24分)
16、家庭電路中每盞燈都有一個(gè)開關(guān),跟電燈 ,用來控制電燈的通斷,其他家用電器也都有自己的開關(guān)。家用電器要 聯(lián)接入電路中。
17、家庭電路的兩根線,一根叫火線,另一根叫零線。在低電壓供電的電源處, 線是接地的。所以在正常情況下, 線與地之間沒有電壓, 線和地之間有220V的電壓。
18、家庭電路中要裝 表,它用來測(cè)用戶在一定時(shí)間內(nèi)消耗多少千瓦時(shí)的電能。電能表要裝在家庭電路的 路上。
19、辨別火線和零線可以用測(cè)電筆,使用時(shí)一定要用手接觸筆尾的 體,筆尖接觸電線的裸露部分,氖管發(fā)光表明筆尖接觸的是 線。
20、家用保險(xiǎn)絲是由電阻 、熔點(diǎn) 的鉛銻合金制成。保險(xiǎn)絲是 聯(lián)在電路中。如果沒有備用的保險(xiǎn)絲, (填“能”或“不能”)用銅絲或鐵絲代替保險(xiǎn)絲。保險(xiǎn)絲是利用 工作的。更換保險(xiǎn)絲時(shí),一定要先 電源。
21、三孔插座比兩孔插座多的那個(gè)孔是跟 連接的。當(dāng)用電器的三腳插頭插在三孔插座里時(shí),除把用電部分連入電路外,還要把用電器的 與 連接起來。
22、安全用電的原則是,不 低壓帶電體,不 高壓帶電體。
23、小明在家看電視,突然斷電,發(fā)現(xiàn)空氣開關(guān)跳閘。原來是樓上鄰居家水管漏水,水流入小明家的插座中,因?yàn)榱魅氩遄乃?(選填“導(dǎo)體”或“絕緣體”),使電路發(fā)生 路,導(dǎo)致空氣開關(guān)跳閘。
24、如圖10所示,甲圖是小明家臥室的一個(gè)插座,他用試電筆測(cè)試插座的A孔,氖管發(fā)光,則A孔接的是 線;乙圖是一個(gè)臺(tái)燈的電路示意圖,當(dāng)把臺(tái)燈接入電路時(shí),為了安全,應(yīng)將臺(tái)燈插頭的 (選填“C”或“D”)插腳接火線。
圖
10
三、作圖題(每題2分,共10分)
25、請(qǐng)用筆畫線代替導(dǎo)線將圖11乙中的三孔插座正確接入照明電路.
圖12 圖
11
26、小寶想在臥室安裝一盞照明電燈,請(qǐng)?jiān)趫D12中幫他把燈和開關(guān)接入電路。
27、小森家有兩盞墻壁燈,由一個(gè)開關(guān)控制,其元件符號(hào)如圖13所示,試連接電路圖。
28、如圖14所示,S1是光控開關(guān),夜晚自動(dòng)閉臺(tái),白天斷開;S2是聲控開關(guān),有聲音時(shí)自動(dòng)閉合,安靜時(shí)斷開。請(qǐng)把圖連接成聲光控樓道節(jié)能照明電路。
29、如圖15甲所示,是小明常用的一個(gè)插線板。他在使用中發(fā)現(xiàn):插線板上的指示燈在開關(guān)閉合時(shí)會(huì)發(fā)光,插孔正常通電;如果指示燈損壞,開關(guān)閉合時(shí)插孔也能正常通電。根據(jù)上述現(xiàn)象,在圖15乙中畫出插線板中開關(guān)、指示燈和插孔的連接方式,并與電源線接通。
火線 零線
指示燈
甲
四、計(jì)算題(6分)
30、 某電路安裝的電能表上標(biāo)有“220V 5(10)A”,問這電路中除使用2盞“220V 40W”的電燈,一臺(tái)60W的電視機(jī)外,
①是否還可以同時(shí)使用“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)志,其中是中心對(duì)稱圖形但不是軸對(duì)稱圖形的共有().
A. 2個(gè)B.3個(gè)C. 4個(gè)D. 5個(gè)
2. 四張撲克牌如圖2(1)所示放在桌子上,小敏把其中兩張旋轉(zhuǎn)180°后如圖2(2)所示,那么她所旋轉(zhuǎn)的牌從左起是().
A. 第一張、第二張 B. 第二張、第三張
C. 第三張、第四張 D. 第四張、第一張
3. 如圖3,該圖形圍繞自己的旋轉(zhuǎn)中心,按下列角度順時(shí)針旋轉(zhuǎn)后,不能與其自身重合的是().
A. 72° B. 108°
C. 144° D. 216°
4. 如圖4,已知?荀ABCD的兩條對(duì)角線AC與BD交于平面直角坐標(biāo)系的原點(diǎn)O,點(diǎn)A的坐標(biāo)為(-2,3),則點(diǎn)C的坐標(biāo)為().
A. (-3,2) B. (-2,-3)
C. (3,-2) D. (2,-3)
5. 如圖5,在等邊ABC中,AC=9,點(diǎn)O在AC上,且AO=3,點(diǎn)P是AB上一動(dòng)點(diǎn),連接OP,將線段OP繞點(diǎn)O逆時(shí)針旋轉(zhuǎn)60°得到線段OD.要使點(diǎn)D恰好落在BC上,則AP的長(zhǎng)是().
A. 4B. 5C. 6D. 8
6. 圖6中這些復(fù)雜的圖案都是在一個(gè)圖案的基礎(chǔ)上,在“幾何畫板”軟件中拖動(dòng)一點(diǎn)后形成的,它們中每一個(gè)圖案都可以由一個(gè)“基本圖案”通過連續(xù)旋轉(zhuǎn)得來,旋轉(zhuǎn)的角度是().
A. 30° B. 45° C. 60° D. 90°
二、填空題
7. 下午2點(diǎn)30分時(shí),時(shí)鐘的分針與時(shí)針?biāo)山堑亩葦?shù)為______.
8. 如圖7,直線y=-x+4與x軸、y軸分別交于A,B兩點(diǎn),把AOB繞點(diǎn)A順時(shí)針旋轉(zhuǎn)90°后得到AO′B′,則點(diǎn)B′的坐標(biāo)是______.
9. 如圖8,E,F(xiàn)分別是正方形ABCD的邊BC,CD上的一點(diǎn),且BE+DF=EF,則∠EAF=______.
10. 如圖9,用等腰直角三角板畫∠AOB=45°,并將三角板沿OB方向平移到如圖所示的虛線處后繞點(diǎn)M逆時(shí)針方向旋轉(zhuǎn)22°,則三角板的斜邊與射線OA的夾角α為______度.
11. 如圖10,小新從A點(diǎn)出發(fā)前進(jìn)10 m,向右轉(zhuǎn)15°,再前進(jìn)10 m,又向右轉(zhuǎn)15°…這樣一直走下去,他第一次回到出發(fā)點(diǎn)A時(shí),一共走了______m.
12. 如圖11,直角梯形ABCD中,AD∥BC,ABBC,AB=1,AD=2,BC=3,將腰CD以D為中心逆時(shí)針旋轉(zhuǎn)90°至ED,連接AE,CE,則ADE的面積是______.
三、解答題
13. 如圖12,網(wǎng)格中有一個(gè)四邊形和兩個(gè)三角形.
(1) 請(qǐng)你畫出三個(gè)圖形關(guān)于點(diǎn)O的中心對(duì)稱圖形.
(2) 將(1)中畫出的圖形與原圖形看成一個(gè)整體圖形,請(qǐng)寫出這個(gè)整體圖形對(duì)稱軸的條數(shù).試問:這個(gè)整體圖形至少旋轉(zhuǎn)多少度才能與自身重合?
14. 如圖13,矩形ABCD中,AB=3,BC=4,若將矩形折疊,使C點(diǎn)和A點(diǎn)重合,求折痕EF的長(zhǎng).
15. 認(rèn)真觀察圖14中4個(gè)圖中陰影部分構(gòu)成的圖案,回答下列問題.
(1) 請(qǐng)寫出這四個(gè)圖案都具有的兩個(gè)共同特征.
(2) 請(qǐng)?jiān)僭O(shè)計(jì)一個(gè)你心中最美麗的圖案,使它也具備你所寫出的上述特征.
16. 一位同學(xué)拿了兩個(gè)全等的45°三角尺M(jìn)NK和ACB,并做了一項(xiàng)探究活動(dòng):將MNK的直角頂點(diǎn)M放在ABC斜邊AB的中點(diǎn)處,設(shè)AC=BC=4.
(1) 如圖15(1),兩三角尺的重疊部分為ACM,則重疊部分的面積為______,周長(zhǎng)為______.
(2) 將圖15(1)中的MNK繞頂點(diǎn)M逆時(shí)針旋轉(zhuǎn)45°,得到圖15(2),此時(shí)重疊部分的面積為______,周長(zhǎng)為______.
(3) 如果將MNK繞M旋轉(zhuǎn)到不同于圖15(1)和圖15(2)的位置,如圖15(3),請(qǐng)你猜想此時(shí)重疊部分的面積:______.
(4)在圖15(3)情況下,若AD=1,求出重疊部分圖形的周長(zhǎng).
17. 如圖16,點(diǎn)O是等邊ABC內(nèi)一點(diǎn),∠AOB=110°,∠BOC=α.將BOC繞點(diǎn)C按順時(shí)針方向旋轉(zhuǎn)60°得ADC,連接OD.
(1) 求證:COD是等邊三角形.
(2) 當(dāng)α=150°時(shí),試判斷AOD的形狀,并說明理由.
(3) 探究:當(dāng)α為多少度時(shí),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個(gè)圖中陰影部分的面積相等.它們都是軸對(duì)稱圖形和中心對(duì)稱圖形. (2) 圖形設(shè)計(jì)略.
篇3
關(guān)鍵詞:軟件測(cè)試;認(rèn)知誤區(qū);嵌入式;單元測(cè)試流程
1 軟件測(cè)試簡(jiǎn)述
軟件測(cè)試是在軟件投入商用前,對(duì)軟件需求分析報(bào)告、設(shè)計(jì)規(guī)格說明書和編碼的最終復(fù)查,是軟件質(zhì)量保證的關(guān)鍵方法,軟件測(cè)試并不等于程序測(cè)試。它貫穿于軟件定義和開發(fā)的整個(gè)過程,因此,軟件需求分析、軟件概要設(shè)計(jì)、軟件詳細(xì)設(shè)計(jì)和程序編碼等各階段所得到的文檔,包括需求規(guī)格說明書、概要設(shè)計(jì)說明書、詳細(xì)設(shè)計(jì)說明書,以及源代碼都是軟件測(cè)試的測(cè)試對(duì)象。隨著軟件規(guī)模的不斷擴(kuò)大,以及軟件設(shè)計(jì)復(fù)雜程度不斷的提高,軟件開發(fā)中出現(xiàn)失誤或缺陷的概率越來越大。隨著市場(chǎng)對(duì)軟件質(zhì)量重要性的認(rèn)知程序的提高,因此軟件測(cè)試在軟件項(xiàng)目實(shí)施過程中的重要性尤為突出。軟件測(cè)試將會(huì)成為一個(gè)具有很大發(fā)展前景的行業(yè),市場(chǎng)將需要更多具有豐富測(cè)試技術(shù)和先進(jìn)管理經(jīng)驗(yàn)的測(cè)試技術(shù)員和項(xiàng)目經(jīng)理。
2 軟件開發(fā)項(xiàng)目測(cè)試的誤區(qū)
軟件測(cè)試從1990年左右進(jìn)入中國(guó),目前國(guó)內(nèi)大的測(cè)評(píng)中心、大型企業(yè)已經(jīng)完全掌握了軟件測(cè)試的測(cè)試策略和測(cè)試方法。小企業(yè)普遍存在測(cè)試人員不懂什么是單元測(cè)試,怎樣進(jìn)行單元測(cè)試,很少能看懂代碼的細(xì)節(jié)。而開發(fā)人員很少能夠提供完整的詳細(xì)設(shè)計(jì)報(bào)告、需求報(bào)告。導(dǎo)致單元測(cè)試,以拼湊測(cè)試報(bào)告為目的。
認(rèn)知誤區(qū)一:軟件測(cè)試是軟件開發(fā)的最后一道步驟,工程師們一般認(rèn)為,軟件實(shí)際項(xiàng)目要經(jīng)過下面六個(gè)階段:需求分析,概要設(shè)計(jì),詳細(xì)設(shè)計(jì),軟件編碼,軟件測(cè)試,軟件。因而,認(rèn)為軟件測(cè)試只是編碼后的一個(gè)孤立的階段,這就是不了解軟件測(cè)試流程的認(rèn)知偏差。軟件測(cè)試是一個(gè)系列的活動(dòng)過程,是一個(gè)開放的體系,包括軟件測(cè)試需求分析,測(cè)試計(jì)劃設(shè)計(jì),測(cè)試用例設(shè)計(jì),執(zhí)行測(cè)試。從而,軟件測(cè)試應(yīng)當(dāng)貫穿于軟件項(xiàng)目的整個(gè)生命周期,并不是軟件開發(fā)后最后一道步驟。認(rèn)知誤區(qū)二:軟件商用后如果發(fā)現(xiàn)質(zhì)量問題,就武斷認(rèn)為是軟件測(cè)試人員的工作失誤。這種認(rèn)識(shí)很狹隘,很是打擊軟件測(cè)試人員的工作積極性。軟件測(cè)試只能確認(rèn)軟件存在錯(cuò)誤,不能保證軟件沒有錯(cuò)誤。因?yàn)閺母旧现v,軟件測(cè)試不可能發(fā)現(xiàn)全部錯(cuò)誤,軟件后的錯(cuò)誤可能來自軟件項(xiàng)目中的各個(gè)過程。認(rèn)知誤區(qū)三:軟件測(cè)試對(duì)測(cè)試人員技術(shù)要求不高,任何人都可以做。很多工程師認(rèn)為軟件測(cè)試就是安裝并運(yùn)行程序,按按鍵盤的重復(fù)性工作。隨著軟件測(cè)試技術(shù)的不斷改進(jìn)和完善,新測(cè)試方法、新流程、新工具都在不斷被開發(fā)出來。這就需要軟件測(cè)試工程師掌握和學(xué)習(xí)很多專業(yè)測(cè)試新理念和新技能。認(rèn)知誤區(qū)四:只有編寫程序的高手才是軟件專家,而軟件測(cè)試沒有前途。由于我國(guó)軟件行業(yè)整體研發(fā)能力比較低,軟件開發(fā)過程不規(guī)范。不少軟件項(xiàng)目的開發(fā)都還停留在“累加堆疊“階段。項(xiàng)目開發(fā)依靠個(gè)別程序員決定,他們一人負(fù)責(zé)總體設(shè)計(jì)和代碼編寫,給人的印象是程序員是真正的牛人,完成了所有的軟件項(xiàng)目開發(fā)工作。但在微軟等世界知名軟件企業(yè)里,軟件測(cè)試人員的待遇和數(shù)量與一般程序員沒有多少差異,優(yōu)秀測(cè)試人員的待遇甚至比普通程序員要高的多。
3 嵌入式軟件單元測(cè)試流程
單元測(cè)試是指對(duì)軟件中的最小可測(cè)試單元進(jìn)行檢查和驗(yàn)證。單元是規(guī)格說明書中的最小單元,包括函數(shù)、子程序、程序。單元測(cè)試關(guān)注獨(dú)立的函數(shù)功能,是測(cè)試過程中最低級(jí)別的測(cè)試活動(dòng)。需要開發(fā)一個(gè)或多個(gè)測(cè)試用例執(zhí)行單元測(cè)試。把代碼問題縮小范圍在開發(fā)階段鎖定Bug是單元測(cè)試的主旨要求,以下將介紹一種容易操作的嵌入式單元測(cè)試實(shí)戰(zhàn)流程。
第一階段,制定測(cè)試記錄表,記錄測(cè)試過程,和測(cè)試情況。測(cè)試記錄表包含:源文件名,子函數(shù)名,用例標(biāo)號(hào),用例名稱,用例個(gè)數(shù),用例通過個(gè)數(shù),語句覆蓋率,分支覆蓋率,MC/DC覆蓋率,測(cè)試結(jié)果,問題描述,測(cè)試人員,測(cè)試時(shí)間。針對(duì)第一階段的測(cè)試結(jié)果,此時(shí)需要大家分析出問題的代碼,各抒己見,總結(jié)問題,給出解決方法。
第二階段,解決部分測(cè)試用例failed問題,找出阻止生成用例的共性。常見問題匯總:局部變量未初始化,調(diào)用函數(shù)未聲明,局部變量直接賦值,結(jié)構(gòu)體嵌套、結(jié)構(gòu)體指針、聲明問題、聲明位置問題,函數(shù)指針,大循環(huán)、死循環(huán),絕對(duì)地址,指針變量,C語言程序中帶有g(shù)oto語句。解決辦法:局部變量聲明后,需要賦初值再使用。調(diào)用函數(shù)未聲明,該問題發(fā)生在隔離測(cè)試階段,屬于代碼書寫不規(guī)范問題。解決方法:自定義的函數(shù)都需要在頭文件中做統(tǒng)一聲明。局部變量直接賦初值:該問題發(fā)生在測(cè)試用例無法生成階段,屬于代碼書寫不規(guī)范問題。解決方法,結(jié)構(gòu)體局部變量,指針變量需要先聲明后賦初值。結(jié)構(gòu)體嵌套、結(jié)構(gòu)體指針、聲明問題、聲明位置問題:該問題也屬于代碼書寫不規(guī)范問題。解決方法:根據(jù)MISRA代碼書寫規(guī)范,結(jié)構(gòu)體需要放在頭文件中統(tǒng)一聲明。大循環(huán)、死循環(huán):?jiǎn)卧獪y(cè)試需要有程序結(jié)束的出口。解決方法:把大循環(huán)改為小循環(huán),注釋掉死循環(huán)(if(1)、for(; ;),while(1))。絕對(duì)地址:?jiǎn)卧獪y(cè)試不連接真實(shí)的硬件設(shè)備。遇到寄存器等絕對(duì)地址時(shí),需要對(duì)寄存器做變量處理。指針變量:需要聲明一個(gè)同類的數(shù)組,然后把數(shù)組的首地址,賦給指針變量。函數(shù)指針:需要虛構(gòu)一個(gè)函數(shù)實(shí)體,取函數(shù)地地址賦給函數(shù)指針,完成映射。C語言程序中帶有g(shù)oto語句:需要改變程序結(jié)構(gòu),增加判斷語句,去除所有的goto語句,以便確保C語言程序的穩(wěn)定性。
測(cè)試第三階段:基本圈復(fù)雜度高于MISRA閥值要求的函數(shù),先考慮把復(fù)雜函數(shù)改為幾個(gè)小函數(shù)。改不了的由開發(fā)人員寫聲明以及具體原因,再按照路徑分支來設(shè)計(jì)測(cè)試用例。匯總測(cè)試結(jié)果,提交測(cè)試問題報(bào)告單,并提交行業(yè)標(biāo)準(zhǔn)測(cè)試報(bào)告。
4 結(jié)束語
文章簡(jiǎn)述了軟件測(cè)試的基本概念,澄清了軟件測(cè)試工程實(shí)踐中的幾個(gè)誤區(qū),依據(jù)單元測(cè)試實(shí)踐的具體案例,介紹了一種高效、容易操作的嵌入式單元測(cè)試的流程。
參考文獻(xiàn)
[1]胡丹,杜新華.基于目標(biāo)機(jī)的嵌入式軟件單元測(cè)試[J].電子測(cè)量技術(shù),2006(2).
[2]趙正海,王寧.跟蹤雷達(dá)“指示引導(dǎo)”功能軟件測(cè)試方法研究[J].現(xiàn)代電子技術(shù),2013(36).
[3]于園園.軟件測(cè)試技術(shù)與測(cè)試管理研究[J].江蘇科技信息,2016(7).
[4]王琨.嵌入式計(jì)算機(jī)軟件測(cè)試關(guān)鍵技術(shù)探討[J].科技創(chuàng)新與應(yīng)用,2016(7).
[5]張金環(huán),田洪濤.淺析設(shè)備軟件測(cè)試與質(zhì)量保證[J].電子工業(yè)專用備,2016,45(1).
作者簡(jiǎn)介:張軍(1988-),男,陜西武功人,工學(xué)碩士,助理工程師,主要研究方向:雷達(dá)信號(hào)處理算法、數(shù)字中頻收發(fā)機(jī)和嵌入式軟件測(cè)試。
篇4
滿分:100分 時(shí)間60分鐘 班 級(jí) : 姓 名 :
一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ì)huì填tián。(每空1分,共20分)
1. 10個(gè)è一yī是shì( ),10個(gè)è十shí是shì( )。7個(gè)è十shí和hé6個(gè)è一yī合hé起qǐ來lái是shì( ),
6個(gè)è一yī和hé5個(gè)è十shí是shì( )。
2. 34里lǐ面miàn有yǒu( )個(gè)è十shí和hé( )個(gè)è一yī。80里lǐ面miàn有yǒu( )個(gè)è十shí。47里lǐ
有yǒu( )個(gè)è十shí和hé( )個(gè)è一yī。
3.與yǔ80相xiān鄰lín的de兩liǎn個(gè)è數(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ì( )個(gè)è( )。
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個(gè)è同tón樣yàn的de正zhèn方fān形xín可kě以yǐ拼pīn成chén一yí個(gè)è( )。
2.( )個(gè)è同tón樣yàn的de正zhèn方fān形xín可kě以yǐ拼pīn成chén一yí個(gè)è大dà正zhèn方fān形xín。
3.2個(gè)è同tón樣yàn的de長(zhǎng)chán方fān形xín可kě以yǐ拼pīn成chén一yí個(gè)è( )或huò( )。
4.擺bǎi一yí個(gè)è三sān角jiǎo形xín最zuì少shǎo用yòn( )根ēn同tón樣yàn長(zhǎng)chán的de小xiǎo棒bàn。
四sì、判pàn斷duàn題tí。(對(duì)的在括號(hào)里畫“√”,錯(cuò)的畫“×”)(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ǔ個(gè)è數(shù)shù是shì41。 ( )
3. 100里lǐ面miàn有yǒu100個(gè)è十shí。 ( ) 4. 80比bǐ70少shǎo一yì些xiē。 ( )
5.個(gè)è位wèi是shì5,十shí位wèi是shì2,這zhè個(gè)è數(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í個(gè)è完wán整zhěn的de圖tú形xín?
2.把bǎ小xiǎo動(dòng)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ī)jī。
3.王wán強(qiáng)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òng)dòn動(dòng)don腦nǎo。(10分)
篇5
傳統(tǒng)的單元測(cè)試包括了調(diào)用被測(cè)模塊(driver)和樁模塊(stub)。調(diào)用被測(cè)模塊的目的很單純,就是為了訪問類庫的屬性和方法,來檢測(cè)類庫的功能是否正確;
調(diào)用被測(cè)模塊是用來模擬被測(cè)試模塊的上一級(jí)模塊,相當(dāng)于被測(cè)模塊的主程序。它接收數(shù)據(jù),將相關(guān)數(shù)據(jù)傳送給被測(cè)模塊,啟用被測(cè)模塊,并打印出相應(yīng)的結(jié)果。
Normal002falsefalsefalseEN-USKOX-NONEMicrosoftInternetExplorer4如果被測(cè)試模塊中的函數(shù)是提供給其他函數(shù)調(diào)用的,在設(shè)計(jì)測(cè)試用例時(shí)就應(yīng)該設(shè)計(jì)調(diào)用被測(cè)模塊(Driver)。
篇6
關(guān)鍵詞:?jiǎn)卧獪y(cè)試 LDRA Testbed 覆蓋分析
中圖分類號(hào):TP311.52 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2015)09-0000-00
隨著計(jì)算機(jī)軟件技術(shù)的深入使用,各種軟件系統(tǒng)的復(fù)雜度不斷加深,為了更好,更有效率的完成任務(wù),節(jié)省時(shí)間和人力資源,這就對(duì)測(cè)試軟件有了更高的要求。LDRA Testbed測(cè)試工具的使用給工作帶來了很多便利,它是軟件驗(yàn)證與確認(rèn)的質(zhì)量工具,提供源代碼的測(cè)試和分析,主要應(yīng)用于需要軟件具有高可靠性,高健壯性,甚至要求盡可能達(dá)到零缺陷的領(lǐng)域[1]。
1測(cè)試準(zhǔn)備
為了提高測(cè)試的方便性,在用Testbed之前應(yīng)該做好準(zhǔn)備工作。建立一個(gè)包含項(xiàng)目各個(gè)模塊的文檔,對(duì)每個(gè)模塊創(chuàng)建合適的用例,包括邊界和特殊情況;并對(duì)各種不同的情況設(shè)計(jì)測(cè)試數(shù)據(jù),并計(jì)算出自己的期望值。如圖1。
圖1 單元測(cè)試數(shù)據(jù)表
2 Testbed單元測(cè)試
2.1 創(chuàng)建測(cè)試用例
選擇項(xiàng)目程序進(jìn)行測(cè)試,Tbrun進(jìn)行單元模塊測(cè)試進(jìn)行了有效的自動(dòng)化,創(chuàng)建測(cè)試序列,選擇單元模塊進(jìn)行白盒測(cè)試。Tbrun利用了代碼評(píng)審和設(shè)計(jì)評(píng)審的結(jié)果自動(dòng)對(duì)系統(tǒng)的每一個(gè)單元產(chǎn)生測(cè)試驅(qū)動(dòng);用戶被提示輸入數(shù)據(jù)(測(cè)試準(zhǔn)備文檔中模塊數(shù)據(jù))并與產(chǎn)生的結(jié)果進(jìn)行比較,是否期望與實(shí)際結(jié)構(gòu)一致(如圖2)。 Tbrun保存并維護(hù)所有的測(cè)試信息,方便在以后任何時(shí)候生成相同的驅(qū)動(dòng)進(jìn)行回歸測(cè)試。
圖2 對(duì)比結(jié)果圖
2.2 覆蓋率分析
覆蓋率分析有三種常用的覆蓋測(cè)試,分別是語句覆蓋,分支覆蓋和MC/DC覆蓋。語句覆蓋是常用的覆蓋方法,也是最弱的邏輯覆蓋準(zhǔn)則。即使語句覆蓋率達(dá)到100%,也不能保證被測(cè)程序100%的被覆蓋,其缺點(diǎn)是不能發(fā)現(xiàn)某些程序結(jié)構(gòu)的邏輯錯(cuò)誤[2]。
輸入了數(shù)據(jù)產(chǎn)生結(jié)果對(duì)比后會(huì)生成覆蓋分析報(bào)告,里面包含了結(jié)果對(duì)比情況和覆蓋率情況(如圖3),其中含有*的語句表示測(cè)試用例并沒有包含這些語句,我們需要進(jìn)行分析測(cè)試用例是否包含了這種情況;如果包含,則這些語句是多余的,否則增加此種情況的用例。
圖3 覆蓋分析報(bào)告
3 結(jié)語
軟件測(cè)試工具與人力的結(jié)合提高了測(cè)試效率,使軟件單元設(shè)計(jì)中的問題提早暴露,保證了項(xiàng)目質(zhì)量并縮短了項(xiàng)目周期。Testbed是一個(gè)比較方便的測(cè)試工具,可以節(jié)省資源,提高產(chǎn)品質(zhì)量。不僅在編程階段可以檢測(cè)和修改軟件的錯(cuò)誤與缺點(diǎn),而且覆蓋率的測(cè)試提供了測(cè)試方案和必要信息。
參考文獻(xiàn)
[1]石磊.LDRA Testbed在彈載軟件測(cè)試中的應(yīng)用怕[J].軟件導(dǎo)刊,2008.
[2]王瑋.Testbed中常用覆蓋測(cè)試方法研究[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2015,13-14.
篇7
關(guān)鍵詞:軟件測(cè)試;單元測(cè)試;模擬對(duì)象
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2008)05-00ppp-0c
1 引言
隨著極限編程在實(shí)際軟件開發(fā)項(xiàng)目中的推廣,越來越多的項(xiàng)目開始采用測(cè)試驅(qū)動(dòng)開發(fā)作為主要的軟件開發(fā)方法。單元測(cè)試不僅優(yōu)化了軟件系統(tǒng)設(shè)計(jì),還大大簡(jiǎn)化了功能測(cè)試的工作量[1]。但是另一方面.更多的項(xiàng)目在開始不久就發(fā)現(xiàn)在很多情況下針對(duì)一個(gè)類編寫單元測(cè)試比較困難.隨著項(xiàng)目的進(jìn)行,越來越多的代碼無法進(jìn)行單元測(cè)試.到最后整個(gè)項(xiàng)目無法繼續(xù)采用測(cè)試驅(qū)動(dòng)的方式進(jìn)行開發(fā)。因此,要將測(cè)試驅(qū)動(dòng)開發(fā)真正在整個(gè)項(xiàng)目里貫徹執(zhí)行,必須有一種方法能夠相對(duì)容易的解決這些問題。本文將首先討論了單元測(cè)試和無法或很難進(jìn)行單元測(cè)試的情況,然后引入Mock Object的概念,基于Mock Object實(shí)現(xiàn)單元測(cè)試。接下來討論在軟件開發(fā)過程中引入Mock Object對(duì)測(cè)試和設(shè)計(jì)的影響。最后簡(jiǎn)述了Mock Object的局限性。
2 單元測(cè)試
2.1 什么是單元測(cè)試
單元測(cè)試是對(duì)程序中的單個(gè)子程序或過程進(jìn)行測(cè)試的過程,也就是說,一開始并不是對(duì)整個(gè)程序進(jìn)行測(cè)試,而是將注意力集中在對(duì)構(gòu)成程序的較小模塊的測(cè)試上面[2]。單元測(cè)試從兩個(gè)角度進(jìn)行測(cè)試:一是測(cè)試數(shù)據(jù)都是針對(duì)程序的功能來設(shè)計(jì)的黑盒測(cè)試;二是針對(duì)程序的邏輯結(jié)構(gòu)來設(shè)計(jì)測(cè)試用例的白盒測(cè)試。
2.2 單元測(cè)試面對(duì)的難題
造成針對(duì)一個(gè)類難以進(jìn)行單元測(cè)試的主要原因是因?yàn)檫@個(gè)類依賴于一些其它的難以測(cè)試的資源。主要有這三類最主要的資源:數(shù)據(jù)庫,第三方組件和網(wǎng)絡(luò)硬件資源。下面我們將對(duì)這三大類難以測(cè)試的資源進(jìn)行分類討論。
2.2.1 數(shù)據(jù)庫
現(xiàn)在大部分的軟件項(xiàng)目都會(huì)采用數(shù)據(jù)庫作為數(shù)據(jù)存儲(chǔ)。常見的開發(fā)團(tuán)隊(duì)會(huì)在每個(gè)開發(fā)人員的機(jī)器上安裝一個(gè)本地的數(shù)據(jù)庫,每個(gè)人針對(duì)自己的數(shù)據(jù)庫進(jìn)行開發(fā)調(diào)試。這樣做的問題是:必須有一種方式同步數(shù)據(jù)庫的設(shè)計(jì)。如果有一個(gè)人修改了數(shù)據(jù)庫schema或者某個(gè)存儲(chǔ)過程,這個(gè)修改必須同步到所有開發(fā)者的本地?cái)?shù)據(jù)庫以及測(cè)試服務(wù)器上。采用敏捷軟件開發(fā)的很多項(xiàng)目組往往會(huì)浪費(fèi)大量的時(shí)間在數(shù)據(jù)庫設(shè)計(jì)同步上。更嚴(yán)重的是每周都會(huì)遇到由于數(shù)據(jù)庫設(shè)計(jì)不同步,修改沖突導(dǎo)致的問題導(dǎo)致整個(gè)項(xiàng)目的中心源碼庫在Auto Build時(shí)失敗。每個(gè)開發(fā)人員都有自己的測(cè)試數(shù)據(jù),除了上面提到的需要把這些測(cè)試數(shù)據(jù)同步到所有開發(fā)機(jī)器和測(cè)試服務(wù)器上外,還面臨更重大的問題。因?yàn)闇y(cè)試用例需要修改數(shù)據(jù)庫,因此還必須準(zhǔn)備一種機(jī)制能夠在每一個(gè)測(cè)試用例執(zhí)行結(jié)束后重新將所有的測(cè)試數(shù)據(jù)調(diào)入數(shù)據(jù)庫。采用最簡(jiǎn)單直接的方法就是在每個(gè)測(cè)試用例執(zhí)行前都將數(shù)據(jù)庫清空,然后再將測(cè)試數(shù)據(jù)調(diào)入,這樣會(huì)大大減慢單元測(cè)試的時(shí)間。單元測(cè)試時(shí)間越長(zhǎng),開發(fā)者就越不愿意執(zhí)行這些測(cè)試用例,單元測(cè)試所發(fā)揮的作用越小,這也是很多測(cè)試驅(qū)動(dòng)項(xiàng)目最終無法進(jìn)行到底的一個(gè)重要原因。另一個(gè)非常嚴(yán)重的問題是為了清理測(cè)試環(huán)境,在針對(duì)商業(yè)邏輯的測(cè)試用例中加入了大量的數(shù)據(jù)訪問層的代碼。采用這樣的方式強(qiáng)迫開發(fā)者在開發(fā)商業(yè)邏輯層的同時(shí)開發(fā)數(shù)據(jù)訪問層,并且嚴(yán)重降低了可讀性。
2.2.2 第三方組件或應(yīng)用服務(wù)器
數(shù)據(jù)庫是最常見的第三方服務(wù)器。除此以外在越來越多的項(xiàng)目中使用第三方的組件和應(yīng)用服務(wù)器。例如:客戶環(huán)境中的ERP系統(tǒng),全球定位系統(tǒng)(GPS)的Web Service接口,繪圖引擎等。對(duì)于這些第三方提供的內(nèi)容,造成難以編寫單元測(cè)試的最根本的原因有:一是系統(tǒng)不透明:對(duì)于大部分商業(yè)組件或者服務(wù)來說,一個(gè)很重要的內(nèi)容是良好的封裝。但這個(gè)特性帶來的問題是在外界無法對(duì)其內(nèi)部狀態(tài)進(jìn)行控制和訪問。往往經(jīng)過好幾個(gè)操作后才能在外部觀察到相應(yīng)的變化。二是環(huán)境配置困難。由于項(xiàng)目組成員計(jì)算機(jī)配置不同,加入項(xiàng)目的時(shí)間不同,在項(xiàng)目中負(fù)責(zé)的內(nèi)容不同導(dǎo)致無法為所有開發(fā)人員配置一個(gè)完全一致的環(huán)境。例如一個(gè)繪圖引擎的開發(fā)版的license是按照一個(gè)局域網(wǎng)內(nèi)部同時(shí)使用的人員個(gè)數(shù)收費(fèi)的,就不可能只為了能夠進(jìn)行完整的單元測(cè)試就為只編寫商業(yè)邏輯層的開發(fā)人員也安裝一套。
2.2.3 網(wǎng)絡(luò)資源和硬件資源
在稍大一些的項(xiàng)目中都或多或少的用到一些網(wǎng)絡(luò)資源。例如將文件部署到遠(yuǎn)程的webDAV服務(wù)器上同時(shí)很多項(xiàng)目還會(huì)用到一些硬件資源。常見的有打印機(jī)、指紋識(shí)別驗(yàn)證或者條形碼閱讀器等。這些資源有兩大特點(diǎn)導(dǎo)致很難針對(duì)與他們相關(guān)的類編寫測(cè)試用例。
一是資源訪問沖突。很多網(wǎng)絡(luò)資源對(duì)于并發(fā)訪問的響應(yīng)協(xié)調(diào)是通過鎖機(jī)制進(jìn)行的,在實(shí)際項(xiàng)目中常見的是一個(gè)開發(fā)人員在調(diào)試本地代碼時(shí)導(dǎo)致遠(yuǎn)端資源被鎖定導(dǎo)致其它開發(fā)者無法訪問這些資源。
二是環(huán)境可控因素。對(duì)于網(wǎng)絡(luò)資源和硬件資源相關(guān)代碼的測(cè)試與針對(duì)商業(yè)邏輯層代碼的測(cè)試最大的不同是環(huán)境的不確定性。訪問網(wǎng)絡(luò)資源有可能遇到的異常情況非常多,例如網(wǎng)絡(luò)忙造成訪問超時(shí),也有可能建立鏈接后數(shù)據(jù)傳輸失敗,還有可能數(shù)據(jù)傳輸完成后校驗(yàn)失敗。針對(duì)訪問這些資源的代碼進(jìn)行的測(cè)試必須能夠覆蓋到所有可能出現(xiàn)的每一種情況。如果沒有一個(gè)可控,并且是全自動(dòng)的環(huán)境輔助單元測(cè)試的話,這項(xiàng)任務(wù)基本上不可能完成。
3 模擬對(duì)象
3.1 什么是模擬對(duì)象
Mock這個(gè)單詞翻譯成中文大概的意思是假的,模擬的。如圖1所示:通過一個(gè)常見的對(duì)商業(yè)邏輯的測(cè)試描述了一個(gè)Mock Object。在圖中我們可以看出:測(cè)試代碼需要測(cè)試商業(yè)邏輯,而商業(yè)邏輯代碼需要通過IMyDataAccess接口訪問底層數(shù)據(jù)庫,這就是數(shù)據(jù)庫依賴問題。為了解決這個(gè)問題我們引入一個(gè)Mock Object,并將這個(gè)Mock Object而非真正的Data Access傳遞給商業(yè)邏輯代碼進(jìn)行測(cè)試。這里的Mock Object不需要實(shí)現(xiàn)任何邏輯只需要根據(jù)商業(yè)邏輯的需要返回適當(dāng)?shù)膬?nèi)容就可以了。
圖1 使用Mock Object對(duì)商業(yè)邏輯進(jìn)行測(cè)試
3.2 模擬對(duì)象實(shí)現(xiàn)單元測(cè)試應(yīng)用實(shí)例
現(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)在我們想測(cè)試transfer方法,它內(nèi)部調(diào)用的AccountManager的兩個(gè)方法。但是對(duì)于AccountManager來說,它只是個(gè)接口,如下:
public interface AccountManager {
Account findAccountForUser(String userId);
void updateAccount(Account account);
}
所以現(xiàn)在我們必須寫個(gè)MockAccountManager對(duì)象。而且里面的方法體都是非常簡(jiǎn)單的,就是假定它就返回某某值。
我們這里還有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);
}}
這里我們?cè)诩俣ˋccountManager方法都工作正常的情況下,完成了對(duì)transfer方法的測(cè)試。
從以上代碼可以看出,采用Mock Object進(jìn)行的單元測(cè)試基本上可以分為下面幾步:
(1)基于一個(gè)接口定義Mock并實(shí)現(xiàn)這個(gè)接口的所有函數(shù)。
(2)創(chuàng)建Mock Object的一個(gè)對(duì)象
(3)設(shè)置對(duì)象內(nèi)部屬性
(4)告訴對(duì)象測(cè)試代碼希望看到的反應(yīng)
(5)進(jìn)行測(cè)試
(6)檢查Mock Object的確按照希望的順序進(jìn)行工作。
3.3 模擬對(duì)象的優(yōu)點(diǎn)
3.3.1 模擬對(duì)象作為測(cè)試手段的優(yōu)點(diǎn)
Mock Object最直接的優(yōu)點(diǎn)在于提供單元測(cè)試的質(zhì)量和覆蓋率:
(1)只要在測(cè)試中對(duì)期待發(fā)生的問題指定好執(zhí)行的順序引入Mock Object對(duì)象后的單元測(cè)試就是在一個(gè)完全可控的環(huán)境里進(jìn)行的。也就是說我們?cè)僖膊粫?huì)無法定位一個(gè)“時(shí)隱時(shí)現(xiàn)”的bug。相反我們可以非常迅速的將問題定位在一個(gè)類的內(nèi)部,而不是一個(gè)函數(shù)調(diào)用序列。
(2)于測(cè)試人員來說,最常見的問題是測(cè)試人員提交的bug無法在開發(fā)人員那里復(fù)現(xiàn)。有了Mock Object這個(gè)工具測(cè)試人員可以利用Mock Object明確的指定輸入和輸出編寫一個(gè)測(cè)試用例讓開發(fā)人員修復(fù)。
(3)超過8O% 的異常處理代碼沒有被充分測(cè)試過。主要原因是在沒有Mock Object之前很多情況是無法由人工進(jìn)行控制的,例如寫文件失敗網(wǎng)絡(luò)連接超時(shí),數(shù)據(jù)庫數(shù)據(jù)傳輸失敗或者從網(wǎng)絡(luò)接收到的數(shù)據(jù)已經(jīng)損壞。通過控制Mock Object我們很容易就可以模擬上面的這些情況。
3.3.2 模擬對(duì)象作為設(shè)計(jì)手段的優(yōu)點(diǎn)
雖然Mock Object最直接的優(yōu)點(diǎn)在于給予測(cè)試代碼更多的可控性和可操作性,它最大的優(yōu)點(diǎn)在于對(duì)軟件設(shè)計(jì)的影響[3]。
(1)測(cè)試驅(qū)動(dòng)開發(fā)與Mock Object一起使用,可以寫出低耦合高內(nèi)聚,非常優(yōu)雅干凈的代碼。
(2)強(qiáng)迫設(shè)計(jì)者放棄對(duì)第三方庫的強(qiáng)依賴關(guān)系,取而代之的是比較弱的依賴關(guān)系。
(3)設(shè)計(jì)人員可以將更大的注意力放在商業(yè)邏輯的實(shí)現(xiàn)和測(cè)試.由于Mock Object的存在,我們不需要實(shí)現(xiàn)數(shù)據(jù)訪問層就可以對(duì)商業(yè)邏輯進(jìn)行測(cè)試。而商業(yè)邏輯才是任何系統(tǒng)中對(duì)于客戶最重要的內(nèi)容,它的正確與否決定了整個(gè)系統(tǒng)是否能完成任務(wù),它的穩(wěn)定性決定了整個(gè)系統(tǒng)架構(gòu)的穩(wěn)定性。
(4)在項(xiàng)目初期,甚至是中期,將設(shè)計(jì)人員解放出來,不用對(duì)系統(tǒng)底層的基礎(chǔ)設(shè)施做出判斷。例如,在商業(yè)邏輯并不明確,需求還不穩(wěn)定的時(shí)候,我們是更多根據(jù)感覺來做出很多重要的判斷的,而這些判斷往往導(dǎo)致比較關(guān)鍵的決定。例如,在項(xiàng)目之初,誰能夠明確的回答到底需要什么樣的數(shù)據(jù)庫?Oracle?SQL Server?還是XML文件?到底需要什么樣的隊(duì)列服務(wù)器 MSMQ還是IBM―MQ?由于Mock Object的引入,我們可以將這些決策推遲到商業(yè)邏輯層更加明確之后進(jìn)行,從而可以獲得更加準(zhǔn)確有針對(duì)性的答案。
3.4 模擬對(duì)象的局限性
Mock Object在實(shí)際項(xiàng)目中的應(yīng)用存在一些限制,一些是由于Mock Object本身性質(zhì)決定的,有一些則是由于其它類庫設(shè)計(jì)存在的缺陷導(dǎo)致的。
(1)一個(gè)典型的不是Mock Object的問題,而是類庫設(shè)計(jì)的問題。是Mock Object無法模擬比較深的對(duì)象樹。有一些第三方的類庫,尤其是一些消息處理函數(shù)的參數(shù),提供的不是接口而是一些對(duì)象。往往這些對(duì)象內(nèi)部有很多子對(duì)象,也就是我們常說的一棵大的對(duì)象樹。我們需要花費(fèi)太多的精力去構(gòu)造這些對(duì)象來進(jìn)行模擬,時(shí)間消耗巨大。
(2)一般性而言,單元測(cè)試的粒度越細(xì),功能測(cè)試的粒度就可以越粗[4]。但是引入Mock Object的單元測(cè)試仍然無法取代功能測(cè)試。一個(gè)很好的例子就是誤差積累的測(cè)試,哪怕每個(gè)單元的誤差都在可接收范圍內(nèi),我們?nèi)匀恍枰粋€(gè)功能測(cè)試確保整體誤差也是可以接受的。
4 結(jié)束語
模擬對(duì)象解決了傳統(tǒng)單元測(cè)試的兩個(gè)問題:一是如何將需要測(cè)試的代碼與相關(guān)環(huán)境隔離;二是如何創(chuàng)建一個(gè)快速、可控的環(huán)境輔助測(cè)試開發(fā)。隨著模擬對(duì)象技術(shù)的成熟,基于模擬對(duì)象的單元測(cè)試會(huì)越來越廣泛地被采用。
參考文獻(xiàn):
[1]Kent Beck.測(cè)試驅(qū)動(dòng)開發(fā)[M].北京:中國(guó)電力出版社,2003.
[2]Myers.王峰,陳杰譯.軟件測(cè)試的藝術(shù)(第二版)[M]. 北京:機(jī)械工業(yè)出版社,2006.50-52.
[3]David Astels.崔凱,譯.測(cè)試驅(qū)動(dòng)開發(fā)實(shí)用指南[M].北京:中國(guó)電力出版社,2004.120-130.
[4]Paul C Jorgensen.韓柯,杜旭濤,譯.軟件測(cè)試(第二版)[M].北京:機(jī)械工業(yè)出版社,2003.
篇8
關(guān)鍵詞:Java類;面向?qū)ο蟮膯卧獪y(cè)試;測(cè)試用例
中圖分類號(hào):G642文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):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(cè)試(簡(jiǎn)稱為OO Unit Test)是檢驗(yàn)面向?qū)ο蟪绦蜃钚挝?,即檢查類有無錯(cuò)誤的測(cè)試工作。因?yàn)轭愂敲嫦驅(qū)ο蟪绦蛑凶罨镜膯挝?,所以?duì)于類的測(cè)試必須要100%通過,這樣面向?qū)ο髥卧獪y(cè)試就顯得非常重要了。面向?qū)ο蟮母拍罴俺绦蛟O(shè)計(jì)方法本身就是一個(gè)難點(diǎn),那么要幫助學(xué)生理解和掌握面向?qū)ο髥卧獪y(cè)試就更困難了。學(xué)生們對(duì)此也覺得很枯燥,聽不懂,學(xué)不會(huì),最后放棄了。為了讓學(xué)生掌握這方面的知識(shí)和技能,我采用的方法是以Java類為例,講解面向?qū)ο髥卧獪y(cè)試的基本操作過程,以案例代替概念,理論與實(shí)踐相結(jié)合,采用案例教學(xué)法。
為什么要采用Java類作為案例進(jìn)行教學(xué)呢?這主要是考慮到以下兩點(diǎn):
一是Java語言是當(dāng)前應(yīng)用前景非常好的軟件設(shè)計(jì)開發(fā)語言,現(xiàn)在的計(jì)算機(jī)專業(yè)一般都會(huì)開設(shè)這一課程,并且是在《軟件測(cè)試》之前開設(shè),學(xué)生有知識(shí)基礎(chǔ)。
二是Java語言是純面向?qū)ο蟮恼Z言,它摒棄了C/C++中的一些不易掌握的結(jié)構(gòu),如指針等,其最小處理單位就是類,而且Java語言的程序非常簡(jiǎn)潔,理解起來比較容易。
當(dāng)然作為案例的Java類不能太難了,否則一開始學(xué)生就看不懂該Java類的功能,更不用說理解該類的測(cè)試過程了。
為了讓學(xué)生能夠掌握面向?qū)ο髥卧獪y(cè)試技術(shù),我根據(jù)學(xué)生的知識(shí)水平,選用合適的被測(cè)試的Java類,為其設(shè)計(jì)測(cè)試用例,執(zhí)行測(cè)試并生成測(cè)試文檔,用完整的案例進(jìn)行教學(xué)。
2 針對(duì)面向?qū)ο笳Z言的特征,選擇自動(dòng)化的單元測(cè)試方法
在一個(gè)典型的軟件項(xiàng)目中,有兩種類型的測(cè)試最為重要:程序員測(cè)試和用戶測(cè)試,或稱為單元測(cè)試和驗(yàn)收測(cè)試。單元測(cè)試由程序設(shè)計(jì)師自行編寫測(cè)試代碼,目的在于驗(yàn)證程序設(shè)計(jì)師所撰寫的代碼是否依據(jù)其所設(shè)想的方式執(zhí)行而產(chǎn)生符合預(yù)期的結(jié)果。即驗(yàn)證程序代碼的正確性。如果是對(duì)采用面向?qū)ο蠓椒ㄔO(shè)計(jì)的軟件進(jìn)行單元測(cè)試,就是面向?qū)ο髥卧獪y(cè)試了。
通常,在進(jìn)行面向?qū)ο蟮膯卧獪y(cè)試前,我們都要分析幾個(gè)問題:
1) 面向?qū)ο蟮膯卧獪y(cè)試的對(duì)象是誰?
2) 采用人工測(cè)試還是自動(dòng)化測(cè)試?
3) 如果是自動(dòng)化測(cè)試,那么使用什么樣的工具合適?
4) 如何進(jìn)行面向?qū)ο蟮膯卧獪y(cè)試?
對(duì)于不同的程序代碼來說,以上的問題可能都有不同的答案與之相對(duì)應(yīng),那么如果使用的是Java語言所編寫的代碼的話,該怎樣決定呢?
首先,我們知道Java語言是一種高級(jí)的、通用的、完全面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,其程序的基本處理單位是類。所以單元測(cè)試的對(duì)象就是類,即Java的單元測(cè)試指的是面向?qū)ο蟮膯卧獪y(cè)試。
其次,隨著軟件的復(fù)雜程度越來越高,面向?qū)ο髥卧獪y(cè)試的工作量也隨之增加了,若采用人工測(cè)試恐怕難以完成。因此,自動(dòng)化的單元測(cè)試要比人工測(cè)試要來得適用。再者,自動(dòng)化測(cè)試的另一個(gè)好處是能生成測(cè)試文檔,這樣也可以減少文檔的撰寫工作。
當(dāng)然,如果選擇了自動(dòng)化測(cè)試就需要工具來支持了,使用何種工具比較合適呢。在此,推薦使用JUnit,這是一種輕量級(jí)的測(cè)試框架。JUnit是一個(gè)開發(fā)源代碼的Java測(cè)試框架,用于編寫和運(yùn)行可重復(fù)的測(cè)試。它是用于單元測(cè)試框架體系xUnit的一個(gè)實(shí)例(用于Java語言)。主要用于白盒測(cè)試,回歸測(cè)試。JUnit一般不需要另行安裝,通常集成的程序設(shè)計(jì)平臺(tái),如Eclipse、JBuilder等都會(huì)裝有JUnit。
3 設(shè)計(jì)簡(jiǎn)單的Java類的單元測(cè)試用例來解析面向?qū)ο髥卧獪y(cè)試
3.1 選取待測(cè)試的Java類
為使學(xué)生更易理解,案例的選擇要先易后難。我們可以用HelloWorld為例說明JUnit是如何進(jìn)行單元測(cè)試的,因?yàn)槊恳环N語言在其學(xué)習(xí)用書的第一個(gè)例子通常都是HelloWorld,它最簡(jiǎn)單了。以下是代碼:
// HelloWorld.java
packageHelloWorld ;
public class helloWorld {
public String sayHello( ) {// 返回測(cè)試字符串的方法
returnstr;
}
private String str;
}
3.2 設(shè)計(jì)測(cè)試用例,幫助學(xué)生掌握測(cè)試步驟
為了對(duì)HelloWorld類進(jìn)行測(cè)試,我編寫了以下測(cè)試用例,它本身也是一個(gè)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ǎng)的地質(zhì)歷史中,經(jīng)過自然界的作用,古代生物的(
)、(
)或(
)埋藏在地下變成了跟(
)一樣的東西,這些東西就是(
)。
2、英國(guó)生物學(xué)家達(dá)爾文,1859年出版了(《
》)一書,全面提出了(
)。他認(rèn)為,生物的繁衍是在(
)的過程中發(fā)生的,同一物種內(nèi)哪些個(gè)體(
),它就比其他個(gè)體更容易(
)下來。
3、寫出馬的進(jìn)化順序(
)、(
)、(
)、(
)、(
)
二、判斷題(在你認(rèn)為對(duì)的題后畫√,錯(cuò)的畫×)(5分)
1、化石的形成是它們自己死后變成的
(
)
2、達(dá)爾文的生物進(jìn)化學(xué)說的核心就是自然選擇學(xué)說(
)
3、古代的馬與現(xiàn)代的馬沒有什么差別
(
)
4、喙大而強(qiáng)壯的地雀更適宜吃外殼堅(jiān)硬的種子
(
)
5、為了吃到更高處的樹上的嫩葉,長(zhǎng)頸鹿的頸長(zhǎng)得特別長(zhǎng)(
)
三、觀察與分析(17分)
1、觀察下圖是什么化石?推想:這種化石是怎樣形成的?(5分)
2、現(xiàn)有青色青蛙和淡黃色青蛙,研究它們的生存環(huán)境。(12分)
(1)如果都生活在有青草的水邊,哪種易被蛇吃掉?哪種易生存下來?(4分)
(2)如果都生活在有沙灘的水邊,哪種易被蛇吃掉?哪種易生存下來?(4分)
(3)通過以上分析,你有什么發(fā)現(xiàn)?(4分)
四、根據(jù)你學(xué)過的知識(shí),回答下面的問題。(13分)
1、你見過或知道哪些具體的生物化石,請(qǐng)至少寫出四種。(4分)
篇10
1. 注音寫字:(8分)
癡想() 隱秘() 喧téng() 盤虬臥龍()
訓(xùn)誡( ) 聳立() 迂回() 仙露qióng()漿
lín峋() 卑微( ) 寬shù( ) 伶仃( )
zhù立( ) 瞬間() chuò泣() 鶴lì( )云端
2.原文填空。(5分)
(1)在千年之后,也許會(huì)有人對(duì)我留下的痕跡反復(fù)觀看,反復(fù)把玩,并且會(huì)忍不住輕輕地嘆息:“這是一顆怎樣 又怎樣 的心啊!”
(2)花和人都會(huì)遇到各種各樣的不幸,但是 。
(3)余憶童稚時(shí),能張目對(duì)日, , ,故時(shí)有物外之趣。
3. 解釋文言字詞:(4分)
(1)項(xiàng)為之強(qiáng)( )(2)以叢草為林( )
(3)興正濃( ) (4)方出神( )
4.寫出句子所用的修辭方法。(3分)
(1)山那邊的山啊,鐵青著臉。( )
(2)在山的那邊,是海嗎?是的!人們啊,請(qǐng)相信——( )
(3)紫色的大條幅上,泛著點(diǎn)點(diǎn)銀光,就像迸濺的水花。( )
5.對(duì)文章作者及主旨,敘述錯(cuò)誤的是:()(2分)
A.《在山的那邊》,“山”與“海”兩個(gè)相對(duì)的形象,是富有象征意義的,這首詩抒寫童年的想望和困惑,成年的感悟和信念,啟示人們要實(shí)現(xiàn)遠(yuǎn)大的理想,必須百折不撓,堅(jiān)持奮斗,要一次次地戰(zhàn)勝失望,不停地翻過無數(shù)座山。
B.《走一步,再走一步》,是過來人的經(jīng)驗(yàn)之談,在人生道路上,艱難險(xiǎn)阻并不可怕,大困難可以化整為零,化難為易,走一步,再走一步,定能戰(zhàn)勝一切困難。作者是英國(guó)作家莫頓•亨特。
C. 《紫藤蘿瀑布》,由紫藤蘿瀑布的輝煌、藤蘿的命運(yùn),感悟生命的長(zhǎng)河是無止境的,一時(shí)的不幸,個(gè)人的不幸,都不足畏;人生,也應(yīng)該是豁達(dá)的,樂觀的,奮發(fā)的,進(jìn)取的。作者是當(dāng)代女作家宗璞。
D.《童趣》回憶童稚時(shí)代的種種情趣,人是有精神活動(dòng)的,在精神作用之下,自能享受無窮的物外之趣。作者是清代文學(xué)家沈復(fù),字三白。本文選自《浮生六記》。
6.選出標(biāo)點(diǎn)有誤的一項(xiàng):( )(2分)
A. “嗨,慢著,”我軟弱地哀求道,“我沒法——”
B.“我在開花!”它們?cè)谛?。“我在開花!”它們?cè)谌氯隆?/p>
C.那里裝的是什么仙露瓊漿?我湊上去,想摘一朵。
D.流著流著,它帶走了這些時(shí)一直壓在我心上的焦慮和悲痛,那是關(guān)于生死謎,手足情的。
7.下列文言句子的停頓(“•”表示很短暫的停頓),有誤的一項(xiàng)是:( )(2分)
A.能/張目•對(duì)日B.昂首/觀之,項(xiàng)/為之•強(qiáng)
C.使/之沖煙/而飛鳴D.作/青云•白鶴/觀
8. 寫出我國(guó)四大名著:《 》《 》《 》《 》。(2分)二、古詩文閱讀理解 (共14分)
9.依據(jù)上下文提示默寫 (3分)
①夏蚊成雷, 。
② , ,蓋一癩蝦蟆
10,解釋下列文言語句中加點(diǎn)詞語的含義:(4分)
① 徐( )噴以煙。
② 果如鶴唳( )云端。
③ 神游其中,怡然( )自得。
④ 物外( )之趣
11,翻譯下列文言語句:(4分)
① 夏蚊成雷,私擬作群鶴舞于空中。
② 一日,見二蟲斗草間。
12,《童趣》一文的作者,童年時(shí)對(duì)著蚊子徐噴以煙,讓蚊子“沖煙而飛鳴”。他做這件事感受到 “物外之趣”。從這一事例中,你感到怎樣才能成為一個(gè)富有生活情趣的人? (3分)
(二)閱讀下面選自課外的文字,回答文后的問題。(共12分)
1989年發(fā)生在美國(guó)洛杉礬一帶的大地震,在不到4分鐘的時(shí)間里,使30萬人受到傷害。在混亂的廢墟中,一個(gè)年輕的父親安頓好受傷的妻子,便沖向他七歲的兒子上學(xué)的學(xué)校。他眼前,那個(gè)昔日充滿孩子們歡笑的漂亮的三層教室樓,已經(jīng)變成了一片廢墟。他頓時(shí)感到眼前一片漆黑,大喊:“阿曼達(dá),我的兒子!”跪在地上大哭了一陣后,他猛地想起自己常對(duì)兒子說的一句話:“不論發(fā)生什么,我總會(huì)跟你在一起的?!彼麍?jiān)定地站起身,向那片廢墟走去……
這位父親心中只有一個(gè)念頭:“兒子在等著我?!彼诹?個(gè)小時(shí)、12個(gè)小時(shí)、24個(gè)小時(shí)、36個(gè)小時(shí),沒人再來阻擋他。他滿臉灰塵,渾身上下破爛不堪,到處是血跡。到第38個(gè)小時(shí),他突然聽到底下傳出孩子的聲音:“爸爸,是你嗎?”
是兒子的聲音!父親大喊:“阿曼達(dá),我的兒子!”“爸爸,真的是你嗎?”“是我,是爸爸,我的兒子?!薄拔腋嬖V同學(xué)們不要害怕,說只要我爸爸活著就一定會(huì)來救我,也就能救出大家。因?yàn)槟阏f過不論發(fā)生什么,你總會(huì)和我在一起尸“你現(xiàn)在怎么樣?有幾個(gè)孩子活著?”“我們這里有14個(gè)同學(xué),都活著,我們都在教室的墻角,屋頂塌下來架了個(gè)大三角形,我們沒被砸著?!备赣H大聲向四周呼喊:“這里有14個(gè)孩子,都活著!快來人!”過路的幾個(gè)人趕緊上前幫忙,50分鐘后,一個(gè)安全的小出口開辟了出來。父親聲音顫抖地說:“出來吧!阿曼達(dá)?!薄安?,爸爸,先讓別的同學(xué)出去吧!我知道你會(huì)跟我在一起,我不怕。不論發(fā)生什么,我知道你總會(huì)和我在一起。”
這對(duì)了不起的父子在經(jīng)歷了巨大的磨難后,無比幸福地緊緊地?fù)肀г谝黄稹?/p>
13:這里所選幾段文字,敘述了一個(gè)什么事件? (2分)
14.你認(rèn)為文中畫橫線的句子寫得好嗎?請(qǐng)說明理由。 (2分)
15,請(qǐng)寫出文中表現(xiàn)阿曼達(dá)父子心心相連的一句話。(2分)
16,文章結(jié)尾段說這對(duì)父子“了不起”。仔細(xì)閱讀文章,根據(jù)文中對(duì)父子二人的描寫,說他們各有什么了不起的地方? (2分)
17.請(qǐng)你根據(jù)文章內(nèi)容的提示,想像地震剛剛發(fā)生、教室剛剛塌陷時(shí)阿曼達(dá)的處境,寫他的所見、所想和所做。篇幅不超過一百字。(4分)
答案12. 一個(gè)富有生活情趣的人,應(yīng)該富有觀察力和想像力,善于發(fā)現(xiàn)生活中的美。
13.阿曼達(dá)的父親在地震后懷著堅(jiān)定的信念成功地?fù)尵瘸鰞鹤印?此題亦可從阿曼達(dá)的角度總結(jié)。)
14.劃線句子用了排比手法,渲染時(shí)間延續(xù)過程又長(zhǎng)又慢,突出強(qiáng)調(diào)父親以堅(jiān)韌不拔的毅力不停地行動(dòng),頑強(qiáng)地救出兒子。
深刻表現(xiàn)了他對(duì)兒子的摯愛之情。(這是一個(gè)開放型題目,可以從不同角度回答問題,能答出一個(gè)方面即可,不必求全。)
15.這句話是“不論發(fā)生什么,我總會(huì)跟你在一起”。