文档库 最新最全的文档下载
当前位置:文档库 › 基于LXI_VXI总线的ARINC429驱动开发

基于LXI_VXI总线的ARINC429驱动开发

基于LXI_VXI总线的ARINC429驱动开发
基于LXI_VXI总线的ARINC429驱动开发

技术创新

《微计算机信息》(测控自动化)2010年第26卷第5-1期

360元/年邮局订阅号:82-946

《现场总线技术应用200例》

传感器与仪器仪表

基于LXI-VXI 总线的ARINC429驱动开发

Development of ARINC429Driver Based on LXI-VXI BUS

(北京航空航天大学)

焦秀珍路辉郎荣玲

JIAO Xiu-zhen LU Hui LANG Rong-ling

摘要:在介绍ARINC429总线的应用以及仿真测试硬件和软件环境的基础上,提出了EXC-4000VXI 自带的仪器驱动无法在

LXI 零槽控制器下正常工作的问题,重点阐述了利用LabWindows/CVI 开发基于LXI 零槽控制器的EXC-4000VXI 仪器驱动器的设计和实现,最后利用自行开发的LXI-VXI 驱动器实现了在飞行数据管理仿真系统中对某型飞机各类429信号的仿真、采集和测试功能。

关键词:ARINC429;LXI 零槽控制器;飞行数据管理仿真系统;驱动设计中图分类号:TP206文献标识码:B

Abstract:On the basic of introduction of the ARINC429application and its hardware &software environment for test or simulation,we propose that the driver of EXC-4000VXI cannot work well under the LXI slot-0control,So we focus on the design and develop -ment of the driver working under the LXI Slot-0control well using the software of LabWindows/CVI,then we achieve the simulation and acquisition of various ARINC429signal from a certain type of plane in the Flight Data Simulation Management.Key words:ARINC429;LXI Slot-0control;FDMS;Driver Design

文章编号:1008-0570(2010)05-1-0110-03

1引言

随着国内航空业的发展ARINC429总线的应用日益广泛,已推广到多种航空设备中,它克服了模拟传输带来的成本高、传输线多、可靠性差等缺点,并大大减轻了飞机和航空设备的重要,提高了信息传输精度和可靠性。ARINC429规范是航空电子设备数字数据传输标准,它是一种串行通信的航空电子总线,将飞机的各系统间或系统与设备间通过双绞线互连起来,是各系统间或系统与设备间数字信息传输的主要路径,构成了飞机的神经网络。目前ARINC429已是商务运输航空领域应用最广泛的航空电子总线,如空客A310/A320、A330/A340飞机、波音公司的727、737、747、757和767飞机,麦道公司MD-11飞机等主要用到的是ARINC429总线。上世纪80年代我国在引入AR -INC429总线后,命名为HB6096,已在MA60,MA600和8IIM 中大量应用,ARINC429总线显然已成为飞机中航电系统之间以及航电系统与飞机其他系统之间信息交换和数据通讯的基础。与此同时在许多航空机载设备的检测维修中出现了大量对429信号的检测需求,这就使得在大型的飞参数据管理仿真系统中429信号的仿真和测试技术尤为重要。另外,ARINC429总线也在导弹、雷达等领域得到了应用。

飞行数据管理仿真系统主要是完成对飞行数据记录仪FDR 中的飞参信号进行实时仿真、

采集和校验等功能,用于再现飞机真实飞行过程,研制多功能飞行记录仪以及监控飞机健康状况和趋势预测,提高飞机安全性。目前先进的飞机中都包含大量的ARINC429信号,429信号的仿真和采集是整个仿真系统的重点,真实重现429总线信号不仅有利于飞行数据管理仿真系统的开发和仿真平台的搭建,而且对429信号的正确仿真验证能够提高飞参数据的故障诊断和趋势预测的准确率。

2ARINC429信号仿真测试的硬件和

软件环境

在硬件方面,目前常用的针对ARINC429总线信号仿真和测试的硬件测试板卡有如下几种:(1)利用单片机仿真测试ARINC429信号,DEI(Device Engineering Incorporated)公司生产的实现ARINC429通讯的DEI1016集成芯片和总线驱动器BD429芯片;HARRIS 公司生产的高性能HS-3282总线接口电路。(2)数字信号处理器DSP 芯片实现429信号的数据传输,比单片机的速度快,满足告诉的ARINC429数据传输的要求;(3)基于VXI 总线的仪器,美国Excalibur Systems 公司生产的EXC-4000系列板卡、EXC-2000系列板卡,采用母板加子模块结构的VXI 板卡,最多可以插8个子模块,支持A16、A24/A32寻址方式;(4)基于PXI 总线的仪器,由Ballard 公司生产的ARINC429数据采集卡采集ARINC429总线数据。一般来说,如果要开发429总线信号测试仪或者测试模块大多会选用易于操作、价格较低的单片机来实现。如果是开发大型的飞行数据仿真系统或者是实时检测总线信号的系统,则选择实时性和扩展性好的VXI 总线仪器或者是PXI 总线仪器。

在软件方面,根据用户实际开发环境和具体应用不同选择

不同的编程环境和软件架构。

选择合适的应用程序开发语言,能够减少很多不必要的工作,加快整个系统的开发过程。一般选择编程语言要满足如下几点:(1)对硬件接口操作简单,应用程序简洁,用户或其他设计人员易学、易维护;(2)若系统中要编写界面,要求界面要简单、友好、易操作和维护。一般的硬件测试仪器都支持C 、C ++、Delphi 、Phython 、LabVIEW 及LabWindows/CVI 等编程语言。开发环境可选相应的VC6.0++、LabWindows/CVI 及LabVIEW 。

3EXC4000LXI-VXI 仪器驱动器设计

在飞行数据管理仿真系统中,由于要仿真和采集的AR -

焦秀珍:硕士研究生

110--

邮局订阅号:82-946360元/年技术创新

传感器与仪器仪表

《PLC 技术应用200例》

您的论文得到两院院士关注INC429信号路数多,需要仿真不同航电设备或者是航电设备与其他设备之间通信的429信号,数据类型和格式不同,而且要求保障信号仿真和采集实时性和同步性。在飞行数据管理仿真系统中我们选用EXC 公司的EXC-4000VXI 系列的母板加子模块的VXI 总线仪器来测试和仿真多路不同设备间的429总线

信号。由于我们整个飞行数据管理仿真系统是基于LXI 、VXI 及PXI 多总线的系统,但EXC --4000VXI 板卡的子模块M4K429RT10自带的MXI-2总线驱动器无法在LXI 零槽控制器下正常工作,需自行开发适合在LXI 零槽控制器下工作的EXC-4000VXI 仪器驱动,用于完成对ARINC429总线信号的仿真和采集等功能。

自行开发的仪器驱动器应符合IVI (可互换的虚拟仪器)仪器驱动规范,编写的仪器驱动程序应是完整的一套软件模块,用户在应用程序中直接使用这些模块。仪器驱动程序的函数范围、模块化结构和层次化结构、设计和实现应保持一致,并且程序中应有完善的错误处理及程序注释或者帮助说明文件,版本管理等。

EXC-4000VXI 仪器驱动函数要提供测试需要的满足多种

ARINC429信号仿真、

采集功能的底层驱动函数,实现多个通道的信号收发自定义,能够设置ARINC429协议中三种不同的发送模式和接收模式,并且实现可编程的比特率方式。根据ICD 接口文件结合不同的429数据类型能够正确填充32位AR -INC429字,从而得到正确的仿真信号。

3.1仪器驱动器总体设计

