基于数据驱动的测试论文

2024-09-29

基于数据驱动的测试论文(共10篇)

基于数据驱动的测试论文 篇1

0 引言

随着社会的不断发展和信息化的不断普及,各种软件越来越多,在日常生活中也起着越来越重要的作用,再加上客观系统的复杂性,无论经验多丰富的开发人员、无论采用哪种开发模型开发出来的软件,每个阶段的技术复审也不可能毫不遗漏地查出和纠正所有的错误,因此如何才能把新的软件做得更稳定、错误更少呢?测试!统计表明,在典型的软件开发项目中,软件测试工作量往往占软件开发总工作量的40%以上[1]。

测试是软件能否通向市场的最后也是最重要的一关。传统的测试方法是手工测试,目前大部分都是采用此方法,其特点就是简单,但是它存在的问题非常多。手工测试可能引入人为的输入错误,尤其在数据量大的情况下;另外大量重复性的手工测试可能成本较高,如果考虑软件发生改动而需要重复手工测试的情况,这个成本还会更高;没有办法对组件进行隔离的测试,从而导致发现问题和解决问题的成本都太高。在很多项目中,测试人员的所有任务实际上都是手动处理的,而实际上有很大一部分重复性强的测试工作是可以独立出来自动实现的。

针对手工测试的缺点,自动化测试应运而生。相比手工测试,自动化测试的优势很多:规范测试流程,提高测试效率、测试覆盖率等。很多人对自动化测试存在误区,把其理解为找到一种自动化测试工具,把它应用到软件工程项目中,自动化测试工具只是被看作是一种录制和回放的工具。事实上自动化测试远不止这么简单,录制和回放仅是自动化测试中的最低级别。目前常把自动化测试分为5个级别[2],如图1所示。

现在常用的是基于数据驱动的测试,它是以数据来控制自动化测试的流程和动作的测试,其中数据是独立于测试用例脚本的,通常以文本文件形式、Excel文件形式、XML文件等形式存在。

1 基于数据驱动自动化测试的实施

1.1 可行性分析

基于对自动化测试优点的分析,很多人对自动化测试存在另一个误区,认为对于所有的软件都适合引入自动化测试,且只要引入自动化测试,就会提高测试的效率,降低测试的成本。实际上并非如此,自动化测试也需要开发和搭建测试框架,创建测试用例,这也就意味着成本的投入。对于一个项目周期很紧的测试项目,按测试方案进行手工测试的效率可能要比自动化测试工具录制脚本再测试的效率好得多。那么自动化测试工具的价值在什么地方?

对于一个一次性开发、没有后续版本更新的软件而言,自动化测试是毫无意义的。但是现在很多软件都会不断推出新的版本,在推出新版本的过程中,每次除了测试新加或修改过的模块,相关联的旧模块同样需要测试,才能保证产品的质量,这样就需要做大量的重复工作,自动化测试此时就可以创建测试中的可重用模块,同时还可以覆盖大部分的功能测试,这样可以使测试人员从回归测试中解脱出来,专注于新模块的测试。所以可以说自动化测试的最大价值在于回归测试。

因此,对于一个软件或其中某些模块是否适合自动化测试必须要先进行可行性分析,以证明你所选的测试方法的正确性,通常可进行自动化测试的软件需要满足以下几点:

(1)手工测试复杂度高;

(2)所选测试用例,实现自动测试的难度低;

(3)软件用于自动化测试的模块界面变化相对不大;

(4)软件生命周期长,经常推出新的版本;

(5)软件开发已基本完成,主要用于测试升级版本;

(6)所选自动化测试框架必须对所测软件应用界面有有效的支持,且维护管理成本较低。

另外自动化测试前期需要投入时间和一定的成本投入,故不要一开始就期望有高的回报,其效应会在不断完善积累中显现。而且不要期待自动化测试可以发现每个版本中的大部分错误,因为自动化测试主要用于回归测试,而且产品中每个新版本的大部分bug会在新模块中出现,所以自动化测试在于长期效应,能保证每个版本产品质量的稳定。

1.2 需求分析

正如开发软件需要有需求分析一样,基于数据驱动的自动化测试本质上也是开发,所以在制定测试方案之前也需要收集测试需求,这样才能保证自动化测试的成功。

随着IT技术的发展,传统的开发人员兼任测试人员的模式已经不能满足需求,目前大多数较正规的软件公司均已采用独立的测试人员来对软件进行测试,所以形成了开发人员、开发管理者、测试人员、测试管理者的模式。如图2示。

规范的测试过程需要上述人员的通力配合,因此在做自动化测试之前应该有一份规范的文档,用来描述测试内容、人员安排、测试流程、缺陷管理等。其中开发管理人员和测试管理人员分别作为开发团队和测试团队的接口,协调两个团队的工作,一般来说开发人员需要在每次对软件更新后提供详细的功能文档,开发人员还需要提供自动化测试所需要的数据等相关资源,测试人员根据功能文档创建适合做自动化的测试用例,并建立基于数据驱动的自动化测试工程。

1.3 数据驱动的自动化测试框架结构以及实现

基于数据驱动的自动化测试不是简单的录制回放,而且通过编程的形式来实现每个测试用例,其中数据文件独立于测试用例,这样数据的更新对整个测试工程的维护会降低到最小。因此创建自动化测试框架需要有一定的编程基础。

本文自动化测试中采取的是三层框架结构,如图3所示。

其中最底层为UI Driver层,主要负责定义基本的通用元素库,如按钮、下拉框、文本框等在每个软件中都会出现的基本元素;对这些元素的基本操作以及通用操作(如等待某段时间的函数等)。这一层和测试的软件没有关系,因此通用性很强,既可以自己开发也可以用前人开发好的底层自动化Driver。

第二层为代理(Agent)层,这一层是建立在被测软件上,对被测软件的每一界面(UI)均建立相关的类和对象,方便最上层调用,这一层需根据软件的不断更新而更改。

最上层为测试用例层(Test Cases),这一层建立在代理层上,代理层建立好之后,可以提供给测试用例层所需的界面元素,使测试用例可以通过对界面元素的操作完成自动化测试过程。这一层是测试用例的实现层,如果有了比较完善、结构合理的底层以及代理层,此层实现起来就会非常简单。

其中测试数据以及软件中元素的ID信息是存放在独立的XML文件中,测试用例层或者代理层需要用数据时,可以通过统一的接口读取。这样的方式不仅可以使整个测试工程结果清晰,最重要的是可以降低整个测试系统的维护费用,这样才能确保自动化测试的投入回报不断提升。

1.4 自动化测试的维护和扩充

自动化测试工程会由于软件的不断扩充而必须加以维护和扩充。其中维护是指由于新版本的升级导致的旧的测试用例无法通过,必须加以维护才能正常运行。而扩充则是指由于版本的不断升级,某些功能已经非常稳定,适合于自动化测试,需要新添加一些测试用例来覆盖这些功能。

扩充和维护是一个长期的过程,其中需特别注意的是每次自动运行测试用例,必须有个详细的结果日志来记录测试用例的通过情况,对于运行失败的用例,记录失败的原因,这样有利于测试人员通过结果来判断产品的bug。这里需要特别注意的是,有的测试用例表面上是通过了,但是实际上却执行失败了,并且结果日志上记录的是通过,如果出现这样的情况,而测试人员却毫无察觉,这就是失败的自动化,所以对于每次自动化测试的结果,最好能够建立起核查机制,以确保结果的可靠性。

2 总结

自动化测试是一个比较新的研究领域,也是近来很具争议性的研究话题,对于自动化测试引入之后的利弊,众说纷纭。当然自动化测试也在争议中显现出了强大的生命力,其测试效率高、重用性好等优点得到了广泛的认同。本文中所介绍的自动化测试框架结构在很多大型的软件系统中得到了应用,取得了良好的效果。

摘要:本文介绍了基于数据驱动的自动化测试以及其实现方法,包括软件是否适合自动化测试的可行性分析;开发测试前的需求分析;基于数据驱动的测试框架的实现以及其维护和扩充。

关键词:自动化测试,手工测试,数据驱动,测试框架,回归测试

参考文献

