写点什么

2021 年最新调查:86% 的 Java 开发人员 依赖 Spring 框架

  • 2022 年 4 月 30 日
  • 本文字数:3622 字

    阅读完需:约 12 分钟

最有用的测试工具


要求受访者对从“根本不有用”到“非常有用”的各种测试工具的有效性进行评分:JUnit,JMockit,Serenity,Mockito,PowerMock,Diffblue Cover,Parasoft Jtest,TestNG,Spock 和 Cucumber。由于这些工具中的大多数都是众所周知的,并且很受欢迎,因此可以预期,答复将更倾向于“有用”而不是“无用”,这在调查结果中得到了证实。


但是,实用性方面的差异很小,但很有趣:JUnit 对“非常有用”的响应比例最高,为 44%,另有 40%认为“非常有用”。TestNG 有 40%的“非常有用”和 46%的“有点有用”。Diffblue Cover 在“非常有用”(39%)和 43%“有点有用”方面排名第三。(由于 Diffblue Cover 由 Diffblue Ltd.拥有,因此参与者数据是通过第三方匿名收集的,并且不知道其中包括 Diffblue Ltd 的任何客户。)。下载 PDF 以查看表格,其中完整结果以“非常有用”的降序排列。


>>号外:关注“Java 精选”公众号,回复“2021 面试题”关键词,领取全套 500 多份 Java 面试题文件。


Spring 或 Spring Boot 的特定好处?


提供了 5 个选项作为 Spring / Spring Boot 的好处,以及“ Other”和“ Do n't know”:


核心技术(例如,Spring 上下文,依赖项注入等)


测试支持


资料存取


与其他技术(例如 Hibernate)的集成


简化 Web 界面/ API 的设置


在答复中,所有收益的选择都相当平均,但是“ Web 界面/ API 的轻松设置”排名第一,为 23.8%,而“测试支持”排名第二,为 21.2%。


还要求受访者选择所有可带来其他五种潜在好处的方法:58%的 Spring 或 Spring Boot 用户表示该框架为开发人员节省了时间,而 56%的受访者表示,由于使用了该框架,他们获得了更好的支持单元测试。54%的人同意他们经历了测试加速,而 51%的人经历了更加流畅的现代化。最后,有 49%的人表示,由于使用了 Spring 或 Spring Boot,他们减少了开发人员的摩擦。(4%的人说他们的组织由于使用 Spring 或 Spring Boot 而没有收益)。


94%的人同意他们的组织发现使用 Spring 或 Spring Boot 可以使现代化变得容易得多,而 6%的人则表示这有点困难。?


第二部分:框架用户之间的测试实践和代码质量的比较分析?


在本节中,我们将研究 Spring 框架用户(SFU),非 Spring 框架用户(NSFU)和无框架用户(NFU)之间的测试实践,以及这些实践对代码质量的潜在影响。


测试实务


我们接受调查的每个人都花费大量时间进行测试:SFU 和 NFU 平均花费 25%的时间编写单元测试,而 NSFU 则为 20%。SFU 还花费最多的时间编写其他(非单元)测试:占总时间的 22.5%,相比之下,NFU 的时间为 21.8%,NSFU 的时间为 19.3%。


所有这些花在单元测试上的时间如何与我们受访者组织中的代码覆盖率水平相关??


45%的受访者表示,其组织的 Java 代码少于单元测试的 50%。37%的人表示其组织的 Java 代码覆盖率介于 26-50%之间。30%的人说它介于 51-75%之间。25%的人报告其覆盖率达到了惊人的 76%-100%(而 6%的人则说他们拥有 100%的代码覆盖率)。所有说他们拥有 100%代码覆盖率的受访者都是 Spring 用户。?


受访者还被问到他们的组织对尝试新的测试工具有多开放,以及他们对个人尝试新的测试工具有多开放。总体上 94%的受访者同意他们的组织愿意尝试新的测试工具;95%的 SFU 表示相同,92%的 NFU 和 84%的 NSFU 表示相同。


关于个人喜好,总体上 96%的人同意他们愿意尝试新的测试工具(同意 97%的 SFU,96%的 NSFU 和 87%的 NFU)。


代码质量


由于代码质量与测试实 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 践直接相关,因此可以预期在此情况下将加强该链接,并且确实如此。SFU 更有可能说他们的组织测试代码的能力是“优秀”(54%,相比之下,NSFU 仅占 44%,NFU 仅占 39%)。他们也最有可能说他们组织的代码质量最高(SFU 的占 46%,NSFU 的占 44%,NFU 的占 39%)。但是,总的来说,所有组中的大多数受访者都表示其组织的代码质量很高(总计 88.9%)。?


受访者可以选择速度,成本,质量,正确性,稳定性或“其他”三项最重要的指标,这些指标对于决定组织代码的成功与否至关重要。在所有受访者中,最常被选择的是质量(77%),第二是最常被选择的速度(64%),第二是稳定度(被选择 63%),并且在不同的受访者组之间没有显着差异。框架用户。


