单元测试十篇

时间: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 软件测试简述

软件测试是在软件投入商用前,对软件需求分析报告、设计规格说明书和编码的最终复查,是软件质量保证的关键方法,软件测试并不等于程序测试。它贯穿于软件定义和开发的整个过程,因此,软件需求分析、软件概要设计、软件详细设计和程序编码等各阶段所得到的文档,包括需求规格说明书、概要设计说明书、详细设计说明书,以及源代码都是软件测试的测试对象。随着软件规模的不断扩大,以及软件设计复杂程度不断的提高,软件开发中出现失误或缺陷的概率越来越大。随着市场对软件质量重要性的认知程序的提高,因此软件测试在软件项目实施过程中的重要性尤为突出。软件测试将会成为一个具有很大发展前景的行业,市场将需要更多具有丰富测试技术和先进管理经验的测试技术员和项目经理。

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-),男,陕西武功人,工学硕士,助理工程师,主要研究方向:雷达信号处理算法、数字中频收发机和嵌入式软件测试。

单元测试篇3

关键词:单元测试;嵌入式软件;RTRT

信息技术的飞速发展带动在嵌入式系统中软件越来越多地取代硬件的功能,研究嵌入式软件测试技术用以保证软件质量成为近年来关注的热点。单元测试作为软件测试过程中的第一阶段,是软件测试的基础,效果会直接影响后期测试;另外,从修复软件缺陷与花费的成本关系考虑,在单元测试阶段修复缺陷将比在后一个阶段发现缺陷节约5~10倍的成本,可见无论从质量还是成本的角度单元测试都是非常关键的。但在实际测试中,仅依靠人工编写函数并统计分析结果的测试方法已不能满足测试准确性和测试效率的要求,要引进自动化的测试工具。RTRT是一个跨平台组件和运行时分析测试工具,支持测试的各个阶段,其单元测试自动生成测试用例模板,自动生成测试桩程序,自动运行测试程序,自动生成测试报告。

一、单元测试基本理论

(一)单元测试定义

单元测试是对每个最小的软件模块进行的正确性检验的测试,在于发现各模块内部可能存在的各种差错。包含模块接口测试、局部数据结构测试、路径测试、错误处理测试和边界测试,依据详细设计说明书和源程序清单,从程序的内部结构出发设计测试用例。主要采用白盒测试的测试用例,辅之以黑盒测试,使之对任何合理和不合理的输入,都能鉴别和响应。

(二)单元测试环境

单元是软件的基本组成模块,但本身不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,必须为每个单元测试开发驱动模块和桩模块。驱动模块相当于被测模块的主程序,它接收测试数据,把这些数据传送给被测模块,然后输出实测结果。桩模块是指用来替代被测模块调用的子模块。所以被测模块、与它相关的驱动模块及桩模块,同时包括测试用例是共同构成一个单元测试测试环境必需的要素。基于交叉开发环境,嵌入式软件单元测试环境分为基于宿主机和目标机环境两种。宿主机中单元测试与通用软件测试相同。目标机中的单元测试被测模块运行在目标机中,所有驱动模块和被测模块的数据传递都需要网线或者串口线完成,测试工具还要将测试结果再传送到宿主机中。单元测试都可以在宿主机平成,对特别指定在目标机中进行的测试必须在目标机完成。

(三)单元测试的覆盖评测

单元测试中主要的评价方法是覆盖评测,指所测试的源代码占代码总数的百分比。为了保证软件代码都被执行到,防止从不执行到的代码存在潜在的缺陷,导致产品失效。主要包括语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖等。语句覆盖指设计较少的测试用例,使被测程序中每个语句至少执行一次;判定覆盖,即程序中每个判定的每个可能的结果都应该至少执行一次;条件覆盖,要求程序中每个判定的条件的所有可能值至少执行一次。由上述内容可知,一个完整的单元测试若完全利用人工来执行,则需要开发相应的测试驱动和桩程序,根据需求设计不同测试用例或大量测试用例组合,在宿主机和目标机环境下运行测试程序,判断测试用例是否正确,是否达到需要的测试覆盖率,最后编写测试报告。在代码修改的情况下,还要进行回归测试。测试过程比较繁琐且不受控,这导致很多程序员迫于时间和成本压力,逃避单元测试,结果本应单元测试解决的软件缺陷在后续的测试中较难查找和定位,花费更多的时间和成本来修复问题。自动化测试工具解决了由传统手工测试带来的困扰,典型的嵌入式软件测试工具包括CodeTest、Testbed和RTRT,即Rational Test RealTime的首字母缩写,具有强大的测试分析功能。

二、IBM RTRT嵌入式软件单元测试

(一)RTRT简介

RTRT是IBM Ratioanl提供的嵌入式软件代码级自动化测试工具集,成功地提供了自动化的、可重复的、可追踪判定的、标准化的测试,对提高嵌入式软件可靠性和开发测试速度起着巨大的帮助作用。所具有的突出特性如下:

1.支持广泛的测试功能,覆盖测试的各个阶段,包括静态度量、代码规则检查、单元测试、内存分析、覆盖率分析、代码运行时跟踪、性能分析和基于消息的系统测试。

2.为单一的测试环境中的宿主机和目标机进行自动化的单元测试、运行时分析。

3.自动创建和部署单元的测试桩模块和测试驱动程序。

4.绘制内存和性能曲线并对运行时追踪进行可视化显示。

5.支持代码的静态分析和基于MISRA标准的代码规则检查。

6.直接在目标机上进行测试和分析,支持所有从8位微芯片到64位RTOS。

(二)RTRT单元测试工作原理分析

RTRT单元测试工具支持C、C++、Jave和Ada语言编写的代码,提供全自动化的解决方案,大幅度提高了测试效率。分析RTRT的单元测试工作原理如下图1(以.c文件为例)。

图1显示了RTRT单元测试时测试程序经编译、链接、运行到测试报告产生的整个过程。开发人员在自动生成的测试脚本的编辑环境中根据需求开发测试用例,设计输入和预期输出。在模拟环境或目标机环境下自动运行测试程序,测试报告产生器自动生成测试报告,展示通过或失败的测试用例和代码覆盖率分析报告,发现错误可直接修改,自动进行回归测试。RTRT的变量测试包括所有的全局变量、函数间传递参数和函数返回值。RTRT基于TDP的目标机部署技术,通过对该技术进行定制可以支持全面的嵌入式目标系统,使RTRT可以同时对宿主机和目标机进行测试和调试,并对两者进行有效协调。RTRT单元测试阶段支持绝大多数项目要求的语句覆盖率、决策覆盖率、MC/DC覆盖率。

(三)基于RTRT的单元测试步骤设计

通过以上分析结合几个项目单元测试之后,我们总结了使用RTRT进行单元测试的基本步骤如下图2所示。

三、RTRT单元测试实例

