数据自动生成

2024-11-14

数据自动生成(精选12篇)

数据自动生成 篇1

0 引言

数据库应用软件是软件开发的一大重点, 是推进企业信息化建设的重要手段。这一类软件种类繁多、需求量大、功能需求多变, 导致开发工作繁杂且重复性大, 除数据表结构及数据本身外, 其大多数界面及操作是类似的。因此, 研究能够适应不同数据表结构的界面自动生成技术可以大大减少开发工作量、降低开发成本、加快开发进度, 特别是为维护工作带来很大方便, 而且降低了手动开发可能带来的错误几率。

目前很多软件企业通过代码生成器根据预先定义的模板高效生成高质量、一致性的代码, 具有很多优点, 但也存在一些不足:

1. 效率高, 但灵活性差。代码生成器无法动态根据数据库结构调整类对象, 对数据库经常修改或数据库结构未知的数据库无法适应;

2.通用性差。其根据模板生成, 模板的适用范围有限;

3.功能有限。生成代码一般仅包括基本数据表操作, 与目标软件存在一定差距, 需要手动修改、添加功能;

4.生成代码量大, 很多模板经过手工修改后无法再自动生成 (自动生成会覆盖手工修改的代码) , 一般在软件开发后期已经不再使用代码自动生成了;

5.不能适应经常变化的报表功能;

6.自动生成的界面不美观, 界面布局单一。

为了解决此类问题, 界面自动生成领域已经有了一些研究:文献[1-2]采用XML来描述界面元素, 实现了界面的快速生成;文献[3]基于IFS模型来实现界面的自动生成;文献[4]使用GUl4J模型实现了数据与界面的绑定等。但目前仍存在一些不足:

1. 自动生成界面有助于保持界面风格与操作的一致性, 但与目标软件间的衔接存在一定差距;

2.界面布局一般通过XML或其他文档描述, 虽然规范, 但是描述参数过多, 并且在描述界面与业务逻辑之间关系时较为复杂, 易用性受到影响, 还有改进的余地;

3.一般采用自动生成XML或其他格式界面描述文件, 但大多数情况下需要手动干预, 当数据表众多, 并且当数据表结构发生变化时, 自动生成的XML文件就不适应, 改动较大;不适应对程序后期的改动;

5.功能不够完善, 追求界面生成的通用性, 一般仅包括数据表的基本维护, 没有集成完善的常规数据操作和数据处理功能, 需要重新编写功能代码。

本文主要针对以上问题, 自动生成的界面以解决数据库操作及数据处理需求为目的, 主要针对共性、一般性的需求做深入集成开发, 集成完善的数据操作功能, 同时提供了二次开发功能来实现其他个性需求, 使自动生成工具更有针对性, 更实用、易用, 对于一般情况下的数据库操作及数据处理能够快速完成参数的设置, 实现界面的自动生成。

1. 需求分析

1.1 功能需求

考虑到一些非常规功能自动生成的语法定义难度较大, 且会使工具复杂度增加, 维护性降低, 因此, 自动生成的只能是一些常规的, 公共通用功能, 同时提供了二次开发功能来实现其他个性需求, 具体功能需求如图1所示。

1.2 友好性需求

用户对操作体验要求不断提高, 需要对用户界面需求做深入的分析, 提高操作友好性:如相似功能按钮的集中分组、操作提示等。

1.3 提高系统效率

1.集成完善的数据验证及权限约束功能, 以提高系统效率, 改善用户体验。

(1) 前端数据验证:包括验证规则、验证方法、触发方式、验证方式、验证结果及反馈、自定义验证等[5]。

(2) 后台数据验证:包括与前端验证一致的实体完整性验证、主键约束、外键约束、唯一性约束、关联字段约束等。

(3) 数据权限约束:包括数据查看权限与数据内容权限 (添加、修改、删除) , 及多个数据内容权限规则之间的关系等。

2. 通过定义快捷键、默认值、值的自动填充等功能实现快速的有效录入。

2 主要实现思路

2.1 界面自动生成

1.界面组成元素

界面一般由标签Label (用于数据项说明或显示业务名称) 、单行输入文本框、多行输入文本框、二选一选择框、多选一选择框、日期、条码、图片框以及用于数据显示的数据网格、用于执行各项操作的按钮、滚动条、进度条等组成。

2.界面布局

首先, 在需求分析的基础上, 对功能进行分类, 分为页内功能与页外功能两大类。页内功能直接体现在界面上, 参与界面布局的自动生成;而页外功能以接口的形式提供, 不参与界面布局的自动生成, 由外部程序调用。其次, 对页内功能依据功能相似与集中性原则进行功能分组与界面元素选择, 依据用户使用习惯确定经典界面布局方案及多种布局方式, 采用四段式布局方式实现, 分为数据编辑面板、数据操作按钮组与搜索功能、数据显示网格、报表功能与分页功能按钮组四段。再次, 通过四段式布局的设置及各功能分组内部布局的设置实现多种界面布局的自动生成。最后, 根据页内布局与页外布局相配合的方式实现复杂界面的生成, 提高与目标软件的衔接。如图2所示。

由于不同数据表其数据项多少不同, 界面的空间有限, 根据每个表内数据项所占用的空间不同生成不同界面:

(1) 对数据项占用空间较小的情况, 将数据编辑面板、数据操作按钮组和搜索功能、数据显示网格、报表功能安排在一个界面上显示, 如图2所示。

A.数据编辑面板;B.数据操作按钮组与数据搜索功能;C.数据显示网格;D.报表功能与分页功能按钮组

(2) 对数据项占用空间中等的情况, 把数据显示网格 (含操作功能) 和数据编辑面板分别安排在两个界面上, 并且对数据项进行分组。通过记录列表上的编辑按钮, 调用编辑面板界面, 如图3所示。

(3) 对数据量较大的情况, 在界面上有多页切换功能, 如图2所示。

(4) 对复杂界面需求, 通过页内参数控制与页外布局调用功能接口的方式来实现, 如图4所示。

2.2 报表功能

实现能够随数据表结构及用户需求变化的通用报表功能, 其主要受到不断变化的数据源、复杂的数据处理描述及多样化报表样式的制约。

报表功能以显示在显示在界面层数据网格中的数据为可见数据集, 使报表数据集和数据源分离, 即当数据源改变, 不影响用户对报表的设计过程;又以简单的语法规则描述数据处理 (如“姓名”字段的语法规则为<姓名>) ;同时采用广大用户所熟悉的Word、Excell为报表模板编辑工具实现多样化的报表样式, 使得报表功能在通用性、灵活性、简便性方面有很好的提高和突破, 适应动态报表的需求[6]。

3 实例应用

3.1 用户功能要求

以图2所示的《计量检定管理系统》为例, 其中界面主要需求如下:

1.界面布局:采用默认布局, 第一段为数据编辑面板, 第二段为数据操作按钮组及搜索功能, 第三段为数据显示网格, 第四段为报表功能及分页功能按钮组。

2.数据编辑面板: (1) 对数据分组, 分为“基本信息”与“检定管理”两组; (2) 新增“复制”、“黏贴”功能按钮; (3) 按钮右对齐。

3.数据操作按钮组及搜索功能: (1) 在数据操作按钮组中新增“查询”按钮; (2) 数据操作按钮组左对齐, 搜索功能右对齐。

4. 数据显示网格: (1) 显示数据勾选列, 列名称为“打印选择”。

5. 报表功能及分页功能按钮组: (1) 报表功能中显示“Excel导入”、“Excel导出”按钮; (2) 在报表功能按钮组中新增“输出到Word”、“正面打印”、“反面打印”按钮; (3) 显示数据分页按钮组; (4) 数据操作按钮组左对齐, 搜索功能右对齐。

6. 数据约束

(1) 数据验证:委托单据号为整数, 不允许空值; (2) 委托单据号为主键约束; (3) 检定员、核验员、批准人为外键约束; (4) 权限约束:当检定员或核验员为空值时, 批准人不可输入。

3.2界面描述代码

3.3运行结果

如图2所示, 该界面除报表功能及附加按钮需要由开发者手动编程外, 其余功能均由界面生成工具自动完成。其主要代码共50行, 其中界面描述代码35行 (含描述20个数据表字段所需的代码20行;描述6个新增按钮代码6行) , 描述数据验证、外键约束、数据权限代码共7行, 数据源定义及配置文件描述代码共6行, 初始化及刷新代码共2行。

4结论

应用软件开发结果显示, 使用该组件后的开发重点主要转移到以下方面:

(1) 依据业务需求设计数据结构;

(2) 依据用户使用习惯合理设计界面布局并配置界面生成参数;

(3) 提取、分析、整理业务逻辑, 并配置数据验证、权限管理参数及外键约束等;

(4) 对组件不能提供的操作, 如编写新增按钮的功能代码、事件交互程序、进行数据交互、增加业务逻辑等由开发者手动完成;

(5) 做好业务流程的提取, 分析, 整理, 根据业务处理流程, 组织界面调用次序。

采用界面自动生成工具来开发数据库应用程序带来的优点主要为:

(1) 容易保证程序和界面的一致性;

