发明名称 一种基于扩展接口自动机模型的嵌入式组件建模与测试方法
摘要 一种基于扩展接口自动机模型的嵌入式组件建模与测试方法,涉及软件测试与基于模型的测试自动化领域,所述方法适用于嵌入式组件的测试,针对组件接口操作、数据和行为,采用带有约束条件的自动机模型进行描述,基于图搜索和约束求解技术生成测试用例集合。方法包括两个方面:(1)建立嵌入组件的扩展接口自动机模型;(2)基于自动机模型,定义测试覆盖率目标,并生成满足测试覆盖率目标的正常功能测试用例以及鲁棒性测试用例。
申请公布号 CN103064787B 申请公布日期 2015.06.10
申请号 CN201210564499.X 申请日期 2012.12.21
申请人 清华大学;中国航空工业集团公司西安航空计算技术研究所 发明人 白晓颖;张任伟;牛文生;李亚晖
分类号 G06F11/36(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 北京众合诚成知识产权代理有限公司 11246 代理人 薄观玖
主权项 一种基于扩展接口自动机模型的嵌入式组件建模与测试方法,其特征在于,是在一个计算机中,依次按以下步骤实现的:步骤(1)系统初始化输入:嵌入式组件的接口定义,其中包括:接口操作、操作的输入/输出参数、操作的前置/后置条件以及组件的预期行为信息,步骤(2)按以下步骤建立嵌入式组件上的扩展接口自动机模型:步骤(2.1)构建状态集合S<sub>E</sub>,并定义其中的初始状态集合<img file="FDA0000677633100000011.GIF" wi="109" he="84" />且<img file="FDA0000677633100000012.GIF" wi="195" he="82" />步骤(2.2)构建接口操作数据和变量集合V<sub>E</sub>,且<img file="FDA0000677633100000013.GIF" wi="421" he="78" />其中,<img file="FDA0000677633100000014.GIF" wi="100" he="77" /><img file="FDA0000677633100000015.GIF" wi="204" he="78" />分别表示输入数据、输出数据和包括有全局和局部变量的内部数据,步骤(2.3)构建接口操作集合A<sub>E</sub>,且<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msub><mi>A</mi><mi>E</mi></msub><mo>=</mo><msubsup><mi>A</mi><mi>E</mi><mi>I</mi></msubsup><mo>&cup;</mo><msubsup><mi>A</mi><mi>E</mi><mi>O</mi></msubsup><mo>&cup;</mo><msubsup><mi>A</mi><mi>E</mi><mi>H</mi></msubsup><mo>,</mo></mrow>]]></math><img file="FDA0000677633100000016.GIF" wi="431" he="78" /></maths>其中,<img file="FDA0000677633100000017.GIF" wi="298" he="72" />分别表示输入行为、输出行为和中间行为,对于任意一接口行为a∈A<sub>E</sub>,用a(v)表示接口操作及其参数,v∈V<sub>E</sub>,步骤(2.4)构建对应于每个状态的前置条件/后置条件的约束集合C<sub>E</sub>,前置条件用preCond、后置条件postCond表述,每条约束采用逻辑表达式描述,用于判定布尔取值,步骤(2.5)构建状态转移关系的集合τ=S<sub>E</sub>×A<sub>E</sub>×S<sub>E</sub>,对任意一个状态转移的关系τ有:<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>&tau;</mi><mo>:</mo><msub><mi>S</mi><mn>1</mn></msub><munder><mrow><mi>a</mi><mrow><mo>(</mo><mi>v</mi><mo>)</mo></mrow><mo>/</mo><mi>preCond</mi><mrow><mo>(</mo><mo>)</mo></mrow><mo>,</mo><mi>postCond</mi><mrow><mo>(</mo><mo>)</mo></mrow><mo>/</mo><mi>update</mi><mrow><mo>(</mo><mo>)</mo></mrow></mrow><mo>&RightArrow;</mo></munder><msub><mi>s</mi><mn>2</mn></msub><mo>,</mo></mrow>]]></math><img file="FDA0000677633100000018.GIF" wi="750" he="80" /></maths>表示组件E若满足前置条件preCond,由状态s<sub>1</sub>会通过操作a(v),转移到状态s<sub>2</sub>,且满足后置条件postCond,再完成相应的更新update处理,步骤(3)根据步骤(2)的结果,按以下步骤生成测试用例:步骤(3.1)定义扩展接口自动机模型的测试覆盖率目标以定量度量软件测试用例集合的充分程度,采用基于状态转移的覆盖率定义,用全状态测试的覆盖准则表示,步骤(3.2)采用图搜索的算法,按以下步骤生成上述测试覆盖率目标的抽象测试用例集合T<sub>E</sub>={tc<sub>i</sub>}:每个测试用例定义为一组接口操作序列,tc<sub>i</sub>=&lt;a<sub>i,1</sub>,a<sub>i,2</sub>,...,a<sub>i,k</sub>,..&gt;,i为测试用例的序号,k每一个操作的序号,k=1,2,...,k,...K,K为操作数目,对于所述测试用例中的每一个操作a<sub>i,k</sub>∈A<sub>E</sub>(k&gt;1),存在两个状态:s<sub>i,k‑1</sub>∈S<sub>E</sub>和s<sub>i,k</sub>∈S<sub>E</sub>,s<sub>i,k‑1</sub>为在序号为i的测试用例tc<sub>i</sub>第k个操作a<sub>i,k</sub>前的系统状态,s<sub>i,k</sub>为在序号为i的测试用例tc<sub>i</sub>第k‑1个操作a<sub>i,k‑1</sub>后的系统状态,即满足转移关系(s<sub>i,k‑1</sub>,a<sub>i,k‑1</sub>,s<sub>i,k</sub>),对于测试用例中的任意一个连续的操作子序列&lt;a<sub>i,1</sub>,a<sub>i,2</sub>,...,a<sub>i,m</sub>,...,a<sub>i,M</sub>&gt;,存在一组状态转移集合{(s<sub>i,1</sub>,a<sub>i,1</sub>,s<sub>i,2</sub>),(s<sub>i,2</sub>,a<sub>i,2</sub>,s<sub>i,3</sub>),.....,(s<sub>i,m</sub>,a<sub>i,m</sub>,s<sub>i,m+1</sub>),.....,(s<sub>i,M‑1</sub>,a<sub>i,M‑1</sub>,s<sub>i,M</sub>)},则对应为扩展接口自动机状态转移用的一条路径,m为操作变化的序号,m=1,2,...,m,...M,M是本序列中操作的个数,步骤(3.3)从初始状态开始,组合状态转移图中的各条路径,构建一个满足全状态覆盖的抽象测试用例集合,步骤(3.4)对步骤(3.2)所得到的每一条路径,提取该路径上所有状态转移上的约束表达式集合,获得下述两类测试用例的数据集:对于满足约束条件的数据,添加到所述测试用例集合,构成功能测试用例集合;对于不满足约束条件的数据,添加到所述抽象测试用例集合,构成异常测试,也称为鲁棒性测试用例集合,步骤(4)根据步骤(3.4)中产生的两类测试用例集合在被测试系统上执行,以检测被测嵌入式组件接口功能的正确性。
地址 100084 北京市海淀区北京100084-82信箱