EXCALIBUR 公司的ARINC429总线VXI 板卡的硬件采用母板加子模块的结构。其中母板型号为EXC-4000VXI,子模块为M4K429RT10。EXC-4000VXI 为C 尺寸VXI 板卡,寄存器基(Register Based),支持A16、A24/A32寻址方式,支持8bit /16bit 数据总线操作。EXC-4000VXI 最多能插8个子模块。EXC--4000VXI 板卡内存规划为A16和A24/A32两部分。A16空间占用64bytes,主要为板卡信息及板卡配置等全局寄存器,A24/A32空间占用1024Kbytes,作为8个子模块的地址空间,每个子模块占128Kbytes 。板卡内存规划见图1所示。

图1EXC4000板卡内存规划

1个M4K429RT10子模块可提供10个ARINC429通道,收发可自定义;具备可编程的比特率;支持单次(One-shot),循环(Loop)和多次(N times)三种发送方式;支持查找表(Loop-up table),独立(Independent)和混合(Merge)三种接收方式;具备故障注入及检测能力。发送通道的的内存规划如图2所示。接收通道的内存规划与发送通道相似,根据接收方式不同接收到的数据字和时间戳不同。

M4K429RT10的内存规划为三大部分,(1)Global Control Registers:全局寄存器;(2)Channel X Control Register:通道独立寄存器;(3)DataBlock:板载内存。在DataBlock 中定义了ARINC 429数据发送数据块的结构,每个Instruction Block 对应ARINC 429的一个Message,包括以下4个字段:(1)Control Word:故障注入相关;(2)Interword Delay/Data Word Counter:数据字间的延时;(3)Transmit Data Pointer:发送数据块的指针;(4)Interblock Time/Data Rate Word:数据块间的延时。图2M4K429RT10子模块发送通道内存规划3.2仪器驱动器详细设计

基于VXI 仪器ARINC429总线驱动的开发通过调用输入/输出(I/O)统一基础与格式的VISA 库函数对仪器进行操作和管

理,利用VISA 库中的资源配置类函数、

基于寄存器基和基于消息基的数据I/O 函数实现驱动的开发。驱动的开发环境选用具有函数功能面板的LabWindows/CVI8.5,因为LabWindows/CVI8.5实现对硬件寄存器的访问,并且包含了许多创建仪器驱动程序的开发、测试工具,并且继承了VISA 函数库,使编程人员可以方便地调用VISA 函数,进行ARINC429驱动函数的设计。驱动设计主要包括两方面工作,一是实现ARINC429信号的发送,即信号的仿真功能;另一方面是实现ARINC429信号的接收,即信号的采集功能。

ARINC429信号仿真功能仪器驱动设计的流程如下:(1)上电握手,根据仪器逻辑地址初始化板卡;

(2)根据仪器ID 对8个子模块进行仪器自检,自检成功后仪器ID 赋为0xA429,做好初始化准备等待用户访问;

(3)设置板卡中的模块或通道为发送模式,并使能相应寄存器状态;

(4)设置发送通道消息参数,如奇偶校验、

比特率、发送模式等,写发送指令堆栈指针地址及指令块数量到相应内存空间中;

(5)设置要传输的指令块中的消息参数,如字间隔、

消息间隔等,将要发送的ARINC 字写入内存中,按ARINC429协议规定,低地址存429_Hi_Word,高地址存429_Lo_Word,按M4K429RT10子模块发送通道指令块内容依次在内存中写入控制字、字间隔和ARINC 字数、传输指令块指针、消息间隔;

(6)写Global Start Register 寄存器开始发送消息,直到发送消息结束后关闭发送通道,关闭板卡仪器。

ARINC429信号采集功能仪器驱动设计的流程与仿真端大致相同,区别是在开始接收消息后,读取板卡内存中指定的数据,具体驱动函数设计流程如下:

(1)根据采集机箱EXC-4000的逻辑地址初始化板卡;

(2)设置板卡的某个模块或某些通道为接收通道,使能相应的寄存器;

(3)根据仪器ID 对某个子模块进行自检,自检成功后仪器ID 赋为0xA429,做好初始化准备等待用户访问;

111--

技术创新

《微计算机信息》(测控自动化)2010年第26卷第5-1期

360元/年邮局订阅号:82-946

《现场总线技术应用200例》

传感器与仪器仪表

(4)设置接收通道的参数信息,如比特率,奇偶校验、

循环接收模式;

(5)设置接收通道的接收方式,如顺序接收、

查找表接收方式;(6)设置接收通道的存储模式,如标准模式、

混合模式、数据只读模式;

(7)开始准备接收,清除循环标识位和数据;

(8)开始接收,读取内存中的数据,接收到的32数据前16位赋给相应存储模式下的偏移地址中的低字节,后16位赋给相应存储模式下的偏移地址中的高字节中。要注意的是不同存储模式下的接收字大小不同,要判读接收的数据是否存满整个buffer;

(9)直到接收结束后,关闭相应模块和通道,关闭仪器。3.3仪器驱动器仿真测试

为验证自行开发的ARINC429驱动,编写了一个发送2个Block 块(每个指令块包含一个ARINC429字)的仿真测试程序,实现ARINC429信号的仿真,可采用示波器观察仿真结果,图3所示发送的2个Block 消息块的32位ARINC429字。

图3发送2个32位ARINC429字

同时编写了选择独立模式为接收方式的采集驱动测试程序,实现ARINC429信号的接收。在采集之前要先闭合连接仿真验证间的开关,在我们飞行数据管理仿真系统中连接仿真和采集的开关模块选用2块NI 公司的SCXI-1169模块,一选一开关连接仿真和采集模块一对一的通道。在PXI1045机箱中的SCXI-1169开关模块,连接端口采用USB 接口可由上层仿真或验证工控机控制仿真验证间开关的操作。

自行开发的驱动需要通过大量严格的测试才能使得仪器驱动具有稳定性和可靠性,确保仪器驱动程序能够对仪器进行正确控制和通信。完善的驱动程序能够提供给上层应用程序编写用户完成对某些特定应用要求的程序。测试驱动的可靠性和

有效性后,就可以编译、

打包驱动函数并链接为DLL 形式,方便被LabVIEW 、LabWindows/CVI 、Visual Basic 、Visual C++或其他的Windows 开发工具调用。也可利用create distribute kit 工具将编写好的驱动程序制作安装程序方便安装使用。按照VPP 规范也可以将驱动程序的源文件和头文件提供给上层应用程序开发用户,以便用户能够实现对仪器使用的可扩展性。

4结语

通过合理详细的设计实现了EXC-4000VXI 板卡在LXI 零槽控制器下的仪器驱动器的开发,实现了仿真和采集各类429信号、三种不同配置收发模式、多模块和多通道的信号收发功

能,不同模块自检等功能。

自行开发的仪器驱动器能够提供给应用程序开发人员完整的源文件,上层用户使用源文件可将其看作是与系统其他部分集成的通用软件模块,便于上层用户对仪器驱动的理解、

修改和改进驱动程序以满足应用程序中某些特定的应用。目前在飞行数据管理仿真系统中我们利用自行开发的LXI-VIX 驱动器,实现了对某型飞机中各类429总线信号的仿真和采集,获得了飞机飞行过程中429信号的数据再现过程,有利于提高429飞参数据的故障诊断和趋势预测的准确率。本文作者创新点:提出了基于LXI-VXI 总线下的AR -INC429驱动设计流程,实现了对某型飞机各类429信号的仿真、采集和测试功能。参考文献

[1]王建新,杨世凤,等.LabWindows/CVI 测试技术及工程应用[M].北京:化学工业出版社,2006

[2]EXC--4000VME EXC--4000VXI User ’s Manual[M].Excal -ibur System Inc.2006

[3]M4K429RTx User ’

s Manual [M].Excalibur System Inc.2006

[4]429RTx &Discrete Software Tools Programmer ’s Refer -ence[M].Excalibur System Inc.2003

[5]秦红磊,路辉,郎荣玲.自动测试系统——

—硬件及软件技术[M].北京:高等教育出版社,2007

[6]程进军,肖明清.基于LXI 的多总线融合的自动测试系统[J].微计算机信息,2008,1-1:130-132