[1]郭伟斌,郭雪坤.自动化测试的研究与探讨[J].电脑开发与应用,2008(12):12-14,17.

[2]张向芳,李华,姜英伟.软件测试自动化的实施方案[J].山西科技,2006(4):44-46.

基于数据驱动的测试论文 篇2

计算机科学与技术的发展使得大规模信息处理基础设施产生重要改变。在过去的30年中,经典的数据库管理系统(DBMS)在处理大规模数据方面与时俱进,在企业数据处理等方面得到广泛应用。数据库研究和技术进展主要集中在数据建模、描述性查询语言、事务处理和数据库可靠性等。在这个过程中,相关的数据仓库和数据挖掘分析技术也成为一个热点研究方向;人们认识到数据处理过程中的信息可以被有效整理和分析来支持以数据为中心的决策支持。

数据库管理系统在目前的互联网时代继续占据了重要地位。在一个典型的互联网服务系统架构中,数据库管理系统和Web服务器及应用服务共同作用,为互联网用户提供各类信息和服务。在这个系统架构中,人们期望系统能支持无限次和高速的互联网用户访问,这个时候数据库层由于在硬件可扩展性上面的不足可能成为系统性能瓶颈。这个挑战我们称为大数据问题(big data problem)。大数据系统期望能对大规模异构复杂数据建模,进行实时分析;传统的商用数据库系统很难提供良好的解决方案。另一个大数据相关的挑战是服务器端数据中心的数据维护及安全隐私问题。近年来云计算技术已经成为大数据中心的一种可靠解决方案,Google, Yahoo and Microsoft等公司也纷纷开发自己的云计算系统。尽管云计算在互联网应用中已经体现出很多优越性,其在系统成熟性、可用性等方面还有很大提高空间。

基于数据驱动的测试论文 篇3

关键词:智能植物生长柜;Android系统;智能控制;串口驱动;多传感器;

中图分类号:TP274;S126 文献标志码:A 文章编号:1002—1302(2016)01—0403—03

当前,世界人口不断增长、物质需求不断增加,而资源却不断减少,环境不断恶化,为解决全球资源与环境问题,设施农业越来越受到人们的推崇,得到了前所未有的发展与应用。智能植物生长柜作为设施农业的一部分,以节省资源、环境保护、安全、放心、健康为出发点,得到社会的广泛关注与认可。随着城市的现代化建设步伐和环境污染速度越来越快,可利用农业耕地面积越来越少,同时人们生活水平的提高,对生活质量也提出了更高的要求。作为一种保护环境、节约资源和能生产出安全健康的新型植物生产系统,智能植物生长柜有很强的应用性。在我国,对于农业生产环境的监控基本處于人工采样、化学分析的人工监测阶段,实时性不好,少数便携式仪表还存在使用维护困难等问题,此外生长柜对环境具有非常高的要求。Android系统作为开源的操作系统、操作简单、功能强大,基于该平台下的各类控制系统很多大学与公司的研究方向。Android设备驱动程序是Android操作系统的重要组成部分,是软件与硬件连接的“桥梁”,分析该系统下的设备驱动运行机理,对于Android系统上层应用程序的设计开发有重大的指导意义。

1材料与方法

1.1系统方案

系统主要分为执行模块、生长柜监控模块、Android测控端等部分。本研究对Android系统内核中的串口驱动程序进行了详细的分析,并在此基础上编写了应用程序,实现多传感器的数据传输。试验利用FS_V210开发板(运行Android系统)为终端,由下位机STM32实现对5个传感器数据的采集,通过其串口与运行Android系统的上位机进行通信,在开发板显示屏上实时显示5个传感器数据。FS_V210开发板具有摄像头、LCD触摸屏、网口等丰富硬件资源,便于携带、交互性强、易于开发,为智能植物生长柜提供优秀的控制系统平台。Android系统结构框图如图1所示。

1.2实现方法

1.2.1 Android串口驱动开发 串口驱动的实现过程就是Android系统下的通信数据流和功能调用的过程。Android串口终端驱动结构如图2所示,串口驱动结构共分为4个层次,即驱动层、HAL层(1ibhardware)、JNI层(java native inter-face)、Framework层和应用层。

1.2.1.1串口驱动层 Android内核是由标准的Linux内核修改而来的,最底层的Android硬件驱动层就是Linux设备驱动层,二者内核驱动程序的编写方法是一样的,都是以Linux模块的方法实现的。驱动层是与硬件设备直接联系的一层,通过访问相应驱动程序直接对硬件进行操作,在该层中定义串口设备文件的访问方法,主要定义串口的Open、Read和Write。此外,还执行了串口设备的注册和初始化操作。

1.2.1.2 HAL层 硬件驱动程序一方面分布在Linux内核中,另一方面分布在用户空间的硬件抽象层中,在该层中增加串口的硬件抽象层模块访问Linux内核驱动程序。按照An-droid硬件抽象层规范的要求,分别定义模块ID(UART_HARDWARE_MODULE_ID)、模块结构体(struct uart_module_t)以及硬件接口结构体(struct uart_control_device_t)。在硬件接口结构体中,fd表示设备文件描述符,HAL层结构如图3所示。

1.2.1.3 JNI层 Android系统的应用程序是用Java语言编写的,而硬件驱动程序是用c语言来实现的,应用程序要调用串口驱动程序操作硬件必须通过Java本地调用JNI来调用硬件抽象层接口。JNI层主要实现Java与C/C++之间的过渡,不涉及复杂的逻辑,只根据规则为上层函数调用串口的下层接口。该层定义HAL的模块ID和2个全局变量sUartDe-vice和sUartModule,在Uart_init函数中,通过Android硬件抽象层提供的hw_get_module方法来加载模块ID为UART_HARDWARE_MODULE_ID的硬件抽象层模块,其中HELLO_HARDWARE_MODULE_ID是在中定义的。Android硬件抽象层会根据UART_HARDWARE_MOD-ULE_ID的值在Android系统的/system/lib/hw目录中找到相应的模块,然后加载起来,并且返回hw_module_t接口给调用者使用。

1.2.1.4 Framework层 为硬件抽象层模块编写完串口的JNI方法后,须要为Android系统的Application Frameworks层增加硬件访问服务MyUartService,通过该层提供的硬件服务来调用JNI方法,进而调用底层的硬件抽象层接口去访问硬件。在Application Frameworks层中包含自定义的硬件服务MyUartService,在Android系统启动时自动加载MyUartSer-vice。这时应用程序就可以通过Java接口来访问uart硬件服务了。

1.2.2串口应用程序的开发 本研究中实现的功能是由单片机STM32实现对2个温度传感器(为区分2个温度传感器的值,显示分别命名为根部温度、温度)、1个湿度传感器、1个光照强度传感器、1个CO2浓度传感器数据的采集,通过其串口将接收到的5个传感器数据在开发板上实时显示。底层编写的串口驱动程序,实现的功能是1个字节的读和字符串的写,在应用程序层调用字符型函数GpsDataUpdate()实现1个字节的读取,整型函数GpsDataUpdate_write(string s)实现字符串的写。为实现各个传感器数据的正确显示,须要在上层对串口应用程序进行开发。程序设计流程图如图4所示。

开发的关键技术和部分代码如下:(1)在Android系统应用程序开发软件eclipse中新建工程,然后在该工程新建Uart类,这个类主要用来加载SO文件(uart_runtime.so),通过JNI的方式打开关闭串口。

(2)为实现通过串口接收到的所有数据的显示,定义1个字符串s1,用于存放通过GpsDataUpdate()读取到的1个字节(以下代码是把该字节先读取到sbuffer,再由sbuffer存放于s1辛),在这里有1个while循环用于判断是否数据接收完,未接收完就继续接收,并把接收到的值放到s1,接收完就跳出。在区里加1个线程将接收到的数据实时显示,睡眠时间为1 s。

(3)实现以上代码的功能,可以读到5个传感器的数据,但是须要将5个传感器的数据分开,分别显示在5个EditText中。利用split根据给定的参数把原来的分割为几个子字符串。核心代码如下:

在本例中,下位机STM32串口发送的1串数据中开头与结尾分别加上字母b,中间的每个传感器数据之间都加上字母a。以上代碼strView.split(“b”)中,将字符串strView根据参数b分割为3个部分,取中间的传感器数据部分,再根据参数a进行分割,可以准确得到5组数据,分别存放于字符串strView0、strViewl等5个字符串中。updateView()为刷新函数,数据不断更新。

2结果与分析

本例中使用Android第3方图形库AndroidPlot绘制图形,先创建1个数组保存绘制用的数据,然后将数组转换为XYSeries,将数组中的传感器值绘制在图形库中,生成曲线图。试验结果以植物生长柜的空气温度为例,如图5所示。

3结论

本研究通过对Android系统下的串口驱动原理的具体实现方法进行详细分析的状态下,实现FS_V210开发板与单片机STM32的串口通信,完成对智能植物生长柜中各个传感器节点信息的接收与显示,为实现生长柜的智能化、网络化打下基础。设计实例,开发Android系统的串口应用程序,接收到5个传感器数据,对串口驱动程序进行验证分析,对智能植物生长柜在Android系统下的开发具有指导意义。

数据驱动的需求测试 篇4

随着科学技术的进步,信息科学与技术有了长足发展,带动了冶金、机械、交通和物流等行业的快速发展。随着企业规模的扩大,生产设备和工艺越来越复杂,基于数据驱动模式建立起物理和化学的模型,并在生产过程中对设备加以控制,以提升管理效率。在实际运营中,预测和评估比较复杂,企业生产过程中需要大量的设备,储存大量的处理数据,在此过程中要及时对设备运行信息加以管理,形成数据驱动理论来构建数据知识体系,构建和实现精确的机理模型,在此条件下实现生产工艺和设备的优化,对数据驱动理论要加以预测和评估控制,形成控制理论。数据驱动的控制理论和方法发展,是新时期控制理论发展和应用的必然要求,因此对数据驱动进行需求测试有重要的理论意义和现实意义。

2 数据驱动控制模型的发展

将基于数据驱动控制模型的理论应用到控制对象中,以实现精确的模拟仿真,建立起数学模型,并采用科学的办法确保数据驱动控制模型所建模型是科学准确的,基于此可实现控制器的合理操作,以保证所建模型的准确性,基于数据驱动控制模型的顺序构建会让控制器设计处于高阶系统模型状态,求解过程会变得非常复杂。因此要建立起模型系统控制方法以实现基于模型的控制理论,当前数据驱动控制方法的理论研究和实际应用主要有:

(1)基于离线数据的PID控制。PID控制已被广泛地用于工业数据驱动控制过程中,根据当前离线的数据来实现PID控制,在当前的系统控制中采用PID控制方法,以实现控制参数的调节,使用PID控制方法有利于控制方法的构建,采用离线数据进行PID控制是工业控制系统中常用的方法之一,要使用给定的输出数据,来对数据驱动控制加以构建,形成参数控制器,数据驱动的方法是简单有效的,也是易于使用的,所以工业生产中要对数据驱动加以控制,以实现数据驱动理论的构建。

(2)基于子空间方法的控制。在子空间辨识方法中基于子空间方法的控制的基础理论研究中要使用大量的输入和输出数据来对线性子空间加以预测,再次使用控制器体系进行预测指标的设计。子空间辨识方法的优点是其不需要识别系统的模型,要采用无模型控制系统,并且可与基于数模型方法组合来设计各种控制器。子空间辨识方法的缺点是数据通过该方法设计驱动器来进行有针对性的线性系统构建,子空间辨识系统有一定的局限性。

(3)去伪控制。1995年,Safnove提出了数据驱动的控制方法。根据控制对象的输入和输出的测量数据,从该组候选控制器中做出选择,是满足特定性能要求的控制器。数据驱动控制能够找到满足性能指标的控制器,然后选择可切换到闭环系统的环境。

(4)虚拟参考反馈整定。在2000年,Guardabassi和Savaresi提出虚拟参考反馈调整的非迭代数据驱动控制方法,使用一组受控对象的输入和输出测量数据方法,构建起最佳的参数结构控制器,使效率得到了进一步提高。

(5)无模型自适应控制。无模型自适应控制是国内外学者提出的一种自适应控制(MFAC)数据驱动的控制模型,这种方法的基本思想是在控制系统当前工作点与等效线性动态模型的基础上,采用适宜的方法,以取代一般离散时间的非线性系统,从而实现自适应模型的自由控制。

3 数据驱动的需求测试特点

在尽可能早的时候就开始进行的软件测试,在实践中可总结出数据驱动的需求测试的特点。

(1)在系统上线投入运营前要做好数据驱动的需求分析工作,要根据系统需要,做好系统的测试开发工作,对系统加以测量构建起系统模型,数据驱动的需求测试对于整个系统的测试过程都有着非常重要的意义。

(2)要在理解数据驱动需求的基础上,对需求测试计划加以管理,以对系统产生积极的影响。数据驱动的需求构建需要对数据驱动测试中产生的偏差加以修改,以重新测试、实施,从而避免浪费大量的人力、时间和金钱的浪费。

(3)数据驱动的需求会因应用环境的差异而发生改变,这在许多项目中是十分常见的,要根据数据驱动的需求变化情况做好测试工作,对数据驱动的需求分析从开始阶段就要做好规划和设计工作,以便相应的加以补充,并进行快速的调整。

(4)数据驱动的测试需要专业的人员加以设计,经验丰富的工程师和测试工程师要做好相互的配合工作,以提高数据驱动的需求测试水平,满足数据驱动需求测试工作的要求。

(5)数据驱动的需求测试工作中,要及时发现数据驱动系统中的问题所在,及时地对数据加以效准,以做好数据驱动需求测试的修正工作,提高质量数据驱动的测试质量,降低数据驱动系统的开发成本。

4 结语

基于数据驱动的测试论文 篇5

此次大会齐聚来自全球的大数据领军企业,共同探讨时代浪潮下大数据行业的新生态、新洞察、新实践;百乘金科也向业界分享了大数据在普惠金融领域中的应用。

记者了解到,百乘金科是国内领先的金融科技集团,涉足房屋金融、财富管理、消费信贷、金融科技、风险投资、普惠服务工具等多个领域;公司通过对大数据、云计算、人工智能、区块链等科技技术进行研发创新,不断拓宽普惠金融的服务边界。

(图注:百乘金科获“2018数据驱动先锋企业奖”)

据了解,神策数据驱动大会一直是行业内展现数据驱动理论实践的前沿阵地,以全球视野聚焦国内本土企业数据化建设升级转型,构建中外创新交流平台,为中国创新数据驱动道路提供前沿理论及落地路径。

由神策数据颁发的“星斗奖”取义“胸藏星斗、阵扫千军“,该奖项主要面对大数据时代中各行各业的觉醒者、先行者和引领者。神策数据CEO桑文锋表示,“星斗奖”旨在鼓励国内众多已经走在数据驱动实践前沿的企业机构以及突出贡献者,积极交流数据驱动行业发展的新态势,分享典型的数据应用案例,推动中国大数据基础建设以及行业应用的发展。

记者了解到,经过 17 位专家,为期 2 个月的评审工作,”星斗奖”之 9 大类重要奖项,39 位年度驱动先锋人物和 49 家年度驱动先锋企业在现场全部揭晓。在此次评选过程,百乘金科等企业凭借前沿的数据驱动应用场景入选“数据驱动先锋企业”奖项。

(首届星斗奖揭晓:百乘金科等企业获奖)

百乘金科作为是近年表现亮眼且稳定的金融科技集团,据介绍,百乘金科目前已经累计为近千万金融用户提供了普惠金融服务,其合作方包括中航信托、平安银行、华夏银行等30多家持牌金融机构,并成功地协助超数万中小微企业主获得低成本的便捷金融服务,有效支持了国家实体经济发展。

基于数据驱动的测试论文 篇6

应用系统的规模和功能复杂性在逐年增加,特别是在企业级应用系统中表现的更加突出,中间件技术在解决企业应用系统不同信息管理系统的自治性,异构性,及其之间的交互性以及对以往遗留信息系统的支持方面作出了很大贡献。然而,随着多种中间件技术的兴起,带来了跨平台计算问题。为了实现不同中间件平台之间的集成和互操作,OMG (Object Management Group) 提出了标准的模型驱动架构MDA (Model Driven Architecture) [1]。MDA主要由三部分组成:平台无关的模型 (PIM) ,模型转换器 (MT) ,特定平台模型 (PSM) ,将系统的功能描叙及其系统具体平台上的实现分离开来,通过模型转换器实现系统模型到应用代码的转换。为了提高对分布式计算和信息系统集成领域的技术支持,OMG提出了功能更加完善的SOA (Service Oriented Architecture) ,服务作为一种平台无关,开放和自治的网络化构件,使分布式应用具有更好的复用性,灵活性和可扩展性等优势。伴随着应用系统的发展变化,为了满足软件工程人员对应用系统高质量的保证,软件测试技术也蓬勃发展起来,软件测试由最初的全手工输入的代码测试,到部分人工参与的半自动化测试及自动化测试 (主要是利用各种测试应用工具) ,以及近年来逐渐兴起的MDT (Model-Driven-Testing) 。随着可视化UML (Unified Modeling-Language) 建模工具描述功能的完善和各种功能测试工具的出现,加速了模型驱动测试方法学在现代软件系统的应用。模型驱动测试极大地减少了软件生命周期中软件测试阶段的人力劳动和测试时间,缩短了软件上市时间,提高了软件质量和开发效率。同时,模型驱动软件开发和测试方法学都是面向领域建模软件思想的应用,极大的提高了系统的复用性和软件开发的生产力。

关于模型驱动测试的研究颇多,其中以AGedis[2]项目研究成果最为突出,文献[3]提出了模型驱动测试开发方法学和产生了用于模型驱动测试开发的开发工具,文献[4]侧重于用于模型驱动测试开发工具体系架构的研究。虽然基于模型驱动测试的具体应用研究很广,但多数都是侧重于模型驱动测试建模的研究,很少有对模型驱动测试开发应用软件的研究。然而到目前为止,专门用于模型驱动测试软件开发的集成开发工具还没有出现,但应用于模型驱动测试各个开发阶段的商业工具却非常多,基于Eclipse架构面向模型架构软件开发和模型驱动测试的开源组件和插件工具的发布,使得模型驱动测试软件开发有了实践的平台。本论文就是利

用基于Eclipse架构的OAW和JUnit组件作为应用工具进行模型驱动单个服务测试的研究。下面将分两大部分来叙述:

2 面向服务架构测试概述

本文是对面向服务架构应用Service的模型驱动测试的研究,所以有必要在这里简单介绍些面向服务架构和服务及其测试的相关内容。众所周知,应用系统的测试过程包括下面三个过程:单元测试,集成测试和系统测试。由于面向服务架构的服务具有动态配置,灵活应用的特征,同时,组成应用系统的服务还可能由第三方服务生产厂方提供,这样使得面向服务应用系统的测试工作难度更大。为了确保应用程序能够按照预期定义的功能正常运行,我们必须首先对组成服务的单个服务独立进行测试 (即单元测试) ,然后对组成业务过程的服务集进行业务处理过程测试 (即集成测试,主要是对不同服务之间通信与协作的测试) ,最后对整个系统的功能进行测试 (即系统测试) 。面向服务是指在应用系统业务处理过程当中,系统的整个业务功能被合理的分解成具有一系列相互独立运行的组件 (即服务) ,所有的各种服务组成一个服务集合。服务是不依赖于计算机硬件平台,操作系统及系统开发程序语言的,同时又是异构的,自治的逻辑单元。而我们常提到的面向服务多数指面向web服务,实质上,这只是其得到广泛应用的一个领域,不能涵盖其所有内容[1]。面向服务架构是一种分布式,松耦合网络架构,在这里我们不对它进行详细全面的介绍,主要介绍其三个最重要标准组件:SOAP (SimpleObjectAccessProtoca-l) ,UDDL (UniversalDescription, Definition, an-dIntegration) ,WSDL (WebServiceDefinition-Lan-guage) 。由于本论文侧重单个服务的测试,我们将详细介绍WSDL内容,并在下面以作为案例的agiotagerServices (货币兑换服务) 进行描述,如下面程序所示。WSDL是一种基于XML的服务描述及服务如何被访问的定义语言,主要包括下面四个部分:端口类型 (portType) ,通信消息 (message) ,类型 (types) ,端口绑定 (bindings) 。在一个服务描述文件中,端口通过端口类型元素定义,端口元素描述了服务提供的操作;通信消息用于定义在服务提供方和服务使用方之间传递的各种消息;类型描述服务使用的数据类型,端口绑定描叙服务使用的通信协议。面向服务架构软件系统的单个服务测试包括下面三个方面的内容:1) 测试单个服务的所有服务端口;2) 测试服务端口上的所有操作;3) 测试所有操作使用的数据元素的正确性。

3 货币交换服务测试

模型驱动测试是指系统分析初期将软件设计需求分析书与测试规格说明书紧密结合起来产生行为模型,利用测试工具进行自动化测试的过程。系统需求分析说明书详细定义了系统的功能和系统中各参与角色业务活动,而测试规格说明书描述了系统测试需求及其定义了的一系列测试用例集。软件测试就是在测试规格说明书的指导下测试应用系统是否满足它在系统需求分析中的功能定义,并按照预期定义的结果进行显示。我们在这里将模型驱动测试过程划分为以下主要三个阶段:设计阶段,代码产生阶段,和运行阶段。在设计阶段生成测试规范抽象模型和转换模板,在代码产生阶段,通过采用代码产生工具 (如TGV, GOTCHA) ,将测试规范模型转换成测试代码。这两个过程是独立于特定平台,与开发应用系统的特定开发技术无关的。在测试运行阶段,则需要利用测试引擎 (如JUnit, Fitnesse) 去测试给定系统,即测试系统 (SUT) 。测试系统不单是指一个功能完整的应用系统,有时也可以指单个的功能模块,或单个的类,甚至类中的一个方法。由于测试系统体系架构,开发语言等的不同直接利用已有的测试引擎去测试各种测试系统是不可能的。这时,我们就需要在选定的测试引擎环境下定义适当的接口类,用于实现测试代码与测试系统之间的映射,即接口适配器。接口适配器对测试代码进行了封装。同时对在软件测试过程中生成的桩类和仿真类提供支持。在本文中,我们选取一个功能非常简单的货币兑换服务 (agiotagerServices) 来进行说明,按照前面描述的模型驱动测试的三个阶段分三个小节来详细说明单个服务的测试过程。该服务只有一个不同种货币进行兑换的方法,详细定义如上所示。

3.1 设计阶段

在这一阶段,我们根据测试系统需求分析说明书对系统测试进行设计,生成测试规范和测试代码产生模板。其中测试规范模型我们采用OMG对UML进行扩展的UTP (UML Testing Profile) 视图来描述模型驱动测试领域概念:测试系统 (SUT) ,测试上下文 (TestContexts) ,测试集 (TestSuit) ,测试用例 (TestCase) 。根据模型驱动测试的需要,在遵守U2TP协议的前提下,我们定义了构造型<>,即断言。它继承于元类<>,是模型驱动测试的重要组成部分。断言扩展了U2TP语义功能,用于判断测试用例在测试系统下能否通过测试。通过返回的布尔值指示测试成功或测试失败 (情况比较非常复杂,在这不做详细讨论) 。在本论文中,测试系统AgiotagerServices是一个只有一个方法的简单类,构造型<>用于表示一个包含零到多个测试用例 (TestCase) 的测试集,定义为AdiotagerTest类。测试用例 (TestCase) 是指测试系统待测试的方法,被定义成构造型类<>。每个测试用例都有其对应的行为视图,如顺序图或活动图。图1表示了货币兑换的顺序图。

测试用例集中定义的测试用例,在测试运行时通过消息机制依次调用测试系统的相应的功能函数。如在本案例中调用汇率转换器的方法adiotage (100, dollar, yuan, 6.795) ,汇率转换器的一个实例就被创建,它接收传递过来的实际参数,执行后将产生的结果传递到参与断言的实例中,参与断言根据预期设置的值判断该测试是否通过,输出测试结果。

3.2 测试代码产生阶段

测试代码产生阶段是利用前一阶段生成的测试模型和转换模板产生测试代码的过程。然而对于某些测试系统而言,由于产生的测试代码的不完备性,我们需在测试执行阶段定义一些特定数据结构 (如多维数组) ,保留特定的测试数据值和测试返回值数偶,用以对测试系统进行完备性测试。同时,测试系统本身功能复杂性和及其对测试模型和模板转换产生不同格式代码的多功能性,选择一个功能强大的测试生成工具就变得尤其重要。在本论文中,我们是利用OAW工具集来产生测试代码。如下所示。

我们可以看到,产生的测试代码是平台独立的。测试集中每个测试用例对应其中一个测试方法,由@Test符号引导。每个测试用例包括两个部分:定义块和消息块。定义块引用了参与该测试用例顺序图所有类,在需要时创建所需的对象实例。消息块表示测试用例顺序图参与角色之间调用消息及其传递测试结果的断言。

3.3 测试运行阶段

测试运行阶段是模型驱动测试的最后一个环节,可以执行在不同平台上。由于通过测试生成工具产生的测试代码是不能在测试引擎环境中直接对测试系统进行测试,这就需要我们编写相应的接口适配器。在这里我们选择JUnit作为测试引擎,故而我们采用Java语言依照测试代码编写agiotagerServices服务接口适配器文件,部分代码如下所示:

测试适配器文件用于对远程方法调用进行打包,有时也可用于对测试用例初始化进行打包,如数据库初始化代码或者对复杂测试状态判断的预期值的设定。接口适配器在测试阶段的早期,如果测试系统没有被完整的测试,我们还可以通过接口适配器文件中添加测试内容对其进行补充测试。当然,测试代码的缺陷我们主要还是通过修改测试模型和测试模板从整体上来进行改进,这也正是模型驱动测试的优势所在。在软件测试运行过程中,对于复杂的活动图,需要根据测试系统的要求,定义参与活动的服务角色桩模块。在agiotagerServices测试运行过程中,通过在agiotagerServices有目的的修改agiotageTest (float:, enum:, enum:, float:) 方法的参数变量,出错部分都能正确反映输出的断言中。

4 结束语

本论文通过一个简单的货币兑换服务,结合模型驱动测试方法学和面向服务架构,对单个服务如何进行模型驱动测试软件开发过程进行了详细阐述,为模型驱动测试应用系统开发提供了借鉴作用。然而,本论文主要侧重于单个服务的功能测试,而且测试系统简单,没有考虑测试系统内部功能模块及其业务数据结构的复杂性。特别是如何对不同服务组成的业务处理服务集合进行的集成测试,对其的实用性研究还有待后续深入。

参考文献

[1]鲍志云.解析MDA[M].人民邮电出版社, 2004.

[2]http://www.agedis.de.

[3]Alan Hartman, Kenneth Nagin.Model Driven Testing-AGEDIS Architecture Interfaces and Tools.IBM Haifa Research Laboratory.

基于数据驱动的测试论文 篇7

随着软件产业的飞速发展,软件系统的规模越来越大,功能、技术经济等方面的危机频频出现,软件质量的问题已经成为开发者和用户关注的焦点。而软件测试正是目前保证软件质量的控制手段,验证软件能否完成用户预期需求的唯一有效方法。因此,软件测试在软件开发中的地位得到了前所未有的提高。

长期以来,我国软件行业重开发轻测试,测试人员的很多工作由开发者代劳,导致很多人员不愿意从事专门的测试工作,因此行业内的软件测试人才严重短缺;另外,在高校的教学设计中,软件测试仅仅作为软件工程的一个章节来讲解,而没有设置专门的软件测试课程,因此学生无法胜任软件测试工作。基于以上背景,为了满足软件测试人才的大量需求,在高校中,培养应用型技术行的人才迫在眉睫。

2 项目驱动教学模式

项目驱动是指把项目作为专业课程的总教学目标,根据教授的知识点,将项目划分为若干个典型案例, 以案例引导学生对知识点的掌握,实行“理论与实践的一体化”,在这个过程中,学生会不断获得成就感,并激发学习热情,培养自主学习能力。基于项目的统领,将原来琐碎的知识点,通过不同的案例,整理的系统、条理,是提高教学效果, 训练职业技能的有效教学方法。

在软件测试课程中,所挑选的项目为学生们比较熟悉的学生管理系统,根据理论+实践课程的教学方式,将该系统分为多个小项目,每个项目中都蕴含着重要知识点的讲授,在理论课的教授中,先通过简单案例,熟悉知识点,之后将其应用的小项目中,最后将各个项目综合起来,按照软件测试的过程,带领学生进行实际项目的测试工作,使学生在实际工作中,尽快上手。

3 课程改革实践

根据应用型软件测试人才培养的目标,在基于项目驱动的教学中,软件测试课程的定位主要分为:课堂教学和项目驱动。

3.1 课堂教学

课题教学由基础理论知识和实验操作两部分组成。根据不同的阶段,所提供的案例,使学生能够掌握软件测试的基础知识。

在理论部分,重点和难点为黑盒测试和白盒测试测试用例的设计方法。依黑盒测试用例方法为例,将学生管理系统所分的两个小项目:系统登录功能和学生评价功能,当学生掌握黑盒测试用例方法设计时,对两个项目进行用例设计和功能测试。在教学过程中,一方面为了使学习内容更接近学生的接受能力,另一方面扩大接触不同类型软件,扩大学生知识面,根据学习内容,由简到难分别提供了加法器、求三角形的面积、ATM机等例子,分别对应等价类划分、边界值、因果图、场景法等。掌握黑盒测试用例的编写。其中三角形的面积贯穿与等价类划分、边界值和因果图三个知识点,为了提高学生的学习兴趣和动手能力,将求三角形面积作为学生动手的项目任务进行练习。首先,老师提出软件需求;其次,将学生进行分组,一部分学生进行软件功能说明文档的编写,部分学生根据功能说明进行软件的开发。第三:根据软件的功能说明,对开发的软件的功能进行设计测试用例,并且进行测试的执行。

通过求三角形面积项目,能够将所学到的基础知识点,应用的实践项目中,为下一步进行系统所分割的登录功能和查询学生功能打下坚实的基础。

在实践部分,主要是软件测试工具的学习。软件测试所使用的工具很多,根据学校的实际情况和学生对象,所教授的工具有:实践:例如单元测试:Junite;错误的管理:Bugziller;自动化工具:QTP;所测试的对象为自带飞机订票系统和所开发软件学生管理系统。

在学习Junit中,仍然测试学生所开发软件求三角形面积为任务驱动,要求学生掌握两个方面的内容,一、复习理论中白盒测试用例设计的方法,对程序进行用例设计;二学习Junit单元测试工具,包括掌握JUnit的安装,熟悉简单测试和运行的过程。当在测试工程中发现软件的缺陷时,利用Bugziller工具进行缺陷的管理,包括缺陷描述、缺陷报告的提交、分配缺陷、审核缺陷报告、处理缺陷和验证关闭缺陷等。

相对于手工测试而言,把需要重复执行的测试步骤描写成测试脚本,让机器去重复执行即自动化测试可以极大的提高工作效率。在教学设计中介绍了自动化测试的基本概念,通过QTP自带的飞机订票系统,介绍了QTP功能的基本使用,特别是检查点、数据驱动、参数化、对脚本的编辑等,提取学生管理系统的小项目,作为每个知识点学习的案例。

3.2 项目驱动

在本校的教学设计中,软件工程为软件测试的先驱课程,将学生所设计的软件作为一个整体的项目进行测试,一方面丰富了教学内容,另一方面,进一步的提高了学生的积极性。

以学生管理系统为例:在对整个项目的测试中,包含了测试计划的编写,测试环境的搭建,测试用例的编写,自动化工具的使用,从错误的描述及Bug管理工具的使用。当学生对软件测试的技术有一定程度的掌握时,选取的项目尽可能的与企业的实际工作环境接近。

在整个项目实践中,测试工程师从软件最初简单的需求模型到产品发布各个阶段的主要工作都进行了详细的讲述和实践操作,包括项目初期各个阶段的主要工作,软件测试计划的制定、软件测试案例的编写、软件项目各个部门相互协作、执行测试案例并报告缺陷、产品功能完善与修复缺陷阶段、测试工程师在产品发布前后的工作,如下表所示:

4 总结

基于数据驱动的无线链路管理策略 篇8

为了取代以握手机制为基础的无线链路管理策略,本文结合互联网数据库技术[3]提出一种基于数据驱动的无线链路管理策略。本策略做了以下方面改变:(1)数据模块具备自主智能的功能[4],能从接收数据中预测工作状态;(2)在组网架构中添加记录数据模块状态的数据库;(3)主控模块在每次调整数据模块状态的时候都会更新数据库同时将状态信息周期性地推送给数据模块;(4)数据模块不仅能被动式获取状态信息而且也能主动式查询状态信息。由此可见,本策略在保障无线链路管理可靠性的前提下,也能很好地克服握手机制所面临的问题,提高异常处理能力。

1 研究现状

3G/4G蜂窝网采用基于握手机制的链路管理策略,具体工作流程和面临问题如下。

1.1 工作流程

图1给出了由UE发起的基于三次握手机制的链路管理正常交互流程,具体步骤如下:(1)当UE发现无线链路需要建立/调整/释放的时候,通过空口向EUTRAN发送链路管理请求信息(第一次握手),同时进入到等待应答状态并开启请求定时器(Treq);(2)EUTRAN接收到链路管理请求信息,进行相应的处理后会向UE发送链路管理应答信息(第二次握手),同时进入到等待确认状态并开启确认定时器(Tcomp);(3)UE接收到链路管理应答信息,根据信息内容对链路进行相应配置,同时为了同步EUTRAN的链路状态会向EUTRAN发送链路管理确认信息(第三次握手),调整状态并关闭Treq;(4)EUTRAN接收链路确认信息得知UE的链路状态已改变才会对链路进行配置,同时调整状态并关闭Tcomp。

图2给出了UE侧基于握手机制无线链路管理状态机,包含了在正常与异常情况下的状态转移。正常的状态转移流程已经在上一部分进行详细介绍。异常的状态流程包含:(1)等待定时器超时并且重发次数大于最大发送次数的时候,状态机都会直接退出;(2)在链路工作状态下,其中一个数据模块出现异常,都会让链路进入到异常状态(数据无法正常传输),如果数据模块有自我纠正功能,或许能从异常状态切换到正常工作状态。

1.2 存在问题

从图2可以发现基于握手机制的链路管理策略中存在许多问题。

(1)状态个数和空口交互次数较多,不仅提高了处理复杂度并且存在大量异常处理。

(2)异常处理效率低:RLC[5]接收数据落在接收窗外或PDCP[6]收发状态不一致的时候,需要经历一段时间才能恢复。

(3)异常处理可靠性低:(1)无线链路在通道质量不佳的情况下无法建立,将直接导致数据无法传输;(2)当UE发送链路建立确认信息或者发送链路释放请求信息,但EUTRAN接收不到的时候,都会使得UE的状态机进入到异常状态且无法恢复;(3)数据模块状态失步且无法自我纠正的时候,将导致数据传输中断且无法恢复。

2 基于数据驱动的链路管理策略

本节针对基于握手机制的链路管理策略中存在问题进行修改,结合互联网和自组织网思想提出一种基于数据驱动的链路管理策略,之所以称为数据驱动是因为数据模块能够从接收数据预测和查询出链路工作状态,从而迅速调整状态保证数据传输。

2.1 工作流程

基于数据驱动的链路管理策略首先对组网架构和网络工作单元进行了调整:首先在EUTRAN中增加了记录数据模块工作状态的数据库,目的是为各个数据模块提供查询数据传输状态的地址;其次各个数据模块具备自主智能和查询数据库的功能,一方面能及时地从接收数据中预测工作状态,另一方面能主动式查询数据工作状态信息。

图3给出了基于数据驱动的链路管理策略工作流程,具体步骤如下:(1)当UE发现无线链路需要建立/调整/释放的时候,向EUTRAN发送链路管理请求信息,进入到等待链路状态配置状态;(2)EU-TRAN接收到链路管理请求信息进行相应链路参数配置后,将链路状态封装到广播信息中周期性地推送给UE;(3)UE接收到链路状态配置信息后直接进入链路工作状态,开始进行数据传输;(4)数据传输过程,当数据模块从接收的数据中预测工作状态和当前工作状态不一致的时候,将会自动调整进行状态同步;(5)数据传输过程,当数据模块检测到接收的数据不适应当前工作状态的时候,UE将向EU-TRAN的数据库发起查询,并按照数据传输状态应答来更新状态;(6)EUTRAN每次调整数据模块状态的时候都会更新数据库并将状态信息周期性地推送给数据模块。

图4给出了UE侧基于数据驱动无线链路管理状态机与图2相比,不仅减少了状态还简化异常处理流程。在异常处理方面:(1)当UE没有接收到链路配置信息并且接收需要到发送数据的时候,等待一段时间继续向EUTRAN发送链路建立请求信息,之所以这样的目的是了防止数据包多引发的建立请求泛洪(类似于文献[7]的flooding攻击);(2)周期性推送UE链路配置信息,可以让数据模块快速地知道当前数据传输状态,进行状态的更新;(3)数据模块一方面能从接收的数据预测工作状态并进行状态同步,另一方面能检测接收的数据是否适应当前工作状态并进行状态查询,表1给出了几个重要数据模块在数据驱动方式的工作方式。

2.2 优势

从图4可以发现基于数据驱动的无线链路管理策略比起基于握手机制的无线链路管理策略存在优势。

(1)状态个数和空口交互次数减少,不仅降低了处理复杂度并且消除一些不必要的异常处理。

(2)异常处理效率高:RLC和PDCP在收发状态不一致的时候能快速恢复。

(3)异常处理可靠性强:(1)无线链路在通道质量不佳的情况下,虽然暂时无法得到配置,但经过一系列数据触发后还是能建立通道进行数据传输;(2)消除了UE和EUTRAN状态不同步的情况,例如当UE侧链路释放后又接收到EUTRAN的状态配置信息,就会继续发起链路释放请求;(3)消除了链路在异常状态下无法恢复到工作状态的情况。

3 分析模型

本节针对链路管理有效性和可靠性进行分析,并比较两种链路管理策略的性能。

3.1 有效性

数据链路管理的有效性在这里指的是数据模块在知道数据异常条件下调整恢复的时间。对于RLC的恢复效率是指数据落在接收窗外到重新被接收的恢复时间。基于握手机制的RLC平均恢复时间如公式(1)为等待时间的加权平均,其中Rwin是接收窗大小(为RLC数据序号最大值SN的一半),ti是需要接收i个数据的恢复时间,加权系统ai应满足公式(2)。基于数据驱动的RLC平均恢复时间也如公式(1),由于RLC接收到S-1个落在接收窗外的数据就会主动查询发端,所以RLC最快能在接收到第S个数据就能恢复传输,使得加权因子ai从S+1到Rwin变得非常地小。

图5给出两种策略下RLC恢复效率的比较,发现:(1)随着SN最大值的增加,两种策略的RLC恢复效率都随之增加,由于握手机制的RLC没有自我调整接收窗的能力所以呈现线性增加趋势,而数据驱动的RLC能及时调整接收窗进行自我调整,只要设置合理S值,无论SN值取多大恢复效率都趋近于稳定(即快速正确地恢复数据传输);(2)当SN大于一定数值的时候,握手机制的RLC平均恢复时间进入到百毫秒量级,而数据驱动的RLC始终保持在几十毫秒量级,因此数据驱动的RLC更适合传递实时性数据业务。

3.2 可靠性

数据链路管理的可靠性在这里指的是链路管理过程出现异常的概率,采用概率论中的条件概率来进行分析。

基于握手机制的无线链路管理策略出现异常情况包括:(1)无法正常建立链路的概率如式(3),其中pte是空口消息无法正确传输的概率(注:简化分析模型,认为请求,应答,确认等空口消息具有相同传输概率);(2)在链路正常工作的基础上,出现异常概率如式(4)分别为EUTRAN在链路配置上无法同步和数据传输中出现不可恢复的异常pur;(3)在链路正常工作的基础上,出现EUTRAN链路无法释放的异常如式(5)。

