高效的企业测试-工作流和代码质量(4/6)

本文的这一部分将讨论在开发过程中拥有有效工作流程的影响,以及适当的测试代码质量如何使我们能够创建可维护的测试,尤其是对于复杂项目。

开发工作流程和管道

编程是一项流程活动,我们开发人员应该对保持工作流程高效和缩短周转时间感兴趣,以免因等待时间而分心。

通常,我们要确保测试的总运行时间不超过几秒钟,至少对于我们在“更改-验证-重复”周期内执行的所有测试而言。 在开发过程中,至关重要的是要对此周期进行快速周转,这涵盖了从对项目进行一些更改到验证这些更改在类生产环境中按预期工作的过程。

如果我们仅通过每次都从头开始构建和部署我们的应用程序的管道来进行此验证,那就太慢了,无论该管道是否在本地运行。 因此,建议创建一个开发设置来侦听文件更改,然后通过重新部署整个应用程序或更新单个类或文件来修改应用程序以反映我们的代码更改,然后快速重新执行连接的测试方案到更新的被测应用程序。 这个想法是,通常只重新部署应用程序或应用程序的一部分要快得多,而不是从头开始启动进程并保持潜在的其他本地服务运行。 这种方法使本地运行的系统测试变得更加有趣,因为我们可以针对正在运行的系统重新执行测试方案,并立即验证我们的更改。

更具体地说,本地工作流可以是: 重新编译类,执行单元测试,(热)部署应用程序以及执行幂等集成测试。 整个周期不应超过一秒或两秒,否则我们的注意力会转移到其他地方。 由于集成测试的启动和执行时间,花费较长时间的系统测试或任何其他更复杂的场景,我们有可能将其拆分为一个执行频率较低或仅在CI / CD管道中运行的单独的测试套件。

对于Java Enterprise项目,请查看WAD或Liberty插件开发模式 。

测试代码质量和可维护的测试

导致项目测试不足的最大问题是缺乏可维护的测试代码。 在许多情况下,编写测试,或更确切地说,复制并粘贴测试,使得一旦对生产代码进行了较大的更改,就很难更改它们。 这意味着测试代码通常在处理过程中对其质量的关注较少。 只要测试用例很少,那就很好。 但是,您通常会在项目中看到的是,随着代码库变得越来越复杂,如果我们不应用重构,则测试套件的可维护性就会越来越少,就像生产代码一样。

这就是进行可维护的测试的重点:应用相同的代码质量原则,尤其是分离关注点并引入抽象层。 如果要注意不要引入泄漏的抽象,那么在您的测试范围内创建可重用的组件是可行且高度明智的。

让我们来看一个进一步说明这一点的示例。 我们从有时被称为“注释优先编程”的地方开始,在此我们用代码注释,伪代码甚至在纸上书写,我们的测试场景应在纯概念,业务逻辑层面上验证哪些内容。 例如,“创建尺寸较大Espresso咖啡订单”。 或者“验证订单是否在Espresso类型且尺寸较大的系统中 ”。就是这样。 如何创建订单不是该级别的一部分,而是以较低的抽象,单独的方法或通常单独的委托来实现。 对于低级验证也是如此,例如,检查是否已发送回正确的HTTP状态代码和期望的JSON结构。 我们应注意不要将仅在详细级别上相关的信息(例如JSON结构)泄漏给委托方法。

您可以观看此视频,以查看实现该流程的示例流程。 从测试人员或领域专家的角度来看,这种方法很有意义,因为我们开始的是要测试的场景,而不是如何实现。 如果实现发生更改,例如与系统的通信从HTTP更改为其他内容,则仅需要调整一个位置。 此外,我们的测试用例方法变得非常易读,因为它们准确表达了要测试的内容的概念。 如果我们对操作方法感兴趣,我们会在较低级别中找到。

例如,以下系统测试将验证咖啡订单的创建:

 class CreateOrderTest { private CoffeeOrderSystem coffeeOrderSystem; private BaristaSystem baristaSystem; @BeforeEach void setUp() { coffeeOrderSystem = new CoffeeOrderSystem(); baristaSystem = new BaristaSystem(); } @Test void createVerifyOrder() { List<URI> originalOrders = coffeeOrderSystem.getOrders(); Order order = new Order( "Espresso" , "Colombia" ); URI orderUri = coffeeOrderSystem.createOrder(order); Order loadedOrder = coffeeOrderSystem.getOrder(orderUri); assertThat(loadedOrder).isEqualToComparingOnlyGivenFields(order, "type" , "origin" ); assertThat(coffeeOrderSystem.getOrders()).hasSize(originalOrders.size() + 1 ); } ...  } 

