测试一个面向对象程序的系统组成部分的方法

文档序号:6413023阅读:378来源:国知局
专利名称:测试一个面向对象程序的系统组成部分的方法
技术领域
本发明涉及一个测试一个面向对象程序的系统组成部分的方法。在(W.Archert“面向对象分析-一种重要方法的概括”,电子学,3/96,80-86页)中阐明了比较面向对象方法的标准,特别是面向对象程序不同表达能力的比较方法。此外,描述了面向对象程序设计的优点,特别是调整和简洁。
在改进一个软件系统时,在测试全部系统之前孤立地测试单个的系统组成部分是合理的。系统组成部分是例如单个的程序模块或者-在一个面向对象的改进中-分类。在分类或者模块中经常出现这个问题,即一个测试单元(分类或者模块)非常依赖于另一个测试单元。如此的依赖关系例如由函数的相互调用产生(或者在分类应用中方法)。可是这将引起,为了测试一个测试单元A必须存在所有另外的由A使用的测试单元U(直接或者间接,因为例如U还调用另外的单元)。
以本发明为基础的任务在于,简化并且加快测试单元的测试。
这个任务通过按照权利要求1的特征解决。
为了解决这个问题,对于由来自另外的测试单元U的测试单元A使用的函数和/或方法通过空的函数中产生等效的函数。如此的等效函数也称为“残桩”(Stub)。如果一个函数/方法已经实现,则对于另外的函数/方法的测试用一个残桩代替这个函数/方法可能是合理的。因此,测试范围的综合性被认为是小的。
本发明描述了在分类和/或模块测试时使用的完整函数(残桩)的一个最小组的自动发生。因此认为,在软件系统中说明的所有函数/方法,其自动编码或者可能还不存在,或者可能还不是从综合性的基础中调用的,自动作为等效函数(残桩)执行。对此注意,将产生也用于等效函数的等效于最初的函数/方法的函数/方法的返回参数和移交参数。对于等效函数的执行,在函数/方法中局部具体说明测试范围分类。这个测试范围分类对象封装一个状态自动转换,其通过用残桩代替的函数的参数(不仅返回参数而且移交参数)定义。如果在残桩的内部继续实施一个逻辑操作,则这个操作可以人工补充。
如果软件系统现在开始测试过程,在残桩中根据测试范围分类的预先调整的模式分支。这个模式例如可能是,在一个命令提示上根据一个在测试范围分类中一体的解释程序的指令组允许相互作用的命令,或者在等效函数中阐明一个命令数据块,该命令数据块例如根据命令数据块的命令引起递交。在相互作用或者阐明命令数据块后从等效函数中转移回到调用的模块中。当一调用一个另外的等效函数,这个等效函数就提供具有自身参数的相同的函数性使用。因此,对于所有的等效函数特殊的测试可以以这个等效函数实施一个测试范围分类。作为自身状态自动转换的测试范围分类对象封装在每个等效函数中使灵活应用成为可能。用参数(不仅移交参数而且返回参数)预置具体说明等效函数的测试范围分类。因此,在测试范围分类中可以定义类型特殊的操作。
按照本发明方法的一个有益的改进在于测试范围分类的互相作用的应用。这个相互作用表明具有在测试范围分类中定义的指令组的一个一体化调试程序的功能范围。因此,象在调试程序中一样,可以根据在当前的函数中显而易见的参数实施相互作用的命令。
按照本发明方法的改进在从属权利要求中给出。
根据在图中描述的实施例进一步说明的本发明。
图示

