思维导图生成测试用例

  • 背景
  • 示例展示
  • 安装XMind2TestCase
    • 改动后的用例模板
    • 生成的测试用例
  • 改源码
    • zentao模块
    • parser模块
  • 执行
    • API调用
  • web界面
    • 命令行
  • 导入禅道
  • 结语

背景

引用官方的说明

软件测试过程中,最重要、最核心就是测试用例的设计,也是测试童鞋、测试团队日常投入最多时间的工作内容之一。
然而,传统的测试用例设计过程有很多痛点:

  • 使用Excel表格进行测试用例设计,虽然成本低,但版本管理麻烦,维护更新耗时,用例评审繁琐,过程报表统计难…
  • 使用TestLink、TestCenter、Redmine等传统测试管理工具,虽然测试用例的执行、管理、统计比较方便,但依然存在编写用例效率不高、思路不够发散、在产品快速迭代过程中比较耗时等问题…
  • 公司自研测试管理工具,这是个不错的选择,但对于大部分小公司、小团队来说,一方面研发维护成本高,另一方面对技术要有一定要求…

基于这些情况,现在越来越多公司选择使用思维导图这种高效的生产力工具进行用例设计,特别是敏捷开发团队。

事实上也证明,思维导图其发散性思维、图形化思维的特点,跟测试用例设计时所需的思维非常吻合,所以在实际工作中极大提升了我们测试用例设计的效率,也非常方便测试用例评审。

但是与此同时,使用思维导图进行测试用例设计的过程中也带来不少问题:

  • 测试用例难以量化管理、执行情况难以统计;
  • 测试用例执行结果与BUG管理系统难以打通;
  • 团队成员用思维导图设计用例的风格各异,沟通成本巨大;

于是,这时候 XMind2TestCase 就应运而生了,该工具基于 Python 实现,通过制定测试用例通用模板, 然后使用 XMind 这款广为流传且开源的思维导图工具进行用例设计。 其中制定测试用例通用模板是一个非常核心的步骤(具体请看使用指南),有了通用的测试用例模板,我们就可以在 XMind 文件上解析并提取出测试用例所需的基本信息, 然后合成常见测试用例管理系统所需的用例导入文件。这样就将 XMind 设计测试用例的便利与常见测试用例系统的高效管理结合起来了!

当前 XMind2TestCase 已实现从 XMind 文件到 TestLink 和 Zentao(禅道) 两大常见用例管理系统的测试用例转换,同时也提供 XMind 文件解析后的两种数据接口 (TestSuites、TestCases两种级别的JSON数据),方便快速与其他测试用例管理系统打通。


示例展示

官方的示例

Web转换工具

转换后用例预览

禅道(ZenTao)导入结果示例


安装XMind2TestCase

pip3 install xmind2testcase

或者升级

pip3 install -U xmind2testcase

# 实践 在开始之前先定义咋们的测试用例模板,官方的用例模板不太适合我的书写习惯,所以我把它稍微改改,先看看官网的,适合你就不用改啦。 ## 官方用例模板

改动后的用例模板

生成的测试用例

我本地没搭建禅道,用Excel表格来展示,跟禅道一致。

  1. 我这里用例标题集成了前置条件+用例描述,方便禅道执行多条用例时在用例标题里能看到前置条件,不然得点击进去用例详情才能看到,因人而异
  2. 大家都看到1,2,3这些标识,它们有两个作用,1是标记这里是测试用例描述,2是标记优先级
  3. 一条测试用例对应一个期待结果


改源码

zentao模块

1.case_apply_phase属性:用例阶段我固定了功能测试

def gen_a_testcase_row(testcase_dict):case_module = gen_case_module(testcase_dict['suite'])case_title = testcase_dict['name']case_precontion = testcase_dict['preconditions']case_step, case_expected_result = gen_case_step_and_expected_result(testcase_dict['steps'])case_keyword = ''case_priority = gen_case_priority(testcase_dict['importance'])case_type = gen_case_type(testcase_dict['execution_type'])case_apply_phase = '功能测试'# case_apply_phase = gen_case_apply_phase(testcase_dict['summary'])'''生成测试用例的字段在这里'''row = [case_module, case_title, case_precontion, case_step, case_expected_result, case_keyword, case_priority, case_type, case_apply_phase]return row

测试阶段默认值转换

def gen_case_apply_phase(case_apply_phase):if case_apply_phase=='无':return '功能测试阶段'else:return case_apply_phase

2.把用例优先级的高中低换了下

# 没有定义用例优先级则默认3级
def gen_case_priority(priority):# mapping = {1: '高', 2: '中', 3: '低'}mapping = {1: 1, 2: 2, 3: 3,4:4}if priority in mapping.keys():return mapping[priority]else:return 3

parser模块

