TestLink搭建好了,要开始管理测试用例了。以前就习惯先写在Excel表格中再导入QC,毕竟是编辑软件,功能也强大,用例编号拉一下都能自动填充,复制粘贴也方便,不会有像Word那样很多的格式问题让人头疼,也不会像在工具里写用例那么不方便。我习惯用WPS版本的,鼠标定位在哪个表格,上面的公式栏里面再大段的文字都能显示出来,这点我觉得比Office 2007要好用。但是WPS没有XML数据转换功能(这个功能最好用的要数Office2003)。
怎么办呢?我了解到TestLink导入用例的功能虽然有导入xls的选项,但根本不能用。目前为止只能导入XML文件了。首先XML是什么呢?XML,可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。XML与Access,Oracle和SQLServer等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是展示数据。事实上XML与其他数据表现形式最大的不同是:他极其简单。这是一个看上去有点琐细的优点,但正是这点使XML与众不同。 XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言。读到这里,明白了,XML因其简单的数据展示特性,能运行在很多应用程序上。所以,我们需要将xls文档转化成xml格式,再导入TestLink。
WPS没有这个XML转化功能,Office2007总是出现数据问题最终转化失败,按照网上的具体方法来操作来映射,还是不成功。后来,我找到了一种用VBS开发的转化程序工具,能将xls、xlsx格式的Excel表单轻轻松松转化成XML文档。贴上工具和教程:
工具“xlsToxml”下载链接:点击打开链接
1、先获取文件,这里需要输入绝对的文件路径和名称,如下图:
2、按照如上步骤,确定之后,需要输入读取的Excel中目标表格的名称,如下图:
3、接着以上步骤,确定之后,需要输入转换之后的XML文件保存的路径以及名称,如下图:
4、确定后待转换结束,会给出提示,并提示总共完成多少条数据的转换,如下图所示:
基本上通过如上四个步骤就能快速完成Excel转换XML,然后就可以通过转换之后的XML格式的文件导入TestLink的测试用例中,如果导入成功,则说明脚本正确地完成此了此功能~
然后我将我的测试用例Excel文档成功转化,生成的XML文件是这样的(图太大只能分开截图):
其实上面生成的XML的列名与实际描述不相符,原因是Excel表单的列名映射出错了,脚本是按照单元格的顺序读取的Excel表单的列名映射出错了,那么Excel里写的用例,字段应该怎么排列呢?
我给Excel列添加了“摘要”这一列,调整后是这样的:
这样就和XML生成的表单字段一致了。
注:文章最后关于Excel中编写用例的字段规则有详细说明
接下来是将XML导进TestLink了,过程很简单:
选中TextLink左侧目录结构中相应的测试用例集文件夹,点击“导入测试用例”:
然后选择导好的XML文件,点击“上传文件”:
最后,导入到TestLink里面的效果还可以,缺点就是步骤分不了,只能在Excel编写时自己标清楚了。
放大看:
至此Ok啦,放心在Excel里写用例吧~
关于Excel中测试用例的字段:
(1)用例编号的编写规则是:目录+递增编号(也可以不写目录,目录在TestLink创建,我这里是方便用例的管理)
(2)因为XML转换工具对一个Sheet页的所有用例生成的外部ID(EXTERNAL ID)都是1,第一次可以导入用例集下。但是若再转化一份新的目录的用例集,其EXTERNAL ID还是1,此时导入TextLink其他的用例集目录下,导入失败。
比如在TextLink“后台管理_用户管理_新增用户”用例集下导入了测试用例,在“后台管理_用户管理_删除用户”用例集导入测试用例就报错:
Can not be imported - You are hitting an existent Test Case with SAME EXTERNAL ID代码本身的缺陷,还不知道解决办法,不过有一个取巧的办法:先把用例全导进“新增用户”中,然后在TextLink把“删除用户”的测试用例移动到“删除用户”用例集。
(3)用例字段还可以按照如下编写,加粗字段为必须有的字段,不加粗的可以没有
(4)用例名称的字符长度不能过长
曾经用例的用例名称字数多了点,结果工具转换提示成功了,但是导入TextLink却失败了,而且用WPS也打不开XML文件,报错:XML格式错误。
(5)用例的摘要、预设条件、描述步骤、预期结果都可以用1、2、3编号来进行换行。
当在Excel中填写1.XXX 2.YYY等等,
导入TextLink中显示的是 1.XXX
2.YYY
但只识别1、2、3编号,不能识别诸如(1)、二 ....这类编号来进行换行
(6)编号最多只能实现8个换行,当编号在9之后,就不换行了。
最后附上此工具的源码(转载自。。。)未来有时间一定自己修补一下工具
Dim objexcel,objworkbook,objsheet,objxml_inter,objxml,totalrow,row,id,excelStr
'========================================
'创建Excel对象,关闭Excel对象--函数
'=========================================
Function getExcel(excelname, excelpath)
Set objexcel = CreateObject("excel.application")
Set objworkbook = objexcel.Workbooks.Open(excelpath)
Set objsheet = objworkbook.Sheets(excelname)
End Function
Function clsExcel()
objworkbook.Close
End Function
'============================================
Function dealStr(excelStr)
For id=2 To 8
excelStr = Replace(excelStr,id&"、","
"&id&"、")
excelStr = Replace(excelStr,id&".","
"&id&".")
Next
dealStr=excelStr
End Function
'========================
'获取Excel单元格数据,并将XML的格式写入到对应的单元格,之后通过创建XML对象生成XML文件
'========================
Function getExcelData()
row=2
objxml_inter=""
Do While Not (objsheet.cells(row,2).value="")
'internalid
objxml_inter=objxml_inter&CStr("")
objxml_inter=objxml_inter&CStr(" ")
'externalid
objxml_inter=objxml_inter&CStr(" ")
'summary
objxml_inter=objxml_inter&CStr("")
objxml_inter=objxml_inter&CStr(dealStr(objsheet.cells(row,3))) '摘要
objxml_inter=objxml_inter&CStr("]]> ")
'preconditions
objxml_inter=objxml_inter&CStr("")
objxml_inter=objxml_inter&CStr(dealStr(objsheet.cells(row,6))) '前置条件
objxml_inter=objxml_inter&CStr("]]> ")
'execution_type '执行方式
objxml_inter=objxml_inter&CStr(" ")
'importance '重要性
objxml_inter=objxml_inter&CStr(" ")
'steps
objxml_inter=objxml_inter&CStr("")
'step
objxml_inter=objxml_inter&CStr("")
'step_number
objxml_inter=objxml_inter&CStr(" ")
'action
objxml_inter=objxml_inter&CStr("")
objxml_inter=objxml_inter&CStr(dealStr(objsheet.cells(row,7))) '测试步骤
objxml_inter=objxml_inter&CStr("]]> ")
'expectedresults
objxml_inter=objxml_inter&CStr("")
objxml_inter=objxml_inter&CStr(dealStr(objsheet.cells(row,8))) '预期结果
objxml_inter=objxml_inter&CStr("]]> ")
'execution_type
objxml_inter=objxml_inter&CStr(" ")
objxml_inter=objxml_inter&CStr(" ")
objxml_inter=objxml_inter&CStr(" ")
objxml_inter=objxml_inter&CStr(" ")
'CStr(objsheet.cells(x,1)),CStr(objsheet.cells(x,2))
'MyFile.Write(objxml_inter)
'WScript.Echo x-1
row=row+1
Loop
totalrow = row-2
End Function
'========================
'创建XML文件
'========================
Sub CreateXML
Dim fileObj, XmlFile
Set fileObj = CreateObject("Scripting.FileSystemObject")
Set XmlFile = fileObj.CreateTextFile(XMLname, True)
'xml title
objxml=CStr("")
objxml=objxml&CStr("")
objxml=objxml&objxml_inter
objxml=objxml&CStr(" ")
XmlFile.Write(objxml)
XmlFile.Close
End Sub
excelpath = Inputbox("请输入Excel文件正确的路径名和文件名:","TestLink 1.9.10小助手: Excel转换XML工具")
If excelpath = "" Then
MsgBox "文件名不能为空!"
WScript.Quit
ElseIf InStr(excelpath,".xls") < 1 Then
MsgBox "文件名格式不对!"
WScript.Quit
End If
excelname = InputBox("请输入Excel中所要操作的表格名称:","TestLink 1.9.10小助手: Excel转换XML工具")
If excelname = "" Then
MsgBox "文件名不能为空!"
WScript.Quit
End If
XMLname = InputBox("请输入转换之后的XML文件保存路径和名称:","TestLink 1.9.10小助手: Excel转换XML工具")
If XMLname = "" Then
MsgBox "文件名不能为空!"
WScript.Quit
ElseIf InStr(XMLname,".xml") < 1 Then
MsgBox "文件名格式不对!"
WScript.Quit
End If
'初始化excel对象
Call getExcel(excelname, excelpath)
'读入Excel数据
Call getExcelData()
'写入数据, XML
CreateXML
'关闭Excel对象
Call clsExcel()
'提示信息
MsgBox "完成从Excel到XML的数据转换,总共"+CStr(totalrow)+"条!"