图1一个运行图,在该运行中描述单个的方法步骤,图2包含一个例如显现按照本发明的方法的略图。
在图1中描述了按照本发明方法的单个的方法步骤。在第一步骤1a中确定等效函数的集合。如此例如按测试过程的种类,或者对于一个面向对象程序的所有的还没实现的方法设计自动的等效函数,或者可以如此解决方法调用的重叠,即在调用体系中一个任意选择的方法作为等效函数实现。因此,获得一个等效函数的体系,其只在通过等效函数说明的至少所有还没实现的功能范围内是完整的。等效函数的自动产生不仅考虑返回参数,而且考虑必须替换的函数的调用参数(参见步骤1b)。为了获得尽可能高的灵活性和可重复使用性,可以定义一个普及的测试范围分类,其对于每个等效函数实现一个状态自动转换,该状态自动转换一方面依赖于在测试范围分类中一体化的解释程序的指令组,另一方面通过参数体系确定该状态自动转换,或者如果这个函数是分类的方法,则通过属于方法的分类确定该状态自动转换。对于所有的等效函数测试范围分类支配相同的指令组,允许根据等效函数特殊参数(不仅移交参数而且返回参数)存取。此外,可以如下补充等效函数的函数性,在定义所有的等效函数特殊的参数后测试范围分类不仅可以交互运行,而且可以独立处理一个命令数据块。这相当于状态自动转换的预置(步骤1c)。在这种情况下相互作用意味着,在测试过程期间,当一调用当时的等效函数时,使用者就在其显示屏上看到一个命令提示,在显示屏上根据在测试过程中预先确定的指令组使用者可以作出一个申请。通过多个如此的由测试范围分类的状态自动转换允许的指令结合成为一个命令数据块的方法,该数据块可以代替相互作用实现,可以使这个过程自动化。此外,这是可能的,即在一个等效函数中命令数据块的实现和以与使用者一起等待相互作用的模式的转换可以排列成任意的顺序。因此命令数据块可以不在等效函数中运行,或者用作相互作用之间的补充(步骤1d)。
这个方法的特征在于,不是对于每个测试过程都需要一个重复的编译程序和链接。此外,通过应用上面已说明的命令数据块的方法,可以使测试情况简单地自动化。
按照本发明的方法的有利的改进是在任意的模块中测试范围分类的应用。因为已知了测试范围登记的所有必要的参数,并且因为可以在程序代码中特别确定了相互作用的位置,所以在程序代码中的该位置上,在这个位置允许相互作用,通过当前有效变量的显示一体化调试程序是可能的。可以用简单的方式实施例如包含复杂数据格式的类型的操作。在测试范围分类中可以独特实现相互作用允许的指令。通过封装用于实现确定指令的函数性,在测试范围分类中这是可能的,即对于所有的等效函数通过测试范围分类的简单说明在各个等效函数中提供测试范围分类的函数性。
图2指出了按照本发明的方法的一个示范的显现。一个面向对象的仿真可以例如在程序设计语言C++下实现。在相应的分类-起始文件KLH中适当地说明系统软件的分类。在附属的程序文件PrgF(例如结尾为.cpp或者.c的文件)中执行每个分类的方法。如果这时在分类-起始文件KLH内部说明确定的方法,可是在程序文件PrgF的内部缺少附属的具体执行,则转换器发出一个出错信息,其表明,可能没有发现已说明的方法的执行(例如出错信息“未澄清外部情况”)。从这个关于方法的信息中,该方法的执行或者应当还不存在或者应当没有使用,一个测试范围发生器TRG通过一个等效函数发生器EFG产生响应的等效函数EF。为此,测试范围发生器TRG寻找合适的说明,并且从中确定返回参数和调用参数。相同的调用参数和返回参数获得等效函数EF。为了在等效函数EF的内部允许特殊的测试过程,在该等效函数中预置测试范围分类。测试范围分类支配自身的方法,该方法允许,通知预置的测试范围分类的等效函数EF移交参数和返回参数,此外,在等效函数EF的内部可以协调一个模式,其在调用这个等效函数EF时,或者在一个命令提示上允许相互作用或者允许命令正本的实现。如果该形式示范地选择相互作用,则使用者可以在一个命令提示上递交不同的指令,在测试范围分类的内部协调这些指令。这相当于一种解释程序,其表示一个通过测试范围分类定义的支配一个确定的指令组的状态自动转换,该状态自动转换具有补偿函数的参数。
根据特殊的需求在等效函数EF中模仿存在于补偿函数内部的函数性是有益的。在一个自身的测试范围分类中的解释程序的封装例如在语言C++中有这样的优点,对于这个测试范围分类的所有主管程序,在每个等效函数EF中提供了在测试范围分类中协调的状态自动转换的特殊定义的指令组使用。为了在测试范围分类中合理使用状态自动转换,唯一必要的措施是定义状态自动转换的等效函数附属的参数。这是由等效函数发生器EFG自动实施。获得一个普遍的并且对于不同的测试情况简单的必须使用的工具,其或者可以手工(在相互作用的模式下)或者可以自动(通过命令数据块)或者可以混合使用。
权利要求
1.测试一个面向对象程序的系统组成部分的方法,其中,系统成分具有面向对象程序的分类和/或模块,a)其中,通过用一个等效函数代替被调用的方法或函数来解决模块和/或函数的依赖关系,b)其中,通过一个状态自动转换来描述等效函数,对此,状态自动转换封装在一个自身的分类中,并且交互地允许命令的输入,c)其中,自动产生作为等效函数的要代替的方法/函数,对此,各自产生的等效函数同被代替的方法/函数一样具有相同的调用参数和相同的返回值。
2.按照权利要求1的方法,其中,通过在等效函数的内部递交相互作用的命令,自动产生的函数作为一体化调试程序来使用。
全文摘要
在该方法中,通过如此解决方法的重叠的依赖关系,即用一个残桩(=等效函数)代替一个任意的方法,来测试一个面向对象程序的系统成分。对此,找到不包括自动编码的方法,并且该方法作为残桩实现。一个测试范围发生器产生残桩,其同必须被代替的函数一样支配同样的调用参数和返回参数。此外,等效函数隐含状态自动转换。其另一方面作为分类对象封装,并且在残桩内具体说明。如果在测试期间调用残桩,则使用者可以使用通过被封装的状态自动转换确定的相互作用命令,或者多个如此的命令结合成为一个命令数据块,这可以自动实现。
文档编号G06F11/36GK1227643SQ97197018
公开日1999年9月1日 申请日期1997年11月7日 优先权日1996年12月4日
发明者W·格伦兹 申请人:西门子公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1