`
vipshichg
  • 浏览: 266828 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

项目总结—敏捷测试中多环境如何做到版本控制

    博客分类:
  • java
阅读更多
 软件开发流程中,测试环境是不可或缺的,那涉及到的问题包括,需要多少个环境、分别做什么用,有了环境就要考虑如何部署,部署的时候如何做到版本控制,要保证测试人员进行有效的测试,减少测到一半不能测的情况或者说完全测不下去的情况,相信谁都不愿看到工作被Block住。
  环境这个东西尽量不要搞得太多,执行的人记不住,也會導致推一個版本需要很長的時間;太少也不好,环境混杂的話,测试没有办法测试,开发没有办法调试也很麻烦。另外,测试环境需要有套干净的环境。两个层面,一个是测试数据需要是干净的,符合业务逻辑的;另一个是只有测试可以动到环境,开发不能在上面调试。严格意义上来说,我经历的第一个项目,环境管控的很好,任何环境开发都是不会上去调试的,大家都有自己的调试环境。那你可能会问,有些特定数据产生的问题就要去测试环境调试啊,那我们应该把DB分开,开发人员有自己的库,测试环境固定为1~2个库,有需要调试的时候就换到测试环境的库。这样应该是更合理的做法。
  這里同樣有不同项目需要不同考量的情况。举例来说,如果只是單方開發的項目,从版本上说基本上有個HEAD版本、BRANCH版本就好,如果再有其他测试用途可以再架其他的环境,例如Performance,因为会有不同的需要;如果是多方共同開發的項目,那可能就需要说有alpha、beta,不仅是单方的alpha、beta,还要分alpha(beta) for one side & alpha(beta) for both sides(这里我持保留意见,因为alpha env. for both sides integration的意义并不大,因为能串接的功能实在有限)。但从测试的角度,无论是alpha、beta、HEAD或是Branch,基本的要求都应是开发人员不能碰到的,为什么?因为开发应该有自己的环境起个服务,把包装一下就可以调试了。另外还牵扯到一个问题,客户的要求是什么?所以除了满足基本原则外,还要在项目开始之前与客户达成一致的标准,这些事情不要在后面再干扰到项目进程。
  需要多少环境、分别做什么用的部分商榷好後就要来讨论,如何做到可以快速的推版本到某个環境进行测试。同样有两个层面的意思,一个是推到某个环境,一个是保证质量。如果项目上通过持续集成开发来进行项目管理,第一个问题就很好解决,只要点一下Run job就好。解決第二个問題才是关键。只有质量有保障了之后才可以推出去进行Regression。其实这个问题的本質應該是代碼質量要有所保證,有完善的unit test、automation testing,每個bug fix或者feature change经过pair review才commit,开发人员对自己负责的功能在自己的开发环境上测试过才commit code,才能以最快的速度deploy,進行smoke testing,再部署到下一个环境進行regression testing。
  先简单说下持续集成(CI: Continuous Integration),我接触过的两个工具一个是CruiseControl,一个是Hudson(Jenkins)。持续集成的理念是每个开发人员在本地开发所负责的功能过程中,commit code到代码版本库(例如,SVN),这个commit应尽量以小单位进行,而不是所有功能开发完之后才提交。通过配置job进行unit test、代码规范性检查通过後(一般情况下job状态为蓝灯),再进行打包,例如java的项目可能是打war或是jar包。若无特别的情况就可以进行deploy了,基本上这之前都会有环境依赖的相关job,例如需要什么依赖包啊之类的。谁来执行部署等一些工作呢,可能是maven、ant或者是make等等,这部分的选取也是通过项目本身情况考虑了。通过持续集成是可以很好的管理你的项目,让项目在进入测试之前就具有良好的品质的,当然这取决于项目从一开始就秉承测试先行的理念,每个function都要有Unit Test。要让Unit Test发挥它的价值,不是为了单元测试而写单元测试,不然就等于浪费时间。至于CI这部分如果我有能力稍後再sharing出来吧
  既然有CI,有Unit Test,有pair review这几道关理论上应该就能很好的保证代码质量,为快速部署一个可测试的版本提供保障。其他的工作就要看测试怎么做了。例如在HEAD或Alpha环境上如何进行测试,何时可以进入到下一个环境等等。之前我经历的项目会定义一个code freeze date,在这个时间点必须切一个Branch出来,部署到branch的环境上进行测试,但这样的执行方式应该是运行的比较好的项目,可以控制好这个时间。但如果项目紧、需求变更多这种方式就不适用,需要灵活处理。比如说,HEAD或者ALPHA环境上的版本基本上还都处于开发阶段,大部分情况是没有办法把大流程走下去的,没有办法进行regression testing,所以alpha上为了验证版本是否可用,可以进行smoke testing,如果遇到版本很不好的情况,该拒绝测试就要拒绝测试。但这里有个矛盾点,当发现了大问题之后就停止测试的话,可能有潜藏的大问题并未被发现、修改,下个版本还是存在,那可能就会造成反复工作量,所以这里我还是建议说可以完整的进行完smoke之后把整体情况反馈给开发。在相应模块流程调通、功能趋于稳定之后再进行regression testing。趋于稳定可以从两个方面获得,一个是新bug的产生率,二个是P1,P2 bug的close情况。这也牵扯到了测试开始之前定义的标准,例如Entry criteria & Exit criteria。符合了定义好的标准之后才可以进入到测试下一阶段,同样下一个环境或者阶段也应该达到相应标准之后才可以进入。
  从这个角度来说,我觉得如果PM看不到这个情况或在项目很紧的时候,测试应该有这样的power说,现在的情况不能进入新功能的开发,或者是不能进入下一个环境,不然只会让项目越来越糟,肯定无法按期交付。这里又补充到了一个规范标准的定义,这其实是应该是制定在测试计划中的,每个阶段或者每次大型测试之前都应制定相应的计划,来衡量测试的结果是否达到预期,是否可以进行后续开发。
6
1
分享到:
评论

相关推荐

    敏捷模式下的敏捷测试研究(敏捷测试与cmmi结合)

    总结来说,敏捷测试与CMMI的结合要求我们在敏捷环境中引入系统的质量管理和控制措施,同时保持敏捷的敏捷性。通过不断优化测试策略,实施有效的质量管理,我们可以确保在快速迭代的同时,也能够提供高质量的产品。

    软件项目总结报告.doc

    在项目总结报告中,可能会提到源码管理、版本控制工具(如Git)的使用,代码规范的遵循,以及代码审查的重要性。源码的组织结构、模块化和设计模式的运用也是评估项目技术质量的重要方面。 【工具】在软件开发过程...

    敏捷mini培训总结

    1. **版本控制**:如Git,是敏捷开发的基础,它记录了代码的每次变更,便于回溯和协同。 2. **分支策略**:例如GitFlow或GitHub Flow,帮助团队在主分支上保持稳定,同时在独立分支上开发新功能或修复问题。 3. **...

    软件项目总结报告模板.pdf

    《软件项目总结报告》 软件项目管理是信息技术领域中至关重要的一环,它涵盖了从项目启动到项目交付的全过程。此报告旨在对一个软件项目的各个方面进行深入的总结与分析,以便于未来的项目参考和改进。 1. 软件...

    软件项目总结报告.docx

    - **开发工具**:列出项目中使用的编程语言、版本控制系统、集成开发环境(IDE)、自动化测试工具等,这些工具对于软件开发的效率和质量至关重要。 - **开发环境**:描述了项目运行的硬件和软件配置,包括操作系统、...

    软件工程中的版本控制与集成管理.pptx

    ### 软件工程中的版本控制与集成管理 #### 第一章:软件工程概述 - **软件工程定义**:软件工程是一门系统化的学科,它关注于软件产品的开发与维护,涉及从需求分析到最终产品发布的整个过程。 - **软件生命周期**...

    基于城市环境的高效物流系统+项目总结

    4. **项目总结** - **完成度**:团队完成了系统的开发,并进行了实际应用测试,达到了预期的功能需求。 - **心得体会**:在开题、管理、团队协作、市场分析和文档编写等方面,团队成员收获了宝贵的实践经验。 5. ...

    软件工程实践中的软件变更管理与版本控制.pptx

    - **Git**:最流行的分布式版本控制系统,广泛应用于开源项目和个人项目中。 - **SVN (Subversion)**:集中式版本控制系统,适合于需要集中管理的大型组织。 - **Mercurial**:另一种分布式版本控制系统,具有...

    专题资料(2021-2022年)04项目总结报告.doc

    - **开发工具**:列举了项目中使用的编程语言、版本控制工具、集成开发环境(IDE)、测试工具等,这些工具的选择和使用直接影响到开发效率和软件质量。 - **开发环境**:描述了开发人员的工作环境,包括硬件配置、...

    测试过程控制程序.pdf

    测试过程控制程序是软件开发...以上内容仅根据标题和描述的线索推测,实际的测试过程控制程序可能会包含更详细的操作步骤、工具选择、测试环境的设置、沟通和协作机制等。为了获得全面的理解,需要查看完整的文档内容。

    guide测试指引项目

    2. 测试环境搭建:包括硬件、软件、网络配置等,模拟真实的运行环境。 3. 测试用例设计:编写明确、可重复的测试步骤,预期结果以及判定标准。 4. 缺陷管理:如何记录、跟踪和报告问题,以及处理缺陷的优先级和严重...

    计算机项目管理期末总结

    复杂性,由于软件涉及多层面的设计、编码、测试等环节;一致性,软件需满足预定规格和用户需求;灵活性,软件产品需要适应不断变化的环境和需求。 PMBOK(项目管理知识体系)是项目管理专业协会(Project ...

    软件测试 金融项目第4期

    根据给定文件的信息,我们可以提炼出以下IT及...以上总结的知识点涵盖了从测试策略、自动化测试、合规性、测试改进到测试在异构环境下的应用等多个维度,为金融项目中的软件测试人员提供了丰富的学习资源和实践指南。

    Git分布式版本控制系统权威指南视频教程

    - **Git的概念**:Git是一款开源的分布式版本控制系统,用于追踪在软件开发过程中对文件的修改历史,方便多用户协同工作。 - **Git的发展历程**:由Linus Torvalds于2005年创建,最初是为了更好地管理Linux内核源...

    行业分类-设备装置-测试平台、测试设备及其控制方法.zip

    总结来说,"行业分类-设备装置-测试平台、测试设备及其控制方法"这一主题涵盖了测试领域的广泛知识,包括测试环境的搭建、测试工具的选择与使用、自动化测试的实施、测试策略的规划以及问题诊断等多个方面。...

    敏捷中的配置管理,感觉有帮助,感谢作者

    配置管理在敏捷项目中至关重要,它不仅有助于保持代码版本的一致性、追踪变更历史,还能确保不同阶段之间的可追溯性和可回溯性。通过有效的配置管理策略,团队可以在保证质量的同时加快交付速度。 #### 四、RTC中的...

Global site tag (gtag.js) - Google Analytics