一入测试深似海,不如继续去搬砖

 We Build What We Love & Love What We Built

https://apihug.com/docs/start/what-is-apihug

开启愉快开发之旅:Quick start - ApiHug

ApiHug - API Design & Develop New Paradigm.ApiHug - API Design & Develop New Paradigm.icon-default.png?t=N7T8https://apihug.com/

质量检测(QA)作为成品输出到市场最后一道工序, 几乎可以肯定在国内大大小小团队是最薄弱的环节, 在将软件整个开发流程流水化后,这是最后一个令人担心的地方了。 

在新开发流程改造后, 设计(技术)和写代码可以达到1:1比例,这是个惊人的变化, 初期貌似效率有所影响,但是随着业务共识越来越多,分歧越来越少;设计部分的工作量会越来越少(越来越快),如果保持这个比例,写代码效率不降低,意味着整体交付时间会大大减少,同时过程质量还可控;这让预期20%提效可能性更高;

那么问题来了,最终的质量如何保证呢?我们将整体的流程都左移,QA成为最后的卡点。

目的

同理QA左移, 移动到开发,甚至到产品, PRD, User Case 为什么不能直接变成测试用例? API 可不可以直接组装成一个 User Story? 我能chat 2 test 吗, 我能用自然语言讲出来,但是我不会编程!所有人都说一个人话!so 她必须:

  1.  容易上手, 学习成本低

  2.  单一所有权,供应方提供测试用例,Mock说明,负责维护,分发,同概念:关于API 开发-第十弹-SSOT-单一信任源

  3.  严格版本管理,做IT不能把这玩意规范化,归档,版本管理,说不过去

  4.  有DSL, 符合通用规范

  5. Meta 基于元信息, 将来我想用这个搞个定制prompt, 得上大模型

  6. Report, 分析

  7. ...

想想如果有了这个, 也可以像现在开发阶段那么高枕无忧多爽啊!

操作起来,首先从咱们老大哥spring 着手,毕竟他是事实上JAVA企业开发的标准。然后行业经典高质量开源项目测试方案。  

巴拉下来,非常复杂,远远超乎想象,如果要把这个统一起来,提炼出来符合上面【7】个点要求, 估计要个一年半载才能搞得定。spring 体系包含:

  1. SBST: Spring boot starter test

  2. ST: Spring test

  3. 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 在用哦!这个世界真的是个草台班子!

淦,真没有三全其美的解决方案, 这个时候只能绩效大刀阔斧的修切;妥协了:

  1.   BDD 看起来非常美,但是核心逻辑需要很强的代码能力, karate 依赖js 引擎,做了个讨巧(印度人), 但是没有编辑辅助工具,真的没法操作!BDD Given,Then, When无法嵌入复杂的script -- 我也相当不理解,不过通过antlr 将描述 <"""groovy> 当script 用这个问题也能解决!但是 js 引擎毕竟不如 groovy 来的漂亮, 这个替换工作非常麻烦。需要大量测试和精心的设计,全局,局部变量!还要一个设计良好的IDEA 编辑辅助!

  2. 转向 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 三个球你值得同时拥有!

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ApiHug

God Bless U

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值