HI,欢迎来到学术之家,期刊咨询:400-888-7501  订阅咨询:400-888-7502  股权代码  102064
0
首页 精品范文 单元测试方法

单元测试方法

时间:2023-06-01 09:46:31

开篇:写作不仅是一种记录,更是一种创造,它让我们能够捕捉那些稍纵即逝的灵感,将它们永久地定格在纸上。下面是小编精心整理的12篇单元测试方法,希望这些内容能成为您创作过程中的良师益友,陪伴您不断探索和进步。

单元测试方法

第1篇

关键词关键词:软件工程;软件质量;单元测试;测试框架;面向对向程序

中图分类号:TP302 文献标识码:A 文章编号文章编号:16727800(2013)008004503

0 引言

随着现代软件工程的不断发展,人们对软件质量和生产力的要求越来越高。软件测试技术和框架复用技术作为提高软件质量和生产力的有效手段,近年来倍受人们的重视。

传统的“黑盒”、“白盒”测试技术主要应用于面向过程的程序设计中。随着面向对象技术的发展,这种技术已不能满足软件测试的需要。自动化单元测试框架应用于面向对象单元测试中,通过它来实现单元测试自动化。

单元测试是对软件进行正确性检验的测试工作,是软件设计的最小单位。单元测试的目的主要是发现每个程序模块内部可能存在的错误。程序员的基本职责是单元测试,单元测试能力是程序员基本能力的体现,程序员必须对自己所编写的代码认真负责,软件的质量与程序员的工作效率直接受程序员单元测试能力高低的影响。

单元测试是一项很重要而且必要的工作。在实际工作中,许多程序员并不愿意对自己编写的代码进行测试。软件开发的工作压力大,大多数程序员们因为没有时间测试自己的代码,使程序的代码质量得不到保证,有些代码还需重新编写,程序员根本没有时间对代码进行测试。自动化单元测试框架能够从根本上解决这个问题,它可以使测试工作变得简单,这样更有助于程序员进行代码开发工作。

1 自动化单元测试框架设计目标

自动化单元测试框架的设计应达到以下目标:首先,框架简单,可以使测试程序的编写更简化。框架使用常见的工具设计,测试工作操作简单;其次,测试框架应能够使除作者以外的其他程序员进行代码测试,并能解释其结果,即将不同程序员的测试结合起来,且不发生相互冲突。最后,测试用例可以复用,可以以现有的测试为起点形成新的测试。

本文将以这些目标为指导,讨论如何用以Kent Beck和Ralph Johnson提出的“模式产生体系结构”的方式来设计框架系统。自动化单元测试框架的设计思想是从0开始根据设计问题应用设计模式,一个接一个逐步设计,直至获得最终合适的系统架构。其中实现部分采用Java语言来实现,并会使用UML图来表示各种类及类间关系。

2 面向对象自动化单元测试分析

自动化测试定义为:管理与实施各种测试活动,包括开发测试脚本、执行测试脚本,这样使验证测试需求更加方便,通过这些脚本实现了自动测试,可以把它称为自动测量工具。使用这种自动测试工具对增量软件集成测试提供了巨大的方便,增加了巨大的价值。每一个新的构件可以重用先前开发的测试脚本,即使需求和软件有变更,作为一个重要的控制机制,自动测试也能够确保每一次重新构建的稳定性与准确性。

3 面向对象自动化单元测试框架

自动化测试框架实质是一种自动测试工具,单元测试的核心问题是实现测试自动化。一个完整的自动化测试过程通常包括5个测试活动,分别是测试标识、测试设计、测试实现、测试执行与评估。测试用例针对被测试系统的各项功能准确地开发与设计,而且每一个测试用例都要按顺序执行这5个测试开发活动,测试开发活动如图1所示。

图1 测试活动

测试标识与测试设计这两个测试活动主要为智力活动,分别标识测试条件和设计测试用例。测试执行与测试比较这两个活动属于比较机械的活动,它们的功能分别为:执行测试用例、将测试输出结果并与期望输出结果值相比较。前两个活动决定了测试用例的质量,后两个活动适合自动化。在单元测试中,测试执行和测试比较这两个活动要重复多次,测试标识与测试设计通常只执行一次。因此,在单元测试过程中,重复性的活动特别需要自动化执行。

4 自动化单元测试设计与实现

首先构建对象来表达基本概念:Test Case(测试用例),然后将对象发送到测试框架,再由测试框架执行,最后报告测试结果。

采用Command命令模式将一个请求封装成一个对象,Command模式可以为每一个操作生成一个与之对应的对象,同时能够给出一个对应的执行方法。这样可以对多个用户请求进行排队,也可以将多个请求记录到日志,并使用不同的请求对客户进行参数化。具体实现方法如下:

其中的run()方法为模式中的执行方法,可以通过继承来重用该类,为了便于在测试失败时能够识别出失败的测试,每一个Test Case在创建时都要给出与之对应的名称,这样即可判断出失败的测试。

图1展示了测试框架组成部分的快照,也展示了应用于TestCase中的标记。

图1 测试框架组成部分

5 单元测试用例执行流程

在实际测试过程中,构造参数或资源、测试、释放资源为测试的业务逻辑过程。例如,在测试数据库的插入、更新、删除、查询等操作时,首先要对数据库进行连接,然后测试,最后释放连接。这样,在一个Test Case中有多个测试,需要反复书写代码,这增加了测试人员的工作量,不符合设计目标。

建立测试支架即为所有的测试建立一个共同的结构,可以解决以上问题,初始化代码、测试代码和释放资源的代码均放在测试支架上,每次运行测试代码之前,首先都运行初始化代码,最后运行释放资源代码。这样,每一个测试都会和与之对应的支架一起运行,而且测试结果互不影响,每一个结果都不会影响其它的测试结果。这样便实现了代码的复用,大大提高了软件单元测试的工作效率。

以上通过模板方法实现,模板方法的Template Method静态结构如图3所示。

其中,setUp方法初始化测试信息,如数据库的连接,cleanUp方法的功能是测试结束后释放资源。runTest方法的功能是进行测试业务逻辑。TestCase的方法的功能为进行测试逻辑框架的设计,run为模板方法。在这里,setUp和cleanUp可以被用来重写,由框架来进行调用。

6 测试结果收集

创建对象TestResult来收集运行的测试结果,实现代码如下:

UTF使软件开发者们更愿意接受测试代码的工作。有种种好处:UIT使测试用例的实现简单、一致且模块化;测试实现与执行的特性支持迭代、增量开发;重新运行测试包的便利使高频率的回归测试成为可能;同时它还能保证单元测试的持久性。此外,单元测试框架UTF也是可扩展的,例如,利用Decorator模式,可以不断向UTF添加新的功能;TestResult类也是框架的一个扩展点。客户能够自定义它们的TestResult类,例如, HTMLTestResult可将结果上报为一个HTML文档等。

参考文献参考文献:

[1] (美)普雷斯曼.软件工程:实践者的研究方法[M].北京:机械工业出版社,2011.

[2] (美)麦格雷戈.面向对象的软件测试[M].北京:机械工业出版社,2002.

第2篇

关键词:Testbed/Tbrun;软件单元测试;嵌入式软件

中图分类号:TP311 文献标识码:A 文章编号:1009-2374(2013)18-0027-02

嵌入式软件作为嵌入式系统的重要组成部分,嵌入式软件质量问题可能会带来设备的损坏和人员的伤亡,因而用户对其质量有较高的要求。软件测试是对软件质量检验的一个非常重要的手段。而软件测试中动态测试最基础的测试就是单元测试。如何开展单元测试以及如何提高单元测试的效率是一个值得研究的问题。

1 软件单元测试的要求及重点

软件单元测试是对软件基本组成单元进行测试,测试软件单元是否正确地实现规定的功能,是否满足软件性能和接口要求。并验证程序与详细设计说明的一致性。因此在单元测试时,需要模拟被测单元与其他模块之间的交互,开发驱动模块和桩模块两种辅助模块,构建一个可执行的环境,驱动模块用于模拟被测单元的上层模块,测试执行时由驱动模块调用被测单元使其运行;桩模块用于模拟被测单元在执行过程中所调用的模块。

