测试用例 xmind 禅道 gitlab 自动化 质量平台 api
问:如何获取 gitlab 的更新状态?
答:使用 gitlab webhook,简单来讲就是网络回调,在 gitlab 项目里配置一个网络接口,当 gitlab 有状态更新时,会把对应的更新消息推送到网络接口。推送消息里面包含了本次推送所包含的 commits 以及文件变更。
问:如何从 gitlab 拿到 xmind 源文件?
答:使用 gitlab rest api,直接访问 gitlab 可以拿到公开项目的信息,访问 private 项目的话则可以配置 access token。接口返回的数据是二进制信息,即 bytes,可使用 BytesIO 转化为 stream 流。gitlab-python客户端可以直接使用,也比较全,如果用到的 api 比较少,不想安装依赖也可以自行封装 client。
问:如何解析 xmind 文件?
答:xmind 本质上是一个压缩包,即把一系列文件打包压缩后更改后缀名为 xmind,通过解压可直接查看压缩包里面的文件,xmind8 的内容存放在 content.xml,xmind11 版本的存放在 content.json,而 xml 和 json 都是树型结构,可以把 xml 和 json 转化为树,通过遍历树可以拿到所有节点的信息。
问:如何兼容 xmind8 和 11 版本,以及其他概要、标注等信息?
答:上面讲到 8 和 11 都是存储格式不太一样,但内容大同小异,我这里是直接解析 xml,再对内容做调整,使 8 版本的 xml 直接转成 11 格式的 json 数据;标注和概要等都有具体的格式可循,既然 xmind 可以解析源文件并渲染格式,我们自然也可以解析对应格式然后拿来做更多的拓展,基础内容可参考xmind sdk和xmind2testcase。
问:如何把 xmind 转成测试用例?
答:我们通常使用 xmind 都是一条线写到底,分别包含了测试用例的迭代、模块、标题、前置条件、测试步骤、预期结果等信息,及树的一条路径为一条测试用例,遍历树的所有路径,即可拿到所有的测试用例,一条路径可简单理解为长度不固定的字符列表 list[str],迭代、模块信息一般是第一二个节点,测试步骤、预期结果是最后两个节点,中间的不定长节点可归为用例标题或前置条件,可按实际使用习惯去调整;如果想一条测试用例包含多个步骤和预期结果,可判断多个步骤前是否有公共父节点,如果有则可以收拢为一条用例;概要信息可以解析为所有概括节点的子节点......
问:如何把测试用例信息更新到禅道?
答:可使用禅道 web api,具体可查询官方文档;管理员账号访问后台 - 二次开发 - 接口信息;直接从前台抓接口信息;操作禅道数据库。常用接口有新建测试用例、编辑测试用例、批量删除测试用例、获取产品信息等。看具体使用情况,直接看开源代码和数据库设计也会有一些收获。
问:如何做到 case 或步骤颗粒度的增删改?
答:以迭代 (文件) 为维度,在新建或修改文件时记录测试用例信息,可简单理解为 list[Testcase],二次修改时,也解析新文件为 list[Testcase],以用例标题为衡量标准,判断两条用例是否相等,以所有测试步骤、预期结果为标准,判断用例是否有更新。通过对比两个列表,得出差异,旧列表有而新列表没有,即删除了一条用例;新列表有而旧列表没有即新增了一条用例;两者皆有但步骤、预期不一致的,即为更新用例,分别根据这些更新信息调对应禅道接口即可做到最低颗粒度的同步。
开发工时 7 天,才刚刚开始使用,总体来说没有增加使用者成本,相对规范了测试用例的编写及执行,执行结果和测试单、报告也为测试过程提供了更好的依据。