企业简介

作为中国自动化领域的权威旗舰网络媒体,控制网创立于1999年7月,是中国举行的第十四届IFAC (International Federation of Automatic Control)大会的中国官方组织机构的唯一指定网站。控制网是中国自动化学会专家咨询工作 委员会(ECC)的秘书处常设之地。是北京自控在线文化传播有限公司开设的网站。

  • 公司类型:其他

联系方式
  • 控制网
  • 地址:北京市海淀区上地十街辉煌国际2号楼1504室
  • 邮编:100085
  • 电话:010-57116291 / 59813326
  • 传真:010-59813329
  • 网址:http://www.kongzhi.net
  • Email:mahongliang@kongzhi.net
  • 联系人:市场部
案例详细
标题软件内嵌探针测试方法的应用研究
技术领域
行业
简介软件内嵌探针测试是在探针函数模板的框架内编写被测对象,并对被测对象进行面向对象软件的常规测试,在观察预期结果与实际结果是否一致的同时,还要察看探针函数输出的信息,以确定对象的状态是否正确。本论文研究的重点在于探针函数的构成、探针函数的实现及内嵌探针测试方法的应用研究,意在构筑一个基本的应用框架,提供一种实用的测试方法。
内容

    (大连医科大学现代教育技术部,辽宁 大连 116044)郭欣,戴冶
                   
   
郭欣(1980-)女,辽宁大连人,实验师,硕士研究生,主要研究方向为网络工程。

    摘要:软件内嵌探针测试是在探针函数模板的框架内编写被测对象,并对被测对象进行面向对象软件的常规测试,在观察预期结果与实际结果是否一致的同时,还要察看探针函数输出的信息,以确定对象的状态是否正确。本论文研究的重点在于探针函数的构成、探针函数的实现及内嵌探针测试方法的应用研究,意在构筑一个基本的应用框架,提供一种实用的测试方法。

    关键词:软件内嵌探针;探针函数;测试

    Abstract: Built-in-self-probe-test in software (BISPT for software) compiles the object to be tested in the template of the probe function and conducts the regular
test for the OO testing. While observing the consistency between the expected results and the actual results, the output information of the probe function has to be checked in order to confirm the validity of the object to be tested.The keystone of this paper is to compose the probe function, to implement some kinds of probe functions and to make a research about the application of BISPT for software, which is intended to construct a fundamental application framework and provide a practical testing method.

    Key words: BISPT for Software; Probe Function; Testing

    1 引言

    软件内建自测试是软件测试和可测性设计研究领域中提出的一种新方法[1],将其改称为软件内嵌探针测试更为贴切。软件内嵌探针测试是在被测对象内插入探针,在不破坏被测对象原有特性的基础上输出测试所需要的信息,便于测试人员确定被测对象的状态和查找故障的原因,从而保证测试顺利进行,主要应用于类测试、集成测试和异常测试[2]。

    软件内嵌探针测试的基本构成是探针模板部分和常规测试部分。本文研究的重点在于探针模板部分的设计,主要体现在类内方法测试的探针设计和类测试的探针设计两个过程。

    2 探针模板的设计

    2.1 类内方法测试的探针设计

    类内方法测试的探针设计流程如图1所示。操作步骤如下:  

          
                     
                             图1  类内方法测试的探针设计流程

    (1)分析流程图,确定测试点的类型

