前端的同学,你们是怎么落地自动化测试的?

2020-01-03 14:30:40 +08:00
 ffffb
有什么心得吗大家。我想在团队推进,但是小团队没啥经验。
网上的资料都太简单了。
7694 次点击
所在节点    程序员
51 条回复
linvaux
2020-01-03 14:34:55 +08:00
前端的自动化测试?
component
2020-01-03 14:38:17 +08:00
你说的应该是单元测试吧,不管是 vue 还是 react 都有相关文档啊,单元测试就是那么简单,只是很繁琐而已,你模仿写一个就知道了。
cylmsun
2020-01-03 14:42:02 +08:00
katalon
Austaras
2020-01-03 14:42:35 +08:00
看 angular 文档

说真的,前端不管啥东西没有,都可以去看看 angular 怎么做
ffffb
2020-01-03 14:43:41 +08:00
@component 不一定是单元测试,也可以是 e2e 等
noobma
2020-01-03 14:47:51 +08:00
@ffffb 咋一看你的回复内容,我以为你是在说 angular 的 component😂
dinjufen
2020-01-03 15:05:03 +08:00
我也在给 vue 项目做单元测试来着,但是写了几个感觉真麻烦,我甚至怀疑前端项目有必要测试吗
userdhf
2020-01-03 15:07:57 +08:00
无代码测试,全凭领导极限操作。。
KuroNekoFan
2020-01-03 15:17:51 +08:00
别吧,成本太高了,没必要
as80393313
2020-01-03 15:28:45 +08:00
如果是一套组件库的话可以,就是项目里面几个小组件没必要吧?业务代码写单元测试前端有吗?
nianyu
2020-01-03 16:38:02 +08:00
前端别搞自动化测试
luozic
2020-01-03 16:40:19 +08:00
e2e? 前端这部分做主要有两个难点,
第一个资源问题(实际就是投入产出比问题): 如果前端有分层,公用组件和接口层,业务层还可以抽出来搞搞,没有,搞个锤子的 auto,维护脚本和场景过程能让人罢工。
第二个就是 stable 问题: 前端喜欢短平快,粗糙猛的那种做 auto 一点意义没有,还不如好好学习一下怎么搞前端工程化组件化。
wszgrcy
2020-01-03 16:58:35 +08:00
前端的写测试时间,我感觉基本上和代码开发时间相同。。。坑爹的是,如果业务变更,你的测试用例还要重写(前端变更的速度,可比后端快多了。。。。),所以除了自己写一些开源的组件,其它的装不知道吧。。。要写就是再给一倍时间
hantsy
2020-01-03 16:59:34 +08:00
单元测试方法前后都通用。Java 几乎离不开 JUnit 生态圈,前端比较杂,套路差不多。

前后分离,自动化测试,涉及到用户功能,必须想办法 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。
lihongjie0209
2020-01-03 17:05:58 +08:00
测试这东西怎么说呢, 在需求稳定的情况下做吧, 这样代码接口都提前定义好.

如果需求经常变, 或者是项目开发初期还是不要做了, 你写测试的速度还没有需求变化的速度快, 更别提接口稳定了.

而且, 作为前端你如果考虑浏览器测试, 那就更是坑, UI 改版测试全报废.
hantsy
2020-01-03 17:06:02 +08:00
@wszgrcy 这种“写测试浪费时间”的想法都是自欺欺人的。不写测试代码,难道就不用测试吗?

手动测试一个功能可以重复上百次都愿意干,而把这个过程用代码写下来(测试代码,就是让它后面可以自动运行来检测变更问题),却各种借口,只有一个理由可以解释:懒。

如果不写测试,项目自动化基本都是空谈,基本不可以实现。
ctro15547
2020-01-03 17:07:02 +08:00
变化速度快的 ui 类型自动化测试都不建议弄,成本太高了。想通过前端来测试后台倒是可以写些小脚本挂着,按键精灵就成
enjoyCoding
2020-01-03 17:08:30 +08:00
前端测试主要分两个: unit 和 e2e.
个人认为 unit 对于 MVVM 的功能超级简单且鸡肋,只是测试一些常用的函数,因为元素由数据产生,所以只要对比数据就可以了,又因为是单元测试,可能会把每个函数拆开进行测试,这基本没可能会错...如果是测试驱动开发,那在写测试的时候就要考虑代码的主要构成,复杂性太高....
e2e 的话觉得还是不错的,但是跟 CI 兼容性并不好....
可能作为从业人员我并没有了解到测试的重要性及其精髓
ah64zzpk
2020-01-03 17:46:20 +08:00
@hantsy pact CDC 我用过,我们是用在微服务的各个后端 service 之间的 api 依赖上的,前端的 e2e 是个啥啊? e2e 在我眼里就是 Ui 上输入,ui 上验证输出,那数据库后台服务都得有才行吧?
jaylee4869
2020-01-03 17:46:50 +08:00
我们前端除了会写 ajax 和 css 其他都不会。更别提 nginx、docker、测试、部署了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/634774

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX