掌桥专利:专业的专利平台
掌桥专利
首页

自动化测试平台集成对接testlink系统的方法

文献发布时间:2023-06-19 11:49:09


自动化测试平台集成对接testlink系统的方法

技术领域

本发明涉及数据处理技术领域,尤其涉及自动化测试平台集成对接testlink系统的方法。

背景技术

ATTRobot自动化测试平台基于FrameworkRobot基础框架二次开发出来的平台,目前在ATTRobot自动化测试平台编写的测试用例是以文本或html形式存储的文件格式,无法兼容导入testlink系统自动刷新测试方式手动变更自动方式,以及测试平台执行用例运行后的测试结果不支持自动回填至testlink系统对应的测试计划所属的模块用例,同时缺失生成excel格式文件数据可视化测试报告。因此,为提高自动化业务工作统计效率及数据关键指标量化,需开发支持集成对接testlink系统功能。

背景技术存在的弊端:

1.测试平台的自动化用例不支持导入testlink系统XML文件格式兼容问题,需要耗费相当多的时间在testlink系统手工操作所属的测试计划模块下把已实现自动化的上千个手工用例一个个设置测试方式改为自动方式。

2.手工操作重复性很高,容易出错,比较耗时且枯燥。

3.testlink系统测试计划的指派过来的用例无法刷新当前执行后的用例测试结果数据。

4.测试平台执行用例的测试结果只能展示框架生成html格式文件测试报告,如果采用数据驱动编写的测试用例脚本,统计出来的用例个数只能算1个用例数,因此无法对应testlink系统测试计划里面的所属模块用例个数。

发明内容

本发明提供了一种自动化测试平台集成对接testlink系统的方法,包括如下步骤:

文件生成步骤:将基于测试平台编写的用例自动生成用例XML格式文件;

自动回填步骤:后台自动下发执行用例后,将用例测试结果自动回填至testlink系统;

报告生成步骤:自动生成excel文件格式数据可视化测试报告。

作为本发明的进一步改进,所述文件生成步骤包括:

步骤1:迭代遍历存放的测试平台测试用例目录下所有的测试套件,提取前缀tiName、test、case三个关键词按yaml要求的格式自动顺序写进到yml文件,通过yaml.load加载yml文件数据形成数据字典存储到返回变量;

步骤2:读取数据字典,构造xml文件数据,生成用例XML格式文件;

步骤3:调用os.system函数构造sed命令行数据下发执行处理用例xml格式文件用尖括号替换掉字符编码,并删除sed产生的缓存临时文件及yml文件;

步骤4:使用生成的用例xml格式文件兼容导入到testlink系统自动刷新测试方式由手动变更为自动。

作为本发明的进一步改进,在所述步骤1中,通过查找算法结合分割词技术提取前缀tiName、test、case三个关键词;

在所述步骤2中,读取数据字典,并按要求的XML模板格式,使用xml.etree的ElementTree进行迭代构造xml文件数据,使用xml.dom的minidom进行按节点转换成字符串自动添加缩进排版,生成用例XML格式文件。

作为本发明的进一步改进,所述yml文件:使用第三方库PyYAML处理读取匹配到的文本文件的用例名按要求的格式生成yml文件。

作为本发明的进一步改进,所述自动回填步骤包括:

步骤A:解析testlink系统测试计划default.xml文件,提取属性tc和id值并进行构造数据字典并按模块名字母升序排序,然后转换成DataFrame类型存储到testplant.pkl文件,再从testplant.pkl文件读取数据进行业务逻辑处理校验测试计划的用例与测试平台的用例,并备份平台用例指定的目录,注释掉平台用例不存在测试计划的用例写入到临时用例文件,删除原来的平台用例,用临时用例更名为原来用例名称,然后构造命令行数据注释掉不需要执行测试平台的测试套件所属下的用例,然后构造pybot命令行数据进行后台下发用例自动执行,并输出测试平台的测试报告数据output.xml、report.html、log.html三个文件;