即使他们是非技术领域的专家,如果他们不了解Java,也可以了解该测试方案的执行情况,只要他们了解订单咖啡类型产地的背后领域,并且他们是否愿意忽略Java特定的语法。

这就是为什么我声称重点放在测试代码模式而不是特定的测试框架上的原因。 对于实际项目,至关重要的是引入适当的测试代码质量,主要是设计抽象层并将关注点分离为委托。 特别是当项目变得更加复杂时,这种差异会很快显示出来。

本系列文章的下一部分将介绍测试框架以及何时应用它们。

翻译自: https://www.javacodegeeks.com/2019/10/efficient-enterprise-testing-workflows-code-quality.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/342169.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

飞畅科技-图解交换机接口及连接方式

局域网交换机作为局域网的集中连接设备&#xff0c;它的接口类型是随着各种局域网和传输介质类型的发展而变化的&#xff0c;交换机的许多接口与路由器接口完全一样。接下来就由杭州飞畅的小编来为大家介绍下交换机的接口类型以及连接方式有哪些&#xff1f;一起来看看吧&#…

[渝粤教育] 重庆工业职业技术学院 汽车安全与舒适系统维修 参考 资料

教育 -汽车安全与舒适系统维修-章节资料考试资料-重庆工业职业技术学院【】 认识汽车数据总线系统 1、【单选题】开发CAN总线的公司是 A、西门子 B、摩托罗拉 C、BOSCH D、爱立信 参考资料【 】 2、【单选题】本地内部连接网络&#xff0c;又称“局域子系统”的英文缩写是 A、L…

什么是有线电视系统?有线电视系统的组成部分是什么?

有线电视是通过同轴电缆、光缆为主要传输媒介&#xff0c;向用户传送本地、远地及自办节目的电视广播数据通信系统。有线电视既可以传输模拟电视信号也可以用来传输数字电视信号。 有线电视系统主要由信号源、前端部分、干线传输部分和分配部分组成。 1、信号源接收部分&…

分而治之_编写干净的测试–分而治之

分而治之好的单元测试应该仅出于一个原因而失败。 这意味着适当的单元测试仅测试一个逻辑概念。 如果我们要编写干净的测试&#xff0c;则必须识别那些逻辑概念&#xff0c;并且每个逻辑概念只编写一个测试用例。 这篇博客文章描述了我们如何识别从测试中发现的逻辑概念&…

[渝粤教育] 长沙航空职业技术学院 液压与气动技术 参考 资料

教育 -液压与气动技术-章节资料考试资料-长沙航空职业技术学院【】 随堂测-液压传动原理 1、【单选题】液压传动是以液体的&#xff08; &#xff09;能来传递动力的。 A、化学能 B、动能 C、势能 D、压力能 参考资料【 】 2、【单选题】液压传动是以&#xff08; &#xff09;…

万兆交换机与千兆交换机的区别有哪些?

交换机的发展经历了百兆、千兆&#xff0c;随着广大用户对数据传输要求的提高&#xff0c;因此有了现如今万兆交换机。百兆交换机正在逐步退出舞台&#xff0c;但是千兆交换机与万兆交换机的使用情况不相上下&#xff0c;那么&#xff0c;在什么情况下我们应该选择千兆交换机&a…

酒店电视方案 酒店建设高清数字电视系统的解决方案

近年来&#xff0c;随着互联网的发展&#xff0c;数字电视系统已经成为趋势。酒店作为旅游休闲的重要场所&#xff0c;为宾客提供高清的电视信号是非常有必要的。数字电视接入系统是宾客了解酒店资讯、观看电视电影、进行娱乐放松等的重要载体&#xff0c;其电视信号的质量对于…

将Spring Boot应用程序与Amazon Cognito集成

在本文中&#xff0c;我们将展示如何使用Spring Security 5.0中引入的OAuth 2.0客户端库 &#xff0c;在Spring Boot应用程序中为身份验证用户使用Amazon Cognito服务。 什么是AWS Cognito&#xff1f; Amazon Cognito是由AWS提供的服务&#xff0c;除了提供对访问AWS服务的授…

【渝粤教育】国家开放大学2018年春季 7402-22T社会问题 参考试题

试卷编号&#xff1a;7402 座位号 2017——2018学年度第二学期期末考试 社会问题 试题 2018年7月 答题框&#xff1a; 1&#xff0e;社会问题研究的&#xff08; &#xff09;功能是回答社会问题是怎样的。 A、描述性研究 B、解释性研究 C、预测性研究 D、规范性研究 2&#…

