`

JAVA持续集成解决方案

 
阅读更多
敏捷方法倡导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持续集成是软件开发过程中的一个关键实践,它旨在频繁地合并开发人员的代码更改,以便尽早发现并解决潜在的问题。这个过程通过自动化构建、测试和部署,确保代码的质量和项目的稳定性。持续集成(Continuous ...

    PHP持续集成实践

    本实践主要围绕jenkins、sonar、sonar-runner等工具展开,构建一个适用于PHP项目的持续集成解决方案。 一、PHP持续集成的核心概念 1. **持续集成**:在开发阶段,开发者频繁地将自己的代码合并到主分支,每次合并...

    jenkins持续集成单元测试和findbugs问题解决方案

    jenkins 持续集成单元测试和 findbugs 问题解决方案 jenkins 是一个开源的自动化服务器,可以用于自动构建、测试和部署软件项目。jenkins 提供了许多插件来支持各种类型的项目,包括 Java、C++、Python 等。今天,...

    持续集成-Maven-nexus-SNV-jenkins架构

    Jenkins与Maven、Nexus、SVN等工具紧密集成,形成了一套完整的持续集成解决方案。 ### 二、工作流程 #### 2.1 代码提交与检测 开发者在本地完成代码编写后,将其提交至SVN仓库。SVN会记录每次提交的信息,包括...

    java前人经验之集成

    14. **持续集成/持续部署(CI/CD)**:Jenkins、GitLab CI/CD等工具的使用,可以自动化构建、测试和部署流程,提高开发效率。 通过阅读"Java五百篇"这样的资源,你可以深入学习这些知识点,并将前人的经验转化为...

    持续集成-构建接口自动化测试的一种解决方案.docx

    ### 持续集成——构建接口自动化测试的一种解决方案 #### 技术背景 在软件开发过程中,持续集成(Continuous Integration, CI)已经成为提高软件质量、加快交付速度的重要手段之一。它通过频繁地将代码合并到主...

    技术解决方案[TS].zip

    10. **持续集成/持续部署(CI/CD)**:现代软件开发强调自动化,因此解决方案可能包括Jenkins或GitLab CI/CD配置,以自动化构建、测试和部署流程。 综上所述,"技术解决方案[TS].zip"可能包含了一个全面的Java项目...

    构建全栈式Flex、BlazeDS和Spring集成解决方案–第一部分 创建Maven Flex模块

    构建全栈式Flex、BlazeDS和Spring集成解决方案:创建Maven Flex模块 在富互联网应用(RIA)领域,Adobe Flex以其丰富的用户界面和高性能的数据处理能力,成为了开发者们的首选工具之一。随着技术的不断发展,将Flex...

    深入探索 Java 与 GitLab CI 的集成艺

    GitLab CI/CD 正是在这样的背景下,成为了 Java 项目持续集成和持续部署的强大助力。本文将深入探讨 Java 与 GitLab CI/CD 的集成,揭示如何通过自动化流程提升 Java 项目的构建、测试和部署效率。 通过将 GitLab CI...

    JAVA技术摘要(内容荟萃的解决方案)

    这份"JAVA技术摘要(内容荟萃的解决方案)"涵盖了Java技术的多个关键方面,为开发者提供了一站式的知识宝库。以下是根据描述和标签提炼出的一些主要知识点: 1. **Java基础**:Java是一种面向对象的编程语言,它的...

    Java 集成开发实例精解源码

    10. **持续集成/持续部署**:Jenkins或GitLab CI/CD流程的配置和实践。 通过这些实例,开发者不仅可以学习到具体的编程技巧,还能了解到软件开发的最佳实践,包括代码组织、设计模式、异常处理、性能优化等。这些都...

    无人机后端开发java无人机后端开发java

    10. **持续集成与持续部署(CI/CD)** 使用Git进行版本控制,Jenkins、Travis CI或GitHub Actions进行自动化测试和部署,确保代码质量和项目流程的高效。 11. **监控与日志** 通过集成如ELK Stack(Elasticsearch...

    jenkins_svn_maven持续集成.docx

    #### 六、常见问题及解决方案 在实现Jenkins、SVN与Maven持续集成的过程中,可能会遇到以下几种常见问题: - **NoclassDefFoundError异常**:如果出现类似“java.lang.NoClassDefFoundError: hudson/maven/agent/...

    Jenkins与网站代码上线解决方案.docx

    Jenkins是一个广泛使用的开源持续集成工具,它采用Java编写,可以在诸如Apache Tomcat这样的Servlet容器中运行。Jenkins的主要功能包括自动化软件开发的持续集成服务,支持多种版本控制系统(如AccuRev SCM、CVS、...

    Jenkins+Gitlab持续集成综合实战1

    Jenkins+Gitlab的持续集成解决方案结合了Gitlab的版本控制功能和Jenkins的自动化构建能力,为软件开发团队提供了一套完整的DevOps流程。通过持续集成,团队可以更快地发现并修复问题,保证软件质量;而持续交付和...

    使用Java Web服务构建SOA

    Spring框架提供了一套完整的SOA解决方案,包括Spring-WS(用于创建契约优先的Web服务)和Spring-Integration(支持ESB(Enterprise Service Bus)功能)。Spring-WS基于XML Schema,允许开发者以类型安全的方式定义...

    Docker与Java应用的无缝集成:容器化技术的最佳实践

    Docker作为一种流行的容器化技术,为Java应用的部署、扩展和管理提供了一种高效、轻量级和可移植的解决方案。本文将深入探讨Docker与Java应用的结合使用,包括容器化的概念、优势、实施步骤、持续集成/持续部署(CI/...

    研究院工业云图解决方案.pdf

    JAVA EE体系是指工业云图解决方案中使用的JAVA EE技术体系。JAVA EE体系是一种基于JAVA技术的企业级应用平台,提供了一个灵活、高效的开发环境。 8. SOA服务体系架构 SOA服务体系架构是指工业云图解决方案中使用的...

    Java 集成 Teamcenter

    10. **持续集成与部署**:将Java应用集成到Teamcenter后,还需要考虑持续集成和持续部署(CI/CD)流程,确保代码变更能够快速、可靠地部署到生产环境。 总之,Java集成Teamcenter是一个复杂的过程,涉及多方面的...

Global site tag (gtag.js) - Google Analytics