1.把原先的产品名(中心主题)改为功能模块名,输出文件名字一致

def sheet_to_suite(root_topic):"""convert a xmind sheet to a `TestSuite` instance"""suite = TestSuite()root_title = root_topic['title']separator = root_title[-1]if separator in config['valid_sep']:logging.debug('find a valid separator for connecting testcase title: %s', separator)config['sep'] = separator  # set the separator for the testcase's titleroot_title = root_title[:-1]else:config['sep'] = ' 'suite.name = root_title# 直接用产品名字作为功能模块名global my_titlemy_title = root_titlesuite.details = root_topic['note']suite.sub_suites = []for suite_dict in root_topic['topics']:suite.sub_suites.append(parse_testsuite(suite_dict))return suite
def parse_testsuite(suite_dict):testsuite = TestSuite()#直接用产品名字作为模块名,在sheet_to_suite定义全局变量my_titletestsuite.name = my_titletestsuite.details = suite_dict['note']testsuite.testcase_list = []logging.debug('start to parse a testsuite: %s', testsuite.name)for cases_dict in suite_dict.get('topics', []):for case in recurse_parse_testcase(cases_dict):testsuite.testcase_list.append(case)logging.debug('testsuite(%s) parsing complete: %s', testsuite.name, testsuite.to_dict())return testsuite

3.用例类型和用例阶段设置

def parse_a_testcase(case_dict, parent):testcase = TestCase()topics = parent + [case_dict] if parent else [case_dict]testcase.name = gen_testcase_title(topics)preconditions = gen_testcase_preconditions(topics)testcase.preconditions = preconditions if preconditions else '无'summary = gen_testcase_summary(topics)'''testcase.summary:用例阶段,配合gen_testcase_type使用'''testcase.summary = summary if summary else '无'execution_type = gen_testcase_type(topics)'''testcase.execution_type:用例类型'''testcase.execution_type = execution_type if execution_type else '无'testcase.importance = get_priority(case_dict) or 2step_dict_list = case_dict.get('topics', [])if step_dict_list:testcase.steps = parse_test_steps(step_dict_list)# the result of the testcase take precedence over the result of the teststeptestcase.result = get_test_result(case_dict['markers'])if testcase.result == 0 and testcase.steps:for step in testcase.steps:if step.result == 2:testcase.result = 2breakif step.result == 3:testcase.result = 3breaktestcase.result = step.result  # there is no need to judge where test step are ignoredlogging.debug('finds a testcase: %s', testcase.to_dict())return testcase
def gen_testcase_type(topics):'''用例阶段调用'''labels = [topic['label'] for topic in topics]labels = filter_empty_or_ignore_element(labels)return config['type_sep'].join(labels)

我这里需要改动的代码到这里结束了

执行

API调用

这里说下我这里执行,官网有比较详细的执行教程点这里跳转
这段代码加在zentao.py下运行即可

if __name__ == '__main__':xmind_file = '/Users/xxx/Downloads/xMind2testCase示例.xmind'zentao_csv_file = xmind_to_zentao_csv_file(xmind_file)print('Conver the xmind file to a zentao csv file succssfully: %s', zentao_csv_file)

web界面

使用命令,端口可自定义

xmind2testcase webtool 8000

命令行

用法:

xmind2testcase [path_to_xmind_file] [-csv] [-xml] [-json]

示例:

 xmind2testcase /path/to/testcase.xmind        => output testcase.csv、testcase.xml、testcase.jsonxmind2testcase /path/to/testcase.xmind -csv   => output testcase.csvxmind2testcase /path/to/testcase.xmind -xml   => output testcase.xmlxmind2testcase /path/to/testcase.xmind -json  => output testcase.json

导入禅道

1.将XMind用例文件解析为禅道导入文件,用禅道的用例上传功能,把xx.csv上传即可

xmind2testcase XMind测试用例模板.xmind -csv  ==> XMind测试用例模板.csv

2.将XMind用例文件转成json数据,用禅道的接口post上去,我本地没有环境,没法给出示例,有环境的小伙伴帮忙补充一下。

结语

以上是根据我个人使用习惯来自定义,不一定适合各位小伙伴,有自定义需求的小伙伴可以看看源码或者留言评论私信。

最后的最后,各位的关注、点赞、收藏、碎银子打赏是对我最大的支持,谢谢大家!
需要源码的小伙伴关注微信公众号ID:gameTesterGz
或扫描二维码关注回复xmind用例即可