网管型工业以太网交换机的几种管理方式

网管型工业交换机按其字面上的意思就是可以网络管理的交换机&#xff0c;管理方式有三种&#xff0c;可通过串口管理、可通过Web管理、通过网管软件管理&#xff0c;提供了基于终端控制口(Console)、基于Web页面以及支持Telnet远程登录网络等多种网络管理方式。因此网络管理人员…

【渝粤教育】国家开放大学2018年秋季 0359-21T会计学原理 参考试题

试卷编号&#xff1a;0390 座位号 2018—2019学年度第一学期期末考试 古代诗歌散文专题试题 2019年1月 1&#xff0e;在四言诗的发展史上&#xff0c; 是一个具有转折意义的人物&#xff0c;他突破了《诗经》的格局&#xff0c;为四言诗注入了新的活力。 2&#xff0e; 是屈原…

有线电视的现状与发展,全国一网与广电5G一体化建设

2020年&#xff0c;中宣部印发《全国有线电视网络整合发展实施方案》&#xff0c;国家广电总局对《方案》进行贯彻落实&#xff0c;就“全国一网”整合工作进行动员部署。从“三网融合”到“全国一网”&#xff0c;终于不再只是纸上谈兵&#xff0c;而是已经提上日程。 按照《…

网管型交换机和非网管型交换机的区别

随着互联网的普及&#xff0c;我们对于交换机的需求是越来越多&#xff0c;也是越来越重要。关于交换机这一块&#xff0c;我前面介绍过它的分类&#xff0c;看过的朋友应该都知道&#xff0c;交换机可以分为网管型交换机和非网管型交换机&#xff0c;看其字面意思已经很明确的…

【渝粤教育】国家开放大学2018年秋季 0731-22T书记员工作与实务 参考试题

试卷代号&#xff1a;1013 金融统计分析试题答案及评分标准&#xff08;半开卷&#xff09; &#xff08;供参考&#xff09; 2019年1月 一、单项选择题&#xff08;每小题2分&#xff0c;共40分。每小题有一项答案正确&#xff0c;请将正确答案的序号填在括号内&#xff09; 1…

网络监控系统中如何选择工业交换机?

做网络网络监控系统工程项目的朋友应该都知道&#xff0c;一个中大型网络监控系统不可能单独使用一台或者几台工业交换机就能实现传输效果&#xff0c;这个需要进行工业交换机级联&#xff1a;分别选择不同的工业交换机作为接入层、汇聚层和核心层。你们&#xff0c;我们在做项…

IPTV是什么 IPTV有什么功能

IPTV即交互式网络电视&#xff0c;是一种利用宽带网&#xff0c;集互联网、多媒体、通讯等技术于一体&#xff0c;向用户提供包括数字电视在内的多种交互式服务的崭新技术。它能够很好地适应当今网络飞速发展的趋势&#xff0c;充分有效地利用网络资源。 IPTV既不同于传统的模…

选择交换机需要了解的一些性能参数

工业交换机主要是应用于复杂的工业环境中的实时以太网数据传输&#xff0c;这就要求我们在选购工业交换机时必须对产品的性能有所了解&#xff0c;要求我们所选购的工业交换机产品能够符合当下的工业环境要求。那么&#xff0c;新手在选购工业交换机时主要需要参考那些因素呢&a…

工业以太网交换机的重要技术参数分析

在当下的网络发展进程中&#xff0c;以太网交换机可以说是发挥了很重要的作用&#xff0c;特别是随着ASIC技术的不断发展&#xff0c;以太网交换机在产品性能及价格方面得到了极大的提升&#xff0c;使得以太网交换机技术有了更广阔的发展空间。以太网交换机就是在强大的ASIC芯…

如何在Java中使用Zxing和JFreeSVG创建QR Code SVG?

在本文中&#xff0c;我们将研究如何使用Zxing QR代码生成库和JFreeSVG库在Java中创建QR Code SVG图像。 QR码生成 下面的代码使用Zxing库创建一个表示QR Code的java.awt.image.BufferedImage对象&#xff1a; public static BufferedImage getQRCode(String targetUrl, int w…

以太网应用于控制时存在的问题

现如今&#xff0c;随着网络技术的发展&#xff0c;以太网传输可以说是深受一些大用户的喜爱&#xff0c;但是传统的以太网是一种商用网络&#xff0c;如果要应用到工业控制中还存在一些问题&#xff0c;主要有以下几个方面。接下来我们就跟随飞畅科技的小编一起来看看吧&#…