作者简介:焦秀珍(1985-),女,汉族,硕士研究生,主要研究方向为自动测试系统;路辉(1977-),女,汉族,副教授,自动测试系统开发。Biography:JIAO Xiu-zhen(1985-),female,Han,Datong,Major in Automatic Test System.

(100191北京北京航空航天大学电子信息工程学院)焦秀珍

路辉郎荣玲

(Beijing University of aeronautics and astronautics,School of Electronic and Information Engineering,Beijing,100191,Chi -na)JIAO Xiu-zhen LU Hui LANG Rong-ling

通讯地址:(100191北京航空航天大学电子信息工程学院新主楼F304)焦秀珍

(收稿日期:2009.05.26)(修稿日期:2009.08.26)

(上接第125页)

[4]江志红.51单片机技术与应用系统开发案例精选[M].北京:清华大学出版社,2008.

[5]赵鸿图.逆序CRC 编解码算法及在DS18B20中的应用[J].微计算机信息,2008,9-3:260-262.

作者简介:韩成浩,男,1972年6月生,朝族,硕士,副教授,电子信息工程专业。主要从事智能建筑控制系统方面的研究和教学工作。Biography:HAN Cheng -hao,male,born in July,1972,Korean race,master degree,associate professor,electronic information engineering major,doing the research and teaching in intelligent building control systems.

(130021吉林建筑工程学院)韩成浩

(Jilin Architecture and Civil Engineering Institute 130021,China)HAN Cheng-hao

通讯地址:(130021长春市红旗街1129号吉林建筑工程学院电气与电子信息工程学院)韩成浩

(收稿日期:2009.05.19)(修稿日期:2009.08.19)

112--

浅谈验收测试驱动开发

浅谈验收测试驱动开发 【摘要】软件行业已经发展了很多年,尽管新技术不断涌现,但是软件质量问题依然存在,最突出的两点就是较高的缺陷率和较差的可维护性。为了应对此类问题,驱动测试开发技术(ADD)应运而生,但是随着ADD技术的普及,它所隐藏的问题也浮出水面,最为人诟病的就是“不能满足客户需求”,因为测试人员只注重代码缺陷率而忽视了系统具体功能。本文阐述如何在ADD开发模式的基础上,结合验收测试驱动开发(ATDD)探讨如何开发适应于用户的系统。 【关键词】敏捷开发;验收测试驱动开发;软件工程 一、引言 极限编程方法理论中“测试驱动开发”是其一个重要组成部分,最早是由Kent Beck提出,并积极推广的一种软件开发方法。Kent Beck在他所著的《测试驱动开发》一书中指出“测试驱动开发”遵循“为明天编码,为今天设计”的观点。相比传统遵循“需求-设计-开发-测试”的软件开发流程而言,更强调测试优先,再通过编码和重构反复迭代最终构筑一个完整的软件系统。“测试驱动开发”在相当程度上了的确提高了开发人员的代码质量,而且在应对系统的可靠性也教之传统软件开发有着更大的优势,主要体现在客户需求变更时能灵活应对。然而软件问题中另一项“是否满足客户需求”确没有很好地解决。验收测试驱动开发(ATDD)针对这个问题,提出让客户参与到测试标准的制定,让软件满足客户需求。用ATDD 方法开发软件,开发人员更注重的是系统行为测试,而不是软件中每个模块,甚至每行代码的测试。构筑一个满足客户需求的软件系统,不仅仅是软件设计开发人员和测试人员靠个人能力能解决的,在此过程中需要客户参与进来,为打造可靠的软件提供有力的保障。 二、什么是ATDD 测试驱动开发(ADD)能够帮助开发人员开发出高质量的代码,保证开发人员所开发出的代码执行正确,但是这些执行正确的代码在很大程度上是针对的具体模块而不是整体的系统功能。在一定程度上不一定能够满足客户的需求。验收测试驱动开发(ATDD)是建立在TDD的基础上,TDD和ATDD既可以分开使用也可以配合使用,在帮助开发人员在提高软件质量的同时,也帮助开发人员开发出用户真正需要的软件系统。软件测试是软件工程的重要组成部分,在传统的软件开发当中,软件测试大概包括软件执行过程中是否存在BUG、系统中是否还存在其它缺陷以及系统是否与系统设计书保持一致几项内容,ATDD则在此基础上赋予了软件软件测试新的任务,即利用验收测试从系统功能的角度上驱动软件开发,解决软件不能满足客户需求或者是与客户设想相背离的问题。 总体而言验收测试驱动开发是包括客户在内的一个团体组织的活动,围绕着客户需求引入“用户故事”(user story)这种灵活的客户需求管理方式。客户和技术人员(包括设计、开发和测试)通过紧密的写作、有效的交流和沟通构筑可靠

总线型运动控制系统

总线型运动控制系统 传统运动控制系统中常以脉冲和模拟量作为控制信号,并将控制信号发送到电机驱动器中,再由电机驱动器驱动电机运行。得益于总线技术的发展,运动控制器厂家将总线技术应用运动控制器中。上位机通过总线将运动参数传送至电机驱动器,再由电机驱动器驱动电机运行。常见的总线技术有ProfiNet,ProfiBus,EhertCA T,RTEX,CCLINK等等。 总线型运动控制系统相对传统的运动控制系统有诸多优点。 1.接线简化。 在传统运动控制系统中,上位机与电机驱动器通过大量的数字量或者模拟量IO连接,以发送控制信号和接受反馈信号。这样会使接线数量增加,接线出错的几率比较大,线材成本上升,布线时间长而复杂。在总线型运动控制系统中,上位机的总线通讯接口可以通过线性拓扑方式连接多个支持总线通讯的电机驱动器。 2.拥有故障自诊断特性。 传统型运动控制系统中的上位机与电机控制器的信息交换是通过有限的IO进行的。能获取的信息是极有限。总线型运动控制系统拥有多种诊断功能。可以实时监控电机的运行状态,实时获取运行状态的信息。如果电机运行有异常,其相应的电机驱动器可通过总线向上位机发送异常信息。如线缆短路或短路、接头接触不良,电压异常等物理层诊断。 3.方便调试。 总线型运动控制系统,可以通过上位应用软件监控和调整各电机驱动器节点的参数。不用通过各电机驱动器的显示面板调整参数。 4.可靠性高 传统运动控制系统的中脉冲信号和模拟量信号,容易受到电磁干扰,可导致信号失真。总线型运动控制系统数字式通讯方式,无信号漂移问题。 总线型运动控制系统应用示例:3S总线控制系统通过EherCAT总线控制7轴运动。3S 总线系统可以控制多达128个轴,支持复杂插补运算;可控制多达10台不同类型的机器人;提供多达8192点数字量或模拟扩展功能;可接入视觉系统实现定位功能。

软件产品研发阶段的测试管理