步骤B:解析测试平台的output.xml文件数据,提取测试套件名、用例名、status状态结果值三个关键词数据分组构造数据字典,再按模块功能用例分类数字编号排序,并转换成DataFrame类型数据矩阵,再进行序列化对象存储到result_data.pkl文件;迭代读取result_data.pkl文件数据的列名Status值和测试计划ID值,调用testlink的api的connect函数建立会话连接,再调用reportTCResult函数向testlink系统服务端发起请求,传参testcaseid、status、testplanid、buildname、user、platformname数据进行自动上报结果至testlink系统对应的测试计划所属下的各模块用例;

步骤C:加载excel测试报告模板文件,读取容器存储的result_data.pkl文件数据进行分组聚合统计封装各功能接口,调用相应的数据接口进行传参数据写进EXCEL测试报告模板文件各sheet表项栏目,最终生成EXCEL测试报告文件,并自动还原用例至测试平台指定的目录。

作为本发明的进一步改进,在所述步骤A中,解析测试计划default.xml文件的实现,包括执行如下步骤:

步骤A1:从testlink系统导出测试计划default.xml文件放至指定的目录,读取default.xml文件,使用BeautifulSoup技术逐行解析标签tc和id的属性值,转换成列表分组存储到数据字典键名Module_name和id后并按模块名字母升序排序再转换成DataFrame类型数据矩阵,利用pandas的to_pickle函数序列化对象存储到pkl格式testplant文件;

步骤A2:使用pandas调用read_pickle函数读取testplant.pkl文件表列名Module_name所有的数据,调用函数group_by_element接口按模块划分整理相似的模块用例存储到各模块子列表,调用函数compare_cases循环判断子列表长度大于1的元素并取出所属的模块子列表索引0元素模块名为键名,循环读取元素统一更改模块名前缀名为case_+用例编号格式存储到对应的模块键名形成数据字典testplant_d存储;

步骤A3:解析测试平台用例带有前缀case_用例名存储到对应的模块键名整理成数据字典为testcase_存储,判断数据字典testcase_d键名是否存在有字典testplant_d键名,如不存在抛出异常消息,提前结束流程;否则,继续执行下一步使用取出字典testcases_d的键名列表,并同时读取测试平台用例,判断平台用例是否存在字典testcases_d的列表元素,如不存在则注释掉平台用例,写入临时文件,再删除平台对应的用例文件,把临时文件更名为平台原来的用例名称,调用构造函数,并执行pytbot命令行拼接参数;否则直接调用函数group_by_element构造pybot执行的命令行拼接参数;

步骤A4:后台自动下发执行用例,打印日志消息,流程结束。

作为本发明的进一步改进,在所述步骤B中,解析测试平台的output.xml文件数据的实现,包括执行如下步骤:

步骤B1:迭代读取ATTRobot测试平台执行用例存放的结果测试数据output.xml文件,采用lxml的etree.iterparse生成的迭代器技术进行解析XML文件,使用xpath解析标签文本和标签的属性值,通过解析出来的数据添加到列表里,然后重置元素清空元素内部数据,选取当前节点循环判断是否存在子节点,若存在子节点并删除节点的第一个子节点,再返回当前节点根元素,然后释放内存返回解析后的列表数据;否则直接释放内存,并返回解析后的列表数据;

步骤B2:迭代读取返回的列表数据进行构造两个子列表分别添加到对应的键名Cases_name和Status形成数据字典形式,并按模块所对应的功能用例数字编号升序排序,再转换成DataFrame类型数据矩阵存放到变量cases_result_df,读取testplant.pkl文件数据与数据矩阵cases_result_df,利用pandas的concat函数合并成一张表,通过pandas调用to_pickle函数序列化对象输入到result_data.pkl文件存储。

作为本发明的进一步改进,在所述步骤C中,自动回填结果至testlink系统逻辑的实现,包括执行如下步骤:

步骤C1:通过flag标记开关有三种选项,当flag标记开关为2时,不需要回填结果至testlink系统,直接读取序列化result_data.pkl文件数据,通过数据聚合统计计算得出关键指标数据,结合openpyxl和pandas操作excel文件写入数据,并生成EXCEL可视化测试报告;

当flag标记开关为1时,过滤掉不需要回填成功用例,并判断数据长度是否为0,如为0则打印消息提示不需进行二次回填,否则,循环读取序列化result_data.pkl文件数据;

