admin 管理员组文章数量: 1087139
2024年4月20日发(作者:boundary等于什么)
维普资讯
第36卷第4期
电子科技大学学报
Journal of University of Electronic Science and Technology of China
V_ol 36 NO.4
Aug.2007
2007年8月
XML技术在软件可靠性测试中的应用
张 靖
(攀枝花学院网络中心四川攀枝花617000)
【摘要】软件的可靠性测试是保证软件质量的重要措施。应用XML保存软件可靠性测试中生成的测试用例,提出了XML
测试用例模型,实现了xML测试用例文件生成器与测试引擎,用测试驱动程序来读取测试用例,驱动被测程序运行,自动比
较测试结果。能够自动、高效地对软件接口进行测试,测试数据与测试驱动程序相分离,有利于测试数据的维护与重用,在
实际应用中取得了很好的效果。
关键词软件可靠性测试;可扩展标记语言;文档对象模型:测试引擎
中图分类号TP3ll 文献标识码A
Application of XML Technology in Software Reliability Test
ZHANG Jing
(Campus Network Center,Panzhihua University Panzhihua Sichuan 61 7000)
Abstract Software reliability test iS all important way to assure the qualiyt of the software.This PaDer
presents XM[L test case module and a way to store test cases of software reliabiliyt test by using(Extensible
Markup Language)XM[L technology.XM[L test case file creator nad a test engine iS implemented.The test case iS
read by the test driver program.which drives the tested program to run and compares the test result automatically.
In this way.the software interface will be tested automatically nad emciently.Test data iS divorced from test driver
program for maintenance and reuse of hte test data.
Key words document object model;extensible markup lnaguage;software reliability test;test engine
软件可靠性测试是在具有软件使用代表性的环 试执行,降低了生成和维护测试脚本的难度。另外,
境中,获得可以用来评估软件可靠性数据的软件功
只需配置新的解释程序,XML测试脚本便可用于不
能测试。例如,可以基于软件运行剖面设计软件测
同的后端应用程序。
试用例,并用这些测试用例进行随机输入,使被测
试软件运行以获得失效数据。软件可靠性测试会产
1 XMLN试用例模型
生大量的测试用例,并可用于进行长时间、大规模
XML脚本文件与通常所说的测试脚本有很大
的测试运行。测试用例属于软件测试工作的指导性
的区别【2】。通常所说的测试脚本大多用于GUI ̄j试,
文件,测试用例对测试工作的控制和指导作用相当
主要用来记录用户与程序的交互过程,能够不断地
于设计文档对编码的指导作用,尤其是在大系统中
重放,既可以手工编写,也可以录制产生。常用的
表现出对系统测试的权威性【lj。传统的测试用例一
脚本语言有Tcl、Phyton/ ̄IPerl等【3j,测试用例主要包
般用Word文档或Excel表的形式表示,测试人员对照
括用例编号、测试标题、重要级别、测试输入、操
测试用例逐个执行。可扩展标记语言(Extensible
作步骤和预期结果等部分。测试脚本的生成依赖于
Markup Language,XML)技术是一项将类型和结构
测试输入、操作步骤和预期结果。xMl测试脚本语
置于信息上层的技术。一个XML文档就是一组具有
言主要用来描述激励函数名、参数值(输入数据)和返
一
个或者多个命名属性的结构信息项的集合。采用
回值(及其结果),而不是交互过程。利用XML
XML技术保存测试用例,可得到相应的XML脚本文
Schema技术可定义XML用例模型。测试用例模型由
件,既便于用户浏览,又可借助第三方工具驱动测
测试组长根据被测模块编写,测试人员依照测试用
收稿日期:2007—04—18
作者简介:张靖(1972一),男,硕士,主要从事软件工程和计算机网络方面的研究.
维普资讯
768 电子科技大学学报 第36卷
例模型生成相应的测试用例,并通过xML测试用例
生成向导生成XMLN试文件。
和MSXML解析器组成,利用MSXML DOM解析技
术动态生成xML文件(脚本)【7.81。整个过程包括两大
步骤:
(1)读取信息的同时即对信息进行必要的封装;
(2)根据封装的信息生成XML文件。
2.2.1信息封装
利用XML Schema技术[4-51定义的一个XML用例
模型如图1所示。在图1中:
(1)TestCaseNO.表示测试用例编号,命名规则是
项目名称+测试模块名称+编号。
(2)TestTitle表示测试标题,对测试用例的用途
针对一个测试模块,建立三个类测试模块类
进行描述。
(3)TestLevel表示重要级别,定义测试用例的优
先级别,分为“高”和“低”两级(用户可定制自己
的重要级)3 Jm)。
(4)TestSite表示测试集合,包含若干个按一定顺
序排列的测试步骤。
(5)TestStep表示测试步骤,对需要测试的接口
进行描述,包括参数列表、接口名称和预期结果。
(6)ArgList表示参数列表,列举接口的每个参
数,包括名称、注释和类型属性。
(7)InterName表示接口名称,包括名称、执行次
数、出错处理属性。
(8)RValue表示预期结果,保存测试集合的预期
结果。
图1 测试用例XML Schema模型
2 XMl测试用例文件生成
2.1测试用例生成
以“基于使用模型的统计测试方法”建立软件
的使用模型[61,根据马尔可夫模型产生测试用例。
在马尔可夫模型中,使用模型由状态和边组成。状
态表示软件使用过程中的内部环境;边表示状态间
的转移关系。生成的测试用例就是从初态开始,经
过若干中间状态到达终态的状态和边的序列。
用户生成测试用例序列后,利用XMLN试用例
生成向导得到X 测试文件。
2.2ⅪⅥL测试用例生成向导
X 测试用例生成向导由Microsoft Visual c++
Class TestModule、测试集合类Class TestSite和测试
步骤类Class TestStep。
(1)测试模块类拥有数据成员TestTitle(NU试标
题)、TestLevel(重要级别)和一个Class TestSite( ̄JJ试
集合),以及相应的读写公共接口。
(2)测试步骤类拥有一个Class TestStep(;)!Jm试步
骤)句柄容器Vector ̄I'estStep*>、数据成员
InterName(接口名称)、RValue(预期结果)和一个
param数组ArgList(参数列表),以及相应的读写公共
接口。
在生成测试用例的同时,将用户输入的模块名
称、测试标题、各个接口的名称、参数等信息保存
在两个类的相应的数据域中,利用MSXML DOM解
析技术动态生成XML文件。
2.2.2 XML文件生成
MSXML是微软实现的XML解析器【51。文档对象
模型(Document Object Model,DOM)是以层次结构
组织的节点或信息片断的集合,用于设计使用XML
数据的、语言与平台无关的API。
一
个基于树的API,可将所有数据作为节点的父
子层次加载到内存中,节点可以是元素、文本、属
性或其他节点类型。DOM API允许开放人员读取、
创建和编辑XML数据。由于得到的测试用例呈现出
树的层次结构,所以利用DOM技术可以方便地生成
x 测试用例文件。为了便于使用,可对MSXML
DOM ̄J建XML文件的接口进行封装。
HRESULT Createlnstance():创建XML文档对象
IXMLDOMElementPt CreateRoot(name,
lineCover,stateCover):创建根节点
void createElement(IXMLDOMDocument2Ptr
&pXMLDom,IXMLDOMElementPtr&pe,const
CStifng tagName):创建元素
void createAttribute(IXMLDOMDocument2Ptr
&pXMLDom, IXMLDOMElementPtr &pe,
IXMLDOMAttributePtr&p a,const CString tagName,
const CString tvalue):创建属性
维普资讯
第4期 张靖:XML技术在软件可靠性测试中的应用 769
IXMLDOMDocumentFragmentPtr
CreateFragment()-创建元素集。
在解析测试用例过程中,首先将Class
TestModule的数据成员TestTitle、TestLevel生成简单
元素,将TestSite生成元素集。然后遍历TestStep ̄1]试
步骤句柄容器,针对每个测试步骤将InterName、
RValue生成简单元素,读取param数组生成ArgList
元素集。最后将得到的各个元素/元素集组成XML文
档树,XML文件实例如图2所示。
<?xml version=”1.O ?
<?xml-stylesheet type='text/xml href='dom.xsl ?>
<L—same xml ifle created using XML DOM object compared to cmarkup一>
<TestModule name=”modulel”linecover=”.24”statcCover=”36”>
<TestCaseNo.>modulel0l</TestCaseNo.>
<TestTitle>Simplefunc</TestTitle>
<TestLevel>Low</TestLevel>
<TestSite>
<TestStep>
<InterName>f</InterName>
<ArgList>
<param>.33</param>
<param>.44</param>
</ArgList>
<RValue>2.2<爪、 ue>
</TestStep>
<TestStep>
<InterName>g</InterName>
<ArgList>
<param>4</param>
</ArgList>
<RValue>l</RValue>
</TestStep>
</TestSite>
</TestModule>
图2 XML测试用例文件
3 XML测试用例文件解析
得到XML文档后,用户既可利用XSLT转换程序
轻松地将其转换成HTML文档在Web上发布,又能使
用测试引擎解析文档驱动测试运行。
3.1解析实现
测试引擎同样采用MSXML 4.0作为XML解释
器【 ,但在驱动测试运行时,使SAX解析技术。
简单XML接I ̄(Simple API for XML,SAX)是读取和
操作XML数据更快速、更轻量的方法。SAX是一个
基于事件的处理器,优点是分析能够立即开始,应
用程序只是在读取数据时检查数据,因此不需要将
数据存储在内存中。
事实上,应用程序甚至不必解析整个文档,它
可以在某个条件得到满足时停止解析。在驱动测试
运行时,只需要获得测试用例中的测试步骤集信息,
不需要解析整个测试用例文件。同时,不将数据存
储在内存中减小了测试引擎对被测试软件运行的影
响。SAX解析特点是,由事件推动应用程序(测试引
擎)控制的解析过程,其解析过程如图3所示。由解
析器从XML文档读取特定信息,然后解析器将内容
报告给测试引擎,测试引擎推动应用程序向前运行。
同时,应用程序运行时产生的事件流反馈给测试引
擎以决定是否继续进行解析。可见,测试引擎是整
个解析的中枢。
3.2测试引擎
测试引擎由封装器(Encapsulater)和推动器
(Pump)组成。
SAX解析器 测试引擎 事件流
/ \
、
—-.起始元素“测试步骤”一 / 、
封装器
Ⅺ 测试文档一
字符 一 应用
’结束元素 测试步骤,, 推动器
反馈
/
、
/
图3 SAX解析流程
3.2.1封装器
为驱动被测软件运行,建立一张接口函数映射
表,将被测接口与XML测试用例文档中的函数名对
应起来,并建立相应的数据结构如图4所示。
(. UNc)(v0 //
/
en m u //
/
困裂哭型怀赢
{
Sig end=0,
Sl
S
g~
m‘ ,
|
/i
|voi
nt(
d(
in
ni
t,ivn1.-
d)
-)/
_.
。n PtrFuncti。ns //被测函数指针形态联合体
{
PFUNCpfn;
:
J:
struct Function
{
char‘nName;
:
):
F
unctionfunc ̄l //函数映射表 函数映射表
f
{”f ’',sig- f
gjii,(
PF
PFUNC'
v0i
,
si)(int(
d(
’)
; ̄vad
‘lm,intj
)
j
)f
fun
u.c
c2j
1 1,
J;
图4封装器数据结构
测试引擎运行时,获取<InterName>事件和函数
名,根据函数名在函数映射表中查找参数列表标志,
定义相应变量。flq<param>事件将文档中的字符信息
转换成相应类型参数数据,赋值给上步中定义的变
量,最后由</InterName>事件调用函数。调用函数时,
根据函数映射表中的nSig标志位转换联合体中的函
数指针形态为对应类型。封装器同时读取<RValue>
维普资讯
770 电子科技大学学报 第36卷
数据保存在预期结果哈希结构中。
完成上述解析与准备步骤之后,即可驱动被测
软件运行。
3.2.2推动器
测试执行,生成测试记录,降低了生成和维护测试
脚本的难度。本文着重研究了自行开发的xML测试
用例文件生成器和测试引擎,以后还需要解决XML
文件支持数据格式有限和测试引擎在嵌入式系统中
的移植问题。 测试驱动流程如图5所示。在对XML文档内容
进行重新封装后,在测试引擎中设置各种时间变量
(如失效时间、失效间隔时间等),执行状态标志(分
参考文献
别为通过、失败、放弃等1,并提供各种事件触发接
口。初始化完成后,推动器将推动被测函数运行。
推动器将应用程序反馈回的信息(实际结果)与保存
在哈希结构中的预期输出进行比较,并设置执行状
态标志,判断是否保存时间变量,以及是否读取下
一
个接口。
读
读 墩
取
下
下
——
—
个
个
测
接
试
口
步
骤
图5测试驱动流程
4结束语
使用XML技术保存测试甩例文档既便于用户
浏览,又能借助各种工具将其在Web上发布,驱动
【l】马瑞芳,王会燃.计算机软件测试方法的研究【J】.小型微
型计算机系统,2003,24(12):2210-2213.
【2】朱经纬,XML技术在软件测试自动化中的应用【J】.计算
机应用,2005,2(15):94—95,l32.
【3】王明兰,叶东升.测试用例描述语言研究【J】.计算机工
程与设计,2006,27(22):4281—4284.
【4】刘洪星,张学敏,陈 明.XML Schemai ̄.计方法研究[J】.
交通与计算机,2006,24(4):l23.126.
【5】钟玮瑁,荆 涛,吴小勇.基于XML/Schema的概念建
模方法研究【J】.军事运筹与系统工程,2006,2O(1):12—17.
[6】冯 华,王 戟,徐锡山.基于使用模型的统计测试方
法的研究【J].计算机工程,2002,28(12):93—95.
【7】李亚辉.基于Ⅺv妇L描述的软件接口测试研究【13].西安:
西安电子科技大学,2005.
【8】JOHNSON D J,ROSELL1 E Using XML as a flexible
portable test script language[C]//AUTOTESTCON 2003.
IEEE Systems Readiness Technology Conference.
Califomia:【s,n.】,2003,
【9】Microsoft Corporation.MSXML 4.0 service pack 2
(Microsoft XML core services)[EB/OL].http://www.
microsoft,corn/downloads/details.aspx?FamilylD=3 l 44b72b
-
b4f2—46da—Mb6-c5d7485f2b42&DisplayLang=zh-ca,
2003.05.29.
编辑熊思亮
版权声明:本文标题:XML技术在软件可靠性测试中的应用 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1713571956a641341.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论