以电器嵌入式软件豆浆机代码为例。目前电器产品由传统机械式控制向嵌入式的智能化控制转型,电器产品的安全也不仅限于传统的电气、电磁、机械及环境等方面,软件也成为需要检测的重点。选取豆浆机Relay单元,主要功能为继电器控制。部分代码如下:

void Relay(void)

{if(irq_r)//处理继电器动作请求

{if(lr_on)//转换继电器开

{

if(!f_lr_on)

{

f_lr_on=1;

hms3=2;//延时200ms

t2ms=0;

}

else

{

if(!hms3)//转换继电器确认打开

…………….

}

RTRT自动生成relay函数的测试例用设计模板,包含函数中出现的每个全局变量,编写上述if语句为真的测试用例,只需要编写测试输入与预期输出。如下:

VAR irq_r,init = 1,ev=init

VAR lr_on,init = 1,ev=init

VAR f_lr_on,,init=0,ev=1

VAR hms3,init=2,ev=init

VAR 2ms,init=0,ev=init

预期值与实际测试运行结果比较,生成测试报告会自动判断测试用例是否通过,可根据代码路径的覆盖要求,在测试模板中设计不同测试用例,达到需要的覆盖率,并在测试覆盖率报告中查看覆盖率百分比。为获得可靠的代码质量保证,继续根据未执行到的代码情况,编写合适的测试用例,使代码覆盖率得以提高。

四、总结

本文首先分析了嵌入式软件单元测试的基本理论,测试过程复杂,工作量较大,所以在实际的测试中,完全依靠人力确保单元测试有效实施存在困难,自动化的测试工具RTRT提供了全套自动的解决方案,自动生成测试脚本、测试程序、桩,减少了测试工作量,能自动进行回归测试,并且自动生成测试报告,以图形的形式使测试结果一目了然。不仅提高了测试效率,而且保证了测试质量。强大的TDP定制使RTRT可以支持大多数嵌入式产品的软件测试,在嵌入式领域已逐渐被广泛应用。

参考文献:

[1]蔡建平.嵌入式软件测试实用技术[M].北京:清华大学出版社,2010.

[2]姜龙,王冬星.使用IBM Rational Test RealTime进行嵌入式软件测试[J].电脑学习,2010,32(3):135-136.

[3]徐润德,陈亚,赵慕奇.基于LDRA Testbed的软件单元测试[J].海军航空工程学院学报,2011,26(3):356-360.

[4]/software/awdtools/realtime.

[5]马可.嵌入式车载电子系统软件测试方法的研究与应用[D].重庆:重庆大学,2008.

单元测试篇4

关键词:分类;规则;面向对象;继承;封装;多态

中图分类号:TP311文献标识码:A文章编号:1009-3044(2010)08-2010-02

The Study of Object Oriented of the Unit Test Based on Rule

ZHANG Ke-hong

(School of Statistics, Lanzhou Commercial College, Lanzhou 730030, China)

Abstract: The Object Oriented of the unit test depend on rule,which is required and analysed by the software system of Testing case. The traditional unit tests analysis the internal logic structure of programs, but The Object Oriented's unit test I am talking about stress the tests of the inherit, encapsulation and diversity of the class in Object Oriented development besides the function of the ones.This document depends on Data Mining of rule classification.

Key words: classification; rule; object oriented; inherit; encapsulation diversity

面向对象的测试技术是面向对象开发的重要一环,也是软件质量和成熟度的保证。单元测试的指导思想是:能自生编译运行的最小程序单元[4]。这一理论对面向对象开发的软件也是适用的,但它的不足是没有明确在面向对象的测试中把方法还是把类看作单元,如果把方法看作单元会给以类为单元的面向对象的开发和测试带来混乱,所以在软件系统测试用例库的单元测试中以类为单元进行测试。

数据挖掘是指在数据中发现有效的、新颖的、潜在有用的、最终可理解的模式。为了从大量数据的低层数据中抽取高层知识,数据挖掘利用其他学科知识:机器学习、模式识别、数据库、统计理论、人工智能、专家系统中的知识获取、数据可视化,高性能计算等[9]。基于规则的分类是数据挖掘的分类方法中比较有效的一种技术,它是适用于从少量信息和知识中获取有用的信息,它的这一特点也可以在以类为单元进行测试中得到应用,也是对软件测试技术的改进。

1 软件系统测试用例库介绍

软件测试项目的管理活动包含测度、度量、估算、风险分析、进度安排、跟踪和控制[6]等,而软件测试项目管理的基本内容是计划、组织和监控,从另一个角度来说它有八个工作领域,即测试范围管理、时间管理、成本管理、质量管理、人力资源管理、沟通管理、风险管理和过程管理[10]。

软件系统的开发工作有很大的工作量,软件测试的工作占有很大的比重,因为软件测试工作存在于软件系统测试用例库软件开发的各个阶段,所以软件测试项目的管理活动也不是锁定在那一个阶段,而是存在于需求分析、概要设计、详细设计、编码阶段、安装与维护的各个阶段[3]。

在软件系统每一个测试阶段,需要设计与之相关的测试用例,而测试用例设计和执行是软件系统测试工作的核心,直接关系到测试的效率、结果,也是工作量最大的任务之一,同时BUG的管理一般由数据库系统来支持,如果在软件系统中没有很好的测试管理系统也就不能提高测试的效率。软件系统测试用例库的建设也是基于上述目标,当然测试用例库的建立有利于跟踪和统计执行测试结果的报告 ,也有利于实现软件系统测试用例的标准化、回归测试和系统的质量分析。

软件系统测试用例库包括基本测试数据维护、测试信息查询、安全、帮助、测试数据库管理六个模块,通过UML画出软件系统测试用例库的用例图1。

2 软件系统测试用例库单元测试中类测试的充分性

类测试充分性是面相对象中类测试的重要条件,也是质量的保障,我们在设计软件系统测试用例库单元测试用例的时候能不能保证对执行的语句每一条都考虑到,能不能找到程序中的每一个Bug,同时也要考虑到相反的问题,那就是在效率优先的前提下有没有必要做到找出所有的Bug,也要考虑到类的继承、多态、封装等特点以及这些特点给测试带来的在传统测试中从没遇到的新困难。为了有效地进行面向对象的单元测试就要考虑类测试的充分性,它有3个标准[6]:

1) 基于类的状态转换的充分性:类的状态有很多,在设计测试用例的时候要考虑到要充分考虑了的状态转换,如果在测试用例中没有体现出至少一次的状态转换,那就意味着测试是失败的,同时也要说明就是测完所有的状态也可能存在着Bug。

2) 基于限制的充分性:对每一个操作来说它都可能存在前置约束条件和后置约束条件。在设计测试用例时就要考虑到这些约束条件对操作的影响,特别是要注意约束条件出现的可能性。

3) 基于路径的充分性:在设计测试用例时还要考虑基于路径的测试是否完全,也就是说在测试用例都执行完时,程序中的每行代码都尽可能执行一边。但此时要强调测试的效率问题。