单元测试重点考虑的测试类型有:(1) 接口测试。接口测试主要检查实参与形参的数目是否相等、实参与形参的属性是否匹配、实参与形参的单位是否一致、传到被调用模块的实参的属性是否与形参的属性匹配、是否把常量当作变量传递等内容。(2)功能测试。功能测试主要是对照软件单元的设计说明,验证软件是否完成了所需的功能。(3)重要执行路径测试。应设计测试用例以发现错误的计算、不正确的比较和不正常的控制流向等错误。在计算中比较常见的错误是:误解或错误处理算术运算的优先次序、混用不同类的操作、计算精度不够等。另外在控制软件执行流程的比较操作中比较常见的错误有:不同数据类型的比较、不正确的逻辑操作符或不正确的优先次序、因精度不够使本应相等的数不相等(如浮点数)等。(4)软件单元的局部数据结构测试。软件单元的局部数据结构是一个主要的错误来源,应设计测试用例来发现不正确的或不一致的数据说明、初始化有错或没有赋初值、不正确的变量名、不一致的数据类型、上溢/下溢或引用错误等类型的错误。(5)错误处理路径测试。一般软件错误处理路径测试应考虑下面几种可能的错误:对错误的描述不易理解、指出的错误并不是所遇到的错误、出错时还没有进行出错处理就先进行系统干预、错误边界条件的处理不正确、描述错误的信息不正确从而不足以确定出错的原因等。(6)边界测试。边界测试是检测软件在其输入/输出域、过程参数、状态转换、功能界限等具有一定范围的边界或端点条件下的运行情况,考核软件的功能或性能在其边界条件下或边界的邻近区域内是否依然满足设计要求。按照上去要求进行单元测试时,为达到要求的覆盖条件,还需采取一定的技术手段对测试覆盖率进行记录和分析,确保达到相应的覆盖率指标。采用TBrun单元级测试工具,能自动产生软件测试驱动、桩模块,提供友好的输入输出人机交互和覆盖率统计功能,能有效提高单元测试的测试效率。

2 Testbed在单元测试中的应用

使用 Testbed/TBrun的基本方法是:设计测试用例;在Testbed/TBrun中加载被测单元文件,通过Testbed/TBrun对被测软件进行源程序自动插装;根据测试用例设定输入和预期的输出,执行插装好的源程序单元;分析输入数据、预期输出和实际输出;得到被测软件在当前的测试用例执行过程中代码的覆盖率。需要注意的是,每执行一个测试用例就需要重新编译并执行。Testbed/TBrun的覆盖率统计只具有累加的功能,因此不能查询每一测试用例执行后的覆盖率信息。在执行完所有的测试用例后会生成一个总的覆盖率文件,Testbed/TBrun通过对覆盖率文件的分析得出软件单元相应语句的覆盖情况,根据这些覆盖情况可以较快确定冗余的测试数据并增补遗漏的测试数据,从而指导新的测试用例设计。在实际应用Testbed单元测试时,需注意以下三个方面:(1)数组和指针类型的变量的输入。数组可以通过在Testbed/TBrun插装后的源代码中插入数组的初始化语句对数组赋值或者在 Testbed/TBrun 环境中对数

组的一部分赋值。因指针不能被直接赋一个地址,所以输入指针可采用映射的方式来赋值,将指针变量映射成相应的自定义变量,然后对自定义变量赋值。在测试执行的过程中,这个自定义变量的值就是指针的输入值。(2)被测单元代码的必要修改。在实际的测试过程中,有的代码单元不能直接使用Testbed/TBrun直接执行测试。须在分析之前对代码单元做少量修改。如Testbed/TBrun 插装源代码时会生成 main()函数,因此被测单元中的 main()函数要改为其他的名称以避免造成名字冲突;Testbed/TBrun 执行分析时会执行被测单元,因此被测单元中的 while(1)之类的死循环结构要去掉,否则分析将无法结束。(3)模块测试后显示最终整体覆盖率,不能查询每一测试用例执行后的覆盖率信息。

3 结语

Testbed有效地支持了测试人员的测试工作,相对于完全人工测试提高了测试效率。该工具仍存在不足,还需在实践中不断完善使用方法。

参考文献

第3篇

功能测试主要通过单元测试和集成测试来完成系统的功能测试。单元测试的目的是测试源码中最小单元的代码是否正确处理它该处理的任务。单元测试重点测试了代码中分支比较多的地方,以验证程序是否能根据条件执行相应的分支;并重点测试了代码对于异常情况的处理,以验证代码是否能对于发生的异常情况进行相应的处理;再就是对源码中与数据库相关的代码和涉及用户输入输出的代码进行了重点测试。集成测试是在单元测试的基础上,将已经通过单元测试的软件单元组合起来,组成可以执行的功能单元,然后进行测试。通过测试的子功能单元再通过组合,组成更大一级的功能模块进行测试。集成测试重点测试软件单元的组合能否正常工作,模块之间的组合能否集成起来工作,还要测试构成系统的所有模块组合能否正常工作。集成测试主要有三种测试方案:自底向上进行测试,自顶向下进行测试,以及自底向上和自顶向下结合的方式进行测试。自底向上的集成测试方式是最常使用的方法,这种方式从程序模块结构中最底层的单元模块开始组装和测试。自顶向下的集成测试方式正好与自底向上的方式相反,需要编写桩模块以支撑上层的测试。最理想的方案是能将这两种集成方式结合起来,这样在早期的时候,既能发现重大的问题,又能及早展开人力。但是这种方式实施起来有难度,需要软件开发者一开始要做好合理的策划和设计。由于系统在需求和设计阶段做的工作比较扎实,本系统主要采用了自底向上的集成测试方式:先把最底层的软件单元组合,组成高一级的功能单元进行测试;测试通过的功能单元再进行组合,组成更高一级的模块单元,并对模块单元进行测试;最后,模块单元再集成到系统中进行测试。测试重点集中在各单元与各单元之间的接口和信息交互。

2.用户界面测试

通过用户界面测试来验证用户与系统的交互情况。界面测试的目标是确保系统向用户提供适当的访问和浏览被测对象功能的操作。测试方法,为每个窗口创建或修改测试,以核实各个应用程序窗口和对象都可正确进行浏览,并处于正常状态。完成标准,证实各个窗口与基准版本保持一致,或符合接受标准;需考虑的特殊事项,并不是所有定制或第三方对象的特征都可访问。

3.性能测试

性能测试采用了主观评测和软件评测相结合的方法,先部署上系统,在环保局内部试运行,通过工作人员的使用来了解系统的反应速度是否满足客户的需求。系统的性能需求主要是对系统web访问的response时间和系统负载能力的要求。在性能测试过程中,我们利用Loadrunner模拟用户向系统发送请求,并监控系统的CPU,Memory等参数。

4.安全性测试

本系统采用先登录,后操作的方式。因此,必须测试有效和无效的用户名和密码,并注意到是否大小写敏感。本系统是有超时的限制,也就是说,用户登录后在一定时间内(20分钟)没有点击任何页面,需要重新登录才能正常使用。所以,也必须对其进行测试。

5.测试结果

功能测试结果:满足环保局功能需求,与需求不相符或者后增加的功能,将在后续版本中加入,本版将不做修改。

第4篇

【关键词】软件测试 白盒 黑盒 单元测试 组装测试 确认测试 系统测试

一、软件测试的常用方法

软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件开发过程的重要组成部分,是软件质量保证的关键步骤。采用面向对象技术进行软件开发产生了两个结果:一是开发出功能更强大更便于用户使用的软件产品,二是生成规模庞大的程序代码和文档,这也必然导致更大规模的软件测试和维护工作。因此,规范化的软件测试势在必行。规范化不只是测试的需求(有效代码量、结构/逻辑的复杂性、高性能/高精确性/高可靠性需求)和消耗资源(人力/时间/测试频度)规模化,更要求在面对规模庞大的软件测试需求,在合理的资源消耗基础上,实施有效的测试。

1.人工测试的方法

(1)个人复查。个人复查是指程序员自行设计测试用例,对源代码、详细设计进行仔细检查,并记录错误、不足之处等。个人复查主要包括检查变量的正确性、检查标号的正确性、检查子程序、宏、函数、常量检查、标准检查、风格检查、比较控制流、选择、激活路径、对照详细说明书,阅读源代码和补充文档等方面的测试内容。

(2)走查。走查是指测试人员先阅读相应的文档和源代码,然后人工将测试数据输入被测试程序,并在纸上跟踪监视程序的执行情况,人工沿着程序的逻辑走查运行一遍,跟踪走查运行的进程来发现程序的错误。走查的具体测试内容包括模块特性、模块接口、模块的对外输入或输出、局部数据结构、数据计算错误、控制流错误、处理出错和边界测试等方面。

(3)会审。会审是指测试人员在会审前仔细阅读软件的有关资料,根据错误类型清单(根据以往的经验、对源程序的估计等,并在以后测试中给以丰富补充)填写检测表,提出根据错误类型要提出的问题。会审时,由程序设计人员讲解程序的设计方法,由程序编写人员逐个讲解程序代码的编写,测试人员需要逐个审查,提问,讨论可能出现的问题。会审对程序的功能、结构、逻辑和风格都要进行审定。会审的测试内容与“走查”的内容相同。

2.机器测试