软件产品研发阶段的测试管理 测试是开发中必不可少的工作 首先,一个软件产品或系统的开发成功,不仅仅是编写完为使用者提供服务功能的程序而已。软件程序编写的完成,其实只是完成了开发任务中的一半。与程序的开发相配合的、具有同样重要性的另一半工作,是对开发完毕的软件所进行必要的测试。 对测试的管理和执行,其重要性不亚于对程序本身的开发。你可以花费巨大的资源和努力进行程序的开发,可是你要是没有与此配套的完善的测试,所开发出来的软件往往会因为质量问题无法满足客户的要求和帮助你赢得市场的竞争。 近几年来国内信息业界的软件开发的成熟程度大大提高,很多公司都开始重视软件测试的重要性、并建立了与此相关的组织结构来保证测试工作得以执行。但是忽视或轻视测试工作的不良习惯和企业文化仍旧普遍存在。 在中国项目管理俱乐部的网站上有业界的同仁们反映了这样的情况:他的公司居然还采用所有的软件开发人员都只做程序编写、只有一个人担任软件测试工作这样一种组织结构,而且这个公司的领导认为只有程序的编写才属于实际的开发工作,因此只知道夸奖程序编写人员的工作成果、完全忽视测试人员的贡献。 虽然这样的近于荒唐的例子可能是极少数的极端现象,但在相当大比例的软件企业中测试人员往往仍旧是被当作“二等公民”看待,好像他们只是开发人员的配角而已,对软件最终是否合格和能否发行的判决,并没有实际的影响力。 一个成熟和高效的开发组织应该、也必须采取与此完全相反的做法:将软件的测试和开发放到同等重要的位置上,对软件的测试和开发给予同样程度的重视。这种项目管理的理念就要求对软件测试给予与软件开发相同的资源和支持,用同等的组织结构和人才来保证软件测试得到严格的执行。 微软公司就是用组织结构来保证产品开发的运作流程充分体现对软件测试的尊重、承认测试的重要性。微软总部各个产品部门的所有开发组织都有与程序开发团队并列的测试团队–任何开发组织都是由项目管理、软件程序开发、和软件测试三个并列的团队组成。 这样的“三驾马车”的组织结构,保证了测试团队是一个独立于程序开发团队之外的机构,软件测试的结果和测试人员的观点在这样的组织结构中不会被程序开发人员随意推翻或践踏,测试人员能够大胆申诉测试结果、坚持测试的判决、包括阻止不合格的软件发行。我在Windows操作系统部门进行视窗嵌入式操作系统的开发工作时,就碰到过好几起因为测试团队坚持测试结果的审判,从而阻止了开发团队能够按时发行开发完毕的软件的情况。

浅谈测试驱动开发(TDD)

浅谈测试驱动开发(TDD) 李群https://www.wendangku.net/doc/539511852.html, 测试驱动开发(TDD)是极限编程的重要特点,它以不断的测试推动代码的开发,既简化了 代码,又保证了软件质量。本文从开发人员使用的角度,介绍了TDD 优势、原理、过程、 原则、测试技术、Tips 等方面。 背景 一个高效的软件开发过程对软件开发人员来说是至关重要的,决定着开发是痛苦的挣扎,还是不断进步的喜悦。国人对软件蓝领的不屑,对繁琐冗长的传统开发过程的不耐,使大多数开发人员无所适从。最近兴起的一些软件开发过程相关的技术,提供一些比较高效、实用的软件过程开发方法。其中比较基础、关键的一个技术就是测试驱动开发(Test-Driven Development)。虽然TDD光大于极限编程,但测试驱动开发完全可以单独应用。下面就从开发人员使用的角度进行介绍,使开发人员用最少的代价尽快理解、掌握、应用这种技术。下面分优势,原理,过程,原则,测试技术,Tips等方面进行讨论。 1. 优势 TDD的基本思路就是通过测试来推动整个开发的进行。而测试驱动开发技术并不只是单纯的测试工作。 需求向来就是软件开发过程中感觉最不好明确描述、易变的东西。这里说的需求不只是指用户的需求,还包括对代码的使用需求。很多开发人员最害怕的就是后期还要修改某个类或者函数的接口进行修改或者扩展,为什么会发生这样的事情就是因为这部分代码的使用需求没有很好的描述。测试驱动开发就是通过编写测试用例,先考虑代码的使用需求(包括功能、过程、接口等),而且这个描述是无二义的,可执行验证的。 通过编写这部分代码的测试用例,对其功能的分解、使用过程、接口都进行了设计。而且这种从使用角度对代码的设计通常更符合后期开发的需求。可测试的要求,对代码的内聚性的提高和复用都非常有益。因此测试驱动开发也是一种代码设计的过程。 开发人员通常对编写文档非常厌烦,但要使用、理解别人的代码时通常又希望能有文档进行指导。而测试驱动开发过程中产生的测试用例代码就是对代码的最好的解释。 快乐工作的基础就是对自己有信心,对自己的工作成果有信心。当前很多开发人员却经常在担心:“代码是否正确?”“辛苦编写的代码还有没有严重bug?”“修改的新代码对其他部分有没有影响?”。这种担心甚至导致某些代码应该修改却不敢修改的地步。测试驱动开发提供的测试集就可以作为你信心的来源。 当然测试驱动开发最重要的功能还在于保障代码的正确性,能够迅速发现、定位bug。而迅速发现、定位bug是很多开发人员的梦想。针对关键代码的测试集,以及不断完善的测试用例,为迅速发现、定位bug提供了条件。 我的一段功能非常复杂的代码使用TDD开发完成,真实环境应用中只发现几个bug,而且很

基于测试驱动开发的高校突发事件辅助决策系统.doc

基于测试驱动开发的高校突发事件辅助决策系统 基于测试驱动开发的高校突发事件辅助决策系统 摘耍:由于高校的特殊性,导致突发事件的机会更多、危害更大,因此如何利用历史数据对高校突发事件进行预警和辅助决策显得十分重要。在探讨高校突发事件辅助决策系统的基础上,将测试驱动开发的方法应用于系统开发,实验证明可以明确高校突发事件辅助决策系统的开发需求,加速开发进程,改进软件的质量。 关键词:高校突发事件;辅助决策系统;测试驱动开发 目前,对于高校突发事件危机管理方面的应用研究比较欠缺,很多研究只是基于初步调查的经验总结和感性判断。因此将相关的前沿理论应用到突发事件管理的研究中,建立完善的突发事件辅助决策系统,为高校的管理者提供理论和实践依据是众多专家探讨的关键问题。将测试驱动开发TDD (Test-Dri VenDevel opment)的方法应用于系统开发,实验证明可以明确高校突发事件辅助决策系统的开发需求,加速幵发进程,改进软件的质量。 一、系统功能分析 高校突发事件辅助决策系统主耍具有突发事件预警和突发事件辅助处理两大功能。突发事件预警是指从根本上防止突发事件的形成、爆发,是一种超前的管理。预警系统是对预警对象、预警指标进行分析,从而获取预警信息,以便评佔信息、评价突发事件严重程度、决定是否发出突发事件警报。突发事件辅助处理是根据预警系统对突发事件的早期预测结果作决策,实施处理计划,把已经发生和未发生而将耍发生的事件的影响,控制在最小范围。 二、系统模块设计

根据上述分析,高校突发事件辅助决策系统可以划分为以下模块: 1、预警指标体系设定子模块。由于传统的事件跟踪的预警方法有着诸多弊端,高校突发事件辅助决策系统采用预警指标的方法。预警指标是依据对预警对象(事件、个人)的情况建立一套有监测功能的预警指标体系,通过预警指标收集信息,分析判断突发事件的成因、规模、类型、发生频率、强度、影响后果及发展和变化规律,进行突发事件的预测。 2、预警信息分析子模块。突发事件预警分析子模块主要工作是收集预警征兆信息,进行分析,根据分析结果,发布警报信息和对策信息。通过对学生所在的外部环境的分析研究,掌握客观环境的发展趋势和动态,了解与突发事件发纶有关的微观动向,从而敏锐地察觉环境的各种变化,保证当环境出现不利的因素时,能及吋有效地采取措施,趋利避害。 3、突发事件辅助处理子模块。突发事件管理既强调突发事件出现和发生之后的及时干预,乂重视对突发事件的处理,突发事件管理的偶然和突发性使得处理突发事件的应急计划的制定显得十分重要。在突发事件的应急计划屮,包括应对突发事件的策略、干预突发事件的规则、解决突发事件的程度和方法等。 4、数据查询功能子模块。系统具备全面简便的查询功能,可以按照所填的信息进行查询,快速生成处理报告。系统自带统计分析功能,可以为部分大量表的结果提供描述性统计量,能够实现对不同年份、性质、程度等基本统计量进行比较,大大方便了辅助决策及报告工作。 5、数据导出功能。系统具备全面轻松的数据导出功能,方便深入的科学研究。可以将全部量表的数据导出,从而很方便地实现深入的研究及完成辅助决策功能。 三、TDD在高校突发事件辅助决策系统的应用 1、TDD的概念 测试驱动开发TDD是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码。测试代码确定要编写产品的具体需求。TDD的基本思想是通过测试来推动整个开发的进行,但是测试驭动开发不是单纯的测试工作,而是把需求分析、设计、质量控制量化的过程。

wdm驱动开发之路

WDM驱动开发之路 写在前面:在专栏的前几期中,我们一起初步学习了vxd的开发技术。Vxd技术是很深奥的,不是一篇两篇文章能讲清楚,但你已经入了门,剩下的就要看你的修行了。多看书,多泡论坛(当然是上咱们的驱动开发网论坛了:->),多写程序…我的手不够用了。功到自然成嘛。不过话又说回来,vxd只是权宜之计,WDM才符合当今的潮流(程序员都是时髦人士,君不见先是VB、VC然后是asp、JSP、PHP,数也数不过来呀),Win9x寿终正寝时也就是vxd的末日,你不想随它而去吧(开个玩笑),那就随我来。 按笔者的想法,这篇文章写成连载形式,一次讲一个主题,并且必要时带着例子,让大伙step by step地把WDM驱动弄个透底,不想让大家觉得稀里糊涂,也不想让大家觉得白买杂志了。 今天我们一起讨论第一部分,了解篇。 (一)了解篇 WDM模型(Windows Driver Model)是微软公司为当前主流操作系统Windows98和Windows 2000的驱动程序设计的一种构架。它和传统的win3.x和win95使用的vxd的驱动是完全不同的体系结构。不过对于最终用户来说,WDM驱动程序在Windows98和Windows2000下的表现很相似。作为驱动开发人员来说,它在两者中有很多的不同。并且Windows98中的WDM只能算是Windowss2000中的WDM的一个了集。在Windows98中有一些驱动程序只能使用VXD来实现,如串行通讯驱动等。 要写驱动程序,首先要了解操作系统的结构。在WDM体系中,windows2000操作系统中是最标准的实现方式,Windows98则是部分兼容WDM结构。照微软的说法,Windows98和Windows2000 X86(Intel 架构)版本实现二进制码兼容(参见98DDK),Windows2000 x86版本与其它CPU平台版本实现源码级兼容(因为Windows 2000是基本NT相似的结构,最底层是硬件抽象层HAL,所有我们相信它们之间能源码级兼容)。但实际上,Windows2000的WDM实现中有很多例程在Windows98中没有实现,一旦试图加载这样的WDM驱动程序到Windows98中,则不能正常加载,当然我们也有办法实现它,那就是利用“桩”技术。具体可参见Walter Oney写的《Programming the Microsoft Windows Driver Model》一书。我们首先来看看Windows 2000的系统结构,然后再来看看Windows 98的。 图一是Windows 2000的系统结构图。从图中我们可以看出:整个系统被分为两个态,用户态和核心态。 从图中可以明显看出I/O操作最后是怎样作用到硬件上的。用户态应用程序对Windows 子系统进行win32 API调用,这个调用由系统服务接口作用到I/O管理器(严格地说,在Windows 系统中不存在I/O管理器这样的独立模块,这个只是为了方便叙述而将各种核心功能调用的集合称作I/O管理器,业界人士都这样称呼这个部分),I/O管理器进行必要的参数匹配和操作安全性检查,然后由这个请求构造出合适的IRP(IO Request Package,I/O请求包),并把此IRP传给驱动程序。简单情况下,驱动程序直接执行这个请求包,并与硬件打交道,从而完成I/O请求工作,最后由I/O管理器将执行结果返回给用户态程序。但在WDM体系结构中,大部分实行分层处理。即在图中“设备驱动“这部分,分成了若干层,典型地分成高层驱动程序、中间层驱动程序、底层驱动程序。每层驱动再把I/O请求划分成更简单的请求,以传给更下层的驱动执行。以文件系统驱动为例,最高层驱动只知道文件如何在磁盘上表示,但不知到怎样得到数据。最低层驱动程序只知道怎样从磁盘取出512B为单的数据块,但不知道文件怎样表示。举个更具体的生活例子。主人(最高层驱动)知道(并且需要)笔计本电脑,但不知道具体放在什么位置;而仆人(最底层驱动)却知道它放在具体什么地方,但

从零开始搭建Linux驱动开发环境

参考: 韦东山视频第10课第一节内核启动流程分析之编译体验 第11课第三节构建根文件系统之busybox 第11课第四节构建根文件系统之构建根文件系统韦东山书籍《嵌入式linux应用开发完全手册》 其他《linux设备驱动程序》第三版 平台: JZ2440、mini2440或TQ2440 交叉网线和miniUSB PC机(windows系统和Vmware下的ubuntu12.04) 一、交叉编译环境的选型 具体的安装交叉编译工具,网上很多资料都有,我的那篇《arm-linux- gcc交叉环境相关知识》也有介绍,这里我只是想提示大家:构建跟文件系统中所用到的lib库一定要是本系统Ubuntu中的交叉编译环境arm-linux- gcc中的。即如果电脑ubuntu中的交叉编译环境为arm-linux-

二、主机、开发板和虚拟机要三者互通 w IP v2.0》一文中有详细的操作步骤,不再赘述。 linux 2.6.22.6_jz2440.patch组合而来,具体操作: 1. 解压缩内核和其补丁包 tar xjvf linux-2.6.22.6.tar.bz2 # 解压内核 tar xjvf linux-2.6.22.6_jz2440.tar.bz2 # 解压补丁

cd linux_2.6.22.6 patch –p1 < ../linux-2.6.22.6_jz2440.patch 3. 配置 在内核目录下执行make 2410_defconfig生成配置菜单,至于怎么配置,《嵌入式linux应用开发完全手册》有详细介绍。 4. 生成uImage make uImage 四、移植busybox 在我们的根文件系统中的/bin和/sbin目录下有各种命令的应用程序,而这些程序在嵌入式系统中都是通过busybox来构建的,每一个命令实际上都是一个指向bu sybox的链接,busybox通过传入的参数来决定进行何种命令操作。 1)配置busybox 解压busybox-1.7.0,然后进入该目录,使用make menuconfig进行配置。这里我们这配置两项 一是在编译选项选择动态库编译,当然你也可以选择静态,不过那样构建的根文件系统会比动态编译的的大。 ->Busybox Settings ->Build Options

浅析测试驱动开发

浅析测试驱动开发 测试驱动开发是一种用于敏捷软件开发的开发过程,可以快速应对需求变化。它要求先设计和编写测试代码,然后编写功能代码通过所有测试,再重构以提高代码质量。文章将先介绍测试驱动开发的优点、使用环境,然后介绍开发过程,最后介绍相关工具。 标签:测试;TDD;敏捷开发 1 概述 1.1 定义 测试驱动开发(Test Driven Development,TDD)是由极限编程之父Kent Beck提出的一种面向对象的开发方法[1]。区别于传统的软件开发模式,测试先行将更重视测试在整个软件开发过程中的作用并促进项目的进行。它要求先完成测试代码,然后编写功能代码,并且功能代码要以通过测试代码为标准,然后对功能代码重构,重构之后再运行测试并要通过测试[2]。它的一个开发周期比较短,整个项目是多个周期的迭代。这种开发方式有效的提高了软件质量和开发效率[3]。目前,TDD已经被很多公司和开发团队接受并用于实践。 1.2 优点 由于测试先行,因此写代码前就应该有明确的需求,并体现在测试用例中。在交付前,测试用例可以用来描述功能需求并替代部分文档。并且以测试用例描述的需求不容易出现模糊不清的概念,因为测试结果只会是True或False。这解决了开发人员在开发时误解或由于沟通问题不完全理解需求文档而造成开发到一定程度后才发现代码与需求有偏差。但这还没有解决对客户的误解或与客户沟通不畅导致需求分析错误的问题。 功能代码编写完成后必须通过所有测试,这就保证了这部分代码是满足其功能要求的。通过确保每小部分代码的质量,可以较快的叠加成更复杂的功能且保证最后交付的软件与设计的要求是一致的。在对功能代码进行优化时,因为也要通过测试用例,所以能保证这部分代码的改动不会对调用它的其他模块有影响。 1.3 适用环境 尽管从理论上讲TDD可以在各种软件开发项目中使用,但是在某些项目上可能感觉不到比较明显的效率提升或质量提高。 TDD是面向对象的开发方式,如果项目不使用面向对象的设计和开发,则不适合使用TDD。