当要求描述其组织的代码(选择所有适用的代码:可靠,可维护,可测试,便携式,自动化和现代)时,大多数人将其描述为可靠(由 51.1%选择),现代(50%)和可维护(40%) )。有趣的是,尽管据说开发人员花了所有时间在测试上,但总体上只有 37%的受访者表示其组织的代码可测试。SFU 最有可能将其代码描述为可维护的(42%,相比之下,NFU 为 31.6%,NSFU 为 24%)和可移植的(37.5%,而 NSFU 为 28%,NFU 为 10.5%)。NSFU 最有可能将其代码描述为自动化(44%,而 SFU 为 36.2%,NFU 为 26.3%)。


至于代码覆盖的具体好处:92%的受访者同意使用单元测试可以更轻松地对遗留代码进行现代化,并且框架用户之间的协议最为牢固(SFU 同意了 93%,NSFU 同意了 88%,SFU 同意了 79% NFU)。?


同样,所有受访者中有 92%同意使用单元测试可以更轻松地迁移到云(同意 SFU 的比例为 94%,NSFU 的比例为 80%和 NFU 的比例为 74%)。


第三部分:框架用户之间其他组织优先事项的比较分析?


要求受访者对各种组织计划和目标的优先级进行评估:DevOps,网络安全,云计算,采用 AI 和机器学习,物联网以及机器人流程自动化。


在所有组中,DevOps 总体上是最高优先级,其中 58%的人认为这是高优先级,而 35%的人认为这在一定程度上是优先级。每个 Spring Framework 和 Non-Spring Framework 用户都将其列为优先级(即使优先级较低);5%的无框架用户表示,这不是优先事项。


网络安全是整体上第二高的优先事项(所有受访者中 57%的人将其列为优先事项,而 36%的人将其列为优先事项),NSFU 的优先度甚至更高(68%的人将其列为优先事项)。其他两组(SFU 为 56%,NFU 为 58%)。?


云计算总体上排在第三位(所有受访者中 47%的人认为这是一个高度优先事项,而 42%的人则认为这是一个优先事项)。它是 NSFU 的最高优先级(56%表示是最高优先级),其中 SFU 在中间(47%),NFU 在 39%。


采用 AI 排在第四位(44%的人认为这是高优先级,而 43%的人认为这在某种程度上是优先级);物联网排名第五(优先级为 45%;优先级为 45%);机器人流程自动化排名第六(优先级为 40%;优先级为 44%);总体而言,采用机器学习的优先级最低(最高优先级为 38%;有些优先级为 48%)。


讨论与总结


我们接受调查的 Java 开发人员中有 86%使用了 Spring 或 Spring Boot,这比去年收集的调查所发现的 60%的使用率显着提高。


Spring 的采用和使用似乎是由易于设置及其一次使用所节省的时间导致的。Spring 提供了对测试的支持,这是 DevOps 的关键部分,这是我们受访者中最优先考虑的一项举措。Spring 的功能使测试变得更加容易,也使其更适合于测试工具,这也有助于解释为什么受访者被问及的所有测试工具都至少被认为有用。例如,我们的工具 Diffblue Cover 会自动为 Java 代码编写单元测试。它对 Spring 用户特别有效,因为 Spring 的标准化单元测试方法,内置模拟功能以及易于隔离测试中的单元和数据库依赖关系的方法。?


SFU 也更有可能说他们同意单元测试可以使现代化和迁移到云更加容易。这可能是因为 Spring 中的功能使单元测试对这些活动更加有用。但是,总的来说,大多数受访者同意单元测试可以使云迁移和代码现代化更容易。


Spring 与测试齐头并进


Spring 是否可以帮助开发人员成为更好的测试人员?还是更好的测试人员使用 Spring?尽管无法从本次调查中证明任一方向的因果关系,但无疑在使用 Spring / Spring Boot 和测试更好的代码之间存在关联。Spring / Boot 开发人员倾向于更重视单元测试,拥有更高质量和更可维护的代码,并在组织中拥有更好的代码覆盖率,这可能就是为什么他们首先偏向于 Spring 的原因。?


但是,拥有正确的工具也可以使工作变得更加容易,而 Spring 可以使测试更加容易。这可能就是为什么 Spring 和 Spring Boot 用户比非 Spring Boot 用户花费 25%的时间进行单元测试的原因(占总时间的 25%,而总时间为 20%)。


尽管 Spring 用户最愿意尝试新的测试工具,但其他两组人中的大多数人也是如此,这表明测试具有普遍意义,并且为所有框架提供更好的支持将是一个好主意。考虑到开发人员花费在编写所有类型的测试上的时间(根据我们的受访者,平均占其时间的 47%),使这种工具变得更容易的工具的普及并不令人惊讶。随着测试对于致力于实现 DevOps 目标的组织变得越来越重要,Spring 和 Spring Boot 的使用持续增长也许就不足为奇了。


译文:[https://www.diffblue.com/Testing/research_papers/2021-spring-framework-user-survey/](()


[如何用 Spring Cloud 构建面向企业的大型分布式、微服务快速开发框架?](()


[代码总是被嫌弃写的太烂?装上这个 IDEA 插件再试试!](()


[Java 中注解与反射的使用方法及场景分析,有必要解释一下!](()


[终于来了,IDEA 2021.1 正式版本发布,一起看看又有哪些神奇功能!](()

用户头像

还未添加个人签名 2022.04.13 加入

还未添加个人简介

评论

发布
暂无评论
2021年最新调查:86% 的 Java 开发人员 依赖 Spring 框架_Java_爱好编程进阶_InfoQ写作社区