(1)定义。机器测试的目的是检查程序的动态性能,检查程序在执行过程中存在的错误。尤其是发现程序在实现功能、逻辑通路、数值计算、数据处理、边界处理、错误处理等方面存在的错误。机器测试分为白盒测试和黑盒测试。

(2)黑盒测试。黑盒测试即功能测试,这种方法是把软件看成一个看不见里面内容的黑盒,在完全不考虑程序内部结构和特性的情况下,测试软件的外部特性。根据软件的需求规格说明书设计测试用例,从程序输入和输出特性上检查程序是否满足设定的功能。黑盒测试常采用的方法是设计适量有效和无效的输入数据进行测试,以期用最小的代价发现最多的错误。

(3)白盒测试。白盒也称结构测试,这是将软件看成一个透明的白盒子,按照程序的内部结构和处理逻辑来选定测试用例,对软件的逻辑路径及过程进行测试,检查它与设计是否相符。

二、软件测试的流程

软件测试虽然是一个独立的阶段,但在实际工作中,测试的流程主要包含单元测试、组装测试、确认测试等阶段。

1.单元测试。单元测试也叫模块测试,单元指清晰定义了子功能的最小单位,如程序的最小编译单位等,是测试工作的第一步,通常单元测试需要编写桩程序及耙程序。单元测试是要保证每个独立的模块完成清晰定义的子功能,发现编码和详细设计的错误。它将整个系统分解,减少测试复杂度,在模块范围定位错误的位置,并且可以多个模块并行测试。测试可以由编码人员也可以由测试人员来完成。测试方法以白盒测试为主,辅以必要的黑盒测试。测试内容包括模块接口、模块内部数据结构、逻辑通路、边界值、出错处理等。

2.组装测试。组装测试也叫综合测试、集成测试、联合测试,它是在单元测试之后需要按照设计时做出的层次模块图把测试模块连接起来,进行组装测试。测试目的是检查能够独立实现子功能的单元模块能否在组装过程中逐级实现组合起来的主功能。测试人员由编码人员和测试人员共同进行。测试方法是黑盒测试。组装测试的策略分为非增式测试和增式测试,增式测试又分为自顶向下、自底向上和混合式三种。

3.确认测试。确认测试也叫合格性测试、验收测试,经过组装测试后,所有模块已连接成为一体,确认测试是将整个软件作为测试对象,进一步检查软件是否符合需求规格说明书的要求。确认测试的目的是检查系统是否能够按预定要求工作。确认测试主要由测试人员完成。确认测试要进行以下几方面的内容:在模拟的环境下,运用黑盒测试的方法,验证测试可包括功能测试、可移植性、兼容性、错误恢复能力、可维护性等性能测试。有些确认测试还将软件配置审查,α测试,β测试也包含进来。

三、结束语

在现实生活中,业界人员所热衷追求的往往是高效的软件开发技能,而高效的软件测试技能却相对为人们所冷落。在当今的大学,计算机专业均没有开设任何软件测试方面的课程,每年毕业进入业界的学生,几乎全无软件测试方面的知识,软件测试的培训与教育并无法满足当今IT产业的需求。随着敏捷开发方法等新一代软件工程概念的风靡,软件编码和测试过程多次迭代,测试人员更积极地参与到软件生命周期的各个阶段中,使得整个项目团队收取事半功倍的成效。编码和测试人员越来越紧密地协同工作,优秀的程序必然需要了解测试的方法和概念,优秀的测试人员所具备的技能也不再是仅仅是对现成的程序进行直观的功能测试,软件测试的涵义和策略日益复杂,软件质量风险控制涉及到愈来愈多的方面。

参考文献:

[1]《浅析软件测试技术现状》 李静 郭晓磊 《光盘技术》2009年第5期

[2]《软件测试:跨越整个软件开发生命周期》 (美国)爱弗里特 (Everett G.D.) (美国)Raymond MCleod 译者:郭耀 清华大学出版社

第5篇

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

中图分类号: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.

第6篇

关键词:软件;测试;设计;技术

中图分类号:TP311.52文献标识码 A 文章编号:1009-3044(2007)17-31323-02

Technique of Software Test and Design

GUO Qun

(Liaoning University of Intemational Business and Economics,Dalian 116024,China)

Abstract:Software test, the straightforward and rapid way to improve the quality of software, is the necessary condition for the improvement of the software quality. This paper, introducing the common concept, method and step of the software test, gives the solution to the software test.

Key words:software; test; design; technique

1 引言

在大型软件开发过程中,人们使用了许多保证软件质量的方法分析、设计和实现软件。但由干问题的复杂性,人们对客观事物认识的局限性及软件开发人员配合不协调等因素,因而在软件开发过程中难免有各种各样的错误。如果在软件投入生产性运行之前,没有发现并纠正软件中的大部分错误,则这些错误迟早会在生产过程中暴露出来,那时不仅改正这些错误的代价更高,而且往往会造成很恶劣的后果。因此,一定要高度重视软件测试工作。软件测试是为了发现故障而执行程序的过程。其目的是以尽可能少的时间和人力发现并改正软件中潜在的各种故障及缺陷。所以,在软件投入运行之前必须进行软件测试,以尽可能多地发现软件中的故障,提高软件可靠性。

2 软件测试定义

软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。正确认识软件测试的定义是十分重要的,它决定了测试方案的设计。软件测试只能查找程序中的错误;不能证明程序中没有错误。

3 软件测试方法

怎样对软件进行测试呢?有两种方法。一种称为黑盒测试:如果知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正确使用,也叫功能测试;它是在程序的接口进行的,把软件看成是一个黑盒,测试时仅仅关心如何寻找出使程序不按要求运行的情况,是最基本的测试法。另一种称为白盒测试:如果知道产品内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行,也叫结构测试。它是把软件看成装在一个透明的白盒子里,就是完全了解程序的结构和处理过程,按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按规定要求正确工作。

4 软件测试步骤

一个大型软件系统通常由若干个子系统构成,每个子系统又由若干个模块构成。软件测试分以下几个步骤:

(1)单元测试:又称模块测试,是针对软件设计的最小单位――程序模块,进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行的独立进行单元测试。

(2)组装测试:又称集成测试,通常,在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这时需要考虑的问题是:在把各个模块连接起来时,穿越模块接口的数据是否会丢失;一个模块的功能是否会对另一个模块的功能产生不利的影响;各个子功能组合起来,能否达到预期要求的父功能;全局数据结构是否有问题;单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。

(3)确认测试:又称有效性测试。它的任务是验证软件的功能和性能及其他特性是否与用户的要求一致。首先要进行有效性测试以及软件配置复审,然后进行验收测试和安装测试,在通过了专家鉴定之后,才能成为可交付的软件。

(4)系统测试:是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行(使用)环境下,对计算机系统进行一系列的组装测试和确认测试。系统测试的目的在于通过与系统的需求定义作比较,发现软件与系统定义不符合或与之矛盾的地方。

5 软件测试的策略

测试过程按4个步骤进行,即单元测试、组装(集成)测试、确认测试和系统测试。如图1所示。

图1 软件测试的过程

开始是单元测试,集中对用原代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。然后,把已测试过的模块组装起来,进行组装测试,主要对与设计相关的软件体系结构的构造进行测试。为此。在将一个一个实施了单元测试并确保无误的程序模块组装成软件系统的过程中,对正确性和程序结构等方面进行检查。确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。最后是系统测试,把已经经过确认的软件纳入实际运行环境中,与其他系统成分组合在一起进行测试。

6 结束语

软件测试是保证软件可靠性的主要手段,是软件开发过程中最艰巨、最繁重的任务。软件开发人员要明确软件测试的目标,掌握软件测试的方法、策略,选用最少量的高效测试数据,做到尽可能完善的测试,从而尽可能多地发现软件中的问题。降低软件测试的成本,提高软件测试效率。开发出用户满意的高质量的软件。

参考文献:

[1]张海藩.软件工程导轮[M].北京:清华大学出版社,1992.6.

[2]郑人杰,等.实用软件工程[M]. 北京:清华大学出版社,1997.4.

第7篇

笔者在课堂教学中建立了一套激发学生学习兴趣和发展学生能力的“六项全能”的形成性评价方法,并把这种评价方法和传统的终结性评价方法结合起来对学生进行评价。这“六项全能”的评价方法包括课堂活动评价、单元听写评价、单元测试评价、课文背诵评价、完成作业评价和课堂纪律评价。

一、课堂活动评价

学生参与课堂活动是形成性评价的一个重要内容,课堂活动包括课前have a speech,free talk,在课堂教学过程中开展的group work,pair work,教学游戏,回答上节课所学知识点等活动。在课堂上采用小组评价法,把学生分成若干小组,以小组为单位开展讨论,进行比赛。采用记分制,完成任务的加3分,答错不加分。但是回答上节课所学知识点错了就扣3分。如果是个人完成的给个人加分,如果是小组合作完成的就给小组加分。

