有问题欢迎讨论
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 的能力