当flag标记开关为0时,使用pandas调用read_pickle函数读取序列化result_data.pkl文件数据,迭代判断字典键名列表值status,如果读取的值为PASS,临时赋值p给变量status;如果读取的值为FAIL,临时赋值f给变量status;

当flag标记开关为0时,继续执行步骤C2;

步骤C2:执行testlink.TestLinkHelper().connect函数建立连接对话,循环监听连接会话是否正常,若捕捉到服务端响应异常消息类型TLConnectionError,状态码:10061,自动上报成功的用例结果存储到字典合并到result_data.pkl文件直接结束;否则,直接调用reportTCResult函数发起请求,并传参逐步上报结果给testlink系统,上报过程中如果是非法参数,直接抛出服务端响应异常消息TLResponseError存储到字典合并到result_data.pkl文件存储,并且继续跳过异常,循环自动执行下一个用例上报结果至testlink系统;否则,正常执行上报结果给testlink系统对应的测试计划模块用例,最后生成excel测试报告,并还原用例至指定的平台所在的目录。

作为本发明的进一步改进,所述报告生成步骤包括:

步骤一:判断excel报告文件是否存在,若是,那么执行步骤二,否则执行步骤三;

步骤二:执行os.remove函数删除报告文件;

步骤三:执行os.path.exists函数复制模块报告文件至目录;

步骤四:使用openpyxl调用load_workbook函数加载excel模板文件;

步骤五:读取result_data.pkl文件进行数据分类统计;

步骤六:数据传参写进到指定excel模板报告文件各sheet表项栏目;

步骤七:判断生成报告是否成功,如成功,输出日志信息并进行保存操作,关闭文件;否则,抛出异常错误信息,直接结束流程。

本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序配置为由处理器调用时实现本发明所述方法的步骤。

本发明的有益效果是:(1)config.ini配置文件定义好测试数据后,直接后台执行程序即可。(2)当自动回填结果至testlink系统过程中,中途服务端testlink中断可直接把中断前回填成功的数据保存到result_data.pkl文件;当传参的是非法字符也能够自动存储回填不成功的用例存储到result_data.pkl文件,继续自动跳过异常执行下一个用例回填结果操作。(3)如在测试平台操作执行用例,不需回填结果至testlink系统情况下,可以单独实现生成EXCEL测试报告文件。(4)测试平台编写的用例能自动转换成XML格式文件,方便兼容testlink系统导入自动刷新各模块用例测试方式手工变更为自动方式。(5)自动生成数据可视化EXCEL的测试报告文件,数据与图形化结合丰富展示出关键指标数据量化。(6)后台下发自动执行用例,自动把测试结果上报给testlink系统进行回填操作,解决了testlink系统无法展示自动化执行的结果。

附图说明

图1是文件生成步骤的流程图;

图2是业务数据事件的实现流程图;

图3是解析testlink系统测试计划default.xml文件的实现流程图;

图4是解析测试平台的output.xml文件数据的实现流程图;

图5是自动回填结果步骤的流程图;

图6是报告生成步骤的流程图。

具体实施方式

本发明公开了一种自动化测试平台集成对接testlink系统的方法,实现的功能将基于测试平台编写的用例自动生成用例XML文件格式支持导入testlink系统自动刷新测试方式手动变更为自动方式,以及后台自动下发执行的用例测试结果能够自动回填至testlink系统。同时测试平台可适用于各产品线系列产品编写的用例脚本集成对接testlink系统自动后台下发执行用例后统计用例关键指标数据生成EXCEL数据可视化测试报告。

本发明基于ATTRobot自动化测试平台自动生成用例XML格式文件兼容导入testlink系统和集成对接testlink系统实现执行用例的测试结果自动回填至TestLink系统对应的测试计划、自动生成EXCEL数据可视化测试报告。功能主要包括三个步骤分别为:文件生成步骤、自动回填步骤和报告生成步骤。

文件生成步骤:将基于测试平台编写的用例自动生成用例XML格式文件。

自动回填步骤:后台自动下发执行用例后,将用例测试结果自动回填至testlink系统。

报告生成步骤:自动生成excel文件格式数据可视化测试报告。

具体实现技术方案如下:

一.文件生成步骤:

为考虑能够基准解析提取用例标题,测试平台编写用例规则定制统一规范化,具体规范要点如下:

1.按模块划分为测试套件,模块的UI界面用例和功能用例分别单独列为测试套件。

2.在测试套件创建测试用例名,若采用数据驱动编写用例脚本,前缀统一为tiName,中间的数字编号为对应TestLink系统测试计划的模块名一级标题编号,用例命名比如:tiName_1_DDNS密码输入框检查,在表格区域输入数据参数化,首列为二级用例标题,前缀统一为case,中间数字对应TestLink系统测试计划的模块名二级用例标题编号。二级用例标题命名比如:case_1.1_输入大写字母检查。

3.若采用关键字形式编写用例脚本,用例标题前缀统一为test,中间数字对应TestLink系统测试计划的模块名二级标题编号。比如用例标题命名:test_1.1_DMZ开启有效性。

4.循环遍历存放的用例目录并提取测试套件名存放在l_list列表里,再迭代顺序读取l_list列表测试套件名并写入yml格式文件作为外层字典键,然后循环读取测试套件文件用例内容转换成列表形式,并解析提取用例标题,按照用例标前缀区分开来,如是前缀带有tiName一级用例标题以字典形式作为内层字典键,并迭代读取二级用例标题作为values,形成字典键值对存储写入yml格式文件;如是前缀带有test用例作为一级用例标题以列表形式追加存储并写入yml格式文件。

5.使用yaml库load方法进行加载yml文件并循环迭代读取数据字典,按照要求xml格式模板文件,利用XML库的xml.etree和xml.dom方法进行构造XML数据并自动生成用例xml文件。

6.最后,刷新用例xml文件时,使用sed命令解决字符编码替换成尖括号,拼装一组指令把生成的用例xml文件<符号替换为<,>符号替换为>。

在文件生成步骤中,还涉及如下技术:

(1)编程语言:本软件采用python语言开发。

(2)XML文件:使用第三方库xml.etree的ElementTreet xml.dom的minidom根据testlink系统要求的导入用例xml文件格式模板进行构造数据树结构并生成用例XML文件。

(3)生成yml文件:使用第三方库PyYAML处理读取匹配到的文本文件的用例名按要求的格式生成yml文件。

(4)刷新xml用例文件:使用sed工具处理生成后的用例XML文件存在的特殊符号转换成尖括号。

综上,如图1所示,文件生成步骤包括如下步骤:

步骤1:迭代遍历存放的测试平台测试用例目录下所有的测试套件,通过查找算法结合分割词技术提取前缀tiName、test_、case_等三个关键词按yaml要求的格式自动顺序写进到yml文件,通过yaml.load加载yml文件数据形成数据字典存储到返回变量。

步骤2:读取数据字典,并按要求的XML模板格式,使用xml.etree的ElementTree进行迭代构造xml文件数据,使用xml.dom的minidom进行按节点转换成字符串自动添加缩进排版,生成用例XML格式文件。

步骤3:调用os.system函数构造sed命令行数据下发执行处理用例xml格式文件用尖括号替换掉字符编码,并删除sed产生的缓存临时文件及yml文件。

步骤4:最后使用生成的用例xml格式文件兼容导入到testlink系统自动刷新测试方式由手动变更为自动。

二.自动回填步骤:

1.首先,读取testlink系统存放的测试计划default.xml文件,使用爬虫技术BeautifulSoup解析查找标签case,循环迭代读取数据,采用正则表达式re.search方法搜索属性名tc的值和属性名id的值并构造数据字典,并按模块名字母升序排序,再利用pandas转换成数据矩阵序列化存储到testplant.pkl文件。

2.其次,后台下发执行之前进行初始化数据,先读取testplant.pkl文件数据模块名进行构造业务逻辑处理形成数据字典,注释测试平台用例之前,先进行备份平台用例到指定的目录,再读取测试平台用例前缀名与测试计划数据字典对比判断如测试平台不存在的测试计划用例,则注释掉用例写入临时用例文件,再进行删除掉原来的用例文件,把临时用例文件更名原来的用例名称。

