敏捷方法倡导java持续集成,并输送很多有用的工具。当前比较流行的持续集成服务工具有
1) apache continuum
2) CruiseControl
配套做持续集成的工具包有
1) JUnit 单元测试
2) JUnitPerft或者eclipse tptp 做单元性能测试
3) 数据库DDL初始化语句
4) EasyMock 等模拟工具
5) PMD,checkStyle,FindBug分析工具
6)httpUnit HTTP接口测试
7) purify/Jprofile 动态分析
8) EMMA/Clover度量代码覆盖率
9) JAVANCSS度量代码复杂度
10) JDepend 度量耦合度
10) 构建工具ant,
11) 部署脚本
12)分布式分发框架staf/stax
--------------------------------------------------------------------------------------------
对持续集成的一点看法
持续集成,即Continuous Integration,以前叫daily build,其实是同一回事,它们主要的区别在于持续集成强调的是及时反馈以及集成频率。及时反馈是在构建或者测试用例失败后能快速的向开发人员提供反馈,同时其集成频率也要比daily build的更加频繁。那么什么是持续集成呢?我的看法是:持续集成是频繁的、持续的从源码服务器中check out 最新代码,进行自动编译,自动生成二进制代码,并运行针对现有代码的测试用例,并及时反馈结果。从以上定义看出持续集成需要有一个源码仓库来统一管理源代码,需要自动构建,比如用maven来自动构建,以及一个持续集成的工具,比如hudson。
以前错误的认为持续集成只要编译通过就好,其实不然,还应包括一个重要的部分—–测试,通过运行更详尽的测试集可以大大提高持续集成的价值,因此会首选更详尽的测试。如何保证测试集的完备性,需要详细分析业务以及让测试脚本包含所有校验点。我在刚开始做topApi测试时,有时候为了赶进度,在测试接口时只是人肉观察数据库或者页面相关字段的变化,而没有用脚本实现校验点,这样是非常不好的,可能在测试的当时用例都是成功,逻辑也是正确,但如果后续服务端代码开发不小心改错了,或者相应接口后续要重构了,那到时候再来回归这些脚本的话,这些脚本其实是不可信的,很有可能会由于一些校验点没有用脚本实现而遗留bug,当然也就失去了持续集成中测试代码的价值。
持续集成在topApi这边发挥了很大的作用。api接口调用了各业务方的接口,如果业务方改动相应接口或者进行版本升级,通过持续回归相应测试用例来保证对应接口的改动或者版本升级是否对top对外接口有影响,同时top这边也会有一些对现有接口新增需求,一般也通过回归测试用例来保证新增功能不会对接口原有功能有影响。因此,个人认为,持续集成的最大好处是能够让开发者充分相信自己修改代码不会对现有功能带来较大问题,更不会因为一些低级bug带来故障,当然,这必须保证现有测试集以及校验点的完备性。
由于持续集成强调的频繁的集成,因此势必会有代码的维护成本和集成的时间成本。还是以topApi为例,目前api的测试用例有3000多个,回归商品接口的所有用例至少需要1个半小时,同时跟进分析报错的测试用例,也要花很多时间,这个时间人力成本还是很大的。但比起遗留bug到线上,我觉得这个成本还是很有必要投入的,毕竟鱼和熊掌不可兼得.
分享到:
相关推荐
软件架构指的是软件的顶层结构,而架构设计是为了应对软件系统的复杂度而提出的解决方案,并不是所有的项目都需要架构,在错误的地方去做架构只会本末倒置 然后说java架构师,那就是在java领域内解决这个问题的人员...
编写的持续集成软件。 Cerberus 可以定期从调度程序运行以检查应用程序测试是否被破坏。 在测试失败的情况下,Cerberus 将通过各种方式发送通知警报。 Cerberus 完美适用于 Windows 和 *nix 平台。 有关更多 CI 理论...
EJB在这里很重要—或更具体地说,是在Java环境中持续加入功能设施,以允许编写多特征的客户机和服务器。CORBA和标准企业应用程序的集成也会作为有用的功能设施提供,而不是为每个应用程序编写代码。 其次,CORBA会...
1.1.2 解决方案 1 1.1.3 工作原理 3 1.2 配置Spring IoC容器中的Bean 4 1.2.1 问题 4 1.2.2 解决方案 4 1.2.3 工作原理 4 1.3 调用构造程序创建Bean 14 1.3.1 问题 14 1.3.2 解决方案 14 1.3.3 ...
1.1.2 解决方案 1 1.1.3 工作原理 3 1.2 配置Spring IoC容器中的Bean 4 1.2.1 问题 4 1.2.2 解决方案 4 1.2.3 工作原理 4 1.3 调用构造程序创建Bean 14 1.3.1 问题 14 1.3.2 解决方案 14 1.3.3 ...
iotStudio是国内首款轻量级开源工业物联网持续集成平台管理端, 全低代码框架,支持动态菜单、amis动态表单、konva大屏和threejs的3d大屏。我们致力于为5类客户提供物联网解决方案:国企/研究院:平台代码开源,无版权...
iotView是国内首款轻量级开源工业物联网持续集成平台管理端, 全低代码框架,支持动态菜单、amis动态表单和knova大屏。我们致力于为5类客户提供物联网解决方案:国企/研究院:平台代码开源,无版权产权困扰,国产无...
iotView是国内首款轻量级开源工业物联网持续集成平台管理端, 全低代码框架,支持动态菜单、amis动态表单和knova大屏。致力于为5类客户提供物联网解决方案:国企/研究院:平台代码开源,无版权产权困扰,国产无“卡脖...
该存储库是使用Gradle构建的,用于持续集成和交付。代码评估网站: : 我的个人资料: : 我的解决方案: 科丁巴特网站: : 我的解决方案: 破解代码面试网站: : //...
持续集成 - 自动化部署 - 系统监测 - 无缝升级 的全方位J2EE企业级开发解决方案。 项目介绍 基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构,提供整套公共微服务服务模块:内容管理、支付中心、用户管理...
单点登录,文件上传下载,缓存,分页,熔断跳转页面,CDN,持续集成等功能 开发环境 操作系统:Windows 7 Enterprise 开发工具:Intellij IDEA 2018 数据库:MySQL 5.7.22 Java SDK:Oracle JDK 1.8.152 部署环境 操作...
SCUI 是一个中后台前端解决方案,基于VUE3和elementPlus实现。 使用最新的前端技术栈,提供各类实用的组件方便在业务开发时的调用,并且持续性的提供丰富的业务模板帮助你快速搭建企业级中后台前端任务
Zookeeper分布式微服务架构解决方案编写的实战项目 众所周知微服务要解决的最大问题就是网络不可靠的问题,而服务之间的通行可以用Dubbo 这款轻量级的开源 Java RPC 分布式服务框架:Dubbo提供了三大核心能力:面向...
持续集成解决方案。它处理任何大小的代码库 存储库或巨大的单回购。 ***可扩展到您的需求**:轻松添加对新语言和 使用Bazel熟悉的扩展语言的平台。共享和重复使用语言 由不断壮大的巴泽尔社区制定的规则。
阿里巴巴为打造Dubbo微服务生态持续开源了Sentinel,Nacos,Seata等微服务中间件框架,并且推出了SpringCloudAlibaba来提供微服务开发的一站式解决方案,阿里巴巴在Java社区持续活跃起来,也为Java微服务开发注入了...
| | | |大纲为什么选择WSO2 Integration Studio 运行完整的开发生命周期您可以使用WSO2 Integration Studio来执行集成解决方案的完整开发生命周期: 创建集成工件。 构建并测试工件。 调试和迭代(改善工件)。 ...
Java最佳实践 我从事Java应用程序的编程,设计和架构工作已有15年了。 我希望此页面可以作为程序员理解构建良好应用程序所需的良好起点。 我将讨论Java应用程序编码,设计和架构... [持续集成-重要问题](#continuous-
软件配置管理、构建配置和持续集成 应用分析,分析痛点并提供改进方案 集成自动化单元测试覆盖工具 敏捷估算 通过培训和指导培养能力和培养人才 领先的技术能力 认证 Kubernetes 认证管理员 (CKA) - WIP (2019) ...
10 Devops全自动化持续集成和持续交付、部署 11、KubeSphere自动化运维 12、动态扩展,弹性自动伸缩 13.高并发下的服务降级、限流实战 14.实现高并发请求和实现高可用架构解决方案 15.引入大数据技术 16、引入人工...