(2) 使常规开发工作变得简单高效, 开发者不必再去考虑那些琐碎功能的分配与安排, 开发者主要精力放到业务逻辑分析、业务流程分析及业务处理的实现工作上去;

(3) 在开发大中型软件时容易实现分工明确、层次分明的集团化联合开发的工作模式;也可以个人或小规模实现常规小型数据库应用软件软件的批量生产;

(4) 降低开发成本, 缩短开发周期, 提高软件质量, 增加软件系统的可维护性。当数据表定义在程序后期发生改动时, 只需要在程序中做少量的参数修改就可以重新生成操作界面。

参考文献

[1]曹适, 庄毅.基于XML的通用界面自动生成模型[J].计算机技术与发展, 2014, (10) :12-15

[2]冯钧, 盛震宇, 唐志贤.基于XML Schema的Web界面生成方法[J].计算机工程与设计, 2013, 34 (4) :1498-1503

[3]杜湘, 张国飞.基于对象模型的状态模型 (用户界面) 研究[J].昆明冶金高等专科学校学报, 2014, (1) :15-18

[4]朱永华, 吴俊杰, 张倩.支持数据绑定的用户界面自动生成模型.计算机工程, 2011, 37 (23) :52—53

[5]林志荣, 谢金达, 张金仙等.基于VB的非侵入式验证组件设计[J].九江职业技术学院学报, 2014, (2) :8-12

[6]林志荣, 张金仙, 谢金达等.基于用户自定义的动态报表设计[J].兰州文理学院学报, 2014, 28 (3) :62-66

数据自动生成 篇2

一、遥感大数据的概述以及特征

在现代社会当中,遥感大数据已经成为了大数据的重要代表,成为了科学研究方面的重点研究方面,但是在现阶段当中还需要对其科学理论和方式进行不断的深入研究。遥感大数据具有大数据的特征,并且也具有自身独特的特征。在外部特征方面,首先具有海量的特征。遥感大数据的数据具有海量的特点,并且对着遥感技术的不断发展,在现阶段当中的高分辨率和高动态的新型卫星传感器在单位时间之内可以捕获到更多的数据量;其次还具有数据异构的特点,也就是说在数据生产过程当中所依赖到的业务系统之间会呈现出的不同状态,都需要由不同的数据中心来进行提供的,并且在逻辑结构或者组织方式上也呈现出了不同的特点;另外,还具有数据多源的特点,集中体现在数据的来源和捕获信息的手段方面,是可以拥有多种获取形式的,包括全球的观察网络点接收到的实时信息,以及民众手中的用户端的个性化信息。在内部特征方面,首先具有高维度性的特点,遥感大数据的数据类型呈现出了多样化的特点,因此数据当中的维度也变得越来越高,集中体现在了空间维度、时间维度以及光谱维度等。其次还具有多尺度性的特点,成为了遥感大数据的重要特点,也就是说在进行数据的获取过程当中,可以根据不同的遥感技术和相对应的技术水平,来进行有效的划分,在空间和时间上呈现出多尺度的特点。另外,还具有非平稳性的特点,由于遥感大数据广泛的获取方式和物理意义,在信息理论的角度上来说,就属于典型的非平稳信号,呈现出分布参数或者规律随时发生变化的特点。

二、遥感大数据的自动分析和数据挖掘

2.1自动分析。首先,需要对遥感大数据的表达进行了解,在这个过程当中需要抽取多元化的特征来进行表示,从而建立起遥感大数据的目标一体化,在研究过程当中主要包括对遥感大数据的多元离散特征的有效提取,形成在不同的传感器当中的提取方式和方法。还要对若干大数据的多元特征进行归一化的表达,从而提升对大数据的处理能力和处理效率。其次就需要对遥感大数据进行相关的检索,在检索过程当中,需要利用网络化和集成化的方式进行检索,制定出基础设施的计划,提升对其数据的访问和检索效率。并且针对海量的遥感大数据来会说,需要检索出符合用户需求和感兴趣的内容和数据,就需要对数据内容进行比对,从而判断出用户所需要的内容,从大量的数据当中进行快速的检索到目标。在检索的过程当中,发展知识驱动的遥感大数据的检索方式是最有效的方式之一,可以分为场景检索服务、多源海量复杂场景数据的智能检索以及信息数据的检索等。另外,就是对遥感大数据的理解的,通过遥感大数据的科学,可以实现数据向知识的有效转变,在这个过程当中就需要根据遥感大数据本身的特征和数据检索的方式来对数据内容实现有效的提取。最后就是遥感大数据云的技术,可以将各种方式的遥感信息资源进行有效的整合,建立起遥感云服务的相关新型业务应用和服务模式,可以将在天空当中的传感器所捕捉到的信息通过软件的计算和整合来实现数据资源的有效存储和处理,从而使得用户可以在很快的时间之内获取到有效的服务。

2.2数据挖掘。首先需要对遥感大数据的数据挖掘过程进行了解,包括数据的获取、存储以及处理和整合等,在整个过程当中都具有大数据的特点。在进行捕获数据的过程当中可以从各种不同的传感器当中进行获取,然后对数据进行采样和过滤,之后就可以对采集到的数据进行处理和分析,最后将其数据用可视化的模式进行显示,方便了客户的使用和利用。其次,就是遥感大数据和广义的遥感大数据的综合挖掘的过程,利用此种方式,一方面可以与其他的数据方式形成良好的互补关系,另外一方面也可以对其数据当中的变化规律以及其他信息进行更好的挖掘和采集。在广义的遥感时空大数据当中,存储的费用是相当昂贵的,并且在数据的分析能力方面也存在严重不足的现象,因此在现代社会的智慧城市的建设过程当中发挥不了其巨大的作用,因此需要利用其他自动化的数据智能处理和挖掘的方式来对其空间地理分布的数据进行全新的挖掘和过滤。在时空分布的视频数据挖掘过程当中,在对智能数据进行处理和信息提取的同时,还要通过时空当中所分布的视频数据进行自动化的区分,来有效的区分正常和非正常的状态。在对时空数据的挖掘过程当中,主要可以从时空数据当中进行提取出隐藏的有用的信息知识,利用各种综合性的方式和方法,比如统计法、聚类法、归纳法以及云理论等。在遥感大数据的挖掘应用方面,可以适用于地球各种尺度和方位的变化,还可以在很大程度上对未知的信息进行良好的筛选和挖掘,推动国家的科学技术的发展,实现社会的可持续化发展。

综上所述,在不断的发展过程当中,我国的遥感数据的种类和数量将呈现出飞速增长的模式,在很多方面以及领域当中已经开展了遥感大数据的研究工作。值得注意的是,现阶段当中需要将遥感大数据的理论知识进行实践化的转变,从而实现遥感大数据的自动分析和数据挖掘功能,推动科学信息的不断进步。

参考文献

数据中心冀望“自动化” 篇3

就在一年多前的2006年6月,惠普企业计算及专业服务集团全球执行副总裁Ann Livermore到访中国,那次她是来向众多国内客户推销惠普的“下一代数据中心”的新理念。尽管描述中的“下一代数据中心”功能强大,但这仍不足以打消CIO们的疑虑:数据中心的运维成本在持续攀升,而在五花八门的软件控制下的“自动化”目标却愈发遥不可及,维持现状已属不易,更何况要整合资源构建下一代数据中心。有人干脆直接表示,这简直就是天方夜谭。

然而事实证明Ann Livermore的“布道”并非空穴来风。就在她来访中国的一个月后,惠普即宣布以45亿美元收购应用性能测试软件公司Hercury。而该公司曾推出一款变更管理工具,就是用来帮助用户估算升级基础架构的必要性。举例来说,假设你需要将20台服务器整合成1台服务器,该工具将帮助你检验新的设置方案是否还能够应付得了原来的工作负荷。

但仅有Hercury还不够,用户盼望的是能将所有IT需求以高效率、低成本、自动化、流程化的方式完成,这首先在软件层面需要有一套可以在服务器上运行的操作系统级软件。而目前市场上包括像IBH、CA以及SUN都还没有这么“完美”的产品,因此惠普希望通过收购一些已经拥有“潜质”的技术并充分融入到自己的OpenView整体解决方案中,从而实现在新一代数据中心开发上的领先性。于是惠普盯上了IT自动化软件厂商Opsware。

2007年7月23日,惠普宣布以16亿美元收购Opsware,并创下惠普收购史上的第三高价。市场一片哗然,以Opsware约1亿美元的年收入,惠普16倍的收购价格是否过高?一个月后,Opsware的首席技术官,LDAP协议的发明者Tim Howes来到中国,并接受了《互联网周刊》的独家专访,详细讲述了Opsware并入惠普后所面临的机遇与挑战,以及Opsware对未来数据中心自动化技术趋势的判断。

《互联网周刊》:惠普以16亿美元收购Opsware,这个价格是否过高?Opsware与像BladeLoglc这样的竞争对手比起来,究竟有什么独特之处?