3 基于规则的单元测试技术研究

基于规则的分类法使用一组IF-THEN规则进行分类,其表达式为:IF 条件THEN 结论,规则的IF部分乘坐规则前件,THEN部分是规则的结论。条件是由一个或多个连接词AND连接的属性测试组成,规则的结论是包含一个类预测,如果给定的测试用例,其规则前件中的条件都成立,则规则前件被满足,说明规则覆盖该测试用例。一般规则的提取有决策树和顺序覆盖算法,规则可以用覆盖率和准确律来评价,其定义为[8]:

其中ncovers为规则覆盖的测试用例数,ncorrect为规则正确分类的测试用例数,|D|为测试用例库中D的测试用例数。

在设计软件系统测试用例库类的测试用例时,用基于规则的思想考虑路径的测试是否完全,也就是说在测试用例都执行完时,程序中的每行代码都尽可能执行一遍。但此时要强调测试的效率问题。例如:软件系统测试用例库的模糊查询void CMainDialog::BlurTestSch(),主要是关键字KEY填写和四个查询类别的选择,四个查询类别是项目编号(XMBH)、优先级(FIRST)、是否通过(YN)、和时间(TIME),优先级又包括致命(D)、严重(S)、一般(U)、微小(M),用决策树提取模糊查询的规则如表1。

通过上述的规则,有关软件系统测试用例库的模糊查询void CMainDialog::BlurTestSch()

的测试通过void CMainDialog::OnTest()实现,其主要步骤如下:

void CMainDialog::OnTest()

{

CTestingSet m_testingset;//定义CTestingSet类的对象

if(!m_input.IsEmpty())

{

if(pare("项目编号")==0)

{

CMainDialog::BlurTestSch();

MessageBox("选择项目编号关键字成功!");

}

if(pare("优先级")==0)

{

CMainDialog::BlurTestSch());

MessageBox("选择优先级关键字成功!");

}

if(pare("是否通过")==0)

{

CMainDialog::BlurTestSch();

MessageBox("选择是否通过关键字成功!");

}

if(pare("时间")==0)

{

CMainDialog::BlurTestSch();

MessageBox("选择时间关键字成功!");

} }

else

{CMainDialog::BlurTestSch();

MessageBox("请填写查询关键字成功!");

} }

通过测试程序的运行,我们发现通过基于规则的分类方法设计的测试用例是非常有效的,例如在本次测试中设计测试数据集D=10,其中规则2时人为设计的错误的规则,主要用于XMBH为空的测试。

它们的覆盖率为:ncovers(1)=…= ncovers(9)=1/9。(下转第2021页)

(上接第2011页)

它们的正确率有区别,主要是规则2覆盖两个测试用例,它的正确率 ncorrec(2)=1/2,其余的正确率是 ncorrec(1)=1/1,ncorrec(3)=…= ncorrec(9)=1/1。

从这些数据说明基于规则的分类方法使面向对象的测试的效率方面有很大的提高,这也是对软件测试技术中白盒测试的比较有意义的探索,也是数据挖掘的方法和软件测试技术有益的尝试,从而促进软件测试技术的发展。

4 结束语

从软件的生存周期看,单元测试是指在程序文档结束以后进行的测试,它在测试技术中主要是白盒测试,也就是说它是针对程序的逻辑结构进行的测试。从另一方面来说面向对象的开发技术下的面向对象的测试也是和传统意义的测试有很多的不同点,尤其是面向对象类的继承、封装、和多态给测试造成了很大的困难,所以在本文中结合数据挖掘中的基于规则的分类技术这些特征的设计。又因为不管是传统意义的测试还是面向对象的测试,设计测试的依据是软件系统测试用例库规格说明书、软件系统测试用例库设计文档和软件系统测试用例库使用说明书,如果是设计文档错误,不管哪种测试软件质量就难以保证,当然测试的设计也就没有保障。即使测试以后发现是设计的错误,这时修改的代价是相当昂贵的。因此,较理想的做法是深入了解软件的特点,按软件工程各阶段形成的文档,分别进行严格的审查和测试。总之应通过各种方法和新技术提高测试效率和软件系统测试用例库的健壮性、正确性和有效性!

参考文献:

[1] 郭宁.UML及建模[M].北京:清华大学出版社,2007.

[2] 国刚,周峰,孙更新.UML与Rational Rose 2003 软件工程统一建模原理与实践教程[M].北京:北京电子工业出版社,2007.

[3] Fenton N E,Pfleeger S L.软件度量[M].2版.北京:机械工业出版社,2004.

[4] Jorgensen P C.软件测试[M].2版.北京:机械工业出版社,2003.

[5] Priestley M.面向对象设计UML实践[M].2版.北京:清华大学出版社,2005.

[6] 古乐,史九林.软件测试技术概论[M].北京:清华大学出版社,2004.

[7] 宫云战.软件测试[M].北京:国防工业出版社,2006.

[8] Han Jiawei,Kamber M.数据挖掘的概念与技术[M].北京:机械工业出版社,2008.

单元测试篇5

关键词:导弹;模拟训练;单片机;单元测试

中图分类号:TP207 文献标识码:B

文章编号:1004-373X(2008)06-168-03

A Certain Missile Unit testing Simulated Training System Design

BAI Weibing LI Jimin2,YU Hao3

(1.Ordance N.C.O Academy of PLA,Wuhan,430075,China;

2.Department of Optical & Electronic Engineering,Ordnance Engineering College,Shijiazhuang,050003,China;3.Army 63856,Jilin,137000,China)

Abstract:For the supporting simulated training devices of a certain missile unit testing device,a set of simulated training devices are designed based on software and hardware.The status of switches and buttons is detected by CPU,and results are given in nixie tubes and LEDs by software.The key hardware techniques such as band-switch detecting and voice operation,and the key software techniques such as flow data stand-alone and menu control are discussed in this paper.The software flow charts are also given.

Keywords:missile;simulated training;singlechip;unit testing

由于某型导弹单元测试设备没有配套的模拟训练设备,部队装备保障人员的训练一直都是在实装上进行的。使用实装进行训练,增大了实装的设备磨损,缩短了其使用寿命,而且操作人员的误操作很有可能对装备造成损害,甚至造成重大装备事故。为了解决这个问题,这里研制了某型导弹单元测试模拟训练系统。一般的模拟训练系统分为3种:完全使用硬件,完全使用软件及硬件结合软件。完全使用硬件的方案不够灵活,而完全使用软件的方案又不能给人实际操作的感觉。因此,采用最后一种方案,由单片机检测外部开关、按钮等元件状态,然后再由软件来判断结果,在数码管和指示灯上进行显示。

1 总体方案

软硬结合模拟方案是在单片机硬件电路的基础上,使用软件模拟原测试仪的测试流程。操作面板各个波段开关、拨动开关和按钮等元件的状态都读入单片机,然后由单片机根据程序存储的流程信息控制数码管、指示灯等显示元件给出相应反馈信息。整个系统的组成框图如图1所示。

