有问题欢迎讨论
heygeo@163.com

插件地址:
https://plugins.jetbrains.com/plugin/14283-actinidia
文档地址:
https://github.com/Felixlovechina/actinidia/

一、简介

1、解决的问题

所有测试能力服务化后,通过 http 协议作为基础,书写所有的业务用例。
用例内容采用 json 作为输入输出。
用例结果采用 json 结构 diff+ 过滤的方式进行断言。
在这个情境下,用例管理需要一个方便的交互执行界面,此工具应运而生。
另外降低研发同学执行复现的成本。

2、为什么使用 idea 插件的形式

(1)idea 是一个普遍使用的 ide 工具平台。
(2)集团的代码检查插件等,在 idea 上有了极佳的实践
(3)idea 插件市场有很高的下载量,方便更广泛的推广。如,之前发布的一个非常简单的小工具就达到了 2w+ 的下载量,足见其传播力还是很惊人的。
![]

二、插件安装

1、若采用本地安装

2、idea 市场安装

打开链接:https://plugins.jetbrains.com/plugin/14283-actinidia

3、样例数据

见附件 demo.zip

三、交互使用方法

1、视频版本

见附件:actinidia.mp4

2、截图版本

三、用例书写要求

1、命令文件

(1)文件名

为 “{序号}-{命令}-{用例说明等}.json”;
第一个短横线与第二个短横线之间的 “命令” 为约定的单词,如 httpj、sql、poi 等,用于触发对应的解析器;
当前版本,暂时只开放 httpj 命令。

(2)内容

json 格式,说明当前 http 请求的相关信息,包括:

{
////http 方法 post 或 get,文件可以加注释,四个斜线开头
"method": "post",
////操作日常环境数据库:使用域名 poi-test.amap.test
"url": "http://poi-test.amap.test/moc/command",
////header
"header":{
"cookie": "session=zhangyi"
}
////queryString 参数,json 格式,可以为空
"queryString": {
"command": "sql"
},
////body 体,可以为字符串,或者 json
"body": {
"xxxx":"xxxx"
}
}
(3)变量引用

场景:
-场景 1,调用 “A 命令文件” 返回 json 中有 x 变量,希望在调用 “B 命令文件” 的时候使用到;
-场景 2,A/B/C/D/E/F 命令文件希望共用一个变量,希望统一提出来配置到一个地方;
方法:
-在 “xxxJSON 格式的文件” 中设置一个变量
-在需要引用的文件中配置:“@ 文件名 jsonpath@”
如:
@0000-caseId.json$.case_id@
其中,“0000-caseId.json” 为文件名(目前仅支持当前目录下),“$.case_id” 为要引用的变量的 jsonpath。
可以配置在命令文件的任务位置,包括在字符串中间。程序处理的时候,通过正则进行匹配替换。

2、结果文件

每个命令文件在执行后生成同名的".new.json/.old.json/.diff.json"文件;

(1)".old.json"文件

如果已经存在此文件,不会生成,也不会被覆盖;
此文件用于存储 “命令” 的执行结果的对比 “基线”;
文件可以手工提前配置;

(2)".new.json"文件

每次命令被执行,都会生成此文件,如果存在则覆盖;
此文件用于跟".old.json"进行对比

3、diff 结果文件

(1)内容来源

如果之前没有 “.old.json” 文件,会跑通过,因为对比使用的是最新生成的.old.json 和.new.json 文件;
如果用自己的".old.json"文件,或者之前跑时生成的 “.old.json” 文件,两份 json 文件可能会有差异,差异会当作 diff 报出,写入到".diff.json"文件中。
其中,“filter” 是一个数组,每条都是一个 diff,

(2)字段含义

operation:新 json 相对于老 json,发生的变化,取值为 update、remove、add
path:新 json 相对于老 json,发生变化的 json 路径(目前不是标准 jsonpath 格式,仅供参考)
value:新 json 中的结果
oldValue:老 json 中的结果

(3)快速过滤掉符合预期的 diff

如果(2)中的 diff 结果,即 filter 中的 diff 符合预期,比如是时时变化的时间戳等,可以将此 filter 数组,copy 到当前报错的 “命令” json 根节点下即可,下次执行变会过滤掉,copy 方法,如:

四、其他计划

1、支持模板文件创建
2、支持更多的报表输出

五、其他测试工具推荐

六、技术要点

1、idea 的插件开发技术
2、其他 ui
所有 ui 控件中难度最大的应该是 jtree,是数模分离的一个比较复杂的插件。
核心在于对 DefaultTreeModel 的拓展。
3、jsondiff 的能力


↙↙↙阅读原文可查看相关链接,并与作者交流