测试点可根据其插入位置不同分为四类:检查前置条件和后置条件的测试点、检查分支语句的测试点、检查循环不变式的测试点、检查路径的测试点。

    (2)插装探针函数

    根据测试点类型的不同插入不同类型和数量的探针函数,见表1。

    用于检查前置条件和后置条件的测试点通常使用断言探针函数。探针函数的数量由类不变式决定,一般来说,一条断言只对应一个探针函数。检查前置条件的探针函数插在类内方法的入口,检查后置条件的探针函数插在类内方法的出口。

    用于检查分支语句的测试点分别使用两种探针函数:若检查分支被执行的次数,可以插入分支覆盖探针函数;若判断每次进入分支时相应的变量是否符合条件,则可以插入断言探针函数。

    无论是哪种探针函数,都是在每一个分支末尾插入,因此,探针函数的插入数量与分支数相等。

    用于检查循环不变式的测试点分别使用两种探针函数:若对边界进行检查,可以使用断言探针函数;若对循环次数进行检查,则使用分支覆盖探针函数。无论是哪种探针函数,其插入的位置均在循环体的末尾,数量均为一个。

      用于检查路径的测试点采用路径探针函数,插入方法是在路径的每一个连续执行块中插入一个路径探针函数的一个分探针,当程序被执行时,探针函数记录测试用例所测试的路径。 

              
   
    (3)生成测试用例

    最常用的方法是采用值域矩阵的形式,见表2。值域矩阵是变量、边界条件、上点/离点及测试实例的一种表格表示。表格第一行记录项目号、模块号、测试者姓名和测试日期。表格第二行记录测试号。表格的列的基本构成是:条件部分、动作部分和结果部分。条件部分记录变量和边界条件的上点/离点,动作部分记录这些变量在不同条件下所引发的动作,结果部分记录期望的测试结果和实际的测试结果。表格体内用“○”标示不同变量值的排列组合及对应的动作。

                                                    表2 测试用例
                   

    (4)运行测试用例

    根据值域矩阵运行测试用例。在测试结果一栏,若实际结果与期望结果一致,则在相应的单元格内以“√”标示,表示测试通过,否则以“╳”标示,表示测试没有通过。

    (5)生成测试报告

    对于通过测试的被测对象可以进入下一阶段的测试。对于没有通过测试的被测对象需要返还给开发组进行修改,并重新生成测试用例,对修改后的被测对象进行测试。这一过程将一直循环执行,直至测试用例通过为止。

    2.2 类测试的探针设计

    类测试的探针设计流程如图2所示。操作步骤如下:
          
             
                   
                                  图2    类测试的探针设计流程 

    (1)绘制状态转换图,确定状态不变式

    状态转换图类似于流程图,将对象的状态之间的转换关系用图的形式表示出来。状态转换图包括状态、触发状态转变的事件,以及该事件引发的动作,如图3所示。
       
                    
                                     图3  状态转换图

    (2)插装探针函数

    由状态图分析得到转换树,如图4所示。在触发状态转变的事件的末尾插入检查状态不变式的断言探针函数,每一条断言只对应一条断言探针语句。
         
                  
                                          图4 转换树

    (3)绘制响应矩阵

    由转换树绘制响应矩阵。响应矩阵将所有的状态和事件绘制到一个表里,见表3。每个受监视的事件均为一行,每个受监视事件对其监视的每个真值组合均有一列,且对其监视中的每个谓词均有一个附加列。分别考虑矩阵中行与列交叉的单元格,若在某一状态可以接受一个事件,在此单元格内以“√”标示,代表正确路径。若不能接受,有两种情况:其一,在此状态不可能引发该事件,则在单元格内以“╳”标示,表示排除这种组合。除此以外,单元格内均填入数字“1”或“2”,表示应拒绝或应激发非正常终端服务并使过程停止,这些单元格表示可能的潜行路径。

                                       表3 响应矩阵
                      
      
    (4)设计测试用例包

    由响应矩阵分析得到一致性测试包和潜行路径测试包。由响应矩阵中标有“√”的元素组成一致性测试包,由有数字的元素组成潜行路径测试包。

    (5)运行测试用例

    根据一致性测试包和潜行路径测试包对被测对象进行测试,并将测试结果记入实际结果一栏。

    (6)生成测试报告

    通过测试的被测对象可以进入下一阶段的测试。没有通过测试的被测对象需要返还给开发组进行修改,再对修改后的被测对象重新测试,直至通过为止。

    3 结论

    软件内嵌探针测试是面向对象软件测试的有效方法。面向对象软件的测试要求是基于状态的测试,软件内嵌探针测试方法恰是基于状态的测试方法。它采用比较成熟的黑盒测试和白盒测试[3]对被测对象进行测试,同时,使用探针函数检查被测对象,将测试相关信息输出到指定的文件中。通过构建探针函数使测试人员对程序内部工作流程一目了然,而且既不会破坏面向对象软件的封装机制,也不会影响测试的进行。

    其他作者:戴冶(1982-),男,辽宁铁岭人,助理实验师,学士,主要研究方向为网络工程及一卡通技术。

    参考文献:

    [1] 彭成寒, 徐拾义. 软件内建自测试中模板内容的研究和实现[J]. 计算机应用研究, 2006, (10): 78-81.

    [2] 谭建勇, 徐拾义. 软件内嵌探针测试及其面向对象模板的设计[J]. 计算机工程与应用, 2003, 39 (18): 124-126.

    [3] 贺平. 软件测试教程[M]. 北京: 电子工业出版社, 2005.

    自《自动化博览》2010年第十期