专利名称:来自局部设计模型的软件测试案例生成的利记博彩app
技术领域:
本公开涉及关于局部设计模型的用于软件代码的测试的测试案例的自动生成。
背景技术:
存在有用于测试实现了开发中的软件的套件的编程代码的多种自动化方式。基于模型的测试(MBT)是ー种特别有用的“黑匣子”软件测试方式。MBT涉及使用高层次状态机或其他实施代码的合适模型的测试案例的自动生成。输入信号被施加至模型的边界,且模型的响应被紧密地观察。等同的代码被测试以确定该代码是否提供和模型相同的输入/输出序列。输入域的相对宽的覆盖可通过使用传统的MBT技术实现,而不需要大量的测试案例的手动生成。对于传统的MBT方法,模型的输入/输出(I/O)边界必须匹配正在测试的软件代码的I/O边界。但是,在实践中,高层次模型趋向于为局部的或甚至不存在,因此使得传统的MBT方法不够最优。该模型边界不一致的原因可以是不同的。例如,软件可随时间经过而累积地开发出,其中一些编程团队创建软件代码的不同部分。在另ー些情形中,软件编程员可能直接开始写代码,而没有首先对软件建摸。因此,仅总体代码中的一部分可能具有相应的模型。在汽车エ业和具有大型、分散的使用不同软件的主机的制造设备的其他行业中,软件的不同部分可能由不同的供应商提供。全部这些原因可能結合,以使得传统的MBT方法除了最理论化的应用之外的全部应用受挫。
发明内容
因此,本文公开了ー种方法,用于关于局部设计模型的用于软件实施代码的测试的测试案例的自动生成。实施软件的边界上的输入-输出(I/o)信号可不同于局部模型边界处的I/o信号。传统的MBT技术不能在这样的情形中有效地使用。信息被如本文所述地从软件和局部模型(ー个或多个)两者中获取,用于产生需要的测试案例。产生的测试案例确保了基于局部模型的结构的一定质量的覆盖指标。以这样的方式,可使用此处公开的方法和系统来确定产生的测试套件的质量。特别地,本文中公开ー种方法,用于关于具有不同于SUT代码的边界的边界的局部设计模型(PDM)的测试中软件(SUT代码)的测试。该方法包括记录ー组输入信息,包括SUT代码、PDM和限定了需要数目的测试案例的覆盖标准。该方法还包括经由主机识别SUT中对应于PDM的I/O边界信号的ー组变量。继而使用SUT、PDM和该组变量提取满足覆盖标准的一组测试案例。可使用主机来使用提取的该组测试案例来测试SUT代码。提取ー组测试案例可包括从SUT代码产生初始的ー组测试案例,且继而測量初始的该组测试案例在PDM上的覆盖。该方法还可包括在PDM水平上产生附加的一组测试案例,且继而使用正向/反向传播或基于启发的导向技术将具有相应的约束函数的附加的该组测试案例映射至SUT代码的边界。可随后使用主机来求解相应的约束函数,以产生测试案例的其他部分,且获得关于SUT的完整或匹配测试案例。
用于关于PDM测试SUT的系统包括主机和存储器。该主机接收和记录输入组,包括SUT、PDM和限定了需要数目的测试案例的覆盖标准。存储器记录用于测试SUT的处理指令。主机配置为执行该处理指令以识别对应于PDM的I/O边界信号的SUT中的变量,并提取测试案例。该测试案例使用SUT、PDM或该组变量满足覆盖标准。当结合附图时,上述特征和优势从下文中用于实施本发明的最佳模式的详尽描述中是轻易地明显的。
图1是用于产生用于关于局部设计模型或模块的软件实施代码的测试的测试案例的系统的不意图。图2是软件实施代码和局部模型或模块的输入/输出(I/o)信号和边界的示意性流程图。图3是描述本方法的实施例的流程图。
具体实施例方式參见附图,其中相同的附图标记在若干幅附图中指示相同或相似的构件,系统10在图1中示意地示出。本系统10配置为自动产生用于软件实施代码(即测试中的软件(SUT)15)关于下文中所述的局部设计模型(PDM)的测试的测试案例。在被完全测试和验证后,SUT 15可被最终加载到相应的装置20的存储器中。该装置20可为任意机械、电、或电动机械系统,例如车辆用刹车系统或将运行软件作为其操作的一部分的任意其他的车辆/非车辆系统或装置。装置20因此包括适于执行该处理指令、或至少和提供该功能的分立装置通信的处理器30。可包括线路、通信端ロ、端子、和/或其他合适的数据采集点的数据端ロ 25存在于装置20中,且配置为按需要输出一组输出信号23。装置20可(作为其普通功能的常规部分)接收ー组输入信号13,且响应于其产生该组输出信号23,或以随着装置20的内部操作变动的方式产生该组输出信号23。例如,根据上述的刹车系统示例,输入信号13可为油门水平和制动水平。前者可通过测量加速器踏板(未示出)的应用水平检测到,而后者可通过测量制动器踏板(也未示出)的应用水平而获知。此处的输出信号23可通过非限制性示例的方式代表车俩的可变速度。自然,装置20的其他实施例可使用不同的输入和输出信号,其中输入/输出信号的数量随装置20的设计和用途而变动。系统10可包括配置为执行实现本方法100的处理指令的服务器或主机12,其示例性实施例參照图3在下文中示出。在执行该处理指令时,系统10作为整体自动产生用于测试用于SUT15的软件实施代码的测试案例,该SUT在测试后可安装在装置20中,如虚线所
/Jn o系统10经由主机12产生关于PDM16的测试案例。传统的基于模型的测试(MBT)方法不能够充分地处理这样的局部设计模型,这部分地是由于上述的边界不一致。在ー些实施例中,主机12可布置为和装置20通信,如双箭头11所示。这样的实施例可允许装置20的周期性在线测试,以确保加载的软件的正确运行。
图1中的系统10可具有一个或多个处理器22和存储器24。存储器24可实现为非易失性或易失性介质。非易失性介质可示例性地包括光盘或磁盘以及其他永久存储器。示例性易失性介质可包括动态随机存取存储器(DRAM),其可构成主存储器。存储器的实施例的其他示例包括软盘、柔性盘、或硬盘、磁带或其他磁性介质、CD-ROM、DVD、和/或任意其他光学介质,以及诸如闪存的其他可能的存储装置。存储器24可包括任何參与提供数据或计算机可读指令的非瞬时性/有形介质。主机12可包括执行本方法100所需要的任何其它需要的硬件和软件构件。例如,主机12可包括高速时钟、摸/数(A/D)电路、数/摸(D/A)电路、和任何需要的输入/输出(I/O)电路、I/O装置、和通信接ロ,以及信号调节和缓冲电子装置。图1中示出的主机12配置为接收输入组14并将该输入组14记录在存储器24中。输入组14可至少包括SUT 15,PDM 16和测试覆盖标准17。实施本方法100的测试产生エ具50提供如下文中參照图2和图3所述的测试生成能力。即,通过处理输入组14,主机12可使用工具50来提取输出组18,其中输出组18形成用于测试SUT 15的特定的一组测试案例或目标。參见图2,基本逻辑流程图描述了随局部模型(高层次模型)(例如图1中的PDM16)产生的边界条件。此处,没有建立图1的SUT 15关于高层次模型的一致性的有效的方式,也没有确定各个测试场景或目标关于该高层次模型的测试覆盖程度的有效的方式。即,图1的PDM 16对应于的SUT 15的部分可表示为具有边界43的局部模型代码160。图1中示出的SUT 15的SUT代码150具有不同的边界33。引导到边界33的输入信号32的值产生来自SUT代码150的输出信号34中的值。由于相应的SUT代码150和局部模型代码160的边界33和43之间的差异,至局部模型代码160的输入信号42的值可产生来自局部模型代码160的输出信号44中不同的值,该值不同于SUT代码150的输入和输出信号32和34的各个值。图1中的本系统10因此从SUT代码150产生初始的ー组测试案例,并登录对于初始的该组测试案例的局部模型代码160上的边界值。由主机12登录的值被在PDM 16中使用,以测量由初始的该组测试案例获得的覆盖。如上所述,系统10识别SUT代码150中的局部模型代码160边界,并实现边界43的该登录能力。图1中的主机12致カ于关于图1中示出的具体覆盖标准17的完全测试覆盖。因此,为了实现完全测试覆盖,图1中的主机12也在PDM 16的层次上产生附加的测试案例,并将这些测试案例映射回SUT代码150的边界33,例如使用正向/反向传播技术和/或启发导向技术。来自PDM 16的测试案例可为边界43的值。边界43的值可继而被正向/反向传播至SUT代码150的边界33。传播或导向技术的使用在此处被认为是对局部模型问题的解决方案。但是,该技术的实际方法将由本领域技术人员方便地理解。这些技术的详尽的解释因此出于简明的目的在此处被省略。參见图3,本方法100的示例性实施例以步骤102开始。如上所述,用于执行下列步骤中的每ー个的任意基础处理指令可编程到图1中的主机12中,并在软件测试和验证过程期间自动地执行。在步骤102处,图1中的主机12接收输入组14。输入组14至少包括实现了 SUT15、PDM 16和覆盖标准17的实施软件或代码。主机12继而将输入组14记录在存储器24中。PDM 16可使用各种商用建模方案,诸如IBM 的Rationa膽Rhapsody 事先产生。方法100随后可继续至步骤104。在步骤104处,主机12继而标识对应于SUT代码150中的PDM 16的局部模型代码160和局部模型代码160的I/O边界信号。步骤104提供了 SUT15的“白匣子”类型的视图,该术语在本领域中已知,且因此包括访问SUT15的所有内部,例如在SUT 15中使用的控制变量以及其相应的名称。在I/O信号已经被恰当地映射后,方法100前进至步骤106。在步骤106处,主机12继而从SUT15的代码中提取一些测试案例。步骤106可包括对于预定义的迭代次数以随机输入模拟代码。在主动地模拟时,主机12可同时采集或登录对应于PDM 16的局部模型代码的I/O值(即图2中示出的局部模型代码160的输入信号42和输出信号44)。方法100随后可继续至步骤108。在步骤108处,主机12使用来自步骤106的登录输入模拟图1中的PDM16,并将测得的输出值和期望的值(例如使用图1中的装置20的校准数据事先记录在存储器24中的值)进行比较。步骤108还可包括在以登录的输入的PDM 16的模拟期间测量结构覆盖,例如当PDM 16被实现为有限状态模型时通过确定关于PDM 16的各种状态转换。在步骤110处,主机12确定产生为图1中的输出组18的测试案例是否提供关于相同附图中示意地示出的覆盖标准17的PDM 16的100%测试覆盖。如果实现了 100%覆盖,方法100行进至步骤112。如果关于覆盖标准17实现了小于100%的覆盖,则方法100前进至步骤114。在步骤112处,主机12返回由图1中输出信号18代表的测试案例,例如通过将其记录在主机12的存储器24中。主机12可随后执行关于SUT 15的需要的控制动作,例如通过针对至装置20的操作公开来验证SUT 15。方法100在该点处结束。在步骤114处,已经在步骤110处确定实现了小于100%的覆盖,图1的主机12标识PDM 16中任何未覆盖的测试案例或目标,并前进至步骤116。在步骤116处,主机12运行以自动产生附加的测试数据,以覆盖PDM16的这些未覆盖的目标。用于获得完整测试套件的两个示例性方法包括基于规范方法的方法(normalmethods-based method)以及基于启发的导向技术,以动态地近似未被初始的该组测试案例覆盖的任意测试案例的表示或函数。在其中,通过非限制性示例的方式,基于规范方法的方法可包括在上文中參照图2间接提到的正向传播或反向传播技木。即,图1中的主机12可将从图2的局部模型代码160的边界43对主输入信号32需要的约束传播至同一附图中的相应的SUT代码150,以获得在步骤116中获得的测试数据的数学约束表达式。主机12可继而对于产生的/需要的值求解该表达式,以产生SUT代码150的最終测试案例。此后,可模拟测试数据,例如使用MATLAB的Simulink部分、Rhapsody环境或其他合适的方式。替换地,基于启发的导向技术或方法可使得图1中的主机12能够动态地近似任何未覆盖的测试案例或目标的表示/函数。该替代方式将需要在SUT代码150的主输入32和进入图2的局部模型代码160的边界43的信号(例如通过预定义的输入模式)之间的关系的提取。图2中的SUT代码150以预定义的输入模式模拟,且在42处针对信号的表现被观察,并由此提取该关系。主机12可继而提取局部模型代码160的输入信号42关于SUT代码150的主输入32的关系。例如,主机12可将除ー个之外的全部输入固定至最低常数值,并线性増加或降低主输入32。这可针对全部的输入信号重复。通过该方法,可确定局部模型代码160的输入信号42相对主输入32的关系或表现模式,即,主输入的哪些组合増加或降低局部模型代码160的边界处的信号。这即为可应用以获得需要的值的模式,该需要的值为在步骤116中获得的用于局部模型代码160的输入的测试数据。使用非限制性示例性示例,当图1中的装置20是机动车刹车系统时,基本顶部水平输入的基本对可包括油门输入水平和刹车应用水平。该系统的输出是车辆的可变速度。在该示例中,图1中的主机12可通过将制动输入水平保持为0 (即,没有制动)、变动油门、并观察/记录车速的变化来观察响应。类似地,主机12可将油门保持在恒定的水平,并观察増加制动输入水平如何影响车速。因此,为了达到特定的车速值,主机12可学习如何操纵至装置20的输入。该学习的表现可用于提供对任何未覆盖目标的覆盖。在步骤118处,图1中的主机12验证是否现在实现了 100%的测试覆盖。如果是的话,方法前进至步骤112。如果不是,方法100行进至步骤120。在步骤120处,主机12估计剩余的未覆盖目标。步骤120可包括简单的估计,例如使用上述的启发性方法。步骤120以循环重复,直至全部测试案例已经被解出,或实现了100%的测试覆盖,然后前进至步骤112。尽管已经对用于实施本发明的最佳模式进行了详尽的描述,对本发明所涉及的领域熟悉的技术人员将辨识出在所附的权利要求内用于实施本发明的各种可替换设计和实施例。
权利要求
1.一种用于关于局部设计模型(PDM)的测试中软件(SUT)的测试方法,该PDM具有不同于SUT边界的边界,该方法包括记录一组输入信息,包括SUT、PDM、限定了需要数目的测试案例的覆盖标准;经由主机识别SUT中对应于PDM的边界信号的一组变量;和使用SUT、PDM和该组变量提取满足覆盖标准的一组测试案例。
2.如权利要求1所述的方法,其中提取一组测试案例包括从SUT产生初始的一组测试案例;和测量初始的该组测试案例在PDM上的覆盖。
3.如权利要求2所述的方法,其还包括在PDM水平上产生附加的一组测试案例;使用传播技术和启发导向技术中的一种利用相应的约束函数将附加的该组测试案例映射至SUT的边界;和使用所述主机求解所述相应的约束函数。
4.如权利要求1所述的方法,其还包括在对于预定数量的迭代利用随机输入模拟SUT的同时登录PDM的输入和输出(I/O) 值;和使用登录的输入模拟PDM;和将PDM的输出和一组期望输出进行比较。
5.一种用于关于局部设计模型(PDM)的测试中软件(SUT)的测试系统,该PDM具有不同于SUT边界的边界,该系统包括主机,其接收和记录输入组,该输入组包括SUT、PDM和限定了需要数目的测试案例的覆盖标准;和有形/非易失性存储器,其上记录有测试生成工具和用于测试所述SUT的一组处理指令;其中所述主机配置为执行所述处理指令,以由此识别SUT中的一组变量,该组变量对应于PDM的边界信号,且使用SUT、PDM和该组变量提取满足覆盖标准的一组测试案例。
6.如权利要求5所述的系统,其中所述主机配置为从所述SUT产生该组测试案例的初始版本;和测量该组测试案例的初始版本在PDM上的覆盖。
7.如权利要求5所述的系统,其中所述主机执行正向传播技术或反向传播技术中的一种以将来自PDM的测试案例的至少一些自动映射至SUT。
8.如权利要求5所述的系统,其中所述主机配置为通过下列方式提取该组测试案例 从SUT产生初始的一组测试案例;和测量初始的该组测试案例在PDM上的覆盖。
9.如权利要求5所述的系统,其中所述主机被配置为在所述PDM的水平上产生附加的一组测试案例;使用正向传播技术、反向传播技术和启发导向技术中的一种利用相应的约束函数将附加的该组测试案例映射至SUT的边界;和使用所述主机求解所述相应的约束函数。
10.如权利要求5所述的系统,其中所述主机被配置为将对所述SUT的一组输入信号映射至PDM中相应的值。
全文摘要
一种方法,其允许关于具有不同于SUT边界的边界的局部设计模型(PDM)测试测试中软件(SUT)。该方法包括记录输入信息,包括SUT、PDM、限定了需要数目的测试案例的覆盖标准。对应于PDM的边界信号的SUT中的变量被识别出。提取满足覆盖标准的测试案例。该方法还包括在PDM水平上产生附加的测试案例,且继而使用正向/反向传播或基于启发的导向技术将具有相应的约束函数的附加案例映射至SUT编码的边界。用于测试SUT的系统包括主机和存储器。该主机执行来自存储器的处理指令,以识别SUT中对应于PDM的边界信号的变量,且提取满足覆盖标准的测试案例。
文档编号G06F11/36GK103019669SQ20121035718
公开日2013年4月3日 申请日期2012年9月21日 优先权日2011年9月21日
发明者P.M.佩拉南达姆, A.A.嘉德卡里, R.赛瑟 申请人:通用汽车环球科技运作有限责任公司