二、单元听写评价

把听写和形成性评价方法结合起来使用,帮助学生调控自己的学习过程,使学生获得成就感,培养合作精神。

课堂听写前教师让学生自己在家先听写,可以家长报也可以自己写出汉语再默写。听写的内容是本单元的单词、词组、句子或是课外阅读中的词汇,由学生自己定。课堂听写采用记分制,达到100分的同学加10分,90分以上的加5分,没达到90分的就算不合格,不合格的同学要找课代表重新听写。他们可以找本组组长寻求帮助,也可以找一帮一结的对子弄清楚没写会的内容。重新听写达到90以上的可以补加3分,基础差的同学可以降低标准,达到60分即可加5分。对于重新听写合格的学生,教师应及时给予表扬鼓励,帮助学生建立自信,激发积极学习情感。

三、单元测试评价

单元测试作为阶段性的测试结果是形成性评价的一种形式。教师在完成每个单元的教学后,运用单元测试对学生进行评价。

以上一次期中或期末考试成绩作为评价标准。120分试卷,108分以上的加15分,96分以上的加10分,跟上次比较有进步的同学再加五分。96分以下的同学,跟上次比有进步的加5分。

每次单元测试后,还要求学生进行自我评价,写出试卷分析,对自己试卷的得失进行一个小结。引导学生进行单元测试后的自我评价,对于强化学生对单元重点、难点的掌握起着至关重要的作用。

四、课文背诵的评价

背诵典型的对话或者课文是学习英语、培养语感的一种重要途径。通过背诵帮助学生掌握生词,养成英语思维的习惯,有助于提高听说能力,还可以帮助学生提高阅读理解能力。

对于课文背诵的评价,可采取小组合作的方式进行评价。在班上选出8个英语背诵小组长,组长先在教师这背。组员找组长背,不会读的先向组长请教。全班基本完成后再进行抽查,检查和督促组长的工作。采用记分的方式,在规定时间背完的同学可以加5分,抽查过关的同学再加3分。对于英语基础较差的学生,降低要求,让他们看着课文的汉语背。无法看汉语背出的同学,只要求朗读。

五、完成作业评价

德国教育家第斯多惠说过:“教学的艺术不在于传授本领,而在于激励,唤醒和鼓舞。”对于完成作业的评价,笔者主要是通过口头表扬并加分的方式。

对于按时交作业,并且书写认真,正确率高的学生及时给予肯定,并加5分;对于没按时交作业的学生扣5分。收作业的事情让小组长参与,培养他们的责任心。

六、课堂纪律评价

形成性评价要求积极有效的课堂环境,而这与学生良好的纪律有着紧密联系,有时课堂气氛活跃,但课堂纪律却难以控制,因此对课堂纪律评价尤为重要。

对于课堂纪律评价采取记分制,违反纪律一次扣10分。一个月内纪律扣分最多的同学会告知家长共同管理该生。课堂纪律评价不仅要成为约束学生的一种方式,也要成为服务课堂的工具,使其成为提高课堂效率的一种有效手段。

对于“六项全能”的评价方法,每个单元进行一次统计,由两名英语课代表分工记载和统计“六项全能”评价的分数。总分排前15名的学生评为优秀学生,再选出10名有进步的学生。在班级表扬栏公布,并且在家长QQ群中表扬信息。每个月进行一次小结,给总分排名前15名的学生颁发小小奖励。

第8篇

关键词:数学 教学步骤 认知结构 参照系

中图分类号:G623.5 文献标识码:A 文章编号:1673-9795(2014)02(c)-0102-01

根据每个单元的知识结构,从小学生的心理特点和认知结构出发,由教师确定每个单元的教学目标,并找准该单元的知识重点,难点及关键,然后根据学生的认知水平,组织有效的课堂教学活动,完成重点、难点及关键的教学,教给学生学习的方法。

1 确定教学目标,把握教学内容

制定单元教学目标,实际上是为单元教学定方向。方向能否定得正确,关键在于能否根据数学的学科特点,正确处理好整体与部分,知识与能力的关系,使所定目标切实具有科学性、准确性和可测性。一旦所定目标具有上述“三性”,就能真正成为教师组织教学活动,判断教学效果,调控教学过程的出发点和参照系。这样目标备课,教学就会因方向明确而少走弯路。

2 抓关键、教给学生方法

首先弄清该单元所涉及的知识在新与旧、难与易,相互制约方面有哪些联系,找准其中起关键作用的知识。其次在认真研究这一关键知识与哪些旧知识有密切联系的基础上,拿出3~5分钟做好对旧知识的复习。一旦确认学生已经具备了学习新知识的认知前提,就要把重点、难点知识的教学放到中心位置,采用适合儿童智力活动规律的教学方法组织各种形式的教学活动,甚至使绝大多数学生对这一知识达到充分地理解,较好地掌握。

显而易见,抓关键,主要包括两层意思:一是研究教材的知识结构,找准在整个单元教学中能牵一发而动全局的重点、难点知识的教学,使学生切实掌握学习本单元的方法。

例如:北师大版小学数学四年级下册,第二单元认识图形中,教学重点:认识直角三角形,锐角三角形,等腰三角形和等边三角形等,三角形的内角和等于180°,三角形任意两边的和大于第三边。难点是:三角形内角和的探索,三角形任意两边的和大于第三边的探索。

让学生体会先“量一量,算一算”产生猜想,再“拼一拼,折一折”进行验证的数学思想方法,体会通过操作获得一些数据,并整理分析数据,从中归纳出结论。

3 抓自学,让学生自己解答

自学,是学生在教师辅导下的学习。

由于学生在第二步的单元教学中,已经初步掌握了学习该单元的方法,因而进入第三步后,教师的主要任务就变成了有计划,有目的地深入到学生的自学中去,认真观察学生是怎样运用已掌握的方法去解答数学题的。及时发现学生在解答过程中存在的问题,并根据反馈情况进行及时恰当的辅导。

学生自学时,往往会出现这样一种现象:他们原以为已经掌握了重点、难点知识。在自学时,又会遇到若干意想不到的困难和障碍,暴露出个别学生对方法并未真正掌握。这就需要教师有的放矢地采取得力措施,组织学生再学习、再思考。在这个反复的、曲折的思维过程中,教师的辅导是举足轻重的。因为恰当的启发、点拨,可以指导学生及时走出迷谷,避免浪费时间,保证学生在课堂上做更多的题,从而培养学生运用关键知识解决实际问题的能力,达到熟能生巧,运用自如。

4 抓练习,让学生举一反三

学生通过自学,初步掌握了该单元的知识,但要培养学生思维的灵活性和深刻性,还要通过抓练习,让学生多层次,多角度,多形式地练习,做到举一反三。这种练习可分为三类:

(1)基本题。即与课本例题相似,且难度基本相同的单项练习题目。进行这种练习,目的是让学生进一步巩固和熟练单元的基础知识,切实完成识记与理解这两个层次的学习任务。

(2)变式题。源于例题,但形式与例题不尽相同,而解法与基本题又大致一样的练习题。练习此类题目,可以深化本单元所学的知识,逐步使学生形成技能技巧,有利于培养学生的分析,判断能力。

例如:第五单元小数除法练习四第10题。

10:哪种食用油便宜些?

第一种:每瓶2.5千克 花35.00元

依据:单价=总价÷数量

35÷2.5=14(元)

第二种:有两瓶油

大瓶3千克 小瓶0.5千克

共需:48.30元

48.3÷(3+0.5)=13.8(元)

所以买第二种合算。

(3)综合题。将本单元所学知识与有关知识混合编排而成的综合型和智力型。做此类题,能培养学生解决实际问题的能力,使知识能灵活运用;能让学生把本单元学到的知识与有关旧知识联系起来,形成知识体系,标志着已完成综合运用这一教学目标。

如:找座位(总复习)。

这道题综合考察学生的小数加、减、乘、除计算的能力(见图1)。

5 单元测试,及时评价学习情况

先根据单元教学目标,分类编制单元标准测试题,再于该单元学完之后,进行单元测试,以检验各层次教学目标的达成情况。编制可测性强的单元测试卷,是第五步骤的主要工作。在编制单元测试卷时,特别应注意以下三点:

(1)题型多样。既有考察基础知识的填充、判断、选择题,又有考察各种能力的计算题、操作题和应用题。

(2)覆盖面广。单元测试题能充分反映本单元教学目标的各个方面,有利于对学生的学习情况进行全面性诊断。

(3)呈阶梯状。既有与“识记、理解”相对应的基本题,又有与“简单应用”相对应的综合题,还有少量难度较大的能考查创新能力的思考题。