Tim Howes:我不认为这个价格过高。这其实正反映出Opsware在市场上的价值所在。和竞争对手相比,我们拥有像EDS、FedEx、UBS等超过350家这样的大型客户,Blackberry刚刚签约成为我们的客户。Opsware保持了持续3年超过60%以上的增长,有6000万美元的现金储备。

最关键的是,我们的产品中拥有2000多个定义好的“connector(功能点)”去对应不同厂商的软件,是业界能调用软件和流程种类最多的自动化产品。这让我们的客户在协调不同软件工作时,最多只需在流程图上采用拖、拽“connector”的方式就可以创建一个新流程,以控制数据中心完成一项新任务,非常易用。 《互联网周刊》:并入惠普将带给Opsware怎样的机遇和挑战?又将带给惠普怎样的变化?

Tim Howes:带给Opsware最直接的好处就是,惠普的销售网络非常庞大,这将有利于以更快的速度、更大的范围提高Opsware对客户的影响力。惠普的软件业务现在主要有三块,OpenView、Mercury和Opsware,分别对应事件管理、业务服务管理和软件流程自动化,这样的组合在业内独一无一,完全可以提供“端到端”方案,如能整合好的话几乎没有对手。举个例子,Mercury和Opsware组合带给客户最大的好处是,过去客户二次开发编程完成后只能在小范围环境测试,一上系统照样出毛病。而现在Opsware可以为Mercury的测试环节形成真实环境,大人提高了客户快速应对系统变化的能力。

当然,Opsware现在面临的最大挑战也正是在组织上和产品线上如何与惠普进行有效整合。不过惠普任命了Opsware的首席执行官Ben Horowitz担任新的BTO(商业技术优化)部门负责人来推动整合,这给了我们很大的信心。

《互联网周刊》:现在惠普对Opsware的收购工作进展到哪一步了?这对目前Opsware中国区的业务有什么影响?

Tim Howes:收购双方已经签署了意向书,并且获得了美国政府的批准。接下来就是等待德国、中国等国家有关部门的批准。虽然两个月前Opsware中国区团队才刚刚开始运作,但收购暂时不会对中国区造成影响,Opsware会加快进入中国市场,目前在中国已有的Opsware客户包括中国银行、富士康等。

《互联网周刊》:怎么看待未来数据中心自动化技术的发展趋势?

数据自动生成 篇4

关键词:测试用例,自动化测试,遗传算法,粒子群算法

1. 引言

在软件测试中,测试数据自动生成是实现软件测试自动化的一个关键性问题。测试数据的自动生成通常分为功能测试数据自动生成和结构测试数据自动生成。在软件结构测试应用中,通常采用基于“路径覆盖”的方式来产生测试数据,即首先在参数域中搜索能使程序的控制流按预定的程序路径执行的目标参数值,然后作为被测程序的输入参数来控制测试。由于此类问题极其复杂,通常属于组合优化问题,用常规方法解决会遇到很多困难。自上个世纪70年代以来,有关这一领域的研究就已展开,人们曾使用随机化、爬山法等方法实现测试数据生成,但由于这些方法固有的低效性和局限性,使得它们无法实用化,因此软件测试数据的智能化生成问题成为软件测试的一个热点话题,得到了国内外专家学者的关注[1-3]。

遗传算法(Genetic Algorithm,GA)[4]是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。粒子群优化算法(Particle Swarm Optimization,PSO)[5]最初是为了图形化地模拟鸟群优美而不可预测的运动,通过对动物社会行为的观察,发现在群体中对信息的社会共享有利于在演化获得优势,并以此作为开发算法的基础。

遗传算法和粒子群算法在解决多模式、非线性、全局优化等高复杂性问题时显示了一定的优势和高效性,因而也为解决软件测试数据自动生成这一难题开拓了视野,并在解决实际问题中展示了优越性。

2. 算法原理

2.1 遗传算法

遗传算法[4]作为一种基于自然选择原理和自然遗传机制的通用搜索算法,与其它算法相比的不同之处在于它在整个搜索空间随机采样,按一定的评估策略对每一样本评价,并采用特定的算子进行样本优化,直至产生最优解。在遗传算法中,通过编码组成初始群体后,遗传操作的任务就是对群体的个体按照它们对环境适应度施加一定的操作,从而实现优胜劣汰的进化过程。遗传算法的工作原理如图1所示。

从优化搜索的角度而言,遗传操作可使问题遗传过程的解一代又一代地优化,并逼进最优解。遗传操作包括三个基本的遗传算子,分别是选择、交叉和变异。遗传操作的效果和上述三个遗传算子所取的操作概率,编码方法,群体大小,初始群体以及适应度函数的设定密切相关。遗传算法中初始群体中的个体是随机产生的。

2.2 粒子群算法

粒子群算法[5]是一种模拟自然界生物群体行为的随机优化算法,按照一定的评估策略对微粒进行优化,直到产生最优解,其工作原理如图2所示。

从图2中可以看出粒子群算法和遗传算法相似,它也是从随机解出发,通过迭代寻找最优解,它也是通过适应度来评价解的品质,但它比遗传算法规则更为简单,它没有遗传算法的“交叉”和“变异”操作,它通过追随当前搜索到的最优值来寻找全局最优。

3. 测试数据自动生成模型

遗传算法和粒子群算法均可以用于参数搜索,通过进化或者迭代操作实现全局寻优。应用到测试数据生成中时,通过程序静态分析,提取相应的参数。这些参数经过编码转换后形成遗传算子或者粒子,计算后得到优化结果转换为原始的程序参数,用于软件测试。工作原理如图3所示。

系统模型运行时输入源代码,输出为优化的测试用例,其核心包括测试环境构造和智能算法搜索引擎。测试环境的构造主要是通过对被测程序的静态分析提取有用的参数及对应的参数范围,并构造与分支谓词相对应的分支函数和评价函数,完成对被测函数的插桩,进而生成具体的测试对象作为测试控制单元的输入。

智能算法搜索引擎为整个系统模型最为关键的部分,分别使用遗传算法和粒子群算法实现对提取参数的全局寻优,两种算法具有不同的搜索原理和搜索方向。测试控制单元根据算法类型将被测对象进行编码转换,在搜索过程中接收搜索引擎提供的候选方案并计算适配值。

4. 实验分析

