前端的同学,你们是怎么落地自动化测试的?
网上的资料都太简单了。
说真的,前端不管啥东西没有,都可以去看看 angular 怎么做
前后分离,自动化测试,涉及到用户功能,必须想办法 Mock Backend API。
目前我接触到的可用的测试框架有 Spring Cloud Contract,Pact 等,即实践 Consumer Driven Contract ( CDC )测试。
1. 首先定义好 API 的 Client ( API Caller,Consumer )和 Server ( API Producer/Provider )之间的 API Contract,这个 Contract 一般有多种格式可以定义,在 Spring Cloud Contract,Groovy/Kotlin DSL 是最常见的(也有 JSON,YAML 等)。Spring Cloud Contract 除了能够定义 HTTP 之间的协议外,对 Message Broker ( AMQP,Spring Cloud Stream )也是支持,也紧跟 RSocket 协议(应该新版本会支持),但前端支持不是很好,官方有例子。
2. 根据 Contract 自动生成 Stub Server Codes,可以供前端调用测试,那么前端就可以通过调用一个真实的 Stub Server 来完成测试。
3. 后端本身可以通过测试,验证 Contract,从而保持 API 前后端的一致性。
Pact 也类似,比较通用,各种语言( Java,Ruby,Python,JS,等)支持都很好,有专门的 Pact Server, 可以可视化 Contract,缺点是 Message 协议不如 Spring Cloud Contract。
如果需求经常变, 或者是项目开发初期还是不要做了, 你写测试的速度还没有需求变化的速度快, 更别提接口稳定了.
而且, 作为前端你如果考虑浏览器测试, 那就更是坑, UI 改版测试全报废.
手动测试一个功能可以重复上百次都愿意干,而把这个过程用代码写下来(测试代码,就是让它后面可以自动运行来检测变更问题),却各种借口,只有一个理由可以解释:懒。
如果不写测试,项目自动化基本都是空谈,基本不可以实现。
国外项目中,都可以花一两个月去写一个 POC,把技术上想到的 Barriers 扫清,实现自动化。再转移到项目上,按步就班的开发,每个迭代周期免不了改动,一般不会推倒重来。
设计,需求的基本上是不会影响开发这个阶段的。做产品实际也要花大量考虑各种可能性,各种演练。如果一两个月下来,公司做产品设计的人还推倒重来的改动,这种估计没有哪个公司容得下。
而且业务代码变动频繁
测试和开发无关,其实测试甚至可以先于开发写好,这叫 test driven development TDD
按照 TDD …