通过测试,可以从识记、理解、应用的不同层次上准确反馈出学生的学习情况。使教师能据此采取相应措施,及时进行矫正和补救,有的放矢地对学生进行重新讲解和点拨,从而收到事半功倍的效果,使学生能扎实熟练地掌握并应用所学的知识。

参考文献

[1] 张景中,曹培生.从数学教育到教育数学[M].中国少年儿童出版社,2011.

第9篇

Abstract: With the increasing complexity of software engineering, software engineering quality requirements continue to improve. The teaching of the traditional software testing course can't meet the needs of the times. From the traditional software testing experimental teaching, aiming at the existing problems and the overall objectives of the experimental teaching requirements, this paper explores the significance of project driven software testing and experimental teaching reform, which with reasonable distribution of the curriculum system, the distribution of appropriate experimental content, can meet the requirements of personnel training program.

关键词:软件测试;项目驱动;实验教学;教学改革

Key words: software testing;project driven;experimental teaching;teaching reform

中图分类号:G642.0 文献标识码:A 文章编号:1006-4311(2017)03-0226-03

0 引言

软件测试在很早以前就是软件工程里的一个课程。但近几年来才被国内的软件行业及软件公司所重视。因而出现需要大量软件测试人员的需求。所以国内的很多高校因市场的需求,开设了相关的软件测试专业或方向。但很多学校的开设的软件测试的课程只停留在基本理论的学习,或者测试工具的介绍上,以至于毕业出来的学生只能满足最底层的测试工作。而较高要求的测试岗位很难招到人。所以培养“高素质、复合型”的软件测试人才,是学校的当务之急,软件测试的教学改革势在必行[1]。

1 传统测试课程教学存在的问题

教学课时少,课程结构单一。传统软件测试是以软件工程原理的一个章节来讲的。讲课的课时也就4个学分。老师授课只是对测试基本的概念及流程作讲解,内容偏重理论且抽象。学生理解和掌握难度比较大,在实际测试工作中无法入手。现如今对软件测试的工作越来越重视,对软件测试的工作要求越来越高。如此单一教学内容,让学生今后胜任软件测试的相关工作是不现实的。

重理论,轻实践。传统软件测试课程的教学一直以任课老师讲授以主,学生被动接受知识,在理论的教学过程中,授课老师重点讲解软件测试的基本概念、原理及方法。但软件测试的相关课程在实践方面要求有较强的动手的实践能力。如在讲解黑盒测试、白盒测试中的测试方法来设计测试用例时,实际使用过程中需要结合多种方法来保证测试用例的完整性,这需要引入实际的生产案例来练习。再如在讲解单元测试、集成测试时,在讲解单一类的测试、容器内的测试、数据库持久层的测试时,如果老师在授课时只是讲理论,没有引入实际的生产案例,学生很难体会到课程的挑战和乐趣,缺少主观主动性,学习效果较差。这样的教学质量难以保证,学生很难学以致用。

2 项目驱动教学的内涵

“项目教学法”最早见于美国教育家凯兹和加拿大教育家查德合著的《项目教学法》。“项目教学法”的理论认为:知识可以在一定的条件下自主建构获得;学习是知识、技能与行为、态度与价值观等方面的长进;教育是满足长进需要的有意识、有系统、有组织的持续交流活动。教育家陶行知先生说过:教、学、做应是一体化的,教、学、做是一件事,不是三件事[2]。

项目教学法由以下内容组成:有一定的教学内容,具有实际应用价值;能将理论知识和实际岗位技能结合起来;与企业实际生产或商业经营等活动有关系;学生可以独立制定计划并实施;学生可以运用所学知识克服、处理在项目工作中出现的困难和问题;有一定的难度,学生在完成过程中能掌握和运用新的知识和技能;要渗透情感、态度、价值观的培养;有明确而具体的成果展示,师生能共同评价项目完成情况和工作成果[3][4]。

3 项目驱动的软件测试实验教学的意义

以软件行业发展需要为依托,面向软件开发(敏捷开发)过程中对软件测试人才的迫切需求,以提高教学质量为核心,以教学改革为动力,以实现软件开发与测试的学生知识、能力与素质协同发展为原则,以培养学生实践能力为目标,结合学科优势,以主干课程建设为突破点,开展项目驱动软件测试实验教学改革与研究,构建和实践面向应用型本科软件测试人才的专业实验教学体系。具体的意义可归纳为以下四点:

①优化测试相关专业主干课程体系,打造以项目驱动软件测试实验教学的专业特色。测试相关主干课程体系优化与专业课程实验教学改革是项目的核心。专业主干课程体系的建设能直接反映专业课程建设的目的和培养目标,是提高人才素质和保障教育质量的核心环节,也是衡量教学水平和教学质量的重要标志[5]。因此,面向软件工程和软件实践背景,开展“项目驱动软件测试实验教学”,对于丰富和完善软件测试课程教学改革,培养适应软件测试行业中“高素质,高要求”的复合型、应用型管理人才,打造学科专业特色,形成学科专业竞争力,具有重要价值。

②以主干课程教学组织与团队建设为着手点。制定主干课程建设的方案和措施,通过课程示范作用,带动本专业相关其他课程的建设与改革。狠抓主干课程教材的选用与编写、教学大纲的制定、应用案例的编写、教学内容的精选、教学手段与教学方法的改革等环节,夯实了主干课程建设的基础,并为该专业今后教学改革奠定基础。

③以点带面,扩展软件工程专业实验教学体系。通过在主干课程中适当引入综合性实验、设计性实验、软件工程案例分析,可加强学生的实践技能、创新意识和团队精神的培养,提高学生的综合运用能力和竞争力。从长远来讲,这项成果会进一步提高我校该专业的人才综合素质, 进一步提高该学科专业综合竞争力。

④扩大毕业生就业率及提高就业档次。通过该项目的建设,希望能推动该学科专业课程体系的优化,改善广州大学该专业本科学生的知识结构,提高软件测试学生的综合素质和专业技能,扩大毕业生就业率及提高就业档次。

不管是站在专业学科建设的角度,还是站在学生培养的角度,从培养“高素质、复合型”的软件测试人才、解决学生就业的目标来看,教学改革研究均具有重要的意义,有必要开展系统、深入的研究。

4 项目驱动的软件测试实验教学改革方案

以培养“高素质、复合型”的软件测试人才为目标,以专业主干课程体系优化主干课程教学团队,强化主干课程配套的实践教学环节,构建了理论教学和实践教学相结合的、 “测试理论+测试方法+测试工程”三位一体的主干课程培养体系,并开展长期的跟踪实践,努力在应用型创新人才培养模式上形成自身的专业特色,完善“强基础、重能力、多样性、个性化”的人才培养方案。

4.1 软件测试的课程体系的建立

随着软件行业对软件测试重视,软件测试对从业人员的要求也越来越高。传统的教学内容已经不能满足就业人员的需要。需对软件测试的课程体系进行扩展、优化。如图1软件测试教改实践课程体系所示。

软件测试基础:本课程从理论和实践两个层面引导学生学习软件测试的基础知识,涵盖软件测试的思想、流程和方法,主要内容包括软件测试的基本概念和基本原理、白盒测试方法、黑盒测试方法以及面向对象软件测试等知识点。

高效单元测试:课程以最典型的单元测试框架JUnit为例讲述了单元测试的方法和最佳实践,介绍了在java软件开发中使用junit进行测试的原则、技巧与实践,深入阐述如何编写自动测试。课程讨论了实践中的测试技术,主要内容包括:用mock objects进行隔离测试、用ant和maven进行自动构建、Cactus进行容器内测试的方法、对java应用程序、数据库应用程序等进行单元测试,以及Parasoft Jtest的使用。

WEB项目应用测试:由浅入深、全面、细致地阐述了如何使用开源测试工具来完成Web自动化测试,便于学生轻松掌握Web自动化测试的原理、方法和实际操作。课程将教如何使用Selenium、WebDriver、Jmeter、Badboy搭建起一整套稳定、高效、低成本的自动化测试平台。结合应用实例展示web应用项目测试的过程。

软件测试质量与保证:软件测试质量与保证是面向软件测试方向一门专业必修课,在学习软件测试基础理论与技术的基础上,加强对软件质量的认识及质量保证的重视,主要从软件质量的概述、软件质量工程体系、软件质量度量、软件可靠性测试、软件质量标准、全面质量控制等多方面展开对软件质量保证的深入学习。

性能测试与优化管理:从测试项目实战需求出发,讲述了性能测试技术和软件性能测试工具应用的实战知识。引入项目案例,详细讲述性能测试方案实施、性能测试计划制定、性能测试用例设计、性能测试脚本开发、性能总结、性能优化管理及相关交付文档。

软件测试综合项目实训:本课程综合应用软件测试方向各门专业课程,以一个实际案例贯穿整个教学过程,使学生对软件测试的过程有深刻地理解,包括测试需求的获取、制定测试计划,设计测试用例,测试执行、测试缺陷、测试评估及报告,并在实训过程中加强对团队协作的体会及文档的协作能力。