单片机采用具有20 k程序存储器和256 B RAM的89C55;由于面板上波段开关比较多,为了节约I/O资源,采用A/D读取波段开关档位的方法;语音电路用来在系统训练模式时播放操作提示信息,在系统考核模式时播放考核成绩;液晶显示用于显示操作提示信息和系统工作状态;键盘显示控制采用键盘显示控制芯片8279管理面板上的数码管、指示灯、测试按钮和用来控制系统工作模式的控制按钮。

2 硬件设计

某型导弹单元测试仪上使用了大量的波段开关和拨动开关。波段开关和拨动开关有很多个节点,要单片机去读取每一个节点,单片机的I/O资源就会严重短缺。为了解决这个矛盾,系统采用了电阻分压A/D检测的方法。波段开关电阻分压的原理图如图2所示。

在图2中,0脚连接GND;10脚连接VCC;11脚连接到A/D的输入通道。当波段开关打到档位n时,A/D测到的电压为(n/10)VCC。这样,一个波段开关只需一根线即可检测其所在档位。拨动开关的连接方式与波段开关类似。

系统的A/D芯片采用了美国MAXIM公司的串行A/D芯片MAX1038。MAX1038是一款8位的ADC芯片,采用5 V单电源供电,12个通道,I2C串行接口,最大采样速率188 ks/s,内部集成时钟和一个4.096 V的参考电压源[1]。MAX1038和输入的连接电路图如图3所示。

为了增强模拟训练的效果,增加训练模式下的操作提示功能,在系统中设计了语音发声电路。语音电路的核心部分采用的是ISD4004-08单片语音录放芯片。ISD4004-08是美国ISD公司开发的,片内集成了振荡器、防混淆滤波器、平滑滤波器、音频放大器、自动静噪及高密度多电平闪烁存贮阵列等。内部的E2PROM存储器,可以反复擦写。采用所谓模拟存储技术,声音无需A/D转换和压缩就可以直接存储,没有A/D转换误差,在一个记录位(bit)可以存储多达250级声音信号,相当于通常A/D技术记录量的8倍,很好地实现了语音还原效果,而且能录能放,控制简单灵活,单片录放时间为8 min。其次,将快速闪存作为存储介质,无需电源即可保存数据长达100年,重复记录10 000次以上。同时,接口简单,开发时所需电路简单。ISD4004-08的连接电路图如图4所示。

3 软件设计

系统软件根据功能划分为软件“引擎”、系统初始化、液晶控制、键盘管理、显示控制、语音播放控制、开关读取和流程数据8个模块。软件结构图如图5所示。

软件“引擎”其实是系统软件的一个主循环结构,由他检测各种状态条件,然后根据状态条件调用执行相应模块。软件“引擎”的概念把流程数据和程序执行代码分离,流程的改变不需改动代码,从而提高了编程效率,方便了代码的修改和移植。

模拟训练系统的工作模式分为训练模式和考核模式。在训练模式情况下,系统要给出操作步骤名称和操作方法提示,帮助使用者正确操作。考核模式则在使用者经过一段时间训练以后检验其训练效果。因此,考核模式下就不再给出操作步骤名称和操作方法提示,并且当要对操作过程进行计时,最后给定操作者考核成绩。训练模式的流程图如图6所示。考核模式的流程图如图7所示。

为了提高编程的效率,提高程序的可靠性,降低代码量,在系统设计时使用将流程数据和控制代码分离的办法。将流程数据和控制代码分离的办法在工控机测试软件的编写中早已被广泛应用。由于工控机有操作系统和数据库的支持,所以技术上实现起来非常容易。而单片机没有操作系统和数据库的支持,并且单片机可利用的资源非常有限,因此从技术上实现将流程数据和控制代码分离比较困难。该技术的关键在于使用合适的数据结构来表达流程数据。

以配电器测试为例说明这种数据结构。很明显在这个数据结构里,必须包含步骤名称、开关按钮状态、提示声音、结果数据和流程顺序等信息。首先定义每个步骤的数据类型,代码如下:

typedef struct

{

uchar ProcName[26]; //步骤名称

uchar BodongState;//拨动开关和按钮状态

//0位为S2,1位为S5,2位为S6,3位为S11,1为上,0为下

//4位为S3,5位为S13,6位为S12,1为按,0为不按

uchar S7State;//波段开关S7状态

uchar S8State;//波段开关S8状态

uchar S9State;//波段开关S9状态

uchar S10State;//波段开关S10状态

uchar LedDisp;//指示灯字段码

uchar VoltDisp[5];//电压表字段码

uchar SecDisp[5]; //毫秒表字段码

uint VolFirstMaster;//提示声1主语位置

uint VolFirstAction;//提示声1动作位置

uint VolSecondMaster;//提示声2主语位置

uint VolSecondAction;//提示声2动作位置

uint VolThirdMaster;//提示声3主语位置

uint VolThirdAction;//提示声3动作位置

} ProcStruct;

然后,要使用数组来表达各个步骤地顺序结构。自检流程部分的数据声明如下所示:

//自检流程表

ProcStruct code SelfTestFlow[Info_SelfTestFlow]=

{

};

由于系统使用了一块128×64的点阵液晶来显示系统状态和提示信息,所以就具备了采用菜单技术控制系统工作模式的硬件条件。以配电器模拟训练系统为例,其工作模式分为考核模式和训练模式,测试种类包括自检、配电器测试和副配电器测试。其控制菜单结构如图8所示。

控制按键总共设向上、向下、确认和取消4个按键。同级之间的菜单选项转换通过向上、向下2个键来现。按下确认键,进入下级菜单。按下取消键,回到上级菜单。为了用数据结构来表征菜单,首先要建立一个表达菜单选项的数据类型。菜单选项数据类型声明如下:

typedef struct //菜单定义的数据结构

{

uchar KeyStateIndex;//当前状态索引号

uchar KeyDnState;//按下"向下"键时转向的状态索引号

uchar KeyUpState;//按下"向上"键时转向的状态索引号

uchar KeyCrState;//按下"回车"键时转向的状态索引号

uchar KeyEscState;//按下"返回"键时转向的状态索引号

void (*CurrentOperate)();//当前状态应该执行的功能操作

} KbdTabStruct;

然后要声明一个数组表示菜单的结构:

KbdTabStruct code KeyTab[SIZE_OF_KEYBD_MENU]=

{

{0,7,14,1,0,(*TrainModeMenu)},//训练模式菜单

{1,3,5,2,0,(*TrainSelfTestMenu)},//训练模式自检菜单

{2,2,2,2,2,(*TrainSelfTestFun)}, //训练模式自检执行函数

{3,5,1,4,0,(*TrainPeiTestMenu)},//训练模式配电器测试菜单

{4,4,4,4,4,(*TrainPeiTestFun)},

//训练模式配电器测试执行函数

{5,1,3,6,0,(*TrainFuPeiTestMenu)}, //训练模式副配电器测试菜单

{6,6,6,6,6,(*TrainFuPeiTestFun)},//训练模式副配电器测试执行函数

{7,14,0,8,7,(*TestModeMenu)},//考核模式菜单

{8,10,12,9,7,(*TestSelfTestMenu)},//考核模式自检菜单

{9,9,9,9,9,(*TestSelfTestFun)},//考核模式自检执行函数

{10,12,8,11,7,(*TestPeiTestMenu)},//考核模式配电器测试菜单

{11,11,11,11,11,(*TestPeiTestFun)},//考核模式配电器测试执行函数

{12,8,10,13,7,(*TestFuPeiTestMenu)},//考核模式副配电器测试菜单

{13,13,13,13,13,(*TestFuPeiTestFun)},//考核模式副配电器测试执行函数

{14,0,7,15,14,(*AboutMenu)}, //关于菜单

{15,15,15,15,15,(*AboutFun)},//关于执行函数

};

4 结 语

用硬件模拟装备外部操作元件,用软件来模拟装备内部功能的模拟训练系统设计方案即可以完全实现装备操作的模拟,给操作者实际的操作感受,又可以方便地增加辅助功能,增强训练效果。本文设计的某型导弹单元测试模拟训练系统已经在院校教学和部队训练中进行试用,收到了良好的效果。

参考文献

[1]MAX1038 Datasheet.Maxim Integrated Products Inc.2003.

[2]马忠梅,籍顺心,张凯,等.单片机的C语言应用程序设计\[M\].北京:北京航空航天大学出版社,2003.

单元测试篇6

1.最早通过实验测定出空气组成的科学家家是( )。

A.法国的拉瓦锡 B.英国的汤姆生

C.瑞典的舍勒 D.意大利的阿伏加德罗

2.下列变化,属于化学变化的是( )。

A.酒精挥发 B.潮湿的衣服变干

C.海水晒盐 D.火药爆炸

3.下列物质属于氧化物的是( )。

A.空气 B.氧气 C.氧化铝 D.高锰酸钾

4.下列四种性质中,有一种与其他三种有本质区别,这种性质是( )。

A.颜色 B.状态 C.硬度 D.可燃性

5.下列物质属于纯净物的是( )。

A.五氧化二磷  B.医用的生理盐水

C.高锰酸钾加热制氧气后的剩余物 D.雪碧饮料

6.下列有关氧气性质的叙述错误的是( )。

A.氧气是一种化学性质比较活泼的气体

B.它能跟所有的物质发生化学反应

C.在氧化反应中一般都有热量放出

D.物质跟氧气的反应都能发光放热

7.下列物质在盛有氧气的集气瓶中燃烧,集气瓶底部应放少量水或细沙的是( )。

A.木炭 B.硫粉 C.铁丝 D.红磷

8.早期化学家为了认识空气的本质,将一些物质放在密闭的容器中进行实验,结果发现,每次实验都有约五分之一的空气不知去向。有时化学家把这约五分之一的空气称为“有用空气”,这种“有用空气”是指( )。

A.氮气 B.氧气 C.二氧化碳 D.稀有气体

9.下列反应属于分解反应的是( )。

A.硫 + 氧气 二氧化硫

B.高锰酸钾 锰酸钾 + 二氧化锰 + 氧气

C.铁 + 氧气 四氧化三铁

D.蜡烛 + 氧气 二氧化碳 + 水

10.暂时存放一集气瓶氧气, 正确的方法是( )。

A.瓶口朝下,盖上玻璃片 B.瓶口朝下,不要玻璃片

C.瓶口朝上,盖上玻璃片 D.瓶口朝上,不要玻璃片

11.下列变化不属于缓慢氧化的是( )。

A.铁生锈 B.酿酒 C.蜡烛燃烧 D.食物腐烂

二、填空题

12、按体积计算,空气中含量最多的气体是 ,它大约占空气体积的百分比是 ;含量居第二位的气体是 ,它大约占空气体积的百分比是 。

13、根据事实,写出有关化学反应的文字表达式及其所属的基本反应类型。

(1)点燃镁条作信号弹: 。

(2)燃烧红磷制造烟幕弹: 。

(3)燃烧木炭: 。

(4)高锰酸钾受热: 。

三、实验题

14.实验室制取氧气时,如果用排水法集气时,当气泡 放出时就可以收集。当停止反应时,如果先熄灭酒精灯,再把导管从水槽里撤出,造成的后果是 。如果用向上排空气法收集时,如何证明该瓶内的氧气已满:

。如何证明一瓶无色气体是氧气: 。

15、已知在通常情况下,过氧化氢 二氯化锰 水 + 氧气,且反应迅速。据此设计两套用下图所示仪器组装成的制取和收集氧气的装置,并绘制出装置图。

单元测试篇7

1.某人射击1次,命中7~10环的概率如下表所示:

则该人射击一次,至少命中9环的概率为 .

2.某校高一、高二、高三学生共有3200名,其中高三800名,如果通过分层抽样的方法从全体学生中抽取一个160人的样本,那么应当从高三的学生抽取的人数是_____________.

3.化简:C22+C23+C24+…+C210=_____________(可用组合数表示).

4.(1-x3)(1+x)10的展开式中,x5的系数是 (用数字作答).

5.已知某人5次上班途中所花的时间(单位:分钟)分别为x,8,9,10,11,这组数据的平均数为10,则其方差为_____________.

6.某班级共有学生54人,现根据学生的学号,用系统抽样的方法,抽取一个容量为4的样本.已知2号,28号,41号同学在样本中,那么还有一个同学的学号是_____________.

7.阅读下面的伪代码:

S0

i1

While i

ii+1

SS+i

End while

Print S

上述伪代码的输出值为_____________.

8.箱中有号码分别为1,2,3,4,5的五张卡片,从中一次随机抽取两张,则两张号码之和为3的倍数的概率为_____________.

9.已知AB是圆O的一条直径,在AB上任取一点H,过H作弦CD与AB垂直,则弦CD的长度大于半径的概率是_____________.

10.一射手对同一目标独立地进行4次射击,已知至少命中一次的概率为8081,则此射手的命中率是_____________.

11.市内某公共汽车站有10个候车位(成一排),现有4名乘客随便坐在某个座位上候车,则恰好有5个连续空座位的候车方式共有_____________种.(用数字作答)

12.某城市的交通道路如图,从城市的东南角A到城市的西北角B,不经过十字道路维修处C,最近的走法种数有_____________(用数字作答).

13.设一辆汽车在前进途中要经过4个路口,汽车在每个路口遇到绿灯(允许通行)的概率为34,遇到红灯(禁止通行)的概率为14.假定汽车只在遇到红灯或到达目的地才停止前进,随机变量ξ表示第一次停车时已经通过的路口数,则P(ξ=3)=_____________.

