We Build What We Love & Love What We Built
https://apihug.com/docs/start/what-is-apihug
开启愉快开发之旅:Quick start - ApiHug
质量检测(QA)作为成品输出到市场最后一道工序, 几乎可以肯定在国内大大小小团队是最薄弱的环节, 在将软件整个开发流程流水化后,这是最后一个令人担心的地方了。
在新开发流程改造后, 设计(技术)和写代码可以达到1:1比例,这是个惊人的变化, 初期貌似效率有所影响,但是随着业务共识越来越多,分歧越来越少;设计部分的工作量会越来越少(越来越快),如果保持这个比例,写代码效率不降低,意味着整体交付时间会大大减少,同时过程质量还可控;这让预期20%提效可能性更高;
那么问题来了,最终的质量如何保证呢?我们将整体的流程都左移,QA成为最后的卡点。
目的
同理QA左移, 移动到开发,甚至到产品, PRD, User Case 为什么不能直接变成测试用例? API 可不可以直接组装成一个 User Story? 我能chat 2 test 吗, 我能用自然语言讲出来,但是我不会编程!所有人都说一个人话!so 她必须:
-
容易上手, 学习成本低
-
单一所有权,供应方提供测试用例,Mock说明,负责维护,分发,同概念:关于API 开发-第十弹-SSOT-单一信任源
-
严格版本管理,做IT不能把这玩意规范化,归档,版本管理,说不过去
-
有DSL, 符合通用规范
-
Meta 基于元信息, 将来我想用这个搞个定制prompt, 得上大模型
-
Report, 分析
-
...
想想如果有了这个, 也可以像现在开发阶段那么高枕无忧多爽啊!
操作起来,首先从咱们老大哥spring 着手,毕竟他是事实上JAVA企业开发的标准。然后行业经典高质量开源项目测试方案。
巴拉下来,非常复杂,远远超乎想象,如果要把这个统一起来,提炼出来符合上面【7】个点要求, 估计要个一年半载才能搞得定。spring 体系包含:
-
SBST: Spring boot starter test
-
ST: Spring test
-
SCT: Spring contract test
评估
基于的第三方测试框架有:junit, junit5, testng, hamcrest, mockit...
行业内参考了:smartbear(pact etc), karate(后起之秀), rest-assure, wiremock;
发现解决方案非常庞杂, 复杂,混乱---当然spring 的不混乱, 由于我们既要,又要,还要,基本没有一家满足的--想想,那天我们让PM 直接写的哦!
夸张到什么程度呢?json assert 有三个工具:
jsonassert = { group = "org.skyscreamer", name = "jsonassert", version.ref = "jsonAssert" }
jsonassert2 = { group = "com.toomuchcoding.jsonassert", name = "jsonassert", version.ref = "jsonAssert2" }
jsonAssert3 = { group = "net.javacrumbs.json-unit", name = "json-unit-assertj", version.ref = "jsonAssert3" }
是不是残暴之极? 这个是 spring contract 在用哦!这个世界真的是个草台班子!
淦,真没有三全其美的解决方案, 这个时候只能绩效大刀阔斧的修切;妥协了:
-
BDD 看起来非常美,但是核心逻辑需要很强的代码能力, karate 依赖js 引擎,做了个讨巧(印度人), 但是没有编辑辅助工具,真的没法操作!BDD Given,Then, When无法嵌入复杂的script -- 我也相当不理解,不过通过antlr 将描述 <"""groovy> 当script 用这个问题也能解决!但是 js 引擎毕竟不如 groovy 来的漂亮, 这个替换工作非常麻烦。需要大量测试和精心的设计,全局,局部变量!还要一个设计良好的IDEA 编辑辅助!
-
转向 spring cloud contract, 好是好, groovy 直接DSL 设计 contract, 一切都非常美好, IDEA 支持 perfect! 但是特么太庞大了;而且代码质量不是那么高! 如spring就一个字:NB; 但是真的太重了, 扩展点没有包含我们可以plugin 的 request, response 定义--因为这部分已经在DSL 预定义。
选择
只能这两家各取其美, karata 设计思路和方式(真好,Case可以复用), spring contract 的大气和严谨!预计会是一个 10% karata 思想 + 30% spring contract 设计 + 混合 hug 解决方案。
就叫他 kola 吧,本来想叫 koala 考拉来着,但是写错了, TM 包名都定义好了,懒得去改了!就叫 kola ,就这样吧!
为什么又提Meta,元,或叫元语, 字典,Domain?
本身架子就错,身对不到哪里去, 至于以后, 那可是给AI吃的, 不是给人, 人吃点劣质玩意没关系, 机器可不行!O(∩_∩)O哈哈~
预告
嗯,啥时候能好呢? 估计要晚点,9月?正确merger 到 1.0.0-RELEASE.
AI+API+Test 三个球你值得同时拥有!