移动应用程序测试:本课程将从实际应用角度出发,以智能终端和4G业务规划为基础,介绍手机测试的方法和实践技术,主要内容;手机设备软硬件的现状与趋势,手机软件测试用例设计技术与方法,手机软件体系结构与手机软件测试技术和常用测试工具。

4.2 项目驱动实验教学的实施方针

由于课程深度的不同,项目驱动实验教学的方针与过程也不同。其主干课程项目驱动实验教学的实施方针如下:

《软件测试基础》由于是基础课程,课程涉及的基础概念比较多,且为低年级的学生。所以实验教学的案例要以单独、经典的小应用实例为主,以巩固和强化理论知识为目的。

《高效单元测试》软件测试专业课。课程涉及代码级软件测试方法与技术。课程从应用程序的角度可分为三个方面的单元测试:表示层单元测试、运用层单元测试、数据层单元测试。从这三个方面再拆散成若干个小实验以便对应相应的理论知识。在实验案例选择的原则要以高年级完成的课程设计或毕业设计为主,其原因是这样的项目实例学生能更好的理解,上课的更有效果。

《WEB应用项目测试》软件测试专业课。课程主要讲解Web自动化测试的原理、方法和实际操作及测试工具的使用。在项目驱动实验教学实例的选取了一些比较完善并同学比较熟悉的系统,比如学院的信息管理系统或学院的邮件系统。学生对这些系统的业务比较了解。做自动化测试比较容易上手。

《软件测试综合项目实训》是一个以实际案例贯穿整个教学过程,以学生为主,教师为辅的综合项目实训课程。在实验教学的实例选取上要求要接近企业的工作要求。所以项目组在设计用例时,直接向相关校企合作单位,要来需求和被测项目,并设计成实验教学,以便学生在最接近现实的环境中作项目实训。

《移动应用程序测试》软件测试选修课。课程主要讲解移动测试的原理、方法和实际操作及测试工具的使用。在项目驱动实验教学实例的选取上,把学校组织参加比赛的移动应用项目拿来测试,这个项目影响较广,学生对业务比较了解也比较。

5 小结

如何正确处理系统性理论知识体系与学生实际能力培养之间的矛盾?其解决的基本途径是:重视实际能力培养,强化软件测试工程案例教学,重视课程配套的课内课外各种实践教学,强化学生人文素质培养。只有这样,才能解决学生专业知识面过窄、适应能力差、满足不了高要求的根本问题。如何搞好主干课程体系建设和主干课程师资队伍建设,其解决的基本途径是:以测试相关主干课程和教学团队建设着手点,建立完善的主干课程体系,发挥主干课程的带动效应,可达到以点带面效果,解决课程教学内容不先进、教学方法单一、教学手段落后、教师业务能力不强等问题。

参考文献:

[1]宰光军,任两品,刘燕.复合型软件测试人才培养模式的探索与创新[J].计算机光盘软件与应用,2012(20).

[2]张世泽,刘同先,丁升选,吕淑敏.浅议项目教学法在我国的发展、应用和建议[J].教育教学论坛,2014(50):168-169.

[3]郑春瑛,郭伟青.项目教学法在管理信息系统课程中的应用探讨[J].中国职业技术教育,2007(22).

第10篇

论文摘要:文章论述了软件开发生命周期中每个阶段添加的一系列关泣安全性的活动,提出将安奋浏试整合到软件开发生命周期中,分析了软件安全性浏试片祠试人员的要求,并以一个sql注入实例来具体说明安全性浏试在软。

信息网络安全事件发生比例的不断攀升、病毒利用软件漏洞猖狂地传播使得人们越发认识到信息安全的重要性。一般认为,传统的信息安全技术可以借助防火墙(包括软件和硬件防火墙)审核通过网络的报文、限定用户的访问权限等来防止非授权用户对重要数据的访问,但是这一观点是建立在软件安全基础上的。网络应用软件需要暴露在网络环境下,并且授权外部用户可以透过网络来访问此软件。通过网络,攻击者有机会接触到软件,如果软件本身存在漏洞,那么所有的防火墙就形同虚设。暴露于网络的应用软件往往成为被攻击的目标,是网络应用软件安全的重灾区。美国国家标准与技术研究院(nist)2002年的一项研究表明,美国花费在软件缺陷方面的费用达到595亿美元。公安部2008年全国信息网络安全状况与计算机病毒疫情调查分析报b说明,在发生的安全事件中,未修补或防范软件漏洞仍然是导致安全事件发生的最主要原因。

1安全测试的定义

安全测试是鉴别信息系统数据保护和功能维护的过程。安全测试需要涵盖的6个基本安全概念是:保密性、完整性、权限(身份验证)、授权(权限分配)、可提供性、不可抵赖性阴。133229.Com软件开发商都存在解决安全威胁方古的问题。对软件开发商来说,安全性是其核心要求,这是由市场力量所驱动,也是由保护关键基础结构及建立和保持计算的广泛信任的需要所决定的。所有软件开发商面对的一个主要挑战就是创建更加安全的软件,使其不需要频繁地通过修补程序进行更新。软件安全已经成为评判软件质量的一个重要标准,软件安全测试则成为保证软件产品能够符合这一标准的重要手段。软件的安全性测试主要是测试在正常和非正常情况下,软件能否对数据进行安全有效的操作。

2软件开发生命周期流程(参见图1)

对于软件行业来说,要满足当今提升安全性的需要,软件供应商必须转为采用一种更严格的、更加关注安全性的软件开发流程。这种流程旨在尽量减少设计、编码和文档编写过程中存在的漏洞,并在软件开发生命周期中尽可能早地检测到并消除这些漏洞。用于处理来自internet的输人、控制可能被攻击的关键系统或处理个人身份信息的企业和消费者软件最需要实施这种流程。在很多实际的软件开发项目中,安全测试已经成为sdl一个不可或缺的组成部分,并成为整个项目过程中的长期任务。黑盒一白盒测试方法往往执行在产品递交客户之前,但有的甚至在投人使用之后都未进行安全检测和风险评估;在一些安全性要求较高的项目中,虽然将安全风险评估纳人预算,但在实际操作中却对其并未作过多考虑。这样,所导致的直接后果是在开发工作几近完成的情况下进行问题分析处理所造成的成本将远远大于在软件开发阶段进行缺陷修改的成本。即便是从充分利用现有的有限资金和资源的角度来考虑,也有必要将安全测试囊括到sdl中。这样做虽然不能取代软件开发后期的渗透测试和脆弱性测试,却可以有效减少后者在施过程中的投人。

开发人员应该根据客户的功能需求来制定相应的安全规约,利用内建的明确的控制机制来降低安全风险。开发人员可以根据风险评估的结果来确定测试项目:软件能否可靠运行(safety)以及软件运行结果是否可靠(security)。