14.已知C1006n=C1007n,(2x-3)n=a0+a1(x-1)+a2(x-1)2+…+an(x-1)n,x∈R,则a12+a222+a323+…+an2n的值为_____________.

二、解答题:本大题共6小题,共计90分

15.(本题满分14分)

从标号为A、B、C、D四个相同的小球中任取两个分别放到甲、乙两个盒子中,若每个小球被取到是等可能的,求:

(1)共有多少种放法?

(2)D球恰好放在甲盒中的概率是多少?

(3)A、B两球同时被放到两个盒中的概率是多少?

16. (本题满分14分)

在参加世界杯足球赛的三十二支球队中,随机抽取20名队员,调查其年龄分别为:25,21,23,25,27,29,25,28,30,29,26,24,25,27,26,22,24,25,26,28.

①完成下面的频率布表;

②画出频率分布直方图;

③据此估计全体队员在哪个年龄段的人数最多,占总数的百分之几?

17.(本题满分15分)

甲、乙、丙三个同学一起参加某高校组织的自主招生考试,考试分笔试和面试两部分,笔试和面试均合格者将成为该高校的预录取生(可在高考中加分录取),两次考试过程相互独立.根据甲、乙、丙三个同学的平时成绩分析,甲、乙、丙三个同学能通过笔试的概率分别是0.6,0.5,0.4,能通过面试的概率分别是0.5,0.6,0.75.

(1)求甲、乙、丙三个同学中恰有一人通过笔试的概率;

(2)设经过两次考试后,能被该高校预录取的人数为ξ,求随机变量ξ的期望E(ξ).

18.(本题满分15分)

现有5名男生、2名女生站成一排照相,

(1)两女生要在两端,有多少种不同的站法?

(2)两名女生不相邻,有多少种不同的站法?

(3)女生甲要在女生乙的右方(可以不相邻),有多少种不同的站法?

(4)女生甲不在左端,女生乙不在右端,有多少种不同的站法?

19.(本题满分16分)

某公园准备建一个摩天轮,摩天轮的是一个周长为k米的圆.在这个圆上安装座位,且每个座位和圆心处的支点都有一根直的钢管相连.经预算,摩天轮上的每个座位与支点相连的钢管的费用为8k元/根,且当两相邻的座位之间的圆弧长为x米时,相邻两座位之间的钢管和其中一个座位的总费用为[(1024x+20)x100+2]k元.假设座位等距离分布,且至少有两个座位,所有座位都视为点,且不考虑其他因素,记摩天轮的总造价为y元.

(1)试写出y关于x的函数关系式,并写出定义域;

(2)当k=100米时,试确定座位的个数,使得总造价最低.

20.(本题满分16分)

规定Cmx=xx-1…x-m+1m!,其中x∈R,m是正整数,且C0x=1,

这是组合数Cmn(n,m是正整数,且m≤n)的一种推广.

(1)求C5-15的值;

(2)组合数的两个性质:①Cmn=Cn-mn;②Cmn+Cm+1n=Cmn+1是否都能推广到Cmx(x∈R),

m是正整数的情形?若能推广,则写出推广的形式并给出证明;若不能,则说明理由;

(3)已知组合数Cmn是正整数,证明:当x∈Z,m是正整数时,Cmx∈Z.

参考答案

一、填空题:

1. 0.3; 2. 40; 3. C311(165) 4. 207; 5. 2; 6. 15; 7. 5049; 8. 25; 9. 32; 10. 23 11. 480; 12. 66; 13. 27256; 14. 1

二、解答题:

15.(1)共有12种.

(2)D球放到甲盒中包含3个基本事件,概率为3/12=1/4

(3)A、B两球放到盒中包含2个基本事件,概率为2/12=1/6

16.(1)

(3)在(24.5,26.5)内人数最多,占总数40%.

17.解:(1)分别记甲、乙、丙三个同学笔试合格为事件A1、A2、A3;

E表示事件“恰有一人通过笔试”

则P(E)=P(A1A2A3)+P(A1A2A3)+P(A1A2A3)

=0.6×0.5×0.6+0.4×0.5×0.6+0.4×0.5×0.4

=0.38

(2)解法一:因为甲、乙、丙三个同学经过两次考试后合格的概率均为p=0.3,

所以ξ~B(3,0.3),故E(ξ)=np=3×0.3=0.9.

解法二:分别记甲、乙、丙三个同学经过两次考试后合格为事件A,B,C,

则P(A)=P(B)=P(C)=0.3

所以P(ξ=1)=3×(1-0.3)2×0.3=0.441,

P(ξ=2)=3×0.32×0.7=0.189,P(ξ=3)=0.33=0.027.

于是,E(ξ)=1×0.441+2×0.189+3×0.027=0.9.

18.解:(1)两端的两个位置,女生任意排,中间的五个位置男生任意排,

A22·A55=240(种);

(2)把男生任意全排列,然后在六个空中(包括两端)有顺序地插入两名女生;

A55·A26=3600(种);

(3)七个位置中任选五个排男生问题就已解决,因为留下两个位置女生排法是既定的;

A57=2520(种);

(4)采用去杂法,在七个人的全排列中,去掉女生甲在左端的A66个,再去掉女生乙在右端的A66个,但女生甲在左端同时女生乙在右端的A55种排除了两次,要找回来一次.

A77-2A66+A55=3720(种).

19.(1)设摩天轮上总共有n个座位,则x=kn,即n=kx,

y=8kkx+kx[(1024x+20)x100+2]k=k2(10x+1024x+20100),