Jbehave 学习

Jbehave 学习 JBehave行为驱动开发(BDD)是一个框架。 BDD是测试驱动开发(TDD)和验收测试驱动开发(ATDD)的一种演进,目的是使新手和专家开发实践起来更加方便和直观。它改变了从被测试为基础到以行为为基础的词汇,将自己定位为一个设计理念。 一、BDD课题研究之测试思想和方法总结 此次研究的课题是BDD,主要涉及两个方面:测试的思想和方法、技术框架。这里做测试思想和方法的总结。 BDD是什么 全称: Behaviour Driven Development(行为驱动开发)。 BDD改变了我们对软件测试的认识。先前我对测试的认识是:从大的角度来讲,软件测试就是对一个软件系统从功能上进行确认测试和验证测试,从性能上进行压力测试和负载测试,以及对系统的配置测试和兼容性测试等,从类别上又有单元测试,集成测试,回归测试,所有的这些测试工作都有一个目的:交付一套高质量的软件系统。我们软件测试人员的工作就是:尽可能早的找出软件缺陷,并确保其得以修复。顺理成章的,在我们的思维中是:我们先拿到系统的既成品,然后开展测试工作,而BDD恰好颠覆了我们的思维。 回到BDD正题,BDD中有两个大的概念:测试先行和系统设计。 测试先行:BDD提倡我们在开发者的编码工作开展之前,先写测试用例,然后由测试来推动着开发的工作,具体解释为:在设计如何实现一个功能前,先考虑如何测试这个功能,测试的代码完成后,再编写功能实现代码,并且使得该测试用例通过,即完成了系统的一个功能模块。 系统设计:在系统功能实现代码编写之前,我们需要先编写测试代码,在我们的测试代码中实现对系统行为的描述,这个描述其实就是用一种接近自然语言的方式对系统进行详细的设计,并且使项目相关人员,即使是非技术人员也能很容易看懂。关于系统行为,举例说明:用户在一个特定的条件下对系统做请求,系统在该条件下做什么样的处理,这就是系统的一个行为。 总结一下BDD的概念:在项目之初,由客户、开发人员、测试人员一起通过充分的沟通对系统的行为进行设计,由测试人员以接近自然语言的方式编写可以描述系统行为的测试用例,然后由开发人员编写相关的实现代码,并确保该测试用例通过。循环这个过程实现整个系统的功能。

行为驱动开发

行为驱动开发 行为驱动开发(简称BDD)是测试驱动开发的升级版。它是一套软件工程实践方法,能帮助研发团队更快地构建和交付更有价值和更高质量的软件产品。采用BDD思想编写的测试读起来更像规格说明书而不是单元测试,所以它是使用测试作为表达和验证行为的一种手段。基于这个特性,BDD也非常适合应用在需求分析中。 一、行为驱动开发的原则 1.聚焦交付业务价值。使用验收标准作为目标,帮助业务实现更实际的可交付的功能。 2.团队共同确定交付标准。业务分析人员,开发人员,测试人员与最终用户一起定义和指定功能。 3.拥抱变化。项目开始时不锁定需求,而是假设需求,从用户那里得到早期的反馈,对需求的理解将在项目的整个生命周期中演进和变更。 4.不仅仅编写自动化测试,而是编写可执行规范和底层规范。团队将验收标准转换为自动化的验收测试,更准确地说是转换为可执行规范。在编写任何代码之前,开发人员将考虑代码实际上应该做什么,并将其表示为底层的可执行规范。可执行规范是一种自动化测试,它演示和验证应用程序如何交付特定的业务需求。自动化测试作为构建过程的一部分运行,并在对应用程序进行更改时运行,进行验收测试和回归测试。 5.交付活文档,并使用活文档来支持后续维护工作。在项目结束后持续维护项目可执行规范。 二、行为驱动开发的优势 1.专注业务目标,避免工程师把工作量浪费在不提供业务价值的功能上,能够降低成本,减少浪费。

2.完整的可执行规范,可充当开发人员的辅助技术文档,更容易理解现有的代码库并进行更改。 3.全面的自动化验收测试和回归测试,不仅可以提升执行效率,也能降低手工测试的出错率,使得迭代速度更快更可靠。 三、行为驱动开发的缺陷 1. 需要多个角色高度参与和协作,涉众如果不愿意或不能参与对话和协作,或者等到项目结束后才给出反馈,就很难充分利用BDD的优点。 2.比较适用于敏捷开发,但不太适用于瀑布式开发。 3.对参与角色能力要求很高,尤其是测试团队,不仅需要精通业务,对业务目标清晰,而且对测试技术能力要求更高,如果编写的自动化测试很烂,会导致更高的测试维护成本。

软件测试毕业论文题目选题参考

软件测试毕业论文题目选题参考 软件测试是在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。为了方便大家写作选题,下面列举了部分软件测试毕业论文题目。 1、嵌入式计算机软件测试关键技术探讨 2、软件工程中软件测试技术的研究 3、箭载飞控软件系统最差情况执行时间测试研究 4、大数据背景下软件测试的挑战与展望 5、云计算环境下的软件测试服务分析 6、无人侦察机情报处理及软件测试研究 7、工程装备嵌入式软件测试环境平台技术研究 8、嵌入式软件自动化测试系统研究 9、工业软件现场测试中的拆分及其测试数据设计 10、考虑缺陷关联模型的软件优化测试策略 11、航空机载软件安全性测试技术研究 12、基于自适应遗传算法的软件测试用例自动生成 13、基于BP神经网络软件测试缺陷预测技术研究及应用 14、软件测试技术现状与发展趋势研究 15、浅析设备软件测试与质量保证 16、面向应用型人才培养的软件测试案例教学探讨 17、软件质量保证与测试课程教学改革探索 18、高职软件工程专业软件测试课程教学改革探讨 19、工程项目实践为导向的软件测试教学体系 20、星载软件可靠性仿真测试环境研究 21、Android软件可靠性测试用例自动生成的设计研究 22、探索式软件测试方法分析 23、探讨计算机软件测试的相关技术应用 24、软件测试思维在“程序设计基础”教学中的培养初探 25、慕课背景下软件测试课程教学改革探索 26、软件质量保证与测试教学中存在的问题及对策研究 27、石家庄地区软件测试业发展分析与应对策略探究 28、计算机软件测试技术与开发应用研究 29、软件测试用例技术发展分析及对策 30、相控阵天线阵面测试平台软件设计 31、机车传动系统控制逻辑纯软件仿真测试平台开发 32、软件测试技术与测试管理研究 33、大型软件回归测试用例选择优化策略 34、商业银行权限管理软件全流程测试研究 35、基于多优化目标的软件测试用例约简方法研究 36、大数据背景下软件测试的挑战及其展望探析 37、浅析软件测试中的可靠性模型设计 38、刍议测试驱动开发在软件开发中的作用

敏捷开发总结分析解析

Intro: 简单的说,敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。敏捷开发是由一些业界专家针对一些企业现状提出了一些让软件开发团队具有快速工作、响应变化能力的价值观和原则,并于2001初成立了敏捷联盟。他们 正在通过亲身实践以及帮助他人实践,揭示更好的软件开发方法。 敏捷开发(agile development)概念从2004年初开始广为流行。Bailar非常支持这一理论,他采取了"敏捷方式"组建团队:Capital One的"敏捷团队" 包括3名业务人员、两名操作人员和5?7名IT人员,其中包括1个业务信息指导(实际上是业务部门和IT部门之间的"翻译者");另夕卜,还有一个由项目经理和至少80名开发人员组成的团队。这些开发人员都曾被Bailar送去参加过" 敏捷开发"的培训,具备相关的技能。 每个团队都有自己的敏捷指导(Bailar聘用了20个敏捷指导),他的工作是关注流程并提供建议和支持。最初提出的需求被归纳成一个目标、一堆记 录详细需要的卡片及一些供参考的原型和模板。在整个项目阶段,团队人员密切合作,开发有规律地停顿--在9周开发过程中停顿3?4次,以评估过程及决定需求变更是否必要。在Capital One大的IT项目会被拆分成多个子项目,安排给各"敏捷团队",这种方式在"敏捷开发"中叫"蜂巢式(swarming)",所有过程由一名项目经理控制。 为了检验这个系统的效果,Bailar将项目拆分,从旧的"瀑布式"开发转变为"并列式"开发,形成了"敏捷开发"所倡导的精干而灵活的开发团队,并将开发阶段分成30天一个周期,进行"冲刺"--每个冲刺始于一个启动会议,到下个冲刺前结束。 在Bailar将其与传统的开发方式做了对比后,他感到非常兴奋--"敏捷开发"使开发时间减少了30%-40%有时甚至接近50%提高了交付产品的质量"不过,有些需求不能用敏捷开发来处理。"Bailar承认,"敏捷开发"也有局限性,比如对那些不明确、优先权不清楚的需求或处于"较快、较便宜、较优" 的三角架构中却不能排列出三者优先级的需 求。此外,他觉得大型项目或有特 殊规则的需求的项目,更适宜采用传统的开发方式。尽管描述需求一直是件困难的事,但经过阵痛之后,需求处理流程会让CIO受益匪浅。 敏捷开发是由一些业界专家针对一些企业现状提出了一些让软件开发团队具有快速工作、响应变化能力的价值观和原则,并于2001初成立了敏捷联盟 他们正在通过亲身实践以及帮助他人实践,揭示更好的软件开发方法。通过这项工作,他们认为: 个体和交互胜过过程和工具 ?可以工作的软件胜过面面俱到的文档 客户合作胜过合同谈判

软件开发中测试驱动开发的运用

软件开发中测试驱动开发的运用 发表时间:2019-07-05T12:04:12.540Z 来源:《电力设备》2018年第36期作者:马凡王艳刘兴兴 [导读] 摘要:目前,我国的科技发展十分迅速,测试驱动开发是软件开发中一种新的开发模式,它的核心思想是通过不断的测试来驱动软件开发的进程,是极限编程中极具特色的开发方法,学习和应用测试驱动开发可以大幅度提高开发效率。 (陕西黄河集团有限公司陕西西安 710043) 摘要:目前,我国的科技发展十分迅速,测试驱动开发是软件开发中一种新的开发模式,它的核心思想是通过不断的测试来驱动软件开发的进程,是极限编程中极具特色的开发方法,学习和应用测试驱动开发可以大幅度提高开发效率。本文从它的基本原理、分析对传统软件设计的影响和本身存在的问题这三个方面来系统的解说。 关键词:测试驱动开发;软件开发;极限编程 引言 测试驱动开发(Test—DrivenDevelopment,TDD)是一种开发方式,是由KentBeck提出的极限编程(eX-tremeProgramming,XP)的核心部分。TDD能最大限度的提高软件开发的速度,同时保证了软件的质量,并大大减少了运行期间的维护工作量。TDD讲究测试先行,先编写测试,然后再编写让这些测试通过的代码。在编写代码的时候,有可能会出现代码结构不合理的地方,如重复代码,类之间通讯不当,类的尺寸过长,过分短小的类,方法过长,类之问关联太复杂等,需要对这些不合理的地方重构,重构的方法有提取类,提取接口,提取方法等。TDD开发过程可比做交通灯,我们首先根据需求分析编写一个测试,这时候被测试的类和方法还没有定义,编译器会报告错误,这就是我们的黄灯;当定义了被测试的类和方法之后,还没有定义其内容的时候,编译器不会报错,但是测试通不过,这就是红灯;然后我们定义类和方法的内容,直到测试通过,这就是我们的绿灯。最后,我们需要消除我们在使测试通过的时候引入的一些结构不合理的代码。在此过程中,每完成一次小的修改之后都重新编译并运行测试,这样做怎么强调都不为过。因为在每次小的改动之后,测试通过,可以给我们信心和保证。让我们有勇气继续下一步的工作,每次一小步一小步的推进。在任何时候如果测试失败了,我们都会准确的知道就是最近的一次修改导致了测试的失败。撤消这次修改,测试会再次通过。我们就可以重新尝试修改。通过这种反复的迭代,我们的代码会越来越漂亮。在开发过程中,我们使用程序员测试,它和我们经常提到的单元测试非常类似,但是它们的目的不同,单元测试的目的是为了测试你编写的代码能否工作,而程序员测试是为了定义代码的含义。TDD的基本原则就是在没有测试之前,不要编写任何代码,也就是说,当我们的代码编写完成之前,我们相应的测试已经存在了,这样就保证了一套详尽的程序员测试集。在编写测试的时候,不要一次把所有的测试全部写完,而是要先编写少量的测试,再根据测试的需要编写代码,待测试通过,代码结构合理后,继续编写下一个测试和相应的代码,做到步步为营。 1测试驱动开发的相关环节 1.1原理和过程 测试驱动开发的原理就是应该在明确要开发某个功能后,进行构思并决定如何设计测试代码的过程,从而根据用户的需求编写出功能代码满足这些测试用例。接下来可以循环的进行添加其他功能,最后能够完成全部功能的开发。其中的基本过程包括:明确当前需要完成的功能;需要在保证速度的前提下编写测试用例;编写对应的功能代码;保证测试能够通过的方法就是重构代码。我们通常在运用了测试框架的前提下,进行组织所有的测试用例,从而保证了整个测试过程的高效和便捷。 1.2原则要求 在测试驱动开发的过程中,应根据实际测试要求,保证在检测过程中分清所需要检测的各类代码,并根据不同代码测试设定相互的间隔,进而有效避免在测试的过程中忽视一些细节性问题,同时避免了增加测试的复杂度。另外,在实际操作中,应对所出现的功能点进行测试,尤其是在需要添加功能需求的情况下,应将其添加到测试列表中,严格遵循着测试全面性、准确性的原则,规避因测试不全面而埋下不必要的风险。另外,测试驱动开发过程中应不断完成相关的测试实例、功能代码、重构等,避免出现疏漏,同时也应避免干扰到当前正在进行的工作。例如,在编写测试代码的过程中,应充分考虑到该如何使用和测试,然后再进行合理的设计和编码,将其写入功能代码判断用句的过程中,应合理写入对应的辅助语句,才能保证测试驱动开发的有效性、合理性,同时也规避了一些因编写不合理而产生不必要的麻烦。 1.3测试技术 如果我们采用传统的检测方式,这无疑会在我们的软件开发中造成开发速度缓慢等缺点,而我们需要认清的一点就是测试驱动开发中的测试并不是作为一种负担,而是一种为了帮助我们减轻繁重工作量的有效方法。在针对如何选择一个合适的时间来停止编写测试用例的问题上,我们应该根据往常的工作经验来进行,例如说针对一些功能复杂并且具有核心功能的代码来说应该编写更细致、全面的测试用例。静态的标准也不适用于测试驱动开发的测试范围,在实际情况下是能够随着时间的改变而改变。 2软件开发中测试驱动开发的运用分析 2.1创新软件开发的形式 从对以往软件开发的分析中发现,传统软件开发过程中,由于受到传统观念以及落后的技术影响,使得传统软件开发效果不佳,甚至会导致所开发出来的软件埋藏诸多漏洞,进而影响到软件的正常使用。在将测试驱动开发运用到软件开发中,创新了软件开发的形式,对提升软件开发的效率有着极大的作用[4]。当然,在新时期发展中,软件的开发都是建立在人的使用需求基础上,而测试驱动开发中所贯彻的以人为本的思想,则更是以人类活动为基础,满足其使用需求而进行开发的,从某种意义上分析,测试驱动开发的运用不仅仅是对软件开发形式的创新,更是将人的观念与软件开发进行有效结合,进而保证所开发出来的软件更符合人们的使用需求。 2.2改善设计方式 测试驱动开发在实现设计方面有着很大的优势。它体现出来的没计思想与传统软件工程大相径庭,它摒弃了传统方法中对设计近乎苛求的原则,弱化了全面细致的设计。不要求对需求做出非常详细的设计,而是遵循简单的原则,对现有的需求做出简单的设计。不需要为以后考虑,因为你永远不知道将来会增加哪些需求。这样看似对设计的简化,削弱了开发的依据,但其实它的思想却是进一步明确了软件开发的时候应该更注重眼前的问题,全力去考虑当前的需求,满足客户当前的需要,而不要为以后的需要费时费力,只有这样,才能使做