3.再次,后台自动开始下发执行用例后,输出测试平台测试报告文件report.html、log.html、output.xml等三个文件,采用lxml.etree的iterparse生成的迭代器技术,通过XPATH定位标签及属性元素获取关键数据,则使用迭代delancestor.getparent()[0]删除父节点的第一个子节点,并返回当前节点根元素,最后执行del context释放内存解决超大容量output.xml文件性能问题。把提取到用例名和status值构造数据字典,并按模块所对应的功能用例数字编号升序排序,再利用pandas技术进行序列化对象存储到result_data.pkl文件,读取testplant.pkl文件数据与result_data.pkl文件数据合并成一张表,最后迭代读取用例id号和status值,与testlink系统建立会话连接,把读取参数通过reportTResult方法上报给testlink系统测试计划所属的模块用例进行回填结果,同时回填结果过程中诊断异常消息,如回填成功则描述“上传成功”添加到列表,否则捕捉异常消息添加到列表,最后把列表添加到键Upload字典,数据字典Upload插入到result_data.pkl文件最后的列名组成新的数据阵列表,再通过to_pickle方法写进到result_data.pkl文件序列化存储。

4.最后,通过定制的EXCEL模板测试报告文件,先把解析出来的关键数据利用pandas技术进行分类聚合统计数据封装好接口,方便写EXCEL文件时调用接口接收传过来的数据按sheet项分类写进到对应表格栏目。写excel数据操作使用openpyxl的load_workbook加载数据文件对象和pandas的ExcelWriter方法。生成完EXCEL报告,自动环境清理,并还原用例至指定的平台存放的用例目录下。

在自动回填步骤中,还涉及如下技术:

(1)解析XML文件数据:使用爬虫技术BeautifulSoup解析testlink系统的测试计划default.xml文件。

(2)加载测试平台输出的执行用例测试结果output.xml文件等提取关键词数据,为解决解析超大容量XML文件性能问题,采用lxml.etree的iterparse生成的迭代器技术,通过XPATH定位标签及属性元素解析关键数据,每读取数据解析完后clear()函数进行清空前面的元素内部数据,迭代判断选择当前节点如果当前节点还存在一个子节点,则使用del ancestor.getparent()[0]删除父节点的第一个子节点,并返回当前节点根元素,最后执行del context释放内存。

(3)数据转换DataFrame对象:使用pandas技术解决数据矩阵、数据分组聚合统计。

(4)执行用例结果自动回填至testlink系统:使用导入第三方库testlink,调出testlink.TestLinkHelper()的connect函数据建立会话连接,使用reportTCResult方法迭代传参数据进行自动回填结果至testlink系统测试计划所属的各模块用例。

综上,如图2所示,自动回填步骤包括:

步骤A:首先,解析testlink系统测试计划default.xml文件,提取属性tc和id值并进行构造数据字典,并按模块名字母升序排序,再转换成DataFrame类型存储到testplant.pkl文件,再从testplant.pkl文件读取数据进行业务逻辑处理校验测试计划的用例与测试平台的用例,并备份平台用例指定的目录,注释掉平台用例不存在测试计划的用例写入到临时用例文件,删除原来的平台用例,用临时用例更名为原来用例名称,然后构造命令行数据注释掉不需要执行测试平台的测试套件所属下的用例,然后构造pybot命令行数据进行后台下发用例自动执行,并输出测试平台的测试报告数据output.xml、report.html、log.html等三个文件。

步骤B:其次,解析测试平台的output.xml文件数据,提取测试套件名、用例名、status状态结果值等三个关键词数据分组构造数据字典,并按模块所对应的功能用例数字编号升序排序,再转换成DataFrame类型数据矩阵,再进行序列化对象存储到result_data.pkl文件。迭代读取result_data.pkl文件数据的列名Status值和测试计划ID值,调用testlink的api的connect函数建立会话连接,再调用reportTCResult函数向testlink系统服务端发起请求,传参testcaseid、status、testplanid、buildname、user、platformname等数据进行自动上报结果至testlink系统对应的测试计划所属下的各模块用例。

步骤C:加载excel测试报告模板文件,读取容器存储的result_data.pkl文件数据进行分组聚合统计封装各功能接口,调用相应的数据接口进行传参数据写进EXCEL测试报告模板文件各sheet表项栏目,最终生成EXCEL测试报告文件,并自动还原用例至测试平台指定的目录。