定义域{x|0

(2)当k=100时,令y=100(1000x+1024x+20),

f(x)=1000x+1024x,

则f′(x)=-1000x2+5121x x32=12564x=(12564)23=2516,当x∈(0,2516)时,f′(x)

当x∈(2516,50)时,f′(x)>0,即f(x)在x∈(2516,50)上单调增,

ymin在x=2516时取到,此时座位个数为1002516=64个.

20.解:(1)C5-15=-15-6…-195!=-C519=-11628.

(2)性质①不能推广,例如当x=2时,C12有意义,但C2-12无意义:性质②能推广,它的推广形式是Cmx+Cm-1x=Cmx+1,

有C1x+C0x=x+1=C1x+1;当m≥2时,

Cmx+Cm-1x=xx-1…x-m+1m!+xx-1…x-m+2m-1!

=xx-1…x-m+2m-1!(x-m+1m+1)

=xx-1…x-m+2x+1m!

=Cmx+1.

(3)当x≥m时,组合数Cmx∈Z;当0≤x<m时,Cmx=0∈Z;

当x<0时,-x+m-1>0,所以

Cmx=xx-1…x-m+1m!

=-1m-x+m-1…-x-1-xm!

单元测试篇8

1. 0是( )

A.正有理数 B.负有理数 C.整数 D.负整数

2. 中国第一座跨海大桥——杭州湾跨海大桥全长36千米,其中36属于( )

A.计数    B.测量 C.标号或排序 D.以上都不是

3. 下列说法不正确的是( )

A.0既不是正数,也不是负数 B.0的绝对值是0

C.一个有理数不是整数就是分数 D.1是绝对值最小的数

4. 在数- , 0 , 4.5, |-9|, -6.79中,属于正数的有(  )个

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

5. 一个数的相反数是3,那么这个数是( )

A.3 B.-3 C. D.

单元测试篇9

关键词:Ku波段;射频单元;便携测试架;卫星通信

中图分类号:TN927 文献标识码:B 文章编号:1004373X(2008)1506502

Design and Implementation on the RF Unit of Ku-band Portable Equipment

ZHANG Zhenquan,XU Yanhong,WEI Ming,ZHANG Zhenhua

(Unit 69046,Urumqi,830002,China)

Abstract:With the development of satellite communication,the high frequency and high integrated satellite equipment are widely used.The operator can′t judge the fault is located whether RF unit or host machine when they appear the troubles.In this article,the design and implement of RF measure instrument is introduced,which can fleetly,well and truly and is no danger or harm to judge the fault on the RF unit of Ku-band portable equipment using the microwave technology and high frequency parts of an apparatus.

Keywords:Ku-band;RF unit;portable test equipment;satellite communication

随着通信技术的进一步发展,卫星通信技术得到了突飞猛进的飞跃,卫星通信装备目前被广泛使用。卫星通信装备逐渐向小型化、智能化、集成化的方向发展。使用频段已经从C波段向更高的频段拓展,Ku波段便携式卫星设备射频单元就是和主机分离开来的微波器件,当整个设备出现故障时,操作人员无法科学判断设备故障在于射频部分还是在于主机部分,因此利用微波知识研制的Ku波段便携设备射频单元测试架,可以利用现有仪表对Ku波段便携站进行精确测量,可以完全分离主机与射频单元,从而可以对射频单元、主机部分分别独立进行测试;同时使用该测试架,可以进行单载波发射,从而准确调试天线及馈源极化方式及极化角。

1 测试架测试原理

对于Ku波段卫星便携式设备其射频单元一般由HNB和LNA共同组合完成信号的发送和接收功能。要准确判断故障在射频单元,就要完成对上行和下行两部分的测试,Ku便携站射频单元上行测试连接图如图1所示。

发射测试接口位于被测设备与测试仪表之间,通过该接口,为被测上行(发射)设备提供直流24 V电源及10 MHz参考频率信号,使该上行被测设备正常工作,同时通过接口输入L波段信号(950~1 450 MHz),经过被测设备变频至Ku频段(14~14.5 GHz),并经过高功率放大器输出到测试仪表进行测试,如果输出信号频率、电平正常,则该上行(发射)设备工作正常,否则,可以判断该上行(发射)设备故障,如图2所示。

接收测试接口仍位于被测设备与测试仪表之间,通过该接口,为被测下行(接收)设备提供直流15 V电源及10 MHz参考频率信号,使该下行(接收)被测设备正常工作,同时通过波导/同轴转换接口输入Ku波段信号下行信号(12.25~12.75 GHz),经过被测设备低噪声放大器放大,并经过变频器变频至L频段(950~1 450 MHz),输出到测试仪表进行测试,如果输出信号频率、电平正常,则该下行(接收)设备正常,否则,可以判断该下行(接收)设备故障,如图2所示。

从上行(发射)测试接口、下行(接收)测试接口的测试连接图可以看出:

测试接口在测试连接图中起到一个桥梁的作用,在正常情况下,无法直接使用仪表测试该射频单元,从而判断射频单元故障与否;使用该接口,可以很方便地实现对射频单元的测试,从而判断射频单元工作情况。

该测试接口主要实现被测设备正常工作需要的工作信号及输入信号的合成,使得以前无法使用仪表直接测量的设备可以直接使用现有仪表进行方便的测量。

2 测试架技术设计框图及实现

在图3中,虚线框内的射频部分采用微带电路实现,虚线框内的中频部分采用传统高频电路实现,虚线框内的直流部分采用铁芯绕线电感及穿心电容实现。

从总体技术方案图中可以看出,接收和发射测试接口在结构上基本一致,不同的地方仅在于射频信号流向及直流供电电压、电流,在实际研制过程中,考虑到使用综合信号源作为提供测试接口工作的信号,而综合信号源具有很宽的电平调节范围,基本可以不用考虑信号衰减的问题,因此,课题组制作的接收测试接口和发射测试接口可以互换使用。

2.1 射频部分高通滤波器的设计及实现

根据射频部分输入(或输出)频率范围为950~1 450 MHz,选择低端截止频率fc1=800 MHz,可以保证在950~1 450 MHz频段的衰减值基本为常数,具有增益(衰减)稳定性、平坦性,其中起主要作用的是电容,合理选择高通滤波器电容是高通滤波器设计的关键。

2.2 中频部分带通滤波器的设计及实现

根据中频端口输入信号频率范围为10 MHz这一特性,利用高频电路原理,设计利用电感与电容组合形成的带通滤波器,带通滤波器高端截止频率设计为100 MHz,低端截止频率设计为1 MHz,即1 MHz≤fc2≤100 MHz,使信号在1~100 MHz的频率范围内具有增益(衰减)平坦性,在10 MHz频段衰减基本为定值,同时,起到隔离直流信号和射频信号的作用,电容选择50 pF,考虑到直流及射频部分对于中频信号具有衰减性的影响,理论计算的电感量距离实际需要的电感量差距较大,电感值无法使用公式直接计算,因此,电感根据实际测量值选择。

2.3 直流部分低通滤波器的设计及实现

直流部分需要保证15 V及24 V直流电源通过,同时阻止射频信号及中频信号。由于24 V直流电源工作于大电流(约1.5 A),因此,绕线电感必须保证压降尽量小,绕线线径尽量粗,同时,绕线线径太粗,形成的分布参数大,易形成寄生高频电容,对高频、中频信号影响大,合理选择直流通路的电感成为直流通路设计的关键,在直流输入端,采用穿心电容,滤除高频成分,保证电源部分供电质量,电容实际选择值为1 000 pF,电感值根据实际测量值选择。

3 实验结果及分析

该测试架综合微波信号、中频信号、电源信号,实现多种信号的合成传输,在设计及实现上,创造性地采用微带电路与传统高频电路相结合,针对射频信号、中频信号、直流信号的特点,分别采用高通、带通、低通滤波器,巧妙地解决了多频段信号合成传输的问题,图4是该测试架的实物图,通过实验该测试架性能稳定、有效地使用在本单位的设备维修工作中。

参 考 文 献

[1]梁昌宏.微波技术基础\.西安:西安电子科技大学出版社,2003.

单元测试篇10

关键词:遗传算法;模拟退火算法;自动化;单元测试

中图分类号:TP311.53

随着计算机技术的发展,计算机智能技术也逐渐得到了开发应用,生物智能、人工智能以及算计智能的联合应用和优势互补,使智能技术的应用更加有效。随着计算机的普及,软件产品已经深入人们生活工作的各个领域,成为日常工作、生活、娱乐的必不可少的组成部分。而对于软件安全性能的要求则在很大程度上促进了软件测试的发展。软件测试是软件安全性能和良好的使用性能的重要哦保证,贯穿于软甲开发过程的始终,保证软件开发每个阶段的质量。

软件的质量需要经过软件功能测试才能得到保障,而单元测试则是软件功能测试的基础和前提,是软件测试的起步环节。单元测试针对的对象是程序中最小的软件模块,一般是软件开发人员通过编写小段代码,针对被测试代码的某个较小较明确的功能进行测试,看其是否可以正常运行。

1 参数化单元测试

单元测试作为软件测试的起步环节,同时也是不可或缺的环节,对软件的质量起着至关重要的作用。在实际测试中,单元测试代码的手动编写工作是一件极其复杂且耗时的工作,并且所选测试实例不能保证覆盖较大的代码,具有很大的随机性,进而降低单元测试的效率。

参数化单元测试将程序规格与测试用例生成分离,解决了传统单元测试存在的弊端。运用参数化单元测试方法,程序要实现的功能需要人工书写代码,然后测试工具就会通过对测试代码的分析和检测,自动根据测试的实际路径生成对应的实例和测试代码,实现代码的高覆盖率。

2 基于遗传算法的搜索策略

在退火算法的运行过程中溶入遗传算法,称为退火遗传算法,依旧是说,所谓的退火遗传算法,实际上是由退火算法和遗传算法两个部分组成,结合双方各自的优点和特性,所得到的新的综合性计算方法。

2.1 遗传算法依据

遗传算法的提出源于计算机发展初期提出的所谓“人工进化系统”,它是根据生物进化的特点,借鉴优胜劣汰的自然遗传法则,参照达尔文进化论的理论思想而形成的一种不依赖具体问题的直接搜索方法,在运用遗传算法进行数据计算时,不仅要用到进化学的概念,同时也要符合遗传学说的基因遗传原理。

运用遗传算法进行计算时,一般要经过几个基本步骤,即:初始化数据、数据的择优选择、随机对选中的两个数据进行交叉互换、根据遗产学说的基因变异原理所进行的个体数据变异、全局最优收敛,进而得出需要的结论或数据。

2.2 模拟退火算法依据

模拟退火算法是根据固体退火过程和组合优化问题之间的相似性而提出的。在对物质进行加热处理时,物质组成中粒子之间的布朗运动加强,当加热到一定程度时,温度达到物质熔点,固体物质会转化为液体形态。这时,对物体进行退火处理,使温度降低,则物体的粒子运动减弱,并且会逐渐趋于平衡和有序,最终达到物质性质的稳定。

模拟退火算法运用温度参数进行控制,当温度较高时,数据运动变化剧烈,从而使解的区间变化较大,容易接受到较差解;当温度降低,数据运动逐渐减缓时,解的区间也会逐渐趋于稳定,这时候就可以得到较为优良的解果,从而对遗传算法的不足进行弥补。

2.3 退火遗传算法依据

退火遗传算法,是指以遗传算法为主要运算方法,并在运算过程中引入模拟退火算法,使两者达到优势互补,进一步对群体进行优化调整。退火遗传算法可以分为两个组成部分:首先,运用遗传算法的进化理论,产生一个相对较为优良的群体,然后利用模拟退火算法,对群体中的个体进行优化和调整。

(1)针对遗传算子进行改进

所谓遗传算子,是指在遗传算法中,用来维持遗传多样性所使用的算子,遗传多样性是生物或数据演化过程中不可或缺的一个必要性质,遗传算子在遗传算法中类似于自然中的适者生存原则,对于个体的进化会产生巨大的影响。

初始进化阶段,为了保持种群的多样性,便于从中进行选择,应该加大对于个体间相互交叉和互换的概率;在进化的终极阶段,频繁的交叉互换不利于种群的稳定和最优解的产生,因此需要适当地减小个体间的联系和活动,减少最优解的求解难度,缩短求解过程。针对种群中的个体而言,在进行变异操作时,对优势个体进行较小的变异,劣势个体进行较大的变异,可以使其更加趋近于最优解。

(2)合理构造适应值函数

适应值函数可以针对遗传算法的求解过程进行指导,对最优解的数值区间进行限定,在适应值函数的构造过程中,引入关键分支的概念。关键分支,指在选定的路径中,对存在的结点的真实性进行判定,求解过程可能会在这些结点处产生偏离,引发错误,而这些会导致求解过程偏离目标路径的结点,就是关键分支。

适应值函数在遗传算法中是用来区分个体优劣的标准,是进行自然选择的唯一依据。原始适应值函数是对问题最初求解目标的反映。适应值对个体的判断有两个截然相反的情形:适应值越大,个体性能越好和适应值越小,个体性能越好。在遗传算法中,对适应值函数是有限制的,即适应值函数必须为非负数,这就需要选择较大的适应值函数来选择较为优良的个体。

为了使被测数据中每个参数都可以得到评估,根据相关数据对判断结点进行数据转换,在保证个体数据得到充分计算的情况下,不会对程序主体造成破坏

3 实验结果与分析

为了对退火遗传算法的性能进行验证,采用判断三角形的相关测试程序,将退火遗传算法与单纯的遗传算法进行对比,对进化每一代的最大适应值进行记录。

从实验数据可以看出,初始进化阶段,个体的产生具有随机性,在对实验进行多次运行后,可以看出,最高适应值之间差异十分明显。进化过程初期,两种算法的最高适应值都存在较大的波动,而随着遗传的不断进行,退火遗传算法的最大适应值范围逐渐趋于稳定,而遗传算法的最大适应值范围仍不稳定。因此可以得出结论,将模拟退火算法与遗传算法相互配合,可以有效避免单一遗传算法的不足,加快对最优解的计算速度,减少计算所需时间。根据实验的数据,对多次实验的结果进行统一总结,可以看出,相对于单一的遗传算法而言,退火遗传算法的进化速度大大加快,减少了计算时间。

4 结束语

经过实验和分析,我们可以看到,生成高代码覆盖率的测试用例是自动化测试的关键问题,是提高自动化测试性能的主要手段。针对遗传算法存在的缺陷,将遗传算法和模拟退火算法相互结合,实现优势互补,针对群体数据中的遗传算子以及适应值函数作出改进,最终通过对比实验,验证了退火遗传算法的有效性和优越性。

参考文献:

[1]赵慧娟,孙文辉.基于退火遗传算法的单元测试方法[J].计算机工程,2013,39(1):49-53.

[2]杨学红.自动化单元测试概述[J].信息通信技术,2012,(1):66-68.