金字塔测试早已过时!

Martin Fowler的 测试金字塔 已经过时,在前端使用“ Testing Trophy (测试奖杯)”;在后端使用Spotify工程模型中的“ 测试蜂窝testing honeycomb ”。

您听到的有关软件测试的几乎所有建议都是不好的:它要么表面不好,要么导致糟糕的结果,要么因为专注于错误的事物(通常是工具)而分心。

人们喜欢辩论写测试中某种类型的的百分比,但这很分散注意力。几乎有没有团队能编写具有表现力的测试:这些测试能确定明确的界限,快速可靠地运行,并且仅出于有用的原因而失败。

金字塔测试

大多数人都熟悉著名的测试金字塔。
在这里插入图片描述

长期以来,这是组织测试的非常有效的方法。在微服务世界中,这可能是有害的。微服务中最大的复杂性不在于服务本身,而在于其与其他人的交互方式,这一点值得特别注意。

微服务中的单元测试unit test数量太多,这会限制微服务的“无需更改测试即可更改代码”的方式。由于必须更改测试,这对迭代的速度产生了负面影响。

后端的测试蜂窝testing honeycomb

在这里插入图片描述
在微服务体系结构中,对于每个微服务而言,拥有数量太多的单元测试并不是最佳选择。每个微服务都具有单个业务功能,而不是整个业务。这可能只是业务范围的一小部分,因此不值得为微服务编写太多的单元测试用例。构造我们的微服务测试的更好方法是通过测试蜂窝,如下图所示:

如上图所示,集成部分比其他部分更大,这意味着我们的主要重点将放在集成测试。

前端的测试奖杯Testing Trophy

Testing Trophy(测试奖杯)是一种从上到下的专业方法,用于测试Web应用程序。这是关于编写足够的测试-正确的测试。这不是要达到100%的覆盖率。

由Kent C. Dodds推出的测试奖杯在前端测试中越来越受欢迎。奖杯的顺序是:

-端到端测试
-集成测试
-单元测试
-静态测试

在这里插入图片描述
通过使用这种行之有效的测试方法,您将分层使用以下技术:

  1. 静态测试:使用静态类型系统和linter捕获诸如拼写错误和语法之类的基本错误。

工具 :

代码格式化程序,例如Prettier;
像ESLint;
类型检查器,例如TypeScript和Flow。
2.单元测试:编写针对应用程序的关键行为和功能的有效单元测试。单元测试可验证棘手的算法是否正常工作。

工具:Jest.

单元测试是测试单个代码单元,例如函数或React组件。您不需要浏览器或数据库即可运行单元测试,因此它们非常快速。

3.集成测试:集成测试使您确信应用程序的所有功能都能按预期运行。开发集成测试,以全面审核您的应用程序,并确保所有内容和谐地正常工作。

工具:Jest and Enzyme 或 react-testing-library.

集成测试可验证大型功能甚至整个页面,而无需任何后端,数据库或浏览器。

4.端到端测试:端到端测试可确保您的应用程序整体上正常工作:前端和后端以及数据库和其他所有内容。对关键路径进行自动点击测试,而不是依赖用户为您完成此操作。

工具:Cypress.

端到端测试主要对应于金字塔中的UI测试。

这四层自动化测试为您提供信心,快速,省钱地交付专业的JavaScript应用程序。

最后|资源

我的学习群:644956177 群里有技术大牛一起交流分享~

在这里插入图片描述

上面这些是我的收集和整理,这些资料,对于【软件测试】的朋友来说应该是最全面的仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你

关注【程序媛木子】微信公众号里海量资源免费获取~
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值