软件测试练习题

练习题 1.软件调试的目的是? A A. 找出错误所在并改正之 B. 排除存在错误的可能性 C. 对错误性质进行分类 D. 统计出错的次数 2.下列叙述中,哪一项是正确的 ...? D A.用黑盒法测试时,测试用例是根据程序内部逻辑设计的; B.测试是为了验证该软件已正确地实现了用户的要求; C.对面向对象程序来说,单元测试的最小单元是每条程序语句,即以分号结尾的程序; D.发现错误多的程序模块,残留在模块中的错误也多。 3.创建一个基于JUNIT的单元测试类,该类必须扩展? C A.TestSuite B. Assert C. TestCase D. JFCTestCase 4.以下对单元测试,不正确 ...的说法是? C A.单元测试的主要目的是针对编码过程中可能存在的各种错误; B.单元测试一般是由程序开发人员完成的 C.单元测试是一种不需要关注程序结构的测试; D.单元测试属于白盒测试的一种。 5.测试驱动开发的含义是? B A.先写程序后写测试的开发方法 B. 先写测试后写程序,即“测试先行” C. 用单元测试的方法写测试 D. 不需要测试的开发 6.用JUNIT断言一个方法输出的是指定字符串,应当用的断言方法是? C A.assertNotNull( ) B. assertSame() C. assertEquals() D. assertNotEquals() 7.TestCase是junit.framework中的一个? C A.方法 B. 接口 C. 类 D. 抽象类

8.TestSuite是JUNIT中用来? A A.集成多个测试用例 B. 做系统测试用的 C. 做自动化测试用的 D. 方法断言 9.对于测试程序的一些命名规则,以下说法正确 ..的一项是? C A.测试类的命名只要符合Java类的命名规则就可以了; B.测试类的命名一般要求以Test打头,后接类名称,如:TestPerson; C.测试类的命名一般要求以Test结尾,前接类名称,如:PersonTest; D.测试类中的方法都是以testXxx()形式出现。 10.以下不属于单元测试优点的一项是? D A.它是一种验证行为 B. 它是一种设计行为 C.它是一种编写文档的行为 D. 它是一种评估行为 数据驱动测试也称? C A.单元测试 B. 白盒测试 C. 黑盒测试 D. 确认测试 11.逻辑驱动测试也称? C A.单元测试 B. 灰盒测试 C. 白盒测试 D. 用户测试 12.以下不属于白盒测试的优点是? B A.增大代码的覆盖率 B.与软件的内部实现无关 C.提高代码的质量 D.发现代码中隐藏的问题 13.组装测试又称为? A A.集成测试 B. 系统测试 C. 回归测试 D. 确认测试 14.对于单元测试框架,除了用于Java的JUnit还有CppUnit、NUnit等,它们是? A A.C++单元测试框架、.NET单元测试框架 B. C语言单元测试框架、通用单元测试框架 C.C++单元测试框架、自动化单元测试框架 D. 自动化单元测试框架、.NET单元测试框架 15.对于JFCUnit,以下说法不正确 ...的是? D A. 它是JAVA GUI的测试框架 B. 它是JUnit的扩展,用于GUI的测试 C.编写JFCUnit的测试用例需要扩展JFCTestCase

①软件测试判断题选择题30分分析

1.软件调试的目的是? A A. 找出错误所在并改正之 B. 排除存在错误的可能性 C. 对错误性质进行分类 D. 统计出错的次数 2.下列叙述中,哪一项是正确的? D 用黑盒法测试时,测试用例是根据程序内部逻辑设计的; 测试是为了验证该软件已正确地实现了用户的要求; 对面向对象程序来说,单元测试的最小单元是每条程序语句,即以分号结尾的程序; 发现错误多的程序模块,残留在模块中的错误也多。 创建一个基于JUNIT的单元测试类,该类必须扩展? C A.TestSuite B. Assert C. TestCase D. JFCTestCase 3.以下对单元测试,不正确的说法是? C A.单元测试的主要目的是针对编码过程中可能存在的各种错误; B.单元测试一般是由程序开发人员完成的 C.单元测试是一种不需要关注程序结构的测试; D.单元测试属于白盒测试的一种。 4.测试驱动开发的含义是? B A.先写程序后写测试的开发方法 B. 先写测试后写程序,即“测试先行” C. 用单元测试的方法写测试 D. 不需要测试的开发 5.用JUNIT断言一个方法输出的是指定字符串,应当用的断言方法是? C A.assertNotNull( ) B. assertSame() C. assertEquals() D. assertNotEquals() 6.TestCase是junit.framework中的一个? C A.方法 B. 接口 C. 类 D. 抽象类 7.TestSuite是JUNIT中用来? A A.集成多个测试用例 B. 做系统测试用的 C. 做自动化测试用的 D. 方法断言8.对于测试程序的一些命名规则,以下说法正确的一项是? C A.测试类的命名只要符合Java类的命名规则就可以了; B.测试类的命名一般要求以Test打头,后接类名称,如:TestPerson; C.测试类的命名一般要求以Test结尾,前接类名称,如:PersonTest; D.测试类中的方法都是以testXxx()形式出现。 9.通常,初始化一个被测试对象,会在测试类的? 中进行。 B A.tearDown() B. setUp() C. 构造方法 D. 任意位置 10.以下不属于单元测试优点的一项是? D A.它是一种验证行为 B. 它是一种设计行为 C.它是一种编写文档的行为 D. 它是一种评估行为 11.从技术角度分,不是一类的测试是? C A.黑盒测试 B. 白盒测试 C. 单元测试 D. 灰盒测试 12.数据驱动测试也称? C A.单元测试 B. 白盒测试 C. 黑盒测试 D. 确认测试 13.逻辑驱动测试也称? C A.单元测试 B. 灰盒测试 C. 白盒测试 D. 用户测试 14以下不属于白盒测试的优点是? B A.增大代码的覆盖率 B. 与软件的内部实现无关 C.提高代码的质量 D. 发现代码中隐藏的问题 15.组装测试又称为? A A.集成测试 B. 系统测试 C. 回归测试 D. 确认测试 16.对于单元测试框架,除了用于Java的JUnit还有CppUnit、NUnit等,它们是? A A.C++单元测试框架、.NET单元测试框架 B. C语言单元测试框架、通用单元测试框架 C.C++单元测试框架、自动化单元测试框架 D. 自动化单元测试框架、.NET单元测试框架

相关文档
相关文档 最新文档