过去了5年了,现在再来回顾当初做的持续集成实践似乎有些晚了,我的确脱离开发太久了。
暴经历:
09年公司刚开使推行持续集成时,我作为刚接触IPD流程不久的小白,对持续集成一无所知;同时作为组内的急先锋匆匆忙忙就上阵了。等到10年底持续集成即将在全公司推广的时候,我却离开了,可谓虎头蛇尾。
==============================
这里谈不足,主要是回顾持续集成实践一年多的时间里,我所做的工作的不足。
公司所用CI工具是CruiseControl的二次开发版本,基于ant做build。而此时我们的java 项目还是依赖于eclipse的手工归档(这里不得不吐槽:先编译成class,手工统计更改的 java 类,再手工把对应的class用rar拖入上一版的jar包,土到家了)。
首先要面临的问题:如何自动打包归档。
当时还是太保守了,本着线上安全大于一切的原则,将之前的手工操作,用shell+ant来代替。 因为项目不是处于时刻能发布的状态,给后面的集成测试环境自动部署带来不小麻烦。 当时实际应该协调测试部进行全量测试后,一次性的解决“随时可发布”问题,一个人搞,在协调工作和沟通工作没有做到位。
接下来是代码规范和bug清零:findbug清零,checkstyle检查和pmd的圈复杂度。
由于自动UT的缺失,在bug清零和降低圈复杂度上推进很困难,原因就在于:无法确定修改代码的正确性,pmd的圈复杂度始终降不下来。
最困难的是UT:代码覆盖率
除新代码的UT用例外,还要补充老代码的UT,还要不影响项目进度。大大增加了开发人员的工作量,在合作团队里造成一些抵触。还有老代码很少考虑测试性,与DB ,第三方耦合过紧。当时相当于放弃了UT测试(不再测试方法),而直接针对业务流程的正确性做UT。 这样的好处是少量的测试代码能显注的提高代码覆盖率,但却失去了UT的本义。当时是有些急功近利了(CI报告好看)。
当时的感觉是“一个人在战斗”,与公司其它CI负责人的交流很少。自已的沟通能力不足是一方面,另一方面公司缺少这种跨部门交流的氛围。我觉得应该是考核导向的原因,持续集成各项指标达标以后,关注CI的精力大大减少了。虽然QA保持每月对CI报告进行通报,但稳定的CI报告下面究竟隐藏着多少问题呢?
与持续集成相符相成的敏捷开发,在我看来一直都流于开晨会这种形式,无法真正敏捷起来(缺少持续集成的保护),很失败。抛开缺少敏捷基因的原因,我觉得和项目环境关系很大。
首先电信项目,是传统的甲方乙方这种的IT外包项目。项目从实施到开发都没有敏捷的动力:客户追求的是稳定,项目组追求的是低成本。对于只增加工作量,不增加效益的工作天生就是抵触的。这种抵触情绪会传遍整个项目组,本身外包团队就缺少技术氛围,这下使得团队更加的拒绝变化。这一特点在回到河南(客户第一线)来以后更是明显:成员(包括我)本能的通过裁剪开发流程(丢弃开发规范)来适应快速变化,而不是提高开发效率,基本上和一些小公司作坊式的开发一样,没有规范,没有文档,更没有持续集成,客户也习惯了这种方式。 使刚从总部回来的我,有些不适应。
相关推荐
接下来,系统集成实践中的几点重要心得: 1. **CI(持续集成)与过程及敏捷开发**:CI是敏捷编程中的关键实践,确保每个迭代的交付件都经过完整集成和测试,以保证质量。CI的引入改变了开发流程,要求开发人员频繁...
徐毅在演讲中也提到了如何扩大影响力,比如鼓励开放式沟通、建设专业的团队、推动持续集成和ATDD等实践,并成为社区的积极分子。这些都是敏捷教练可以采取的步骤,来推动敏捷在组织内的传播和实践。 10. 知识共享和...
- **持续集成/持续部署(CI/CD)**:自动化软件构建、测试和部署过程。 - **维护策略**: - 纠正性维护:修复已发现的问题。 - 完善性维护:增加新功能或改进现有功能。 - 预防性维护:改进软件结构,提高未来可...
3. **成功销售人员的三个境界**:从业余到专业,成功的销售人员需经历从理解基本技能到熟练运用,再到掌握复杂策略的转变。 4. **八大核心销售技能**: - **基本拜访步骤**:预习、检查分销、劝说销售、收款、助销...
我学习了如何编写脚本,执行回归测试,并通过持续集成工具如Jenkins实现自动化测试流程。 五、缺陷管理与跟踪 当发现软件缺陷时,我们会使用Bugzilla或Jira等工具记录、分类和追踪。了解如何准确描述问题,设置...
然而,日语课成了我的难题,语言天赋的缺乏和记忆力的不足使我在日语学习上遭遇挑战,但我仍然尽力去学习,特别是喜欢日语教师的授课风格。 随着培训的结束,我们进入了项目实施阶段,包括需求分析、概要设计、具体...
在过去的几年中,我与多家初创公司合作,我亲身经历并亲眼目睹了实践(或缺乏实践)如何影响团队的情感幸福感。 因此,本着乔尔·斯波斯基(Joel Spolsky)测试的精神,我提出了自己的高度认可的清单,以建立...
我学会了使用Git进行版本控制,以及Jenkins进行持续集成,这些工具对于软件开发的效率提升有着显著作用。 在实习期间,我还接触了数据分析和机器学习。使用Python的Pandas库处理数据,运用Matplotlib和Seaborn进行...
我深刻体会到自我学习的重要性,因为我发现自己的知识还有很大的不足。实习不仅提升了我的专业技能,也激发了我进一步探索和学习的热情。 总的来说,这次实习是一次宝贵的经历,它让我们从理论走向实践,从学生转变...
瀑布模型是一种线性的开发方法,而敏捷开发强调迭代和快速反馈,DevOps则进一步强调开发和运维的无缝集成,通过自动化工具链实现持续集成、持续交付和持续部署。云原生的精益制造理念借鉴了丰田精益生产系统,注重...
因此,持续学习新的测试理论、方法和技术,如敏捷测试、持续集成、性能测试等,是保持竞争力的关键。 总的来说,作为一名软件测试工程师,要善于利用网络资源,多动手实践,深入思考,不断提升自己的技能和知识水平...
- **持续集成与测试**:强调了持续集成和自动化测试在敏捷开发中的重要性,以确保软件质量。 - **用户故事与验收标准**:解释了如何编写清晰的用户故事并定义明确的验收标准。 ##### 3.4 敏捷项目的维护与优化 - **...
例如,通过迭代回顾总结、自动化工作量评估、敏捷计划会议、持续集成和质量红线等工具和实践,来提升项目的效率和质量。 为了保证敏捷开发的成功,企业需要构建强大的敏捷能力体系,包括敏捷教练的培养、精益需求...
这与IT行业的质量管理和持续改进理念相似,如软件开发中的持续集成和持续交付(CI/CD),通过不断评估和优化流程来提高产品质量和团队效率。 7. 自我反思与总结:每个个人学习总结都包含了对过去工作的反思和总结,...
根据提供的文件信息,我们可以提炼出以下相关知识点,主要聚焦于Java程序员在开发过程中经历的转正答辩准备,包括个人简介、工作回顾、项目流程分析、工作体会等方面。 ### 一、个人简介与工作回顾 #### 1.1 入职...