表2给出了两种无线链路管理策略下的可靠性对比,可以发现:(1)基于数据驱动的链路管理策略无论在任何条件下都能对异常进行处理,因此异常概率约为0;(2)由于pte的影响程度是pur的10倍,所以握手机制的异常概率主要取决于pte。

4 结论

本文提出的基于数据驱动的无线链路管理策略不仅克服了3G/4G提出的基于握手机制的链路管理策略所面临的问题,还增强了异常处理能力,最后通过数学分析模型验证了本策略异常处理的有效性和可靠性。因此本策略非常适合于未来无线通信网。

摘要:现有3G/4G蜂窝组网系统对于数据链路的建立、配置和释放都采用握手交互机制,存在问题:1流程繁琐且伴随大量异常处理;2当链路管理同步失败后数据将无法恢复。针对此问题,提出一种基于数据驱动的无线链路管理策略,一旦数据传输模块通过数据感知到工作状态不同步的时候,会主动向主控模块发起查询进行同步,恢复正常的数据传输。最后通过数学分析模式,验证本策略在数据链路管理上的有效性和可靠性。

关键词:蜂窝网,握手机制,数据驱动,无线链路管理

参考文献

[1] 3GPP TS 25.331 version 12.5.0.Radio resource control(RRC);protocol specification,2015:03

[2] 3GPP TS 36.331 version 12.5.0.Evolved universal terrestrial radio access(E-UTRA):radio resource control(RRC),2015:03

[3] Halder R,Cortesi A.Abstract interpretation of database query languages.Computer Languages Systems&Structures,2012;38(2):123 —157

[4] Alderso D,Willinger W.A contrasting look at self-organization in the internet and next-generation communication network.IEEE Communication Magazine,2005;43(7):94—100

[5] 3GPP TS 36.322 version 12.3.0.Evolved universal terrestrial radio access(E-UTRA):radio link control(RLC),2015:09

[6] 3GPP TS 36.323 version 12.3.0.Evolved universal terrestrial radio access(E-UTRA):packet data convergence protocol(PDCP),2015:03

[7] 宋春玉,廉龙颖,王艳涛,等.一种可抗TCP Flooding攻击的网络流量检测机制.计算机系统应用,2013;22(6):176—178Song C Y,Lian L Y,Wang Y T,et al.Network monitoring machine against TCP flooding attacks.Computer Systems&Application,2013;22(6):176—178

基于数据驱动的测试论文 篇9

随着目前企业信息化进程的加速,企业数据中心的建设日益重要。很多企业的应用系统已经运行数年或者更长的时间,因此积累了大量的数据。如“中石油大庆油田公司A2施工总结数据”。数据迁移是将这些旧应用系统的数据迁移到新系统中,而有些旧系统还会继续运行,还会产生新的数据,根据实际情况迫切需要找到将历史数据实时合理地迁移到新系统中去的一种新方法.

2 介绍传统数据的迁移方法

四种传统的迁移方法有:先迁后录[1]、先录后迁、分次迁、一次性迁。

先迁后录是指:在系统单轨运行前通过市场用的迁移工具或自行开发的程序,将老系统数据转入到新系统模型中,再利用新系统功能,也可自行开发配套程序,把迁移到新系统中的老数据,再根据需要生成原有的结果数据。这种方法大大减少迁移量。

先录后迁是指:在系统单轨前,首先把部分数据输到新系统中,系统单轨时再把以前的老数据导入新系统数据库中。这种方法主要适用于新老系统数据结构差别很大情况,不能将重要的历史数据导入到新系统中。这些必须的重要数据在应用新系统前通过手工录入到新系统中。

分次迁移是指:利用市场用的迁移工具或自行开发的程序,把老数据库中的重要的历史数据分几次做迁移。这种方法把大任务分成小任务,避免了数据量大和宕机时间短之间的相矛盾的发生。这种方法的缺点是:由于数据多次合并导致了出错的概率升高,同时为了保持整体数据的一致性,这种方法要求把先导入的数据进行同步,由此使导入数据的难度增加。

一次迁移是指:利用市场用的迁移工具或自行开发的程序,把老数据库中的数据通过这种方法一次性全部导入到新数据库中。这种方法的优点是:过程用时短,与分次迁移相比较,问题涉及的较少,风险较低,其缺点是:迁移过程不太受控,而且劳动强度大。

而这些迁移策略不能够满足用户对于数据及时迁移的需要。因此本文提出了历史数据迁移、实时数据迁移、手动数据迁移多种策略,这些策略满足了数据进入新系统的及时性要求,目前此系统已经在中石油大庆油田井下数据中心中投入使用。

3 数据迁移策略框架体系模型设计

图1为基于多种迁移策略的迁移体系结构模型。对于历史数据和实时数据给予不同的迁移策略,实现了多种形式数据的迁移。

3.1 数据模型映射

数据模型映射[2]通过多种迁移方法来实现。什么是数据模型映射?它是通过一个映射规则,建立起一个目标模型和源模型之间的关系。在源模型和目标模型的描述已存在的情况下开始映射。模型映射即是数据映射。

一些数据映射关系的基本概念如下:

映射属性和映射实体。反映源系统与目标系统在概念模型上的对应关系[3]是用户可以见到的较高视图的映射实体。也是映射关系的最底层,属于规则处理的最小单位。表格与实体的对应,说明了引用和实体的完整性,属性映射是实现映射实体和映射属性的基础。不论引用完整性和实体完整性,都需要属性来实现。映射实体可分为目标映射实体和源映射实体;映射属性又可分为:分为目标映射属性和源映射属性。

映射关系

映射关系是指:目标实体和源实体属性之间的关系。有向线段和映射模式(MM)构成映射关系。映射源映射实体的映射属性就是映射关联起始节点,映射的目标实体的映射属性就是映射关联的目标节点。

三种形式 的映射模 式分别为 为 :语义映射 模式(SE-MA_MM)[4]、数据映射模式和算数映射模式。语义映射模式用于解决属性概念的语义计算。数据映射模式表示常量数值。算数映射用于表示属性间的加减等算数操作运算。

什么是数据映射关系

数据映射关系是:如M<STM,R>就是一个三元组,映射关系名称用M表示,映射关联集合用R表示,映射算子集合用MO表示。映射关系语法的表示方法可用BNF范式表示,术语符号用”...”:表示;尖括号表示必须选择项;定义为用::=表示;中括号用业表示可选项;大括号表示可重复无限次;左右两边的任意选择项用|:表示;分组用于(...)表示:;参数用斜体字表示。描述映射关系规则如下:映射关系的语法描述如下。

3.2 元数据设计

根据以上对映射关系描述,映射模式又可分类为:从源映射实体到目标映射实体间的映射关系,对每一类映射关系又可定义为一类映射模式。但是,每一类映射模式又是一类数据转换规则;通过对油田A2数据模型的研究,由映射模式的三大类,被细分为16种映射模式。由支撑元数据可定制映射模式元数据。对应数据库间对应字段的映射模式是映射模式元数据的核心,它定义了数据表结构的转换以及处理方式,这些信息集中存储在元模型中。映射元数据模型见图2映射元数据模型图。

3.3多策略数据迁移系统工具框架结构图

工具的总体设计思想是:由于迁移的数据量很大,首先对历史数据进行历史数据迁移;对于各个应用系统产生的实时数据,通过定时迁移模块进行定时触发迁移;还提供了手动触发迁移模式,在手动触发模块中用户可以通过选择表及其父表、选择实体(井、施工事件)实现实时数据迁移的触发。历史数据和实时数据在迁移的过程中产生的迁移日志存入相应的文件中(图3多策略数据迁移系统工具框架结构图)

4 工具实现与应用

4.1手动迁移模块的具体实现

手动迁移模块中提供了两种对象间的对应关系:实体对应关系;表格对应关系。

表格对应关系的实现:

定义表集合

单继承表:

筛选重复表:

在A2施工总结迁移工具中,不仅提供单表之间的对应关系还提供单表及其父表的对应关系。当用户在选择表的时候可能会出现多个表的父表重复的情况。如果对每一个被选择的表及其父表都进行迁移必然会增加系统负担,降低执行效率,因此需要对用户选择的所有表进行遍历,形成一个有序的集合进行迁移。

有两种基本机构:在初始化的过程中,把A2施工总结中所有的表组成一个顺序线性链表[5],每张表相当于树中的一个节点,每个节点存储着表代码(code)、确认标志(sign)、节点路径(path)三种节点信息。而树的继承关系由表的父子关系来描述的。(如图4表组成的有序树与节点所示)

步骤1:初始化树节点

当选择表格以后,首先对树的节点进行初始化,所有节点形成一个顺序线性链表。节点的顺序使用各个表所在的父子关系来描述。在映射表顺序信息中每个表的继承顺序采用目录方式进行存储,实现的SQL语句如下所示:

Select * from sequ_t t where t.sequence is not null order bylength(t.sequence),t.sequence

步骤2:得到被选择的一个表的顺序表

对于选择的第个节点使用递归方式找出其所有的父表,得到一个顺序表:。使用Li代表节点Ti的路径的目录数,prev()是获得上一级节点的函数,那么得到节点Ti根节点递归表达式为:

步骤3:修改顺序线性链表

然后与初始化得到的顺序数进行比对并修改确认标志。

重复以上的过程直到最后一个被选择的节点操作完毕。操作过程如图5筛选重复表流程

4.2实现历史迁移模块的过程

4.2.1、实时获取迁移信息

由于历史数据迁移量较大,客户端向服务器的请求时间很长,所以出现了页面失效的问题。故采用Ajax[7]异步方式使迁移模块在服务器后台运行来实现历史数据的迁移,并把迁移过程中产生的日志信息存入日志文件中。为了读取所产生的日志信息,采用Jquery[6]定时器定时以同步方式从服务器取回迁移信息,并在客户端进行显示,使用Jquery框架能够很好的实现前台与后台的交互。如图6同步获取迁移信息的流程

5 结束语

该文描述了一个基于多种迁移策略的数据迁移的架构,构建了元数据模型,点讨论了映射规则和具体的实现,解决了各个应用系统的历史数据和实时数据的迁移。以上提到的迁移策略在实际工作中已经被采用,顺利的实现的源系统与目标系统数据的迁移,保证了系统的正常运转。

摘要:该文从迁移策略上介绍了包括历史数据迁移、实时数据迁移、手动数据迁移多种策略。从迁移的形式上介绍了包括了从增量迁移和全量迁移;实际中采用了元数据驱动技术,构建从旧系统到新系统的映射元模型并制定了映射规则;技术上使用了优秀的Java Script框架——Jquery和SQL语句完成了数据库数据的迁移。目前该系统已在数据中心建设中得到应用。

基于数据驱动的测试论文 篇10

关键词:驱动,自动化测试,软件测试,回归测试

地震处理、解释软件系统是我国拥有独立自主产权的一套用于石油勘探开发的软件系统, 目前发行的版本已经达到第三代, 其底层软件平台开发、性能以及功能都在不断的开发和完善之中。产品的测试人员在测试更新产品时需要进行回归测试、新功能测试等工作, 工作较为繁琐并且有一定的重复之处。为了有效的节约成本, 提高测试人员的工作效率让工作人员将更多的工作时间和工作精力放在新产品用例上, 因此本此的研究具有重要的实际意义。

1 软件自动化测试分析

随着科学技术的快速发展, 软件自动化测试技术也在不断的更新, 目前软件自动化测试技术已经可以与传统的手工测试同时工作, 二者在测试方面取长补短、不可分割。软件自动化测试主要利用长时间的稳定测试、回归测试以及多用户开发测试, 将系统测试的工作人员从复杂的工作中摆脱出来, 将更多的精力用于其他的测试工作, 从而极大的提高软件测试的工作效率。另外, 人工测试系统时由于人为因素可能出现测试错误或者测试遗漏等现象, 软件自动化测试正好可以解决这一问题, 并且可以自动显示测试结果方面工作人员对数据进行分析。自动化测试经历了三个阶段, 目前迎来了新一代关键字驱动自动化测试。新一代代的关键字自动化测试可以将被测软件逻辑从测试的脚本中分离开, 使待测软件的数据可以将逻辑数据分开, 从而得到测试数据、测试逻辑以及测试脚本三者分开的技术, 这样可以更好的适应业务变化的需求。关键字驱动和过去的数字驱动不同之处是, 测试的文件数据需要有关键字以及具有描述性质的字段。

2 关键字驱动的自动化测试分析

测试文件主要包括对测试配置文件以及具有层次化的数据文件。自动化测试系统的驱动模块是通过对配置文件进行加载, 调整相应的测试数据、关键字的脚本从实现系统的自动化测试。系统测试日志和模块可以将本次测试的结果精细化输出, 并且标记测试用例。经过一系列的操作流程后测试工作人员可以根据测试的报告分析出本次测试结果。

2.1 层次关键字测试

层次关键字分离测试可以将关键字按照一、二、三级进行设计, 对其功能进行划分, 可以分为测试用例、测试用例业务逻辑以及测试步骤。自动化测试系统正是由于可以对用例进行逐层的调用, 从而使系统的用例得到细化。一级关键字的测试表是一种概要设计, 将各个功能点进行有机罗列, 从而使系统的测试功能更加全面, 涉及面更广, 对测试用例文件更加方面快捷。另外, 高级关键词对可以通过索引搜索二级关键字驱动。二级关键字驱动测试是对系统的详细测试, 可以将系统的每个用例进行逻辑测试, 二级关键字可以搜索三级关键字的信息搜索表。三级关键词测试的是详细步骤, 其测试的是最小单位, 二级关键字驱动测试与三级关键字驱动测试是组合测试套件。

在一级测试表中, Test01对应的是User Login;Test02对应的是Strategy Confi guration;Test03对应的是Log Module;Test04对应的是Command Line Interface。

二级用例表是对一级关键字进行细化的过程。其中User Login对应的是Verify Admin Logoin Verify Invalid User Ve r i f y N e w U s e r C r e a t e R e a l D B;S t r a t e g y Confi guration对应的是Create Virtual DB Create App Server Create App;Log Module对应的是Export Confi guration File Import Confi guration File;Command Line Interface对应的是Test All Command。

三级关键字驱动是对每个测试用例细化的过程。

Verify Admin Logoin对应的是Login Create;Verify Invalid User对应的是Login Loninexit;Verify New User对应的是Login Exit;Create Real DB对应的是Open Real DB Add Real DB Test Real DB;Test All Command对应的是testcommand。

2.2 关键字支持脚本

系统测试的具体步骤制成关键字支持脚本, 其包括测试的业务信息, 可以实现测试脚本与测试数据以及逻辑三者相互分离。在测试脚本数据时再重新调用, 可以调用关键字支持脚本, 模拟整个测试流程。

2.3 关键字结构设计

在本系统中关键控制着测试的整个流程, 每个关键字有对应的脚本, 每个步骤代表测试流程, 系统可以对关键字对测试流程进行搜索, 来获取每个字段的具体值。关键字的结构设计可以根据三级关键字测试表将其中的Test Step一一进行设计, 并对测试框架中的信息进行读取, 将相应的脚本数据传输到具体的代码中。

3 结论

综上所述, 地震处理、解释软件系统对软件的稳定性、正确性有较高的要求, 利用人工的方法很难有效实现系统软件的回归测试, 软件自动化测试的引入一定程度的解决了大型石油软件系统开发过程中的测试难题, 具有现实意义。本文首先对软件自动化测试分析进而论述关键字驱动的自动化测试分析, 在分析层次关键字测试、关键字支持脚本以及关键字结构设计后, 对基于关键字驱动自动化测试更加了解。

参考文献

[1]陈丽丽, 林莉, 傅晓娟.基于关键字驱动的自动化测试框架研究[J].长春理工大学学报, 2012, 07 (25) :238-239.

[2]王军, 孟凡鹏.基于关键字驱动的自动化测试研究与实现[J].计算机工程与设计, 2012, 09 (21) :3652-3656.

上一篇:产蛋鸡白痢诊治下一篇:自动扩展