XMind2TestCase自定义测试用例设计模板相关推荐

  1. 接口测试用例设计模板

  2. 玩转用例设计:XMind2TestCase一个高效的测试用例设计解决方案

    XMind2TestCase 工具,提供了一个高效测试用例设计的解决方案(开源) 一.背景 软件测试过程中,最重要.最核心就是测试用例的设计,也是测试童鞋.测试团队日常投入最多时间的工作内容之一. 然 ...

  3. (开源)XMind2TestCase一个高效的测试用例设计解决方案

    XMind2TestCase 工具,提供了一个高效测试用例设计的解决方案! 一.背景 软件测试过程中,最重要.最核心就是测试用例的设计,也是测试童鞋.测试团队日常投入最多时间的工作内容之一. 然而,传 ...

  4. 全网最详细软件测试接口测试用例设计-怎么编写-模板(最详全)

    目录:导读 一.前言 1.接口测试 2.接口测试发现的典型问题 二.接口测试用例设计 1.针对输入设计 1.1.数值型 1.2.字符串型 1.3.数组或链表类型 三.针对逻辑设计 1.约束条件分析 2 ...

  5. 软件测试 接口测试 接口测试的必备条件 接口测试用例设计 HTTP协议基础 Postman

    文章目录 1 接口测试概述 1.1 接口测试的定义 1.2 接口测试的范围和适用场合 2 接口测试的必备条件 2.1 接口测试的要求 2.2 标准和规范的接口文档 2.3 如何获取接口信息 3 接口测 ...

  6. 【测试设计】基于正交法的测试用例设计工具--PICT

    前言 我们都知道成对组合覆盖是一种非常有效的测试用例设计方法,但是实际工作过程中当成对组合量太大,我们往往很难做到有效的用例覆盖. PICT是微软公司出品的一款成对组合命令行生成工具,它很好的解决了上 ...

  7. 后台模板 开源_3个开源样板网页设计模板

    后台模板 开源 在过去,从头开始创建网站很容易. 有了HTML的基本知识,也许还有一点CSS,您就可以毫不费力地构建一个功能强大的网页. 将其扔到您的Web服务器上,您就很好了. < html ...

  8. 财务金融类网页及app界面设计模板

    随着手机银行App线上化转型的日渐成熟,其设计上也更加关注情感化元素的融入,一改金融系产品严肃.工具感强的特征,努力为用户提供更有温度的金融服务体验.那么,围绕情感化设计的三个层次,就让我们一起来看一 ...

  9. 电商美工中秋节电商淘宝页面设计模板素材,临摹参考框架

    品味中秋 回味无穷 那电商淘宝页面有什么要求呢 从哪些方面着手呢? 节日促销页面的质量 与宝贝的转化率有着直接的关系 那么做好节日促销页面 是每个卖家必须要重视的事情 先看看优秀的中秋节淘宝页面设计模 ...

  10. 测试用例设计—场景分析法

    1. 测试用例的概念和作用 1.1. 引言 对一个测试工程师来说,测试用例的设计编写是一项必须掌握的能力,但有效的设计和熟练的编写测试用例却是一个十分复杂的技术,测试用例编写者不仅要掌握软件测试技术和 ...

最新文章

  1. JAVA设计模式-策略模式
  2. 语言差异引起的问题解决一例
  3. 对于linux socket与epoll配合相关的一些心得记录
  4. 1926: 粟粟的书架 前缀和+二分+主席树
  5. foxmail创建163公司企业邮箱的时候会出现ERR Unable to log on
  6. 绘制自己组合的k线图_史上最全K线图大全:搞懂70种K线组合形态,轻松低买高卖不踏空...
  7. VUE+JAVA下载文件相关博客
  8. New year is coming-2007
  9. SQLServer 不允许保存更改的解决办法
  10. 计算机画图软件教学教案,画图软件教学设计
  11. 用MathType怎么编辑带圈数字序号
  12. Labwindows扫盲+技巧贴,CVI学习必看
  13. Blob对象判断是不是图片类型以及Blob数据下载
  14. 简单的w7-->w10的方法
  15. PS首战——拼贴海报
  16. 带疑问的歌词有哪些_带有(我)字的歌词有哪些
  17. 二进制转四进制计算机,二进制换算(进制转换计算器)
  18. springboot毕设项目酒店管理系统g72sp(java+VUE+Mybatis+Maven+Mysql)
  19. SQL获取当前周的开始日期和结束日期
  20. python讲义学习 day02

热门文章

  1. 两款扒站工具使用说明
  2. 职工信息管理系统设计c语言,c语言之职工信息管理系统设计.doc
  3. cad快速看图能合并图纸吗_【CAD快速看图电脑版】合并图纸、2张图之间复制
  4. CAD迷你看图 4.4.3 中文版 (最强 CAD 看图工具)
  5. MOOC下载器的文档整理
  6. kali安装loic
  7. 什么是servlet ,servlet的作用
  8. 怎么做Web应用压力测试?
  9. JAVA API帮助文档
  10. 《算法笔记》的codeup打不开怎么办