单元测试范文
时间:2023-04-07 09:55:58
导语:如何才能写好一篇单元测试,这就需要搜集整理更多的资料和文献,欢迎阅读由公务员之家整理的十篇范文,供你借鉴。
篇1
一、选择题(每题2分,共30分)
【 】1、家庭电路中接入的电能表,其作用是
A.给家用电路提供电能 B.提高家用电器效率
C.测量电路消耗的电能 D.保护电路避免火灾
【 】2、许多家用电器的三脚插头有一特别之处:三脚插头中与用电器金属外壳连接的那个插脚比另两个插脚夫要稍长,如图1所示。这样设计是为了
A.插头插入插座时,电器外壳先接地;拨出时,电器外壳后离开地线
B.方便识别火线和零线插脚
C.延长插头使用寿命 D.使插头的造型更美观
图2
图
1
【 】3、某同学家室内的电灯均正常工作,当他把“220V 8W”的台灯插头插入插座后,
闭合台灯开关,室内电灯全部熄灭,发生这一现象的原因可能是
A.插座处短路 B.台灯插头处短路 C.台灯开关处短路 D.台灯灯头处短路
【 】4、图2是某家庭电路,闭合开关,灯不亮。用试电笔接触c点氖管不发光,接触
d点氖管发光。已知该电路有两处故障,则下列判断正确的是
A、ac间断路、bd间断路 B、ac间断路、eb间断路
C、ac
间断路、cd间短路 D、eb间断路、cd间短路
【 】5、下列图3四种情况中,人相对安全的是
【 】6、李明同学寒假在家看电视,为了取暖,他将一个电热器插头插入插座时,听到
“叭”的一声,同时从插座中冒一股黑烟,电视机和电灯都熄灭了,其原因是
A.电视机烧坏了 B.短路引起空气开关断开 C.电暧器烧坏了 D.灯丝烧断
【 】7、下列四幅图中,符合安全用电的是
图4
【 】8、 暑期,徐延同学家新装了一台3kW的空调机,试用了一会儿,家中突然停电,检查发现熔丝断了。导致上述故障的原因可能是
A.插头和插座接触不良 B.电路中用电器的总功率过大
C.空调机内部断路 D.控制空调机的开关短路
【 】9、 如图5所示,当开关S闭合后,发现电灯L不亮,用测电笔测试c、d两点时,氖管都发光,测试a、b两点时,只有a点氖管发光,则故障可能是
A.火线与零线短路 B.a、d之间某处断路
C.b、c之间某处断路 D.电灯的灯丝断了
b a
c
图7 图5
图6
【 】10、如图6,教室的讲台旁边装有一盏白炽灯和白炽灯的控制开关,老师需要在讲台上安装一个插座,下面是几位同学的安装方案,其中正确的是
A.从白炽灯控制开关的两个接线柱上分别引出两根线将插座接入
B.从白炽灯灯头接线盒内的两个接线柱上分别引出两根线将插座接入
C.剥开a、b分别引出两根线将插座接入
D.剥开a、c分别引出两根线将插座接入
【 】11、某同学在学习家庭电路时,安装了两盏额定电压均为220V的完好的白炽灯(甲和乙)和两个插座,如图7所示,如果两个插座均未连入家用电器,将电路中的开关全部闭合,保险丝未熔断,那么各用电器工作的情况是
A、甲、乙都正常工作 B、只有乙正常工作
C、甲、乙都不正常工作 D、只有甲正常工作
【 】12、 当有人发生触电事故时,下列做法中,正确的是
A. 迅速用手将人脱离触电区 B. 用水果刀将电线割断
C. 立即断开闸刀开关或空气开关,或者用干燥竹竿挑开电线 D.赶快逃离现场
【 】13、家用电器中的总阻的变化情况是
A.只开一盏灯时,电路中总电阻最小 B.不开灯时,电路中电阻为零
C.所有灯都开时,电路中的总电阻最大 D.所有灯都开时,电路中的总电阻最小
【 】14、图8甲所示为一个“一开三孔”开关
(即一个开关和一个三孔插座连在一起),它连入电路
如图8乙所示。下列说法正确的是
A.灯和插座是串联的
B.灯和插座是并联的
C.开关只控制插座
D.开关同时控制灯和插座
【 】15、小宁设计了一种照明电路图, 图8 其设计要求是:用两个开关控制一盏灯,两个
开关同时闭合灯才能发光,只闭合其中任意一个开关灯都不能发光。图9所示的四幅电路图中,既符合上述设计要求,又符合安全用电要求的是
图9
二、填空题(每空1分,共24分)
16、家庭电路中每盏灯都有一个开关,跟电灯 ,用来控制电灯的通断,其他家用电器也都有自己的开关。家用电器要 联接入电路中。
17、家庭电路的两根线,一根叫火线,另一根叫零线。在低电压供电的电源处, 线是接地的。所以在正常情况下, 线与地之间没有电压, 线和地之间有220V的电压。
18、家庭电路中要装 表,它用来测用户在一定时间内消耗多少千瓦时的电能。电能表要装在家庭电路的 路上。
19、辨别火线和零线可以用测电笔,使用时一定要用手接触笔尾的 体,笔尖接触电线的裸露部分,氖管发光表明笔尖接触的是 线。
20、家用保险丝是由电阻 、熔点 的铅锑合金制成。保险丝是 联在电路中。如果没有备用的保险丝, (填“能”或“不能”)用铜丝或铁丝代替保险丝。保险丝是利用 工作的。更换保险丝时,一定要先 电源。
21、三孔插座比两孔插座多的那个孔是跟 连接的。当用电器的三脚插头插在三孔插座里时,除把用电部分连入电路外,还要把用电器的 与 连接起来。
22、安全用电的原则是,不 低压带电体,不 高压带电体。
23、小明在家看电视,突然断电,发现空气开关跳闸。原来是楼上邻居家水管漏水,水流入小明家的插座中,因为流入插座的水是 (选填“导体”或“绝缘体”),使电路发生 路,导致空气开关跳闸。
24、如图10所示,甲图是小明家卧室的一个插座,他用试电笔测试插座的A孔,氖管发光,则A孔接的是 线;乙图是一个台灯的电路示意图,当把台灯接入电路时,为了安全,应将台灯插头的 (选填“C”或“D”)插脚接火线。
图
10
三、作图题(每题2分,共10分)
25、请用笔画线代替导线将图11乙中的三孔插座正确接入照明电路.
图12 图
11
26、小宝想在卧室安装一盏照明电灯,请在图12中帮他把灯和开关接入电路。
27、小森家有两盏墙壁灯,由一个开关控制,其元件符号如图13所示,试连接电路图。
28、如图14所示,S1是光控开关,夜晚自动闭台,白天断开;S2是声控开关,有声音时自动闭合,安静时断开。请把图连接成声光控楼道节能照明电路。
29、如图15甲所示,是小明常用的一个插线板。他在使用中发现:插线板上的指示灯在开关闭合时会发光,插孔正常通电;如果指示灯损坏,开关闭合时插孔也能正常通电。根据上述现象,在图15乙中画出插线板中开关、指示灯和插孔的连接方式,并与电源线接通。
火线 零线
指示灯
甲
四、计算题(6分)
30、 某电路安装的电能表上标有“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.串联 并 17.零 零 火 18.电能 干 19.金属 火
20.大 低 串 不能 电流的热效应 切断 21.大地 金属外壳 大地
22.接触 靠近 23.导体 短 24.火 D
25. 26. 27.
篇2
1. 图1是一些汽车品牌的标志,其中是中心对称图形但不是轴对称图形的共有().
A. 2个B.3个C. 4个D. 5个
2. 四张扑克牌如图2(1)所示放在桌子上,小敏把其中两张旋转180°后如图2(2)所示,那么她所旋转的牌从左起是().
A. 第一张、第二张 B. 第二张、第三张
C. 第三张、第四张 D. 第四张、第一张
3. 如图3,该图形围绕自己的旋转中心,按下列角度顺时针旋转后,不能与其自身重合的是().
A. 72° B. 108°
C. 144° D. 216°
4. 如图4,已知?荀ABCD的两条对角线AC与BD交于平面直角坐标系的原点O,点A的坐标为(-2,3),则点C的坐标为().
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逆时针旋转60°得到线段OD.要使点D恰好落在BC上,则AP的长是().
A. 4B. 5C. 6D. 8
6. 图6中这些复杂的图案都是在一个图案的基础上,在“几何画板”软件中拖动一点后形成的,它们中每一个图案都可以由一个“基本图案”通过连续旋转得来,旋转的角度是().
A. 30° B. 45° C. 60° D. 90°
二、填空题
7. 下午2点30分时,时钟的分针与时针所成角的度数为______.
8. 如图7,直线y=-x+4与x轴、y轴分别交于A,B两点,把AOB绕点A顺时针旋转90°后得到AO′B′,则点B′的坐标是______.
9. 如图8,E,F分别是正方形ABCD的边BC,CD上的一点,且BE+DF=EF,则∠EAF=______.
10. 如图9,用等腰直角三角板画∠AOB=45°,并将三角板沿OB方向平移到如图所示的虚线处后绕点M逆时针方向旋转22°,则三角板的斜边与射线OA的夹角α为______度.
11. 如图10,小新从A点出发前进10 m,向右转15°,再前进10 m,又向右转15°…这样一直走下去,他第一次回到出发点A时,一共走了______m.
12. 如图11,直角梯形ABCD中,AD∥BC,ABBC,AB=1,AD=2,BC=3,将腰CD以D为中心逆时针旋转90°至ED,连接AE,CE,则ADE的面积是______.
三、解答题
13. 如图12,网格中有一个四边形和两个三角形.
(1) 请你画出三个图形关于点O的中心对称图形.
(2) 将(1)中画出的图形与原图形看成一个整体图形,请写出这个整体图形对称轴的条数.试问:这个整体图形至少旋转多少度才能与自身重合?
14. 如图13,矩形ABCD中,AB=3,BC=4,若将矩形折叠,使C点和A点重合,求折痕EF的长.
15. 认真观察图14中4个图中阴影部分构成的图案,回答下列问题.
(1) 请写出这四个图案都具有的两个共同特征.
(2) 请再设计一个你心中最美丽的图案,使它也具备你所写出的上述特征.
16. 一位同学拿了两个全等的45°三角尺MNK和ACB,并做了一项探究活动:将MNK的直角顶点M放在ABC斜边AB的中点处,设AC=BC=4.
(1) 如图15(1),两三角尺的重叠部分为ACM,则重叠部分的面积为______,周长为______.
(2) 将图15(1)中的MNK绕顶点M逆时针旋转45°,得到图15(2),此时重叠部分的面积为______,周长为______.
(3) 如果将MNK绕M旋转到不同于图15(1)和图15(2)的位置,如图15(3),请你猜想此时重叠部分的面积:______.
(4)在图15(3)情况下,若AD=1,求出重叠部分图形的周长.
17. 如图16,点O是等边ABC内一点,∠AOB=110°,∠BOC=α.将BOC绕点C按顺时针方向旋转60°得ADC,连接OD.
(1) 求证:COD是等边三角形.
(2) 当α=150°时,试判断AOD的形状,并说明理由.
(3) 探究:当α为多少度时,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) 图形设计略.
篇3
关键词:软件测试;认知误区;嵌入式;单元测试流程
1 软件测试简述
软件测试是在软件投入商用前,对软件需求分析报告、设计规格说明书和编码的最终复查,是软件质量保证的关键方法,软件测试并不等于程序测试。它贯穿于软件定义和开发的整个过程,因此,软件需求分析、软件概要设计、软件详细设计和程序编码等各阶段所得到的文档,包括需求规格说明书、概要设计说明书、详细设计说明书,以及源代码都是软件测试的测试对象。随着软件规模的不断扩大,以及软件设计复杂程度不断的提高,软件开发中出现失误或缺陷的概率越来越大。随着市场对软件质量重要性的认知程序的提高,因此软件测试在软件项目实施过程中的重要性尤为突出。软件测试将会成为一个具有很大发展前景的行业,市场将需要更多具有丰富测试技术和先进管理经验的测试技术员和项目经理。
2 软件开发项目测试的误区
软件测试从1990年左右进入中国,目前国内大的测评中心、大型企业已经完全掌握了软件测试的测试策略和测试方法。小企业普遍存在测试人员不懂什么是单元测试,怎样进行单元测试,很少能看懂代码的细节。而开发人员很少能够提供完整的详细设计报告、需求报告。导致单元测试,以拼凑测试报告为目的。
认知误区一:软件测试是软件开发的最后一道步骤,工程师们一般认为,软件实际项目要经过下面六个阶段:需求分析,概要设计,详细设计,软件编码,软件测试,软件。因而,认为软件测试只是编码后的一个孤立的阶段,这就是不了解软件测试流程的认知偏差。软件测试是一个系列的活动过程,是一个开放的体系,包括软件测试需求分析,测试计划设计,测试用例设计,执行测试。从而,软件测试应当贯穿于软件项目的整个生命周期,并不是软件开发后最后一道步骤。认知误区二:软件商用后如果发现质量问题,就武断认为是软件测试人员的工作失误。这种认识很狭隘,很是打击软件测试人员的工作积极性。软件测试只能确认软件存在错误,不能保证软件没有错误。因为从根本上讲,软件测试不可能发现全部错误,软件后的错误可能来自软件项目中的各个过程。认知误区三:软件测试对测试人员技术要求不高,任何人都可以做。很多工程师认为软件测试就是安装并运行程序,按按键盘的重复性工作。随着软件测试技术的不断改进和完善,新测试方法、新流程、新工具都在不断被开发出来。这就需要软件测试工程师掌握和学习很多专业测试新理念和新技能。认知误区四:只有编写程序的高手才是软件专家,而软件测试没有前途。由于我国软件行业整体研发能力比较低,软件开发过程不规范。不少软件项目的开发都还停留在“累加堆叠“阶段。项目开发依靠个别程序员决定,他们一人负责总体设计和代码编写,给人的印象是程序员是真正的牛人,完成了所有的软件项目开发工作。但在微软等世界知名软件企业里,软件测试人员的待遇和数量与一般程序员没有多少差异,优秀测试人员的待遇甚至比普通程序员要高的多。
3 嵌入式软件单元测试流程
单元测试是指对软件中的最小可测试单元进行检查和验证。单元是规格说明书中的最小单元,包括函数、子程序、程序。单元测试关注独立的函数功能,是测试过程中最低级别的测试活动。需要开发一个或多个测试用例执行单元测试。把代码问题缩小范围在开发阶段锁定Bug是单元测试的主旨要求,以下将介绍一种容易操作的嵌入式单元测试实战流程。
第一阶段,制定测试记录表,记录测试过程,和测试情况。测试记录表包含:源文件名,子函数名,用例标号,用例名称,用例个数,用例通过个数,语句覆盖率,分支覆盖率,MC/DC覆盖率,测试结果,问题描述,测试人员,测试时间。针对第一阶段的测试结果,此时需要大家分析出问题的代码,各抒己见,总结问题,给出解决方法。
第二阶段,解决部分测试用例failed问题,找出阻止生成用例的共性。常见问题汇总:局部变量未初始化,调用函数未声明,局部变量直接赋值,结构体嵌套、结构体指针、声明问题、声明位置问题,函数指针,大循环、死循环,绝对地址,指针变量,C语言程序中带有goto语句。解决办法:局部变量声明后,需要赋初值再使用。调用函数未声明,该问题发生在隔离测试阶段,属于代码书写不规范问题。解决方法:自定义的函数都需要在头文件中做统一声明。局部变量直接赋初值:该问题发生在测试用例无法生成阶段,属于代码书写不规范问题。解决方法,结构体局部变量,指针变量需要先声明后赋初值。结构体嵌套、结构体指针、声明问题、声明位置问题:该问题也属于代码书写不规范问题。解决方法:根据MISRA代码书写规范,结构体需要放在头文件中统一声明。大循环、死循环:单元测试需要有程序结束的出口。解决方法:把大循环改为小循环,注释掉死循环(if(1)、for(; ;),while(1))。绝对地址:单元测试不连接真实的硬件设备。遇到寄存器等绝对地址时,需要对寄存器做变量处理。指针变量:需要声明一个同类的数组,然后把数组的首地址,赋给指针变量。函数指针:需要虚构一个函数实体,取函数地地址赋给函数指针,完成映射。C语言程序中带有goto语句:需要改变程序结构,增加判断语句,去除所有的goto语句,以便确保C语言程序的稳定性。
测试第三阶段:基本圈复杂度高于MISRA阀值要求的函数,先考虑把复杂函数改为几个小函数。改不了的由开发人员写声明以及具体原因,再按照路径分支来设计测试用例。汇总测试结果,提交测试问题报告单,并提交行业标准测试报告。
4 结束语
文章简述了软件测试的基本概念,澄清了软件测试工程实践中的几个误区,依据单元测试实践的具体案例,介绍了一种高效、容易操作的嵌入式单元测试的流程。
参考文献
[1]胡丹,杜新华.基于目标机的嵌入式软件单元测试[J].电子测量技术,2006(2).
[2]赵正海,王宁.跟踪雷达“指示引导”功能软件测试方法研究[J].现代电子技术,2013(36).
[3]于园园.软件测试技术与测试管理研究[J].江苏科技信息,2016(7).
[4]王琨.嵌入式计算机软件测试关键技术探讨[J].科技创新与应用,2016(7).
[5]张金环,田洪涛.浅析设备软件测试与质量保证[J].电子工业专用备,2016,45(1).
作者简介:张军(1988-),男,陕西武功人,工学硕士,助理工程师,主要研究方向:雷达信号处理算法、数字中频收发机和嵌入式软件测试。
篇4
满分:100分 时间60分钟 班 级 : 姓 名 :
一yī、直zhí接jiē写xiě出chū得dé数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ì( )和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ì( )和hé( )。
7.最zuì大dà的de两liǎn位wèi数shù是shì( ),最zuì小xiǎo的de两liǎn位wèi数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ì81和hé82。 ( ) 2. 36后hòu面miàn第dì五wǔ个è数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ì52。 ( )
五wǔ、比bǐ一yì比bǐ。(在内填上“>”、“<”或“=”)(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ǎ棵kē树shù上shàn摘zhāi下xià来lái的de?
七qī、数shǔ一yì数shù,填tián一yì填tián。(8分)
八bā、解jiě决jué问wèn题tí。(9分)
1.一yí共òn数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īn看kàn了le几jǐ页yè?
九jiǔ、动dòn动don脑nǎo。(10分)
篇5
传统的单元测试包括了调用被测模块(driver)和桩模块(stub)。调用被测模块的目的很单纯,就是为了访问类库的属性和方法,来检测类库的功能是否正确;
调用被测模块是用来模拟被测试模块的上一级模块,相当于被测模块的主程序。它接收数据,将相关数据传送给被测模块,启用被测模块,并打印出相应的结果。
Normal002falsefalsefalseEN-USKOX-NONEMicrosoftInternetExplorer4如果被测试模块中的函数是提供给其他函数调用的,在设计测试用例时就应该设计调用被测模块(Driver)。
篇6
关键词:单元测试 LDRA Testbed 覆盖分析
中图分类号:TP311.52 文献标识码:A 文章编号:1007-9416(2015)09-0000-00
随着计算机软件技术的深入使用,各种软件系统的复杂度不断加深,为了更好,更有效率的完成任务,节省时间和人力资源,这就对测试软件有了更高的要求。LDRA Testbed测试工具的使用给工作带来了很多便利,它是软件验证与确认的质量工具,提供源代码的测试和分析,主要应用于需要软件具有高可靠性,高健壮性,甚至要求尽可能达到零缺陷的领域[1]。
1测试准备
为了提高测试的方便性,在用Testbed之前应该做好准备工作。建立一个包含项目各个模块的文档,对每个模块创建合适的用例,包括边界和特殊情况;并对各种不同的情况设计测试数据,并计算出自己的期望值。如图1。
图1 单元测试数据表
2 Testbed单元测试
2.1 创建测试用例
选择项目程序进行测试,Tbrun进行单元模块测试进行了有效的自动化,创建测试序列,选择单元模块进行白盒测试。Tbrun利用了代码评审和设计评审的结果自动对系统的每一个单元产生测试驱动;用户被提示输入数据(测试准备文档中模块数据)并与产生的结果进行比较,是否期望与实际结构一致(如图2)。 Tbrun保存并维护所有的测试信息,方便在以后任何时候生成相同的驱动进行回归测试。
图2 对比结果图
2.2 覆盖率分析
覆盖率分析有三种常用的覆盖测试,分别是语句覆盖,分支覆盖和MC/DC覆盖。语句覆盖是常用的覆盖方法,也是最弱的逻辑覆盖准则。即使语句覆盖率达到100%,也不能保证被测程序100%的被覆盖,其缺点是不能发现某些程序结构的逻辑错误[2]。
输入了数据产生结果对比后会生成覆盖分析报告,里面包含了结果对比情况和覆盖率情况(如图3),其中含有*的语句表示测试用例并没有包含这些语句,我们需要进行分析测试用例是否包含了这种情况;如果包含,则这些语句是多余的,否则增加此种情况的用例。
图3 覆盖分析报告
3 结语
软件测试工具与人力的结合提高了测试效率,使软件单元设计中的问题提早暴露,保证了项目质量并缩短了项目周期。Testbed是一个比较方便的测试工具,可以节省资源,提高产品质量。不仅在编程阶段可以检测和修改软件的错误与缺点,而且覆盖率的测试提供了测试方案和必要信息。
参考文献
[1]石磊.LDRA Testbed在弹载软件测试中的应用怕[J].软件导刊,2008.
[2]王玮.Testbed中常用覆盖测试方法研究[J].计算机光盘软件与应用,2015,13-14.
篇7
关键词:软件测试;单元测试;模拟对象
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)05-00ppp-0c
1 引言
随着极限编程在实际软件开发项目中的推广,越来越多的项目开始采用测试驱动开发作为主要的软件开发方法。单元测试不仅优化了软件系统设计,还大大简化了功能测试的工作量[1]。但是另一方面.更多的项目在开始不久就发现在很多情况下针对一个类编写单元测试比较困难.随着项目的进行,越来越多的代码无法进行单元测试.到最后整个项目无法继续采用测试驱动的方式进行开发。因此,要将测试驱动开发真正在整个项目里贯彻执行,必须有一种方法能够相对容易的解决这些问题。本文将首先讨论了单元测试和无法或很难进行单元测试的情况,然后引入Mock Object的概念,基于Mock Object实现单元测试。接下来讨论在软件开发过程中引入Mock Object对测试和设计的影响。最后简述了Mock Object的局限性。
2 单元测试
2.1 什么是单元测试
单元测试是对程序中的单个子程序或过程进行测试的过程,也就是说,一开始并不是对整个程序进行测试,而是将注意力集中在对构成程序的较小模块的测试上面[2]。单元测试从两个角度进行测试:一是测试数据都是针对程序的功能来设计的黑盒测试;二是针对程序的逻辑结构来设计测试用例的白盒测试。
2.2 单元测试面对的难题
造成针对一个类难以进行单元测试的主要原因是因为这个类依赖于一些其它的难以测试的资源。主要有这三类最主要的资源:数据库,第三方组件和网络硬件资源。下面我们将对这三大类难以测试的资源进行分类讨论。
2.2.1 数据库
现在大部分的软件项目都会采用数据库作为数据存储。常见的开发团队会在每个开发人员的机器上安装一个本地的数据库,每个人针对自己的数据库进行开发调试。这样做的问题是:必须有一种方式同步数据库的设计。如果有一个人修改了数据库schema或者某个存储过程,这个修改必须同步到所有开发者的本地数据库以及测试服务器上。采用敏捷软件开发的很多项目组往往会浪费大量的时间在数据库设计同步上。更严重的是每周都会遇到由于数据库设计不同步,修改冲突导致的问题导致整个项目的中心源码库在Auto Build时失败。每个开发人员都有自己的测试数据,除了上面提到的需要把这些测试数据同步到所有开发机器和测试服务器上外,还面临更重大的问题。因为测试用例需要修改数据库,因此还必须准备一种机制能够在每一个测试用例执行结束后重新将所有的测试数据调入数据库。采用最简单直接的方法就是在每个测试用例执行前都将数据库清空,然后再将测试数据调入,这样会大大减慢单元测试的时间。单元测试时间越长,开发者就越不愿意执行这些测试用例,单元测试所发挥的作用越小,这也是很多测试驱动项目最终无法进行到底的一个重要原因。另一个非常严重的问题是为了清理测试环境,在针对商业逻辑的测试用例中加入了大量的数据访问层的代码。采用这样的方式强迫开发者在开发商业逻辑层的同时开发数据访问层,并且严重降低了可读性。
2.2.2 第三方组件或应用服务器
数据库是最常见的第三方服务器。除此以外在越来越多的项目中使用第三方的组件和应用服务器。例如:客户环境中的ERP系统,全球定位系统(GPS)的Web Service接口,绘图引擎等。对于这些第三方提供的内容,造成难以编写单元测试的最根本的原因有:一是系统不透明:对于大部分商业组件或者服务来说,一个很重要的内容是良好的封装。但这个特性带来的问题是在外界无法对其内部状态进行控制和访问。往往经过好几个操作后才能在外部观察到相应的变化。二是环境配置困难。由于项目组成员计算机配置不同,加入项目的时间不同,在项目中负责的内容不同导致无法为所有开发人员配置一个完全一致的环境。例如一个绘图引擎的开发版的license是按照一个局域网内部同时使用的人员个数收费的,就不可能只为了能够进行完整的单元测试就为只编写商业逻辑层的开发人员也安装一套。
2.2.3 网络资源和硬件资源
在稍大一些的项目中都或多或少的用到一些网络资源。例如将文件部署到远程的webDAV服务器上同时很多项目还会用到一些硬件资源。常见的有打印机、指纹识别验证或者条形码阅读器等。这些资源有两大特点导致很难针对与他们相关的类编写测试用例。
一是资源访问冲突。很多网络资源对于并发访问的响应协调是通过锁机制进行的,在实际项目中常见的是一个开发人员在调试本地代码时导致远端资源被锁定导致其它开发者无法访问这些资源。
二是环境可控因素。对于网络资源和硬件资源相关代码的测试与针对商业逻辑层代码的测试最大的不同是环境的不确定性。访问网络资源有可能遇到的异常情况非常多,例如网络忙造成访问超时,也有可能建立链接后数据传输失败,还有可能数据传输完成后校验失败。针对访问这些资源的代码进行的测试必须能够覆盖到所有可能出现的每一种情况。如果没有一个可控,并且是全自动的环境辅助单元测试的话,这项任务基本上不可能完成。
3 模拟对象
3.1 什么是模拟对象
Mock这个单词翻译成中文大概的意思是假的,模拟的。如图1所示:通过一个常见的对商业逻辑的测试描述了一个Mock Object。在图中我们可以看出:测试代码需要测试商业逻辑,而商业逻辑代码需要通过IMyDataAccess接口访问底层数据库,这就是数据库依赖问题。为了解决这个问题我们引入一个Mock Object,并将这个Mock Object而非真正的Data Access传递给商业逻辑代码进行测试。这里的Mock Object不需要实现任何逻辑只需要根据商业逻辑的需要返回适当的内容就可以了。
图1 使用Mock Object对商业逻辑进行测试
3.2 模拟对象实现单元测试应用实例
现在我们写好了类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);
}}
现在我们想测试transfer方法,它内部调用的AccountManager的两个方法。但是对于AccountManager来说,它只是个接口,如下:
public interface AccountManager {
Account findAccountForUser(String userId);
void updateAccount(Account account);
}
所以现在我们必须写个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并实现这个接口的所有函数。
(2)创建Mock Object的一个对象
(3)设置对象内部属性
(4)告诉对象测试代码希望看到的反应
(5)进行测试
(6)检查Mock Object的确按照希望的顺序进行工作。
3.3 模拟对象的优点
3.3.1 模拟对象作为测试手段的优点
Mock Object最直接的优点在于提供单元测试的质量和覆盖率:
(1)只要在测试中对期待发生的问题指定好执行的顺序引入Mock Object对象后的单元测试就是在一个完全可控的环境里进行的。也就是说我们再也不会无法定位一个“时隐时现”的bug。相反我们可以非常迅速的将问题定位在一个类的内部,而不是一个函数调用序列。
(2)于测试人员来说,最常见的问题是测试人员提交的bug无法在开发人员那里复现。有了Mock Object这个工具测试人员可以利用Mock Object明确的指定输入和输出编写一个测试用例让开发人员修复。
(3)超过8O% 的异常处理代码没有被充分测试过。主要原因是在没有Mock Object之前很多情况是无法由人工进行控制的,例如写文件失败网络连接超时,数据库数据传输失败或者从网络接收到的数据已经损坏。通过控制Mock Object我们很容易就可以模拟上面的这些情况。
3.3.2 模拟对象作为设计手段的优点
虽然Mock Object最直接的优点在于给予测试代码更多的可控性和可操作性,它最大的优点在于对软件设计的影响[3]。
(1)测试驱动开发与Mock Object一起使用,可以写出低耦合高内聚,非常优雅干净的代码。
(2)强迫设计者放弃对第三方库的强依赖关系,取而代之的是比较弱的依赖关系。
(3)设计人员可以将更大的注意力放在商业逻辑的实现和测试.由于Mock Object的存在,我们不需要实现数据访问层就可以对商业逻辑进行测试。而商业逻辑才是任何系统中对于客户最重要的内容,它的正确与否决定了整个系统是否能完成任务,它的稳定性决定了整个系统架构的稳定性。
(4)在项目初期,甚至是中期,将设计人员解放出来,不用对系统底层的基础设施做出判断。例如,在商业逻辑并不明确,需求还不稳定的时候,我们是更多根据感觉来做出很多重要的判断的,而这些判断往往导致比较关键的决定。例如,在项目之初,谁能够明确的回答到底需要什么样的数据库?Oracle?SQL Server?还是XML文件?到底需要什么样的队列服务器 MSMQ还是IBM―MQ?由于Mock Object的引入,我们可以将这些决策推迟到商业逻辑层更加明确之后进行,从而可以获得更加准确有针对性的答案。
3.4 模拟对象的局限性
Mock Object在实际项目中的应用存在一些限制,一些是由于Mock Object本身性质决定的,有一些则是由于其它类库设计存在的缺陷导致的。
(1)一个典型的不是Mock Object的问题,而是类库设计的问题。是Mock Object无法模拟比较深的对象树。有一些第三方的类库,尤其是一些消息处理函数的参数,提供的不是接口而是一些对象。往往这些对象内部有很多子对象,也就是我们常说的一棵大的对象树。我们需要花费太多的精力去构造这些对象来进行模拟,时间消耗巨大。
(2)一般性而言,单元测试的粒度越细,功能测试的粒度就可以越粗[4]。但是引入Mock Object的单元测试仍然无法取代功能测试。一个很好的例子就是误差积累的测试,哪怕每个单元的误差都在可接收范围内,我们仍然需要一个功能测试确保整体误差也是可以接受的。
4 结束语
模拟对象解决了传统单元测试的两个问题:一是如何将需要测试的代码与相关环境隔离;二是如何创建一个快速、可控的环境辅助测试开发。随着模拟对象技术的成熟,基于模拟对象的单元测试会越来越广泛地被采用。
参考文献:
[1]Kent Beck.测试驱动开发[M].北京:中国电力出版社,2003.
[2]Myers.王峰,陈杰译.软件测试的艺术(第二版)[M]. 北京:机械工业出版社,2006.50-52.
[3]David Astels.崔凯,译.测试驱动开发实用指南[M].北京:中国电力出版社,2004.120-130.
[4]Paul C Jorgensen.韩柯,杜旭涛,译.软件测试(第二版)[M].北京:机械工业出版社,2003.
篇8
关键词:Java类;面向对象的单元测试;测试用例
中图分类号:G642文献标识码: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 引言
面向对象的单元测试(简称为OO Unit Test)是检验面向对象程序最小单位,即检查类有无错误的测试工作。因为类是面向对象程序中最基本的单位,所以对于类的测试必须要100%通过,这样面向对象单元测试就显得非常重要了。面向对象的概念及程序设计方法本身就是一个难点,那么要帮助学生理解和掌握面向对象单元测试就更困难了。学生们对此也觉得很枯燥,听不懂,学不会,最后放弃了。为了让学生掌握这方面的知识和技能,我采用的方法是以Java类为例,讲解面向对象单元测试的基本操作过程,以案例代替概念,理论与实践相结合,采用案例教学法。
为什么要采用Java类作为案例进行教学呢?这主要是考虑到以下两点:
一是Java语言是当前应用前景非常好的软件设计开发语言,现在的计算机专业一般都会开设这一课程,并且是在《软件测试》之前开设,学生有知识基础。
二是Java语言是纯面向对象的语言,它摒弃了C/C++中的一些不易掌握的结构,如指针等,其最小处理单位就是类,而且Java语言的程序非常简洁,理解起来比较容易。
当然作为案例的Java类不能太难了,否则一开始学生就看不懂该Java类的功能,更不用说理解该类的测试过程了。
为了让学生能够掌握面向对象单元测试技术,我根据学生的知识水平,选用合适的被测试的Java类,为其设计测试用例,执行测试并生成测试文档,用完整的案例进行教学。
2 针对面向对象语言的特征,选择自动化的单元测试方法
在一个典型的软件项目中,有两种类型的测试最为重要:程序员测试和用户测试,或称为单元测试和验收测试。单元测试由程序设计师自行编写测试代码,目的在于验证程序设计师所撰写的代码是否依据其所设想的方式执行而产生符合预期的结果。即验证程序代码的正确性。如果是对采用面向对象方法设计的软件进行单元测试,就是面向对象单元测试了。
通常,在进行面向对象的单元测试前,我们都要分析几个问题:
1) 面向对象的单元测试的对象是谁?
2) 采用人工测试还是自动化测试?
3) 如果是自动化测试,那么使用什么样的工具合适?
4) 如何进行面向对象的单元测试?
对于不同的程序代码来说,以上的问题可能都有不同的答案与之相对应,那么如果使用的是Java语言所编写的代码的话,该怎样决定呢?
首先,我们知道Java语言是一种高级的、通用的、完全面向对象的程序设计语言,其程序的基本处理单位是类。所以单元测试的对象就是类,即Java的单元测试指的是面向对象的单元测试。
其次,随着软件的复杂程度越来越高,面向对象单元测试的工作量也随之增加了,若采用人工测试恐怕难以完成。因此,自动化的单元测试要比人工测试要来得适用。再者,自动化测试的另一个好处是能生成测试文档,这样也可以减少文档的撰写工作。
当然,如果选择了自动化测试就需要工具来支持了,使用何种工具比较合适呢。在此,推荐使用JUnit,这是一种轻量级的测试框架。JUnit是一个开发源代码的Java测试框架,用于编写和运行可重复的测试。它是用于单元测试框架体系xUnit的一个实例(用于Java语言)。主要用于白盒测试,回归测试。JUnit一般不需要另行安装,通常集成的程序设计平台,如Eclipse、JBuilder等都会装有JUnit。
3 设计简单的Java类的单元测试用例来解析面向对象单元测试
3.1 选取待测试的Java类
为使学生更易理解,案例的选择要先易后难。我们可以用HelloWorld为例说明JUnit是如何进行单元测试的,因为每一种语言在其学习用书的第一个例子通常都是HelloWorld,它最简单了。以下是代码:
// HelloWorld.java
packageHelloWorld ;
public class helloWorld {
public String sayHello( ) {// 返回测试字符串的方法
returnstr;
}
private String str;
}
3.2 设计测试用例,帮助学生掌握测试步骤
为了对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、在漫长的地质历史中,经过自然界的作用,古代生物的(
)、(
)或(
)埋藏在地下变成了跟(
)一样的东西,这些东西就是(
)。
2、英国生物学家达尔文,1859年出版了(《
》)一书,全面提出了(
)。他认为,生物的繁衍是在(
)的过程中发生的,同一物种内哪些个体(
),它就比其他个体更容易(
)下来。
3、写出马的进化顺序(
)、(
)、(
)、(
)、(
)
二、判断题(在你认为对的题后画√,错的画×)(5分)
1、化石的形成是它们自己死后变成的
(
)
2、达尔文的生物进化学说的核心就是自然选择学说(
)
3、古代的马与现代的马没有什么差别
(
)
4、喙大而强壮的地雀更适宜吃外壳坚硬的种子
(
)
5、为了吃到更高处的树上的嫩叶,长颈鹿的颈长得特别长(
)
三、观察与分析(17分)
1、观察下图是什么化石?推想:这种化石是怎样形成的?(5分)
2、现有青色青蛙和淡黄色青蛙,研究它们的生存环境。(12分)
(1)如果都生活在有青草的水边,哪种易被蛇吃掉?哪种易生存下来?(4分)
(2)如果都生活在有沙滩的水边,哪种易被蛇吃掉?哪种易生存下来?(4分)
(3)通过以上分析,你有什么发现?(4分)
四、根据你学过的知识,回答下面的问题。(13分)
1、你见过或知道哪些具体的生物化石,请至少写出四种。(4分)
篇10
1. 注音写字:(8分)
痴想() 隐秘() 喧téng() 盘虬卧龙()
训诫( ) 耸立() 迂回() 仙露qióng()浆
lín峋() 卑微( ) 宽shù( ) 伶仃( )
zhù立( ) 瞬间() chuò泣() 鹤lì( )云端
2.原文填空。(5分)
(1)在千年之后,也许会有人对我留下的痕迹反复观看,反复把玩,并且会忍不住轻轻地叹息:“这是一颗怎样 又怎样 的心啊!”
(2)花和人都会遇到各种各样的不幸,但是 。
(3)余忆童稚时,能张目对日, , ,故时有物外之趣。
3. 解释文言字词:(4分)
(1)项为之强( )(2)以丛草为林( )
(3)兴正浓( ) (4)方出神( )
4.写出句子所用的修辞方法。(3分)
(1)山那边的山啊,铁青着脸。( )
(2)在山的那边,是海吗?是的!人们啊,请相信——( )
(3)紫色的大条幅上,泛着点点银光,就像迸溅的水花。( )
5.对文章作者及主旨,叙述错误的是:()(2分)
A.《在山的那边》,“山”与“海”两个相对的形象,是富有象征意义的,这首诗抒写童年的想望和困惑,成年的感悟和信念,启示人们要实现远大的理想,必须百折不挠,坚持奋斗,要一次次地战胜失望,不停地翻过无数座山。
B.《走一步,再走一步》,是过来人的经验之谈,在人生道路上,艰难险阻并不可怕,大困难可以化整为零,化难为易,走一步,再走一步,定能战胜一切困难。作者是英国作家莫顿•亨特。
C. 《紫藤萝瀑布》,由紫藤萝瀑布的辉煌、藤萝的命运,感悟生命的长河是无止境的,一时的不幸,个人的不幸,都不足畏;人生,也应该是豁达的,乐观的,奋发的,进取的。作者是当代女作家宗璞。
D.《童趣》回忆童稚时代的种种情趣,人是有精神活动的,在精神作用之下,自能享受无穷的物外之趣。作者是清代文学家沈复,字三白。本文选自《浮生六记》。
6.选出标点有误的一项:( )(2分)
A. “嗨,慢着,”我软弱地哀求道,“我没法——”
B.“我在开花!”它们在笑。“我在开花!”它们在嚷嚷。
C.那里装的是什么仙露琼浆?我凑上去,想摘一朵。
D.流着流着,它带走了这些时一直压在我心上的焦虑和悲痛,那是关于生死谜,手足情的。
7.下列文言句子的停顿(“•”表示很短暂的停顿),有误的一项是:( )(2分)
A.能/张目•对日B.昂首/观之,项/为之•强
C.使/之冲烟/而飞鸣D.作/青云•白鹤/观
8. 写出我国四大名著:《 》《 》《 》《 》。(2分)二、古诗文阅读理解 (共14分)
9.依据上下文提示默写 (3分)
①夏蚊成雷, 。
② , ,盖一癞虾蟆
10,解释下列文言语句中加点词语的含义:(4分)
① 徐( )喷以烟。
② 果如鹤唳( )云端。
③ 神游其中,怡然( )自得。
④ 物外( )之趣
11,翻译下列文言语句:(4分)
① 夏蚊成雷,私拟作群鹤舞于空中。
② 一日,见二虫斗草间。
12,《童趣》一文的作者,童年时对着蚊子徐喷以烟,让蚊子“冲烟而飞鸣”。他做这件事感受到 “物外之趣”。从这一事例中,你感到怎样才能成为一个富有生活情趣的人? (3分)
(二)阅读下面选自课外的文字,回答文后的问题。(共12分)
1989年发生在美国洛杉矾一带的大地震,在不到4分钟的时间里,使30万人受到伤害。在混乱的废墟中,一个年轻的父亲安顿好受伤的妻子,便冲向他七岁的儿子上学的学校。他眼前,那个昔日充满孩子们欢笑的漂亮的三层教室楼,已经变成了一片废墟。他顿时感到眼前一片漆黑,大喊:“阿曼达,我的儿子!”跪在地上大哭了一阵后,他猛地想起自己常对儿子说的一句话:“不论发生什么,我总会跟你在一起的。”他坚定地站起身,向那片废墟走去……
这位父亲心中只有一个念头:“儿子在等着我。”他挖了8个小时、12个小时、24个小时、36个小时,没人再来阻挡他。他满脸灰尘,浑身上下破烂不堪,到处是血迹。到第38个小时,他突然听到底下传出孩子的声音:“爸爸,是你吗?”
是儿子的声音!父亲大喊:“阿曼达,我的儿子!”“爸爸,真的是你吗?”“是我,是爸爸,我的儿子。”“我告诉同学们不要害怕,说只要我爸爸活着就一定会来救我,也就能救出大家。因为你说过不论发生什么,你总会和我在一起尸“你现在怎么样?有几个孩子活着?”“我们这里有14个同学,都活着,我们都在教室的墙角,屋顶塌下来架了个大三角形,我们没被砸着。”父亲大声向四周呼喊:“这里有14个孩子,都活着!快来人!”过路的几个人赶紧上前帮忙,50分钟后,一个安全的小出口开辟了出来。父亲声音颤抖地说:“出来吧!阿曼达。”“不,爸爸,先让别的同学出去吧!我知道你会跟我在一起,我不怕。不论发生什么,我知道你总会和我在一起。”
这对了不起的父子在经历了巨大的磨难后,无比幸福地紧紧地拥抱在一起。
13:这里所选几段文字,叙述了一个什么事件? (2分)
14.你认为文中画横线的句子写得好吗?请说明理由。 (2分)
15,请写出文中表现阿曼达父子心心相连的一句话。(2分)
16,文章结尾段说这对父子“了不起”。仔细阅读文章,根据文中对父子二人的描写,说他们各有什么了不起的地方? (2分)
17.请你根据文章内容的提示,想像地震刚刚发生、教室刚刚塌陷时阿曼达的处境,写他的所见、所想和所做。篇幅不超过一百字。(4分)
答案12. 一个富有生活情趣的人,应该富有观察力和想像力,善于发现生活中的美。
13.阿曼达的父亲在地震后怀着坚定的信念成功地抢救出儿子。(此题亦可从阿曼达的角度总结。)
14.划线句子用了排比手法,渲染时间延续过程又长又慢,突出强调父亲以坚韧不拔的毅力不停地行动,顽强地救出儿子。
深刻表现了他对儿子的挚爱之情。(这是一个开放型题目,可以从不同角度回答问题,能答出一个方面即可,不必求全。)
15.这句话是“不论发生什么,我总会跟你在一起”。