以生成直角三角形路径的测试用例为例,目标为找到能覆盖所有真分支的测试数据,经分支函数和评价函数插桩后的程序如图4所示(C#代码)。

程序共包含5条路径,函数计算的适配值F能够衡量测试数据是否覆盖到所有真分支。以此为例进行实验,用以分析遗传算法和粒子群算法二者的特点。对两组模型设置不同的参数,遗传算法种群数量取1000,粒子群算法粒子数量分别取为100、200、300和400,迭代次数上限设置为1000次。通过实验可以发现,在迭代次数超过200次以后,程序结果基本趋于稳定。因此取迭代次数100-200次的适配值比较两种算法的收敛特性,分别如图5和图6所示。

从图中可以看出,两种算法在解决测试数据自动生成的问题上均表现出一定的优势,通过迭代之后能够找到满意的测试用例。粒子群算法性能受种群数量大小的影响不大,其曲线表现出相似的特征。遗传算法在迭代过程中适配值的震荡更加明显,达到稳定值后即开始上下震荡。此外,在实验中粒子群算法的计算速度明显优于遗传算法,表现了更好的收敛特性。

5. 结论

本文介绍了应用微粒群算法解决软件结构测试数据生成问题的方法和技术,对具体应用中需考虑的问题进行了详细的分析,并给出了统一的解决方案。在典型路径测试问题上进行了仿真实验,结果表明两种算法均能提供较好的测试用例,而其中粒子群算法表现出更好的性能。

参考文献

[1]荚伟,谢军,奚红宇,高仲仪.遗传算法在软件测试数据生成中的应用[J],北京航空航天大学学报,1998;24(004):434-437.

[2]傅博.基于蚁群算法的软件测试数据自动生成[J],计算机工程与应用,2007;43(12):97-100.

[3]Windisch A,Wappler S,Wegener J.Applying particle swarm optimization to software testing[C].Proceedings of the9th Annual Conference on Genetic and Evolutionary Computation;2007;London,England,United Kingdom;2007:1121-1128.

[4]Goldberg,D.E.Genetic Algorithms in Search,Optimization,and Machine Learning[M].Boston,MA,USA,Addison-Wesley Longman Publishing Co.,Inc.,1989.

数据自动生成 篇5

5、测试在使用内容动态页的数据读取速度:0.0025秒

点击小图查看大图

6、查看50万下数据库大小:50万信息,主表大小为67.7MB,第一个副表为370.8MB

点击小图查看大图

总结:

参数数据信息数:50万后台管理信息列表速度:0.0089秒修改信息页读取数据:0.0051秒生成5000条数据:18秒内容动态页的速度:0.0025秒主表phome_ecms_news:67.7MB副表phome_ecms_news_data_1:370.8MB总数据库大小:439.2MB

说明:上面每个副表存储50万数据,其实通过整个万数据测试后发现副表存储100万数据效率也差不多,

ECMS生成实测:两千万数据、17.3GB数据库(4)

自动备份Web网站数据库 篇6

调整运行账号名称

为了能够让备份数据库的任务计划正常运行,笔者不得已在每次调整administrator账号的访问密码后,都要采用手工方法打开目标任务计划的属性设置窗口,修改任务计划中的对应运行账号密码;可是每次调整administrator账号的访问密码,都要对任务计划属性参数进行重复的修改,显然这样的重复劳动既浪费时间,又会影响工作效率,严重的话还能导致备份操作无法及时完成;那么如何才能让任务计划的运行避免上面的麻烦呢?

起初,笔者想单独创建一个具有超级管理员权限的用户账号,并利用该账号专门运行备份数据库的任务计划,可是这种想法很快被单位领导否定了,因为这与单位重新调整的安全策略是格格不入的。经过前思后想,笔者终于想出了一个折中的办法,那就是在Web服务器系统中手工创建一个backup账户,并将账号调整到Backup Operators用户组中,日后以backup账户来完成网站数据库的备份任务。想到做到,笔者立即在Web服务器所在主机系统中,用鼠标右键单击系统桌面上的“我的电脑”图标,从弹出的快捷菜单中执行“管理”命令,打开对应系统的计算机管理窗口;在该管理窗口的左侧列表区域,依次展开“系统工具”|“本地用户和组”|“用户”分支选项,同时用鼠标右键单击“用户”分支选项,并执行快捷菜单中的“新用户”命令,打开新用户创建对话框,在这里输入backup账号名称以及密码信息(如图1所示),单击“创建”按钮完成新账号的创建任务;接着用鼠标右键单击刚刚创建成功的backup账户,从弹出的快捷菜单中执行“属性”命令,打开backup账户的属性设置对话框,单击其中的“隶属于”标签,打开如图2所示的标签设置页面,在这里单击“添加”按钮,将BackupOperators用户组选中并添加进来,再单击“确定”按钮,那样一来backup账户就被授予Backup Operators组权限,而在默认状态下Backup Operators组的成员可以备份和还原对应主机系统上的文件。获得了备份文件的权限后,笔者打开了任务计划列表窗口,选中备份数据库的任务计划,进入该任务计划的属性设置窗口,在其中将运行账户从administrator账号调整为backup账号,那样的话我们每次调整administrator账号的访问密码时,备份网站数据库文件的任务计划就不会受影响了。

任务运行仍然失常

原以为上面的设置操作可以让备份数据库的任务计划自动运行了,可是笔者改天上班后进行检查时,发现目标任务计划并没有调用运行特定备份程序,来对Web服务器的数据库文件进行自动备份;检查对应系统的运行日志时,笔者看到系统跳过了“db backup,bks”文件,同时提示说没有发现特定的文件夹,为什么会出现这种情况呢?立即登录百度网站进行相关信息的查询,发现这种故障现象主要是Backup Operators用户组下面的成员,在默认状态下都无法对网站数据库文件“db backup,bks”进行访问读取,从而造成了系统无法找到特定文件夹的假象。既然backup账户不能读取“dbbackup.bks”文件,那么现在只要想办法将该文件的读取权限直接授予backup账户,不就能解决问题了吗?想到这一点,笔者立即打开Web服务器所在主机系统的资源管理器窗口,从中依次展开“NT”、“Ntbackup”、“data”等文件夹,选中目标文件夹中的“db_backup.bks”文件,并用鼠标右键单击该文件图标,从弹出的右键菜单中点选“属性”命令,打开“db backup.bks”文件的属性设置对话框;点击其中的“安全”标签,弹出如图3所示的标签设置页面,在该页面中单击“添加”按钮,打开用户账号选择对话框,从中将backup账户选中并导入进来,之后再将刚刚添加的backup账户选中,同时将对应账号的读取权限设置为“允许”,最后单击“确定”按钮执行设置保存操作。

授予backup账户读取权限后,笔者原以为这次努力肯定能够解决问题了;然而让笔者没有想到的是,第二天再次检查数据库文件的备份情况时,发现任务计划在运行过程中弹出了“无法写入”的故障提示。

任务计划自动运行

既然系统弹出“无法写入”的提示信息,难道是Backup Operators组用户在默认状态下也没有写入“dbbackup.bks”文件的权限吗?再次打开“db backup,bks”文件的属性设置对话框,进入其中的“安全”标签页面,笔者果然发现Backup Operators组用户的写入权限处于“拒绝”状态,将该账号的写入权限重新调整为“允许”,同时采用手工方式运行备份数据库的目标任务计划,这一次系统没有弹出任何错误提示,而且没有多长时间,备份程序就将相关数据信息写入到目标文件夹中了,这说明目标任务计划已经能够正常运行了。过了几天,再次检查目标任务计划的运行情况时,笔者发现它都能自动对网站数据库文件进行备份操作了,这就意味着任务计划终于可以自动运行了。

数据自动生成 篇7

关键词:线损系统,电量预测,离群数据挖掘,聚类

序言

线路损耗自动生成系统 (以下简称为线损系统) 是运用现代数据通信技术和计算机网络技术, 延伸和扩展原有电力调度自动化系统和远程抄表系统的各项功能, 将电量控制功能、电量数据采集功能和营销自动化系统功能融为一体, 并将预测和区段控制引入系统中的一种统一的、标准化的数据管理和数据应用平台。它应用C/S、B/S、数据仓库和数据挖掘等许多现代流行的数据处理和应用技术, 对供电企业实现配电网运行数据采集及在线分析系统, 从而为实现降损规划、降损计划的制订提供坚实数据基础, 为配电网经济运行和科学规划提供了有力保障。为落实与推广线损多级管理考核提供强大的技术支持, 进而提高线损管理水平, 降损增效。

线损系统的数据预测和分析功能是其相对于以前各种电能计量系统的最大区别之处。然而不论是数据的预测还是分析大都是根据线损系统数据采集终端获得的历史数据进行的。历史数据的准确性则会大大影响预测、分析的精确度。但是, 现实情况是线损系统中各种数据存在着大量的随机性和不确定性因素, 有的时候还常常会出现部分时段的历史数据缺失。这些不确定因素对线损系统的正常、高效、优质运行产生困扰。为了保证预测和分析的精确度, 必须对历史数据中的异常数据进行辨别进而清除。离群数据挖掘 (outlier minmg, 简称离群挖掘) 是数据挖掘的重要内容。本文即针对电力系统的基本特征, 将离群数据挖掘算法应用到线损系统中, 采用基于聚类的离群数据挖掘算法来判断和修正离群数据。

一、离群数据挖掘算法概述

离群数据 (outliner) 通常的表现形式就是异常数据。一般由采集或记录误差产生的偏离正常值的少量数据常常被忽视, 被发现后往往就迅速地清除。实际上, 这种想法并不完全正确, 离群数据中也有可能包含一些十分有用的信息, 有的时候甚至能够从其中分析出重要的信息。所以, 对异常资料的处理应该采取辩证的态度, 进行有效的分析。

离群数据挖掘就是对海量的、复杂的、含有噪音的数据进行挖掘, 分析其中的有用信息。

常用的离群数据挖掘算法主要有基于聚类的方法和基于统计的方法。

基于统计的典型算法有鲁棒回归法、状态估计法等。基于统计的方法主要依赖于扫描数据的分布类型、分布参数及其异常数据的类型等, 而且极不适用于多维数据库。在实际工作中, 我们无法清楚地了解每个数据的分布情况, 这就需要我们通过多次试验来确定, 因此算法的效率将受到严重影响。因此我们在线损自动生成系统中一般不采用基于统计的算法。而基于聚类的算法, 不需要事先知道数据该分成几个已知的类型, 而可以依照资料间彼此的相关程度来完成分类分群的目的。聚类分析的方式有许多种, 我们通常使用分割聚类算法和层次聚类算法两种。

二、分割聚类算法

分割聚类算法通过对一个局部或全局的目标函数寻优, 把数据分割成若干部分, 如:k-means、k-medoids算法、CLARANS算法。

k-means算法是在获得的数据中, 根据聚类的均值进行聚类划分。将n个数据对象划分为可接受的k个聚类作为初始聚类中心, 以便使得所获得的聚类满足。其中同一聚类中的对象相似度较高, 而不同聚类中的物件相似度较小。然后利用各聚类中对象的均值所获得一个“中心”, 将剩下的资料根据与K个聚类中心的距离, 分别分配给与其最接近的聚类。然后计算每个聚类的新中心 (重新计算这个组资料的均值, 并且以新的均值作为聚类中心点进行下一次聚类) 。重复上述过程, 直到准则函数会聚。

k-medoids算法则是利用聚类代表 (medoid) 作为一个代表点来代替k-menas算法中的聚类的均值 (即聚类中心) , 其目标是寻找到k个满足准则函数的最佳聚类代表。它将k个代表点表示为节点形式, 如果两个节点有相同的k-1个代表点, 则这两个节点为相邻节点。在迭代过程中如果替换一个聚类代表能够改善所获聚类质量的话, 就可以用一个新聚类代表替换老聚类代表, 就这样反复继续进行直到获得最佳的聚类代表。

CLARANS算法, 实际上就是随机搜索聚类的一种算法。首先随机选择一个点作为聚类代表, 然后随机搜索周围的邻接点, 如果找到一个更好的点, 则把它移入作为新的聚类代表, 否则把该点作为局部最小。然后再随机选择一个点来寻找另一个局部最小量, 直至所找到的局部最小量数目达到用户要求为止。这个算法因为要进行多次扫描、比较、筛选, 所以对数据和硬件配置的要求都比较高。

分割聚类方法其实就是选择初始区域, 反复在聚类之间移动数据点, 使得聚类代表最优。K-means方法把聚类的中心作为聚类的代表, K-medoid方法把聚类的某一中心位置上的点作为代表点, CLARANS算法则是首先把一个随意点作为代表。三种算法都能够在局部内获得最优。但其还是存在异常数据点和初始划分的选择要求十分严格的问题。对线损自动生成系统采集数据的预处理阶段, 这种分割的聚类算法却十分适用, 尤其是kmedoids算法, 能够针对电力系统数据采集一般容易出现的数据缺失和数据失真问题, 对采集的资料进行预处理, 从而提高了系统数据的精确度。

三、层次聚类算法

层次聚类算法是对不同层次的分割聚类组成, 层次之间的分割一般具有嵌套关系, 如BIRCH、CURE算法。

BIRCH算法即平衡迭代削减聚类法, 是一种应用广泛的层次聚类算法。它在聚类过程中不需扫描数据集中的所有数据点, 采用将数据逐个读入的方式进行动态聚类以减小内存的占用量, 这使得BIRCH方法在进行增量和动态聚类时很有效。BIRCH算法首先扫描数据库以建立一个初始基于内存的CF树, 该树是一个具有两个参数分枝因子和类直径的高度平衡树。分枝因子规定了树的每个节点子女的最多个数, 而这些点在多大范围内可以聚为一类, 非叶子结点是它的子女的最大关键词, 可以根据关键词进行插入索引, 它总结了其子女的信息。新的数据项总是插入到树与该数据距离最近的叶子中。如果插入后使得该叶子的直径大于类直径, 则把该叶子节点分裂。而其它叶子结点也需要检查是否超过分枝因子来判断其分裂与否, 直至达到该数据插入到叶子中, 并且满足不超过类直径, 而每个非叶子节点的子女个数不大于分枝因子。BIRCH中数据点密集的区域被视作一个单一聚类, 而数据点稀疏的区域被视作异常数据而去掉。

CURE算法即使用代表点的聚类方法。该算法先把每个数据点看成一个类, 每次都按照规定的速率将距离最近的类合并, 直至类个数为所要求的个数为止。CURE算法将层次聚类方法和划分聚类方法结合到一起, 对传统的聚类算法进行了改进, 放弃了用所有点或用中心和半径来表示一个类的方式, 而是从以一个适当的收缩因子, 让抽取类的代表点合并, 使它们更靠近类的中心点。CURE算法采用随机抽取与分割聚类算法相结合的办法提高了算法的效率。

线损系统离群数据挖掘是对线损系统脏数据、不良数据进行识别和校正, 包括自然数据补足和失真数据清理。所以我们可以采用CURE算法对采集的历史数据进行预处理。基本步骤如下:

1) ) 将数据库中的数据集进行分割, 对分割的每一部分中的数据指定收缩因子, 并进行聚类操作;

