Martin Fowler的 测试金字塔 已经过时,在前端使用“ Testing Trophy (测试奖杯)”;在后端使用Spotify工程模型中的“ 测试蜂窝testing honeycomb ”。
您听到的有关软件测试的几乎所有建议都是不好的:它要么表面不好,要么导致糟糕的结果,要么因为专注于错误的事物(通常是工具)而分心。
人们喜欢辩论写测试中某种类型的的百分比,但这很分散注意力。几乎有没有团队能编写具有表现力的测试:这些测试能确定明确的界限,快速可靠地运行,并且仅出于有用的原因而失败。
金字塔测试
大多数人都熟悉著名的测试金字塔。
长期以来,这是组织测试的非常有效的方法。在微服务世界中,这可能是有害的。微服务中最大的复杂性不在于服务本身,而在于其与其他人的交互方式,这一点值得特别注意。
微服务中的单元测试unit test数量太多,这会限制微服务的“无需更改测试即可更改代码”的方式。由于必须更改测试,这对迭代的速度产生了负面影响。
后端的测试蜂窝testing honeycomb
在微服务体系结构中,对于每个微服务而言,拥有数量太多的单元测试并不是最佳选择。每个微服务都具有单个业务功能,而不是整个业务。这可能只是业务范围的一小部分,因此不值得为微服务编写太多的单元测试用例。构造我们的微服务测试的更好方法是通过测试蜂窝,如下图所示:
如上图所示,集成部分比其他部分更大,这意味着我们的主要重点将放在集成测试。
前端的测试奖杯Testing Trophy
Testing Trophy(测试奖杯)是一种从上到下的专业方法,用于测试Web应用程序。这是关于编写足够的测试-正确的测试。这不是要达到100%的覆盖率。
由Kent C. Dodds推出的测试奖杯在前端测试中越来越受欢迎。奖杯的顺序是:
-端到端测试
-集成测试
-单元测试
-静态测试
通过使用这种行之有效的测试方法,您将分层使用以下技术:
- 静态测试:使用静态类型系统和linter捕获诸如拼写错误和语法之类的基本错误。
工具 :
代码格式化程序,例如Prettier;
像ESLint;
类型检查器,例如TypeScript和Flow。
2.单元测试:编写针对应用程序的关键行为和功能的有效单元测试。单元测试可验证棘手的算法是否正常工作。
工具:Jest.
单元测试是测试单个代码单元,例如函数或React组件。您不需要浏览器或数据库即可运行单元测试,因此它们非常快速。
3.集成测试:集成测试使您确信应用程序的所有功能都能按预期运行。开发集成测试,以全面审核您的应用程序,并确保所有内容和谐地正常工作。
工具:Jest and Enzyme 或 react-testing-library.
集成测试可验证大型功能甚至整个页面,而无需任何后端,数据库或浏览器。
4.端到端测试:端到端测试可确保您的应用程序整体上正常工作:前端和后端以及数据库和其他所有内容。对关键路径进行自动点击测试,而不是依赖用户为您完成此操作。
工具:Cypress.
端到端测试主要对应于金字塔中的UI测试。
这四层自动化测试为您提供信心,快速,省钱地交付专业的JavaScript应用程序。
最后|资源
我的学习群:644956177 群里有技术大牛一起交流分享~
上面这些是我的收集和整理,这些资料,对于【软件测试】的朋友来说应该是最全面的仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你
关注【程序媛木子】微信公众号里海量资源免费获取~
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!