企业中的测试仍然不是应有的广泛使用的话题。 编写尤其是维护测试需要花费时间和精力,但是缩短软件测试并不是解决方案。 为了提高测试效率,应该追求哪些范围,方法和测试技术?

我根据许多实际项目,结合了我在企业测试中的经验和意见,提出了一系列建议。 特别是对于比“ hello world”要复杂得多的应用程序,遵循哪种方法至关重要。 我将主要关注测试应用程序的功能行为,即它们如何很好地实现我们的业务逻辑。 在下面的内容中,我将解释有关如何在不同的范围和使用不同的方法来提高测试效率的最佳实践:

  • 想法与约束
  • 单元测试
  • 用例测试
  • 代码级集成测试
  • 系统测试
  • 开发工作流程和管道
  • 测试代码质量和可维护的测试
  • 测试框架和技术

介绍

不管测试的类型和范围如何,拥有测试套件的目的都是为了验证我们的应用程序可以在生产中按预期工作。 从用户的角度来看,这应该是验证系统是否完成其工作的主要动机。

由于人的注意力跨度和上下文切换是一回事,因此我们需要确保我们的测试能够快速运行和验证,并具有可预测的结果。 在编写代码时,快速验证(少于或等于一秒钟)对于确保高效的工作流程以及确保我们不会分散注意力至关重要。

另一方面,我们需要确保测试保持可维护性。 软件更改非常频繁,并且具有足够的功能测试覆盖范围,生产代码中的每个功能更改都需要更改测试范围。 理想情况下,测试代码仅在功能(即业务逻辑)发生变化时才发生变化,而不是在代码清理和重构时发生变化。 通常,测试方案需要使非功能性的结构更改成为可能。

当我们研究不同的测试范围时(我们将更详细地介绍),就会出现一个问题,即哪个范围需要花费更多的时间和精力。 对于微服务应用程序或我们拥有大量分布和集成的任何系统,验证系统边界的集成测试变得更加重要。 因此,我们需要一种有效的方法来验证本地开发过程中的整个应用程序,同时保持应用程序环境和设置与生产环境尽可能相似。

原则与约束

无论选择哪种解决方案,我们都为测试套件定义以下原则和约束:

  • 测试需要快速执行和验证,并提供快速反馈。 对于没有任何进一步集成的单元测试,我们应该能够在一秒钟内运行数百个测试。 对于集成测试,执行时间取决于场景,理想情况下不超过一秒。
  • 在开发过程中,测试还必须在集成级别上提供快速反馈。 这要求测试上下文快速启动,或者在我们编写代码时保持运行。 因此,应该有可能通过少于5秒的重新部署和测试周转时间来建立有效的开发周期。
  • 测试需要使其能够重构生产代码,而无需在测试范围内进行重大更改。 不会更改应用程序功能行为的代码更改应仅导致最小的测试代码更改。
  • 确实会更改功能行为的代码更改应同样会导致有限的测试代码更改。 例如:“将HTTP边界交换到gRPC,将JSON交换到其他东西,甚至交换企业框架等,要花多少精力?”。
  • 测试技术和方法必须与根据我们的业务需求量身定制适当的抽象,委托和代码质量兼容。 我们需要能够设计表达性API,扩展潜在的DSL以及设计正确的抽象。
  • 测试技术需要支持一种“开发模式”,即以一种能够在集成环境中进行即时更改和重新部署的方式运行该应用程序,例如服务器的“开发”和调试模式, Quarkus的开发模式, 网真 , 监视部署方法等。
  • 测试方法必须与单独设置开发和测试生命周期兼容。 也就是说,开发人员必须能够在测试生命周期之外设置和配置其本地环境(例如,使用Shell脚本),然后在已经设置好的环境中快速运行测试方案。 出于灵活性和可重用性的原因,各个测试用例不应管理测试设置的生命周期。
  • 我们需要能够在多个范围内重用测试场景,例如,一次定义业务场景,并将设置重新用于系统测试,负载测试,在本地或针对外部部署的环境中运行。 复制方案应该很简单,方案应该只包含几行代码,通过使用不同的实现来达到不同的目的。

在本系列的下一部分中,我们将研究代码级单元测试和组件用例测试,以及它们如何与这些原理和约束相匹配。

翻译自: https://www.javacodegeeks.com/2019/09/thoughts-on-efficient-enterprise-testing.html

关于高效企业测试的思考(1/6)相关推荐

  1. 如何写一个高效进程/线程池_关于高效企业测试的思考(1/6)

    如何写一个高效进程/线程池 企业中的测试仍然没有得到应有的广泛应用. 编写尤其是维护测试需要花费时间和精力,但是缩短软件测试并不是解决方案. 为了提高测试效率,应该追求哪些范围,方法和测试技术? 基于 ...

  2. web安全测试视频课程专题_有关有效企业测试的视频课程

    web安全测试视频课程专题 我已经制作了一些有关有效企业测试的视频. 在实际项目中,我仍然认为该主题非常重要. 这是我在测试Enterprise Java项目中的经验以及一些示例. 1.介绍和有效的M ...

  3. 有关有效企业测试的视频课程

    我已经制作了一些有关有效企业测试的视频. 我仍然在现实世界项目中看到这个主题的巨大重要性. 这是我在测试Enterprise Java项目中的经验以及一些示例. 1.介绍和有效的Maven使用 在此视 ...

  4. 企业数字化转型思考系列文章(一)何为数字化转型?

    导语 时下企业数字化转型浪潮风起云涌,富技术时代的各种新兴技术的加持下,企业或主动或被动都在数字化转型的实践之路上,各种打开方式也不尽相同,取得的成果也千差万别,使得企业不禁要持续思考企业自主可控的数 ...

  5. 有关测试的思考(2):开始项目测试以前的准备

    有关测试的思考(2):开始项目测试以前的准备 最近终于有时间写些东西了.这篇博文虽然是此系列的第二篇文章,但是距离上一篇的时间已经快有两年的时间了.有人不禁会问,难道笔者真的忙到连写博文的时间都没有么 ...

  6. 软件测试思想者 - 高效的测试执行

    软件测试思想者 - 高效的测试执行 作为一个普通的测试工程师或测试菜鸟,怎么做才能是高效率的呢?怎么样才能成为测试达人或者测试高手亦或测试专家呢?几点建议如下. 1.熟悉测试需求,了解本阶段的测试目标 ...

  7. 建立高效的测试团队 (转自关河)

    曾经和一位担任测试经理不久的朋友和我谈到过他们部门建设的问题.刚开了个头,这位经理就急不可耐地倒起了苦水: " 部门的工作真是不好开展,员工没有劲头 --"" 某某员工简 ...

  8. 软件测试最终测试由谁执行,高效的测试执行力

    高效的测试执行力 不管在哪个行业,高校的执行力都是不可或缺的.在软件测试行业更是这样.有些测试人员,很勤奋也很吃苦,但是可能最终不能很好的完成测试任务.究其原因就是一个测试执行力的问题. 高效执行就是 ...

  9. 高效人士的A3思考法:如何用一页A3纸锻炼解决问题的能力

    高效人士的A3思考法:如何用一页A3纸锻炼解决问题的能力 A3报告书是丰田公司实际使用文件的模板.其实不只是模板,而是通过沿用这 种模板式思考,来实际解决问题.出发点:文章要归纳在一张A3纸上. &q ...

最新文章

  1. Kubernetes之路 2 - 利用LXCFS提升容器资源可见性
  2. 这家公司向苹果索赔百亿!一场鏖战八年的专利之争仍未结束
  3. MySQL主从复制Windows实现
  4. poj_2349 Kruskal 最小生成树
  5. 由Qt中qApp想到的(这是单例模式么???)
  6. C语言——抽奖系统(课程设计)
  7. 锐起无盘4.2服务器设置,锐起无盘4.5免费版
  8. linux下的二进制文件查看器
  9. AI会取代CPDA数据分析师吗?
  10. 盘点2016年炙手可热的TV BOX电视盒子
  11. 《遥感原理与应用》第三版——思维导图
  12. 教你用GoldWave进行基础的混音准备
  13. UG编程加工之非切削移动
  14. H3C认证网络工程师H3CNE
  15. 看过这篇文章,终于找到单身的原因了!
  16. 如何才能成为顶级的数据分析师?
  17. 风格化的图片———融合大师的笔触
  18. python怎么保存代码.py_pycharm的基本操作,创建项目,新建py文件,编写代码及保存...
  19. java 本周一_java 获取本周一的日期
  20. Spring之BeanDefinition详解

热门文章

  1. jzoj5354-导弹拦截【dp,最大匹配,最少路径覆盖】
  2. 【模拟】生日蛋糕(jzoj 1613)
  3. Java中创建String的两道面试题及详解
  4. Android面试题算法之二叉树
  5. 用数组存储字符C进行回文检测
  6. 当你左右看看没有发现我时,千万千万别往看……
  7. 有些事,父母一定不能依着孩子!
  8. Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)
  9. 264. 丑数 II---LeetCode---JAVA(动态规划)
  10. c/c++ 字符串分割