2) 包含资料点较少的聚类被视为异常资料而清除;

4) 将各分割部分的聚类再次聚类, 合并为一个最终的目标聚类;

5) 聚类完成后, 用每个子聚类中的代表点标记数据集中的其余数据点的聚类号。

四、线损系统电量曲线修正法

线损系统根据各终端采集数据绘制的线损系统电量曲线一般平滑并具有明显的周期性。在这种情况下的电量曲线一般异常数据含量一般较少, 分布也较为分散, 体现的现实情况也相对正常。但是在实际工作中, 异常数据、数据缺失、周期不稳等情况常有发生, 导致电量曲线无法真实表现终端用户的用电情况。所以我们要对获得的线损系统电量曲线进行修正, 一般采用斜率修正法进行校正, 就是当发现斜率值出现巨大偏差时, 就进行修正。

方法如下:

若在离群数据挖掘中检测出某曲线Xd的t1点至t2点为异常数据, 假设其特征曲线为Xt, 修正后的曲线为Xr, 采用下列式子对坏数据进行调整:

根据公式调整后的电量曲线, 可以保持了曲线的原有特征, 而且能够很大程度上屏除噪声数据。但是这种方法有时对成片的脏数据并不灵敏, 处理时会有误判的现象, 并且在判断是否进行数据修正时必须添加各种约束条件。

五、小结

线损自动生成系统的数据预处理一直是该系统的一个难点, 如何确定采集到的历史数据的可用性与准确性, 以及如何修正补充数据成为线损系统正常运行的关键。将传统的各种聚类算法与电量曲线的曲线修正方法相结合, 则能够一定程度地修正坏数据, 为进一步的决策判断提供有用信息, 从而有利于实现供电公司线损计划的制订和考核, 以及各窃电终端的预测与判断。

参考文献

[1]何书元.应用时间序列分析[M].北京:北京大学出版社.2003

[2]SM潘迪特, 吴宪民.时间序列及系统分析与应用[M].机械工业出版社.1988

[3]陈玉祥.预测技术与应用[M].北京:机械工业出版社.1984

[4]张国江, 邱家驹, 李继红.基于入工神经网络的线损系统坏数据辨识与调整.中国电机工程学报.2001

[5]张有为.预测的数学方法[M].北京:国防工业出版社.1991

[6]杨位钦, 顾岚.时间序列分析与动态数据建模[M].北京工业学院出版社.1986

[7]安鸿志.时间序列的分析与应用[M].北京:科学出版社.1983

[8]韦博成, 鲁国斌.统计诊断引论[M].南京:东南大学出版社.1991

[9]IAN H.WITTEN EIBE FRANK.数据挖掘——实用机器学习技术.机械工业出版社.2005

数据自动生成 篇8

引言

随着现代雷达技术的飞速发展, 功能模块的复杂化与多样化, 软件设计开发技术日新月异也导致系统代码规模越来越大。作为现代雷达系统计算机控制、显示监控、数字信号处理等主要功能模块的组成部分, 软件系统在当今雷达发展中所扮演的角色非常重要, 因此, 如何通过高效、稳定的软件测试手段来保证雷达软件系统的质量和可靠性显得尤为重要。传统方法以小组为单位的手工测试模式虽然简单易行, 却无法避免成本高, 执行速度慢, 覆盖率低等缺点, 面对高度发展的雷达软件系统显得捉襟见肘, 很难形成强有力的质量保障体系, 无法满足大型、复杂的软件测试需求, 为解决此类问题, 自动化测试技术应运而生。

自动化测试就是通过由资深软件测试从业人员精心设计和开发的测试工具或者其他手段, 按照测试执行前制定的测试计划和测试用例自动完成测试相关工作的测试流程。针对雷达软件开展自动化测试不仅能够提高雷达整机软件质量, 增强对软件功能、性能、余量等方面的测试能力, 而且可以节省研发经费, 缩短软件产品的开发周期, 保证雷达运行的整体稳定性和可靠性。

研究内容

通常情况下为实现高效率的软件自动化测试, 必须依赖先进的测试工具及相关测试数据生成工具, 虽然这些工具本身并不直接执行测试实例, 但他们有各自的功能, 如利用工具产生测试数据, 为测试提供准备数据等。在实际测试执行的过程中使用各种测试工具、测试源集合产生的测试文件有两种方法, 一是人工方法, 由测试人员人工生成, 如文档、测试脚本、测试输入/输出数据等文件, 属于传统测试途径;二是直接由测试工具自动产生, 如实际输出、报告、日志等文件, 其优点在于测试工具可以独立存在, 根据特定功能的测试需求, 并且能在测试中调入测试件文件或是测试完成后自动保存测试结果文件, 这样才能有效实现自动测试。利用自动数据生成技术实现软件自动化测试的流程如图1所示。

目前, 国内外都是集成化的大型测试工具, 如Rational Functional Tester、Borland Silk系列工具、Win Runner等, 它们虽然功能覆盖面广, 提供的测试类型众多, 但也带来操作执行步骤繁琐, 系统臃肿缺乏灵活性和针对性, 而且价格昂贵, 导致通用性不强, 因此往往只有其中的部分功能得到使用, 造成测试人员的使用困难和资源浪费, 特别是雷达系统对于大多数的波束和数据信息都是以报文的格式进行读取、截获和传送, 对测试数据的格式定义以及报文信息内容也有着严格的要求, 因此基于以上内容, 设计了基于程序结构的测试数据自动生成系统。

测试数据自动生成即测试数据的搜索或组合优化问题, 通常具有不连续、不可微和非线性等特征, 目前常用方法为采用遗传算法、神经网络等技术。本文系统的综述了近年来软件测试领域数据自动生成的研究和存在的问题, 提出基于程序结构的自动生成方法, 在提供测试数据自动生成的功能同时可对截获的测试数据进行解析, 大大提高软件测试数据生成效率, 更好的适应了信息格式发生变更的情况。最后对未来雷达系统软件自动化测试中数据产生技术的发展进行了展望。