本发明(软件)使用流程:

1、文件生成步骤(测试平台用例自动转换xml格式工具),使用方法简洁,直接根据实际情况修改GenerateXMl工具db目录下config.ini配置文件,然后在DOS窗口执行GenerateXML.exe程序会自动生成用例xml文件到指定的目录。

如下config.ini配置文件所示:

[xml]

#工程项目名

Prj_name=ECOS_Qualcomm

#存放的用例所在目录

p_file=D:\\attrobot\\demo\\01_测试套件层

#生成xml用例文件

Casefile=D:\\GenerateXML\\testcaseXml\\ECOS

#sed执行程序,作用用途使用尖括号替换掉XML文件字符编码

sed_file=D:\\GenerateXML\\comm\\bin\\sed

2、自动回填步骤(测试平台用例执行结果自动回填至testlink系统),使用方法也同样修改AutoUpReport工具db目录下的config.ini配置文件,然后在DOS窗口执行AutoUpReport.exe程序会自动构造命令行数据下发执行用例,自动回填结果至testlink系统,同时自动生成EXCEL数据可视化报告。

执行后台用例下发之前,需要设置环境变量

TESTLINK_API_PYTHON_DEVKEY和TESTLINK_API_PYTHON_SERVER_URL,值分别为对应的testlink系统API访问的URL地址和testlink系统个人登录账号的秘钥。

如下config.ini配置文件所示:

[testlink]

#工程项目名

Prj_name=ECOS_Qualcomm

#标志开关,如为0表示后台下发用例执行再回填结果至testlink,生成excel报告;如为1表示直接读取序列化result_data.pkl文件进行二次回填结果至testlink,同时生成最新excel报告;

#如为2表示只读取序列化result_data.pkl文件,生成excel测试报告

flag=2

#存放的测试平台用例所在目录

build_file=D:/attrobot/demo/01_测试套件层

#存放的测试平台执行用例的结果及testlink系统导出的测试计划文件所在目录

testcases_result_file=D:/testreport/20210220

#测试计划版本号

testplant_ser=F3V4.0_B BIT7

#testlink系统登录账号

testlink_user=admin

#testlink系统的测试计划ID号

testplant_id=7331241

#失败重试次数,平台内置默认重试2次

retry=1。

如图3所示,在所述步骤A中,解析测试计划default.xml文件的实现,包括执行如下步骤:

步骤A1:首先,从testlink系统导出测试计划default.xml文件放至指定的目录,读取default.xml文件,使用BeautifulSoup技术逐行解析标签tc和id的属性值,转换成列表分组存储到数据字典键名Module_name和id后并按模块名字母升序排序再转换成DataFrame类型数据矩阵,利用pandas的to_pickle函数序列化对象存储到pkl格式testplant文件。

步骤A2:其次,使用pandas调用read_pickle函数读取testplant.pkl文件表列名Module_name所有的数据,调用函数group_by_element接口按模块划分整理相似的模块用例存储到各模块子列表,调用函数compare_cases循环判断子列表长度大于1的元素并取出所属的模块子列表索引0元素模块名为键名,循环读取元素统一更改模块名前缀名为case_+用例编号格式存储到对应的模块键名形成数据字典testplant_d存储。

步骤A3:再次,解析测试平台用例带有前缀case_用例名存储到对应的模块键名整理成数据字典为testcase_存储,判断数据字典testcase_d键名是否存在有字典testplant_d键名,如不存在抛出异常消息,提前结束流程;否则,继续执行下一步使用取出字典testcases_d的键名列表,并同时读取测试平台用例,判断平台用例是否存在字典testcases_d的列表元素,如不存在则注释掉平台用例,写入临时文件,再删除平台对应的用例文件,把临时文件更名为平台原来的用例名称,调用构造函数,并执行pytbot命令行拼接参数;否则直接调用函数group_by_element构造pybot执行的命令行拼接参数。

步骤A4:最后,后台自动下发执行用例,打印日志消息,流程结束。

如图4所示,在所述步骤B中,解析测试平台的output.xml文件数据的实现,包括执行如下步骤:

步骤B1:首先,迭代读取ATTRobot测试平台执行用例存放的结果测试数据output.xml文件,采用lxml的etree.iterparse生成的迭代器技术进行解析超大容量XML文件,使用xpath解析标签文本和标签的属性值,通过解析出来的数据添加到列表里,然后重置元素清空元素内部数据,选取当前节点循环判断是否存在子节点,若存在子节点并删除节点的第一个子节点,再返回当前节点根元素,然后释放内存返回解析后的列表数据;否则直接释放内存,并返回解析后的列表数据。

步骤B2:最后,迭代读取返回的列表数据进行构造两个子列表分别添加到对应的键名Cases_name和Status形成数据字典形式,并按模块所对应的功能用例数字编号升序排序,再转换成DataFrame类型数据矩阵存放到变量cases_result_df,读取testplant.pkl文件数据与数据矩阵cases_result_df,利用pandas的concat函数合并成一张表,通过pandas调用to_pickle函数序列化对象输入到result_data.pkl文件存储。

如图5所示,所述步骤C包括:

步骤C1:首先,通过flag标记开关有三种选项,当为2时,不需要回填结果至testlink系统,直接读取序列化result_data.pkl文件数据,通过数据聚合统计计算得出关键指标数据,结合openpyxl和pandas操作excel文件写入数据,并生成EXCEL可视化测试报告。

当flag标记开关为1时,过滤掉不需要回填成功用例,并判断数据长度是否为0,如为0则打印消息提示不需进行二次回填,否则,再执行下一个流程迭代读取数据回填数据。

当flag标记开关为0时,使用pandas调用read_pickle函数读取序列化result_data.pkl文件数据,迭代判断字典键名列表值status,如果读取的值为’PASS’,临时赋值’p’给变量status;如果读取的值为’FAIL’,临时赋值’f’给变量status。

步骤C2:最后,执行testlink.TestLinkHelper().connect函数建立连接对话,循环监听连接会话是否正常,若捕捉到服务端响应异常消息类型TLConnectionError,状态码:10061,自动上报成功的用例结果存储到字典合并到result_data.pkl文件直接结束;否则,直接调用reportTCResult函数发起请求,并传参逐步上报结果给testlink系统,上报过程中如果是非法参数,直接抛出服务端响应异常消息TLResponseError存储到字典合并到result_data.pkl文件存储,并且继续跳过异常,循环自动执行下一个用例上报结果至testlink系统;否则,正常执行上报结果给testlink系统对应的测试计划模块用例,最后生成excel测试报告,并还原用例至指定的平台所在的目录。

报告生成步骤:

先定制好excel测试报告模板,测试报告表格sheet分为三项分别是:测试报告、模块用例结果统计、测试数据。

1、测试报告表项:展示的关键指标有三组,第一组展示的运行耗时、版本号、文档名称、测试详情、测试人员、日期;第二组展示的测试结果,包括有产品项目名、用例总数、通过个数、失败个数、通过率;第三组展示图形化数据列出有用例总数、通过、失败。

2、模块用例结果统计:展示的关键指标有三组,各模块名及对应的用例总数、通过、失败、模块的通过率;最多的用例模块名及用例数和最少的用例模块名及用例数;图形化数据各展示有用例数最多模块和用例数最少的模块、模块用例通过率统计分析图展示排名前5名的模块及通过率、模块用例执行状态统计分析图展示排名前10名的模块用例执行的结果状态。

3、测试数据表项:展示的关键指标列出所有的执行测试计划用例模块名、用例名、各模块用例的结果状态、描述出每个用例自动回填结果至testlink状态。

如图6所示,报告生成步骤包括:

步骤一:判断excel报告文件是否存在,若是,那么执行步骤二,否则执行步骤三;

步骤二:执行os.remove函数删除报告文件;

步骤三:执行os.path.exists函数复制模块报告文件至目录;

步骤四:使用openpyxl调用load_workbook函数加载excel模板文件;

步骤五:读取result_data.pkl文件进行数据分类统计;

步骤六:调用数据矩阵封装好的相关接口函数进行数据传参写进到指定excel模板报告文件各sheet表项栏目;

步骤七:判断生成报告是否成功,如成功,输出日志信息并进行保存操作,关闭文件;否则,抛出异常错误信息,直接结束流程。