软件开发生命周期((sdl)中常用的测试方法有:单元测试、集成测试和验收测试。

2.1需求、设计阶段—安全性分析

在软件项目的设计过程中,人们往往只是关注系统的特性和功能,而没有充分考虑其他重要的非功能问题(例如性能、可用性、平台支持、安全,及要在稍后的软件开发生命周期中需要解决的安全性),导致了项目中许多不必要的波动和延迟。由于安全性分析影响了整个的设计和架构,因此应该在项目设计阶段充分地审查和了解它们。

安全性考虑包括一系列问题,例如访问控制和授权、敏感数据的适当处理、数据和存储器访问的适当使用,以及加密方法。一些安全性需求不是非功能的需求,如所实施的加密类型。另外,许多安全性需求是更直接地面向用例的,并且需要定义主要场景,以及定义备选路径和异常路径。在没有将功能的和非功能的需求适当地定义及并人软件中的情况下,编码错误和设计缺陷会表现出关键的信息和操作处于危险。我们应该像对待其他的需求那样处理安全性需求,并将安全性需求划分出优先级,设定范围,同时作为整体用例和功能需求的一部分进行管理。

2.2实施阶段—单元测试

受测试方式的影响,开发者对软件安全风险的评估不可能面面俱到。最典型的就是在代码设计阶段,开发者可以通过单元测试来检验代码行为,这些结果都是可以预知的,但是受到范围的局限,不能测试这些类或者模块集成后的行为。

实施单元测试可以从软件基本单位(单个类)的检测上保证输人的有效性;在可能出现恶意攻击的地方,也可以利用这一思想来组织针对单个类或者方法的单元测试,从而组织起软件内部的纵深防御策略,防止恶意行为对软件安全造成的损害。但是,这一方法将软件各组件进行强制孤立,因此对于因大量组件交互而引起的软件缺陷,利用此种方法无法检测。

单元层的安全测试比较适合于防止缓冲区溢出,格式化字符串以及数据缺失的审核。

2.3验证阶段—集成测试

在集成层,软件的整体安全属性变得可见和可测试,使得这一层的可测试属性数量相对单元层而言要多得多,但是对于跨站脚本和网络服务器提供的一些服务(例如安全套接层ssl和url过滤)的测试,存在一定的困难。我们可以将实际案例和风险分析的结果作为组织集成测试的指南。

集成测试要求测试人员通过安全测试培训,并且是有熟练技术的软件开发人员。

在这一层,我们可以开展诸如注人缺陷验证、旁路验证以及访问控制等方面的安全测试,来源于外部代码的安全审查结果也应该以集成测试的方式加以确认。

2.4阶段—验收测试

验收测试是软件产品交付客户之前的最后一个测试阶段,是在真实的测试环境中,利用基于恶意事件的安全检测模板,测试在典型的渗透活动中可被识别的安全缺陷。验收测试的这一特性(基于安全检测模板),使得我们可以借助于强大的自动化测试软件进行检测,并且可以用验收测试的结果来完善渗透测试报告内容,从而有助于开发人员理解软件的脆弱性以及针对软件脆弱性所采取的补救措施是否有效。

验收测试针对软件的外部api,因此不如单元测试和集成测试松散,并且只能测试当前已知且暴露的漏洞或者缺陷。非定制的商业软件重新设计的关键功能或者其他改变都会影响到软件的整体安全性,因此,如果改变会使得软件产生不可预知的缺陷,针对这些缺陷的测试就应该在单元层或者集成层开展,而不是在验收层。

在验收层,我们可以测试针对解释性程序(sql,xpath,ldap等)的注人式攻击、跨站脚本攻击、跨站请求伪造等。缓冲区溢出及格式化字符串等软件缺陷也可以在验收测试层得到检测。

3安全测试队伍

软件测试一度被认为是编程能力偏低的员工的工作,直到今天,仍然有许多公司把优秀的人才安排在编码工作上,也有更多公司让优秀的人才进行设计,仅有很少公司让优秀的人才进行测试工作。实际的软件工程实践证明,让对软件思想有深刻理解的工程师进行软件测试,可以大幅度地提高软件质量软件供应商还必须认识到组织测试人员进行“安全进修”对安全测试的成功实施至关重要。在这些情况下,软件供应商必须负责对其工程人员进行适当教育。根据组织的规模和可用的资源,拥有大批工程人员的组织可建立一个内部计划对其工程师进行在职安全培训,而小型组织则可能需要依赖外部培训。

测试人员要像攻击者那样带有“恶意的”想法去思考,而且在测试软件时还要扮演攻击者,攻击自己的系统,以此来帮助发现软件的安全漏洞。安全测试并不会总是直接导致安全溢出或者暴露可利用的漏洞,从而引出安全缺陷。要安全测试尽可能地发挥作用,测试人员需具备较强的分析能力,而这更多的是依靠熟练的开发技术和开发经验。

4漏洞举例:一个sql的注入式漏洞

有几种情形使得sql注人攻击成为可能。最常见的原因是,使用拼接形成的sql语句去操作数据库。譬如,传入用户输人的管理员用户名和密码,把这2个参数拼接形成sql语句,通过执行该sql语句,以便验证用户输人的管理员用户名和密码的正确性。具体过程如下:

一般情况下,用户传人正常的用户名和密码进行验证,如传人“myname”和“mypassword”进行验证,得到的sql语句将是:

这个sql语句很正常。但是,这只是开发人员预期的做法:通过管理员用户名和密码来验证账户信息。但因为参数值没有被正确地加码,黑客可以很容易地修改查询字符串的值,以改变sql语句的逻辑。譬如,分别传人“myname’ori=1--”,"mypassword",得到的sql语句将是:

在用户名“myname’ori=i--”中,第一个“”’结束了原有字符串中第一个单撇号的配对,"or”后面的“i=i”会导致不管前面的验证结果如何,都会返回真true值,而随后的“一”将把其后的sql语句注释掉。现在问题出现了,不管使用什么用户名和密码,都能验证通过。在存在漏洞的数据显示页面,如果注人join语句,就能获取数据库里的所有数据,显示在页面上,如获取用户名、密码等;而注入up-date/insert/delete语句将改变数据,如添加新的管理员账号等。这样,数据库将不再安全。

sql注人安全漏洞的形成,根本在于sql语句的拼接,只要放弃sql语句拼接,适用规范的加码访问方式,问题自然迎刃而解。以下便是修改后的安全验证方法:

第11篇

[关键词]《国际金融学》;教学模式 ;教学

[DOI]10.13939/ki.zgsc.2015.44.173

随着信息技术的飞速发展,互联网给我们的教育带来了极大的便利,使得知识存储、传播的方式发生了质的改变,时代的变革引发了高校教师对于教学模式的新一轮思考,本文将介绍西北民族大学经济学院在《国际金融学》课程的改革实践过程以及改革带来的启示。

1 教学现状

《国际金融学》是西北民族大学经济学院学生的专业必修课,该课程以宏观的视角洞悉国际金融市场的种种现象与原理。长期以来,《国际金融学》的讲授采用的是传统教学法,即一种“自上而下”的教学模式,这种模式并没有充分调动起学生学习的自主性,即学生并没有积极参与到课堂教学中来,此外,学生预习、复习知识的意识淡薄,不能主动借助互联网等工具检索相关知识,大部分学生仍然抱着侥幸心理,以为临考前突击学习或者背诵PPT中的内容便可大功告成,显然,这很难适应计算机组卷的期末考试形式。有鉴于此,在2014―2015学年第二学期的教学中,《国际金融学》实施了教学模式和考核方式的改革,下文将具体阐述改革的具体实施过程。

2 改革措施

2.1 弱化单纯讲授,打造高效课堂

根据每节课的特点,借助教案合理安排课堂时间,完善课堂组织方式,抓重点,鼓励学生融入到课堂中来。每堂课总共2学时,每学时45分钟,如何将课堂合理地分为导入、提问、答疑、习题精讲、讨论几个环节,就得益于课堂教案的设计。教案是对教学组织方式的安排,教师须明确课堂的重心,进而有计划地编写教案,将时间放在重点环节,使得钢用在刀刃上。比如在《国际收支平衡表分析》一节中,可以在一学时中安排25分钟左右的时间进行习题精讲,将课堂的重点放在学生的应用操作能力,通过对具体例子的点拨和启发,鼓励学生能运用所学公式和原理对实际情况进行客观分析;在《外汇与汇率》一节,可以酌情将课堂的重心放在提问环节,可就爬行钉住制、汇率目标区制、货币局制这几种中间汇率制的概念、异同、联系等进行发问,在这里需要指出的是,本课堂采取的提问绝非单纯地背书,而是在已有的知识基础上引发新一轮的思考,促进学生培养构建知识体系和总结归纳的能力。

2.2 拓宽知识来源,鼓励学生思考

教学不应拘泥于一本教材,在借鉴多本国内经典教材的基础上,《国际金融学》教学团队编写的讲义博采众长,这有利于学生从多角度思考问题。相比学生使用单一教材进行学习,该讲义的优势在于:①讲义更具有针对性,一节课的内容在讲义中分为名词解释、本节概要和重点问题解答三个部分,使学生能从各个角度完整、系统地学习本节课的内容;②讲义的编织带有鲜明的逻辑性,能够有效地引导学生入门。名词解释部分作为本节课先导性知识,本节概要的内容很好地连接前后两节课的内容,具有承上启下的作用,而重点问题解析直击本节课重难点;③为不同层次、特点的学生定制个性化学习方案。将一种名词解释改进了书本中晦涩的书面描述,通过互联网等渠道引入例子,重点问题解答采用问题―解答的形式呈现,并在解答中采用文字说明、图表分析、箭头图、口诀、案例分析等多元方式进行多角度深入分析。学生可各取所需,在学习资源充分的情况下选择自己喜好的方式进行学习。

2.3 添加预习题目,调动学习自主性

习题作课前预习之用,旨在督促学生自主学习,在习题题目的编排上,教师注重考察学生的知识理解、迁移及检索能力。如填空题目可以设置“2013年7月28日美元兑换人民币的汇率是()”或“20世纪90年代的亚洲金融危机是从()贬值引发的”,简答题中设置“金银复本位制下有‘劣币驱逐良币’,今有‘良币驱逐劣币’的货币替代一说,试析这两种说法是否冲突”等题目,鼓励学生使用互联网来检索信息,获取知识。

2.4 加入课堂讨论环节,培养学生学习迁移能力及同伴合作能力

教师按照以往综合成绩排名,分为四个层次,并从每一层次随机抽取若干学生进行分组,每组大约6~8人,在一学期的教学中,教师按分组顺序组织讨论。《国际金融学》课程中的讨论环节为必要环节,具有以下几个特点:

(1)学生组队进行“有准备”的讨论,力求做到“知识+能力”的最佳状态。教师将讨论题目附在讲义上,如“蒙代尔-弗莱明模型之政策有效性分析”一节中,讨论题可设置为“请结合所学试分析克鲁格曼的‘三元悖论’”,学生在自学过讲义后,完成预习题目的基础之上,可进行分工,做有准备的讨论;

(2)讨论时长控制在25分钟左右,其中搭配PPT演示、互动等环节,注重同组成员的同伴协作能力。在讨论结束后,教师以及听课学生可就与讨论相关的问题进行提问,随后教师就讨论所涉及的知识作一总结归纳,并对讨论组的表现进行点评并给出分数。

2.5 新增两次单元测试,完善课程考核体系

本学期开创性地采用10%(平时成绩)、50%(两次单元测试平均分)、40%(期末考试成绩),用分阶段的两次单元测试替代期中考查,定期追踪成绩,一方面可以完善考核体系,另一方面使得学生更有信心的面对最后的期末考试。一般来说,《国际金融学》的考核比例为20%(平时成绩)、20%(期中考查)、60%(期末考试成绩),实际上,该课程的期中考查以往都采用开卷的方式进行考查,故期中成绩并不能准确反映学生的真实水平。此外,该课程期末考试已知采用计算机组卷,具有一定的难度与区分度,如一名学生期中成绩为92分,期末为62分,这样悬殊巨大,故很难形成学生学习成果的测评体系。在改革中,两次单元测试的加入在一定程度上缓解了这个问题,单元测试为计算机组卷,题型、题目来源与期末考试一致。一学期采用两次单元测试使得学生提前适应了计算机组卷的特点与考核方式,可以更有准备地应对最后期末考试的到来。

3 改革效果

3.1 课堂反应活跃,有力激发学生创新性思维

相比于传统课堂模式,学生思维被打开,课堂不再死气沉沉,学生可以自由地提出困惑,并且教师鼓励其他同学为其解答。教师作为课堂中的引导者,让全班同学都积极参与到主动学习的过程中,这个特点在讨论环节表现得尤为明显,如在讨论“国际收支平衡与均衡的区别与联系”中,该讨论小组并没有使用单调的概念解释,而是用“一杆秤”的图示来描述国际收支平衡的意义,即借贷平衡,表现为国际收支平衡表账面差额为零,同时,用“相互制约并促进”的图示来形容国际收支均衡,它是国内均衡与国际收支平衡相互作用后形成的均衡状态。笔者认为,“同伴互教”的模式更能促进知识的记忆与理解,而这点在这次的教学改革尝试中初见成效。

3.2 作业成绩构建出学生学习效果反馈体系

根据对习题成绩的观察,大部分学生成绩都处于良好态势,这可以说明学生在适应教学改革的同时,不断调整自身状态并慢慢养成学习自觉性。教师亲自批阅学生的预习作业,并针对笔记注释、答题逻辑等几个指标给出成绩,并记录在Excel表格,期末统一算出作业平均分,作为平时成绩考核的一部分。Excel数据作为历史记录,一定程度上反映了该学生的学习态度和“自发性学习”的主动程度。笔者观察到,大部分学生随着课程的跟进,也在慢慢地调整学习状态与习惯,开始适应自发学习的模式,作业成绩也呈现出上升趋势,形成了一套全面客观有参考价值的教学反馈体系。

3.3 单元测试成绩促进学生适应计算机组题

在所教授班级中,共有学生114人,笔者选取有效样本110个,并对这110位同学的两次单元测试成绩计算平均分,继而与其期末卷面成绩进行对比分析。笔者运用Excel进行相关系数的计算,最后得到,单元测试成绩与期末卷面成绩的相关系数为0.7213,一般来说,为中度正相关。

由此可以看出,学生的单元测试成绩与期末卷面成绩之间存在正相关关系。这说明在两次单元测试的基础之上,学生通过总结、查漏补缺等方法,可以在期末考试中得到更为理想的成绩。

4 启 示

第12篇

作者:韩冰 单位:东北石油大学 大庆油田有限责任公司

已开发油气井及区块效益评价模型的软件系统工程设计1.系统设计的总体原则。为实现软件系统研究的目的,系统设计总体原则为:(1)科学优选效益产量评价方法,以现金的方法,保证评价结果的准确性和科学性;(2)正确分析效益产量评价工作程序、确保系统的全面性、实用性和灵活性,提高开发和管理人员的工作效率,并便于推广应用;(3)充分发挥现代科技技术,确保系统在应用技术上具有超前性,以功能齐全、用户使用满意为目标。软件系统要充分利用企业现有各种信息平台,实现企业资源的最佳利用,为改善企业经营管理,提高经济效益和企业的综合竞争力提供科学的决策信息库。2.系统设计过程(1)系统启动。本软件系统项目比较复杂,需要大量的时间、精力和经济投入。要解决的问题经常表述含糊,意味着初始的方案可能不成熟。因此,系统项目需要仔细的规划。系统启动阶段确立解决问题所需的项目范围、目标、进度和预算,或者项目带来的机会。项目范围定义了项目涉及的业务领域,以及要实现的目标。

本软件系统的项目范围是:油田开发、技术措施、生产管理、成本控制等。本软件系统的项目目标是:为使油气田效益产量评价分析工作简便易行,同时便于各个层次员工随时了解单井、区块、行政管理单元的效益状况并采取相应的措施提高油田开发的经济效益。为开发技术人员、生产管理人员、经营管理人员提供一套效益产量评价系统,以提高油藏工程师分析研究解决问题的能力,并使领导能根据市场变化情况,及时调整生产经营策略,为领导的正确决策提供科学依据。本软件系统的进度:(略)。本软件系统的预算:(略)。系统分析。系统分析的目的是给项目团队提供对触发项目的问题和需求更全面的理解。该阶段要求同系统用户一起工作以便清楚地定义购买或开发的新系统的业务需求和期望。在系统分析阶段结束后,通常可能揭示出需要修改业务范围或项目目标、需要修改启动阶段提出的开发信息系统所具备的功能。本项目需要从环境配置要求、数据库设计、系统配置、用户管理以及系统与用户维护管理等方面进行分析。在分析之前,根据涉及到的相关方我们采用了数据调查、文献分析、德尔菲法以及头脑风暴等方法,从用户角度、系统所有人角度、软件设计人员角度、软件编制人员角度、结构设计角度、管理层角度、财务角度等分别进行分析。比如环境配置方面,我们进行了一线操作人员、技术主管、上层领导等的调查问卷,之后进行德尔菲法专家分析,确定了具体的环境配置方面的设计。

系统设计。系统设计初期需要探索不同的技术方案,选定并批准某个技术方案,并就实现该方案绘制出所需要的技术蓝图和规格说明。其他设计简要叙述如下:首先,数据库设计:系统采用Ora-cle数据库,同时满足用户可创建系统运行所需要的数据库;C/S设计模式,实现了数据的集中统一管理。其次,系统配置:对软件环境、硬件环境、网络环境的均可以在授权下进行配置。再次,用户管理:在软件系统启动前,由系统管理员根据各岗位的分工及业务情况注册相应的用户,并赋予各用户应有录入、修改、删除、查询、分析、打印的权限,设置用户口令,保护企业信心的安全,同时也可以进行口令的修改。最后,系统与用户维护管理:该项设计用于管理各类基本参数的录入,包括公用参数、采油矿(作业区)代码、油品、基础数据、措施内容和负效原因、自定义效益区间、区块参数、提取开发数据字段、提取财务数据字段(编码)、提供资产数据字段等十类参数。(4)系统实现。系统实现阶段构造出新的信息系统,并投入使用。新的硬件和软件都在该阶段安装和测试,购买的数据库和应用软件也在这个阶段安装和配置,定制软件和数据库则使用系统设计阶段开发的技术蓝图和规格说明进行构造。在系统实现时,测试非常重要,独立测试、系统测试等都需要进行。本软件采用单元测试(白盒测试)、集成测试、确认测试和系统测试。在单元测试时主要采用逻辑覆盖等方法,集成测试采用渐增式等方法,确认测试采用配置复查等方法,系统测试采用采用TestDirector等测试工具。(图略)是本系统的软件测试步骤。首先对每个单元进行单元测试,测试失败需要进行完善和修正;测试成功后的软件单元进行逐渐增加式的集成测试,接着进行组装后的软件进行功能确认,之后进行系统测试。在系统实现后还要进行系统支持和持续改进。

本文根据投入产出方法设计的已开发油气井及区块效益评价模型,借助系统设计一般原理和软件工程相关理论对模型的软件系统进行了设计分析。这些设计分析将有利于软件的科学实现。