测试数据信息解析

该系统软件通过读取项目软件源程序的头文件或对测试人员自定义的测试数据结构体文件进行解析, 从信息结构体文件中解析信息结构体数据并保存在自定义的信息格式数据结构中, 根据通信协议的规则自动生成软件测试数据, 并能按照用户需求自定义组合的方式对测试数据的含义和有效性进行验证, 然后将结果数据在交互式用户界面上进行显示, 直观、简洁, 最后, 测试人员根据自己的实际需求可对生成的测试数据和解析结果进行选择性的保存在自定义路径下。同时, 本测试系统允许测试人员在用户交互界面的显示框中使用清空功能对指定的数据或类型等信息进行清空操作。

测试数据的准备阶段, 分析报文数据结构, 提取有效字符位信息, 并结合相对应的接口文档内容, 对测试项的测试数据进行整理归类, 最终获得包含测试数据信息的结构体文件。而在实际开展软件测试活动时, 传统通过测试人员手工设计构造测试数据往往要花费大量的人力、时间和成本来设计测试数据, 并且由于不同项目之间的通信协议的格式与结构不尽相同, 测试数据的复用性与实用性也比较差。

为了避免由于程序员编程习惯的差异性带来的代码识别率及程序语言读取效率低下等问题, 本文提出了统一的信息结构体格式, 具体的格式定义如下所示:

其中结构体名、“{”、“}”等符号单独占用一行, 且所读入的信息结构体每行都可根据需求标注相应的注释。

本文设计的系统软件对所有数据类型及数组、指针等数据结构均能提供良好的支持, 包括 (char, int, short, float, double等) 。当读取的文件内部存在结构体嵌套的情况, 要求被嵌套的结构体须在使用嵌套结构体的结构体之前出现, 如下这类情况所示:

其中, 在GPS_MSG嵌套使用了MSG_HEADER结构体, 要求信息结构体文件中MSG_HEADER结构体位置在GPS_MSG结构体之前。

系统可根据测试人员自主选定的信息结构体自动解析信息结构体文件。分别按照测试数据类别、名称、数据类型和注释等方面进行逐行读取, 并依此将结构体包含的数据内容放入指定空间中进行存储, 此阶段为后文中的测试数据的自动识别与产生提供理论依据。同时我们需要注意的是, 对于输入数据, 按位输入的信息项应是相邻的, 并且按位输入信息项包含的位数相加应和定义的关键字位数应该相等, 否则软件无法实现对结构体文件的正确解析。

考虑到实际执行测试时, 会对添加的结构体内容进行需求性变更, 这里采用行插入法即在每行被解析的报文末端, 手工添加所需内容, 系统会自动对添加的内容进行识别和保存, 保证测试数据生成过程的自由度和匹配度人为可控。结构体的解析原理图如图2所示。

测试数据自动生成

针对性较强, 数据量不大且对数据的产生要求操作直观、简洁, 因此使用基于程序的局部优化方法来实现测试数据的自动识别与产生。它的特点在于:结合程序本身设计参数结构体模型, 从而适应对不同环境、场合下测试数据的需求;并且采用局部优化策略, 对数据结构、参数定义等不断更新, 对实际输出数据和预期输出数据进行比较的同时, 用来实现测试输出数据反馈校正, 并最终产生可用于静态分析的测试数据。其意义在于:由于采用局部优化策略, 使得计算量大大减小;同时采用校正机制, 在局部优化的基础上保证了数据的正确性和稳定性, 解决了测试数据重复利用率差, 产生消耗资源多等问题。

获取接口、通信协议以及消息代码等约束条件, 对结构体文件或程序头文件按位筛选识别, 对于大量的测试数据, 采用局部优化策略减少计算量, 提高计算效率, 根据测试数据生成规范, 通过在用户交互式界面进行操作, 测试数据的自动生成, 具体流程如图3所示。

实验结果与分析

实验选择某型雷达的单个配置项软件程序进行测试数据的自动生成, 直接选择打开包含结构体信息的文件后, 系统自动对其中的结构体信息进行读取和解析, 同时在系统的主界面下拉框中依次显示需要解析的结构体名称, 鼠标操作即可在实现程序结构的自动解析并将内容显示在下端显示界面上, 如图4所示。

在交互式用户界面右侧的“输出显示方式”栏中根据实际的输出需求进行选择, 默认缺省值为“无校验”和“校验和”两种方式。如果需要临时对输入的结构体信息其中某项或多项进行更改, 采用行插入法对每行后输入的数值进行更新和存储。完成设置后, 点击生成按钮, 系统便会自动生成测试数据以供下一步测试执行使用。

系统软件会自动对测试数据的内容进行读取和分类, 对数据产生的结果进行解析和保存。如图5所示, 结果显示框中, 上栏为无校验时的结果, 下栏为加校验和时的结果。

自动生成的测试数据可以按照需求的文档格式保存在指定路径中, 在后期设计测试用例时, 直接选择相应的测试数据进行执行即可, 简洁、方便, 从根本上解决了人工设计测试数据的难题。

经过实际对本系统使用前后, 针对某个软件配置项的测试结果对测试成本及人员需求等资源的耗费进行统计和整理后, 如表1所示。

我们发现通过使用本测试数据自动生成系统, 不仅缩短了测试时间, 提高测试效率, 而且测试数据的准确率和测试结果的有效率都有了显著的提高, 极大改善了测试数据自动生成的途径。

结语

数据自动生成 篇9

测试数据自动生成是在一个数据域中寻找满足给定测试标准 (覆盖标准) 的一组测试数据输入过程, 可以形式化描述为:给定一个程序P和P中的一个路径Path, 设P的输入空间为D, 求x∈D, 使得P以x为输入运行, 所经过的路径为Path。基于某种覆盖标准的的测试数据自动生成问题中, 设CFG_PT包含被测试的所有路径, 设有m个参数, x= (x1, x2, …xm) , 则测试数据自动生成问题可形式化描述为:f (x1, x2, …xm) ->f (Path|Path∈CFG_PT) 。

遗传算法、蚁群算法等启发式搜索算法在许多领域得到了广泛应用, 研究者将测试数据的生成问题转化成基于启发式算法的搜索问题, 这方面的研究取得了一些进展。

1、基于遗传算法的测试数据自动生成

遗传算法作为一种基于自然选择原理和自然遗传机制的通用搜索算法, 它在解决大空间、多峰、非线性、全局优化等高复杂度问题时显示了独特的优势和高效性。遗传算法的引入, 也为解决测试数据生成这一软件测试领域多年来的难题带来了新的思路。与其它搜索算法的不同之处在于它在整个搜索空间随机采样, 按一定的评估策略对每一样本评价, 并采用特定的算子进行样本优化, 直至产生最优解。

1.1 系统模型

该模型可分为2部分:遗传算法包和测试环境构造。遗传算法包是系统的核心, 它随机地产生第1代种群, 然后按照输入参数的编码方式将种群中的个体位串映射成实际参数值, 并传递给被测程序, 驱动被测程序的运行。被测程序运行时计算出的评价函数值返回给遗传算法包, 算法包据此来评价种群中每个个体位串的优劣, 并通过遗传算子的操作改变个体位串的结构, 形成新一代更优种群, 如此往复, 直至找到覆盖选定路径的目标参数值。测试环境构造主要利用程序插装技术, 在被测程序源代码级插入用以评估当前输入参数值的评价函数, 并将评价函数值返回遗传算法。

1.2 基于遗传算法的测试数据生成步骤

(1) 初始化个体:扫描给定的路径, 找出需要生成测试数据的变量, 并为每个变量赋随机的0, 1串, 按照多参数级联编码原则, 组成个体。

(2) 计算适值函数值:根据构造的适值函数, 分别计算每组变量的适值函数值。若满足终止条件, 则转 (4) 步。

(3) 改进个体:若没有满足条件的个体, 则进行以下运算:

(1) 按适值函数值选择下一代个体。

(2) 解的交叉:从产生的个体中随机选择两个个体进行单点交叉, 得到新个体, 重复该步骤, 直到所有个体均被选中为止。

(3) 解的变异:在交叉后的个体中随机加入一些变异产生新个体。

(4) 转到第 (2) 步。

(4) 拆分满足条件的个体:把每个变量对应的0, 1串转换成十进制数, 这些数据即为生成的测试数据。

(5) 算法结束。

2、基于蚁群算法的测试数据自动生成

蚁群算法是一种新兴的启发式算法, 是由Marco Dorigo等人提出的仿生寻优算法。参加寻径的蚂蚁通过留在链路上的信息素交互来选择新的路由, 从而达到寻优的目的。蚁群算法生成软件测试数据是在知识表示的基础上, 应用蚁群算法完成知识推理, 生成所需要的测试数据。基本原理是将一群蚂蚁智能体放在路径有向图G中, 通过蚂蚁移动、释放信息素等行动搜索最优路径p*, 从而寻找符合被测程序中选定程序路径W的输入变量。

2.1 系统模型

2.2 测试数据生成步骤