下面描述出关键指标来源的数据:

1、通过解析output.xml文件最后一行的标签的属性值starttime和endtime并进行转换成striptime时间格式,最后endtime-startime得出整个执行用例耗时时间写进excel测试报告模板测试报告表项运行耗时栏目,测试详情栏目采取链接方式地址实现点击会打开测试平台的report.html文件报告,读取序列化pkl文件数据进行数据统计出用例总数、通过、失败写进测试报告表项的用例总数、通过、失败,通过率由excle公式计算得出,其他栏目通过config.ini配置文件传参写进去。图表化数据会自动根据指标用例总数、通过、失败等数据动态展示。

2、模块用例结果统计展示的每个模块名的用例总数、通过、失败、通过率、用例最多的模块名及用例个数、用例最少的模块名及用例个数等数据通过读取序列化pkl文件经过分组统计得出的数据写进excel表项,图表化数据自动根据栏目指标用例总数、通过、失败、用例最多的模块名及用例个数、用例最少的模块名等数据动态展示

3、测试数据表项:读取序列化result_data.pkl文件数据直接写进去。

本发明的有益效果如下:

1.自主开发自动转换XML用例格式文件工具解决测试平台的自动化用例支持导入testlink系统XML文件格式兼容问题。

2.实现后台自动下发执行用例之前进行初始化环境,先解析测试计划文件default.xml的Case标签的tc和id属性值并按模块名字母升序排序,然后序列化存储到testplant.pkl文件,再从testplant.pkl文件读取数据进行业务逻辑处理校验测试计划的用例与测试平台的用例,并备份平台用例指定的目录,注释掉平台用例不存在测试计划的用例写入到临时用例文件,删除原来的平台用例,用临时用例更名为原来用例名称,然后构造命令行数据注释掉不需要执行测试平台的测试套件所属下的用例,然后构造pybot命令行数据进行后台下发用例自动执行,并输出测试平台的测试报告数据output.xml、report.html、log.html等三个文件。采用lxml.etree的iterparse生成的迭代器技术,通过XPATH定位元素解析,则使用迭代del ancestor.getparent()[0]删除父节点的第一个子节点,并返回当前节点根元素,最后执行del context释放内存解决超大容量output.xml文件性能问题。把提取到用例名和status值构造数据字典并按模块所对应的功能用例数字编号升序排序,再序列化对象存储到result_data.pkl文件,读取testplant.pkl文件数据与result_data.pkl文件数据合并成一张表,最后迭代读取用例id号和status值并与testlink系统建立会话连接,把读取的参数上报给testlink系统的测试计划所属的模块用例进行回填结果。

3.通过定制的EXCEL模板测试报告文件,先把解析出来的关键数据利用pandas技术进行分类聚合统计数据封装好接口,方便写EXCEL文件时调用接口接收传过来的数据按sheet项分类写进到对应表格栏目。

使用本发明的方法(软件工具)具有以下优点:

使用该软件工具,具有以下优点:

(1)节省自动化统计数据人力、时间成本,提高自动化业务工作统计效率及数据关键指标量化。

(2)后台下发自动执行用例,自动把测试结果上报给testlink系统进行回填操作,解决了testlink系统无法展示自动化执行的结果。

(3)自动生成数据可视化EXCEL的测试报告文件,数据与图形化结合丰富展示出关键指标数据量化,不需要人工逐步计算统计用例个数、通过率、用例通过个数,失败个数等。

(4)测试平台编写的用例能自动转换成XML格式文件,方便兼容testlink系统导入自动刷新各模块用例测试方式手工变更为自动方式,节省人工操作成本时间。

(5)如在测试平台操作执行用例,不需回填结果至testlink系统情况下,可以单独实现生成EXCEL测试报告文件。

(6)当自动回填结果至testlink系统过程中,中途服务端testlink中断可直接把中断前回填成功的数据保存到result_data.pkl文件;当传参的是非法字符也能够自动存储回填不成功的用例存储到result_data.pkl文件,继续自动跳过异常执行下一个用例回填结果操作。

以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

相关技术
  • 自动化测试平台集成对接testlink系统的方法
  • 适用testlink的excel转xml方法及系统
技术分类

06120113066912