步骤1初始化:初始化蚁群和控制参数;循环计数为0;将m (m≤2N) 只蚂蚁随机地分配到2N个节点上;设每个有向边上的信息素τ (vi, vj) =τ0, τ0为一个很小的常数。

步骤2蚂蚁移动:每只蚂蚁按照上述状态移动规则转移到下一个节点, 构成一条经过的有向边。

步骤3信息素局部更新:每只蚂蚁按照发下公式对经过的有向边进行信息素更新。τ (vk, vk+1) ←ατ (vk, vk+1) + (1-α) τ0, 其中 (1-α) 为局部挥发系数, α∈ (0, 1) 。

步骤4计算最佳路径:当每只蚂蚁选择N个节点并完成信息素局部更新时, 则该蚂蚁构造了一条路径Lk (k=1, 2, …, m) , m只蚂蚁构造m条路径。计算路径长度:Lopt=min (Lk) , 保留最佳路径。

步骤5路径随机变异:对每条生成的路径, 如果Lk<Lopt, 则按照一定的变异概率pm对该路径实施多点随机均匀变异, 变异节点数为输入参数的个数。

步骤6信息素全局更新:仅对最佳路径上的信息素进行更新。

步骤7满足终止条件 (达到最大循环数或Lopt=0) 则结束, 否则转入步骤2。

3、分析与讨论

(1) 遗传算法采用编码技术将输入域映射到基因空间G, 并通过选择、杂交、变异等遗传操作和优胜劣汰的自然选择确定搜索方向。一方面它采用种群方式组织搜索, 故可以同时搜索G内多个区域.另一方面, 杂交和变异操作为种群引入新的信息, 从而更有利于找到全局最优解。研究表明, 对于遗传算法, CPU运算时间随输入变量取值范围的增大呈亚线性增长, 随机法则为超线性增长.故遗传算法比随机法更适合于大型程序。

(2) 遗传算法也存在缺点, 如未成熟收敛和局部搜索能力差。遗传算法基本思想是在编码后对编码空间进行搜索, 基本上不利用问题空间的知识, 而仅用适应度函数值来评价个体并指导搜索。虽具有全局并行搜索的优点, 但由于没有充分利用待求问题的自身特征, 从而造成搜索效率低下、收敛速度慢, 有时甚至无法收敛到全局最优解。

(3) 研究者们试图在遗传算法的基础上加以改进。一种方法是将人工免疫算法引入到面向路径的测试数据自动生成领域, 力图利用待求问题中的一些特征信息或知识来抑制迭代过程中出现的退化现象, 从而有效改善遗传算法的未成熟收敛缺陷, 提高遗传算法的全局和局部搜索能力。另一种方法, 将遗传算法和模拟退火算法相结合, 模拟退火算法模拟高温材料的冷却。其工作原理是在给定的候选解的邻域选择候选解, 关于目标函数更好的候选解总被接受, 但是按一种受控制的方式接受恶化解, 其目的是使搜索过程从局部极值中摆脱出来, 用一个控制参数 (称为温度) 控制是否接受恶化解, 起初温度很高, 以允许在搜索空间几乎无限制地自由移动, 在搜索过程中温度逐步降低, 限制对恶化解的接受, 最终进入冻结状态, 不再接受恶化解。模拟退火算法有着完善的全局收敛理论, 但是它的收敛速度很缓慢, 与遗传算法恰好构成优势互补的关系。

(4) 蚁群算法作为一种新兴的启发式算法, 在集成电路设计、网络路由选择、规划设计等领域的应用中表现出相当好的性能, 但在软件测试数据自动生成方面的研究还很少。蚁群算法虽然具有许多优点, 但是由于搜索初期信息素相对匮乏, 导致算法的搜索效率降低, 正反馈机制容易产生停滞早熟现象。为了克服蚁群算法的不足, 研究者将遗传算法的变异操作引入到蚁群算法中, 增加搜索的随机性、快速性和全局收敛性。实验结果表明, 融合变异算子的蚁群算法生成测试数据的效率高遗传算法。

4、结束语

将遗传算法、蚁群算法等启发式搜索算法引入软件测试领域, 为解决测试数据生成这一软件测试领域多年来的难题带来了新的思路。该研究对实现软件测试数据自动化和提高软件测试效率具有重要的现实意义。

参考文献

[1].单锦辉, 王戟, 齐治昌.面向路径的测试数据自动生成方法述评[J].电子学报, 2004, 32 (1) :109-113

[2].荚伟, 谢军, 奚红宇等.遗传算法在软件测试数据生成中的应用[J].北京航空航天大学学报, 1998, 24 (4) :434-437

[3].邢恺, 伦立军.测试数据自动生成方法[J].计算机技术与发展, 2006, 16 (9) :53-55

[4].Dortgo M, Gam bardella L M.Ant colony system:A cooperative learn-ing approach to the traveling salesman problem[J].IEEE Trans on Evolu-tionary Computation, 1997, 1 (1) :53-66.

[5].傅博.基于蚁群算法的软件测试数据自动生成[J].计算机工程与应用, 2007, 43 (12) :97-99, 211

[6].夏芸, 刘锋.基于免疫遗传算法的软件测试数据自动生成[J].计算机应用, 2008, 28 (3) :723-725

数据自动生成 篇10

1 mybatis介绍

Mybatis本来是阿帕奇公司 (即apache, tomcat出品公司) 研究的一个面向广大用户的开源项目“ibatis”。其本意是Internet和abatis两个单词的组合, 是提供给大家的一个持久层框架[1]。后来apache公司将其转让给了谷歌公司, 并且更名为mybatis。Mybatis自动生成方式替代了几乎所有的JDBC代码和参数设置以及结果搜索。它通过简单的XML文件对原始映射和属性进行配置, 直接生成接口和JAVA对象的数据库表或者将数据库表生成接口和JAVA类。Mybatis主要有三层主要功能框架:

1.1 API接口层:

将自动生成的JDBC代码封装提供给生成类以外的类或程序使用的接口API, 开发人员通过这些本地API对数据库进行操作。接口层一接收到外来调用请求就会调用数据处理层来完成具体的数据处理。

1.2 数据处理层:

有具体的JDBC代码, 是接口层接口的具体化代码, 包括具体的SQL查找、解析、执行和执行结果反应处理等功能。它主要的目的是根据调用的API请求转为具体的代码, 然后由代码完成一次数据库操作。

1.3 基础支撑层:

负责最基础的管理功能, 包括数据库连接和事务管理、数据库配置加载和缓存处理等内容, 这些本应该是最基础的东西, 将他们合成一个最基本的组件, 为上层的数据处理层提供服务。

2 项目中mybatis应用方法

2.1 数据库配置

在底层数据库要将每一个需要调用的类配置成一个表的形式, 并将数据类型和长度按照需要配置, 如图1。

在表中, 一定只能配置一个主健, 并且将主键的配置完成。如图中, id即为主键, 且每一个属性名的类型都一定要选择清除, 将长度配置完毕。

2.2 XML文件配置

Mybatis基本只需要两个最主要的XML文件, 一个是mybatis-config.xml, 一个是generator Config.xml, 第一个是mybatis的功能配置文件, 第二个是mybatis自动生成功能对表和类以及接口的配置文件。但是一般在项目中, mybatis是和Spring框架结合使用的, 在Spring框架的application Context-database.xml配置文件中, 要将mybatis配置进去, , 代码如下:

可以看到, Spring也是讲mybatis功能当做一种反转注入的类工厂 (Factory) , 用以数据 (类) 的调用。这样, mybatis就和Spring框架结合在一起了。在mybatis-config.xml中, 将自动生成的所有接口的JDBC语言实现代码所在的文件配置进来, 这样, mybatis工厂就可以自动查询到每一个接口及其代码。其方式如下:

<mapper resource="maps/system/Field Config Mapper.xml"/>

下面重点介绍一下generator Config.xml文件, 在其中, 要将数据库的连接方式、账号密码等内容配置好, 将自动生成的接口和JDBC语句所在文件夹配置好, 还要将底层数据库的表和相对应的类配对好, 写在一个table标签中, 如下:

其中jdbc Connection标签是数据配置, table是表和类配置, 名字要一一对应。

在下一部分命令运行中, 所有的数据库表自动生成类、接口和数据库语句都是通过generator Config.xml配置好后, 才能自动生成的, 在以后项目建设的日子里, 每当你对类和数据库进行了修改后, 都只需要运行命令, 就可自动生成文件, 不再需要去人工修改代码、参数和配置[2]。

2.3 命令运行

在开发环境的服务器中, 配置一句mybatis-generator:generate, 运行, 即可在配置文件所写的文件位置中自动生成需要的类、API接口和代码。这对于开发人员来讲, 是一个解放程序员的进步。

3 应用结果

在上面的命令运行后, 就在项目对应位置生成文件如图2。其中dao.*中的*Mapper.java是所有关于device这个类的API接口, 包括增删改查和计数这些功能, 而且每种还根据用户需要提供了不同种类的接口。在model.*中主要是生成了数据库中table所对应的java类和类的example, 用于类的调用和注入值等功能。Map.*中是dao*中接口的数据库代码化[3]。其中把所有提供的接口和基础连接都已数据库语言表达出来。

4 总结

Mybatis技术对DAO层进行了封装, 使得开发人员不需要在做后台和页面开发的同时还要去关系数据库的链接和调用。在配置文件中将SQL语句自动生成且封装, 避免了项目迁移时对数据库的依赖性, 降低了代码的耦合度, 增加了项目的可移植性。同时, 又能让你了解到底层数据库的搭建, 不至于对数据库完全不知晓。对J数据库语言的封装和API的生成, 减少了程序员在开发过程中使用JDBC的机会, 释放了大量开发时间, 解放了开发人员。

摘要:基于在项目开发中减少代码对数据库语言依赖性的目的, 采用mybatis框架, 通过自动生成类、接口和代码, 结合Spring翻转注入的工厂方法, 完成了对程序员的解放, 降低了代码耦合度, 增加项目的可移植性。

关键词:持久,映射,数据库连接,接口,耦合度,封装

参考文献

[1]李澎林, 朱国清, 吴斌.基于iBatis SQL Map的数据持久层实现[J].应用研究, 2008

[2]夏汛, 陈玲.基于Spring MVC和Mybatis的动态表单设计[J].计算机光盘软件与应用, 2012, 20.

数据自动生成 篇11

利用VBA代码可以轻松实现上述需求,按下“Alt+F11”组合键,打开Microsoft Visual Basic for Applications编辑器窗口,依次选择“插入→模块”,在右侧窗格插入一个空白模块,手工输入或粘贴如下代码(相关代码可关注电脑迷微信回复“201507vba1”获得,如图1)。

代码检查无误之后,依次选择“文件→关闭并返回到Microsoft Excel”命令,返回Excel主界面,按下“Alt+F8”组合键,打开“宏”对话框,选择并运行宏,很快就可以获得图2所示的结果。

如果觉得VBA代码过于麻烦,也可以在B2单元格输入公式“=A2&COUNTIF(A$2:A2,A2)”,这里的COUNTIF函数用来计算指定的单元格区域中满足条件的单元格个数,“&”表示将前后的字符连接起来,向下拖拽填充柄,同样可以获得自动递进的序号。

数据自动生成 篇12

在复杂测试系统任务中, 测试软件的编制和调试涉及多个被测对象。若采用常规方法对测试步逐一编制, 则工作量大, 编程人员不仅要熟悉测试流程、测试对象、测试仪器, 而且还要精通编程语言, 对编程人员要求很高;同时, 编程不规范、程序错误不易查找等问题都会给软件的测试、使用、升级及维护带来不便。基于数据库的测试程序自动生成设计, 正是为了解决这一问题。

1测试流程分析

通过对测试系统的分析可以得知, 测试软件一般由多个特定内容或对象的测试项组成, 每个测试项都是一个具有明确测试内容的完整的测试项目, 它的结构形式是:测试项—一级测试子项—二级测试子项—测试步。其中, 各级测试子项用于说明不同的测试子项内容, 测试步是测试流程的最小操作单元, 测试步将直接产生测试操作动作。

对复杂测试系统的每一测试步, 不可能配备单独的测试资源, 否则系统会过于庞大, 且资源利用率低。因此在测试步中需要通过开关切换来实现资源的复用。一个典型的测试步需要完成以下几类基本动作:①测试前预动作, 如开关或时间操作等;②测试对象确定;③测试仪器选取;④测试结果处理, 如对结果的超限处理等;⑤测试后动作, 如激励信号的保持或复位等动作。根据需要, 一个测试步可以包含上述5个部分, 也可以是其中几个部分的组合。测试程序的自动生成设计就是要在每一测试步中根据不同的需求对这5类基本动作进行自动组合, 完成测试任务。

2设计方案比较

测试流程自动生成的首要任务就是要在每一测试步中自动获取测试的5类基本动作, 并根据具体测试需要对这5类基本动作进行组合。实现测试步自动生成的方法有两种:①根据每一测试步的具体内容将5类基本动作封装成子函数, 测试执行时, 只需对子函数的部分参数进行设置, 多次重复调用子函数来实现;②由专业的程序员编制好各类仪器的驱动信息, 测试人员在此基础上通过某种方法, 自动获取5类基本动作的内容, 完成测试任务。

比较可以看出第一种方法不能称之为严格意义上的测试程序的自动生成, 而是一种变相的逐点编制测试程序。该方法适用于流程中各测试步内容大多相同或相近, 所选测试仪器少, 多次重复测试。若各测试步的内容不相同, 且测试步较多, 则这种方法就不适宜了。因此第一种方法编制的软件的通用性、可维护性、可移植性很差, 且任务量大, 调试不易, 需要测试人员熟悉各类仪器和测试流程, 增加了对测试人员的要求。而第二种方法采用一种框架式的结构设计方法, 其易用性、通用性、可维护性、可扩充性、可移植性得到极大改善, 更适合于一般测试流程。本文主要对第二种方法进行讨论。

3测试流程自动生成设计

方案设计时采用自下而上的方法, 每一测试步确定后都对应唯一的5类动作组合, 这是典型一对五的对应关系, 最简单实用的描述方法就是采用数据表。数据表中有5项内容, 分别对应着5类基本动作, 而测试步号则作为单一索引, 决定每一测试步号对应的唯一基本动作组合。这样测试步的自动生成可以设计成:当测试程序执行到某一测试步后, 获得该测试步的唯一索引号, 根据这一索引号, 查询数据库表, 获得当前测试步中的5类基本动作内容, 调用仪器驱动信息, 完成测试步操作。表1为设计好的测试步表。

表1中的内容涵盖了5类基本动作:测试前预动作包括开关动作, 开关的切换实现了测试对象的选择;仪器索引决定了测试仪器;测试结果处理包括了计算公式索引、公式参数等;测试后动作包括了超限溢出流向、开关动作等。同时从系统测试角度出发还考虑了延时、循环测试等。

由于开关和仪器使用较复杂, 所以测试步表往下进一步细分了开关表和仪器表。开关表给出了每一测试步的预操作和后操作中的采样开关和控制开关的切换。仪器表中则给出了每一测试步中所需激励仪器或测量仪器的量程、类型等信息。

测试项组合的自动生成也采用检索数据表的形式, 在项目表中列出需要的测试步, 运行时依次执行测试步即可。为方便使用和维护, 需要测试项和测试步的增加、删除功能, 本文设计了如图1所示的数据库逻辑关系。

测试项目总表是测试配置数据库的顶层。测试项目表可以任意分层, 由树状结构表示出来, 测试项目表的底层是测试步表。

测试表和任务表是测试结果数据库的顶层, 每次测试, 它都产生唯一标识该测试的记录。任务表列出了这次测试所涉及到的所有测试项目及其测试顺序, 测试表则记录了测试结果。

4数据库接口及软件环境

在数据库接口方面, 从方便对数据库的查询、输入、修改等操作以及提高系统的可移植性考虑, 选择了通用的SQL Server和ODBC技术。SQL Server是目前流行的一种数据库服务器系统, 它是由Microsoft开发的基于SQL语言、并具有客户/服务器结构的关系型数据库。所有SQL Server数据库数据都存储在表中。而ODBC是Microsoft公司开发的一套开发数据库系统应用程序接口规范, 为应用程序提供了一套调用层接口CLI函数和基于动态链接库的运行支持环境。使用ODBC开发数据库应用程序时, 调用的是标准的ODBC函数和SQL语句, 数据库的底层操纵由各个数据库的驱动程序完成。所以, 这样保证了应用程序具有良好的适应性和可移植性。

通过分析比较, 采用BORLAND公司出品的面向对象的交互式C++语言开发平台C++ Builder, 它具有简单直观的编程方式、丰富的组件库以及强大的数据库操作内核。数据库管理系统采用Microsoft FoxPro 6.0。

5结束语

根据测试系统的特点, 建立描述测试系统的数据库, 采用人机交互操作的输入方法即可实现测试流程的输入。通过将数据库中测试数据与相关的仪器驱动程序自动连接, 就可以实现测试程序的自动执行, 完成测试任务。这种方法经实践证明不仅可以提高测试程序的输入效率, 而且可以使测试人员摆脱繁琐的编程工作, 集中精力研究测试对象和测试工艺。该方法提高了测试软件的可靠性和可维护性, 便于测试程序的检查和调试。

摘要:为解决复杂测试系统软件设计过程复杂、升级维护不便的问题, 提出了一种基于数据库的测试程序自动生成方法。通过检索数据库中不同数据表的方法, 获得每一测试项的多个测试步组合以及每一测试步的5个基本动作的组合, 实现测试程序的自动生成。实际应用表明该方法可以提高测试程序的输入效率, 使测试人员摆脱繁琐的编程工作, 集中精力研究测试对象和测试工艺。该方法也提高了测试软件的可靠性和可维护性。

关键词:测试程序,自动生成,数据库

参考文献

[1]李幼仪.C++Builder高级应用开发指南[M].北京:清华大学出版社, 2002.

上一篇:画图策略下一篇:优化决策方法