zoukankan      html  css  js  c++  java
  • 如果想搞日构建,需要达到什么样的条件才能做这个事情

     

    议题:请教一下,如果想搞日构建,需要达到什么样的条件才能做这个事情

     

    一、日构建前置条件
    按照以往的经验,至少要具备
    1.  工程的命令行编译(ant,maven,msbuild,devenv之类)
    2.  一体化的环境配置和释放能力
    3.  一键式部署的能力
    4.  足够多的各类测试的支撑
    5.  丰富多元化的结果呈现

     

    只要项目具备可以稳定编译和测试的过程,日构建随时都可以。

    构建初期可以只编译,逐渐加上ut,bvt测试,代码扫描等子过程。

    持续集成最重要的环节是编译,单元测试,自动化测试,这三块。
    节省人力成本这块,我之前在测性能的时候,实际上引入了持续集成,我脚本感知代码变更,然后编译生成性能测试代码,然后自动部署,测试,收集结果,曲线展示。

     

    单元测试主要是开发人员来写,自动化测试需要测试人员来做,所以我这里把它分开了,并且单元测试是基础,所以需要赢得上层的支持,才能驱动开发来做。

    问:代码变化,有可能会造成你的性能测试脚本失效维护失效脚本的开销,有统计吗?

    答:代码只要有提交,就会触发流程,进行性能测试。如果有接口方面的改动,肯定要修改测试代码的。开销没有详细统计,但是已经能感受到轻松了许多,因为每天都会跑曲线出来。

    二、    名词解释

    1. bvt测试是啥缩写啊?

    BVT是Build Verification Test

    MS的流程如下:
    fix bug -> static analysis -> code 2 bbpack -> bubby build -> check-in -> ut -> build -> deploy -> apiuia -> IDX -> preformance -> XXXXXXXXX -> mail report 2 all.

    1. CI 什么意思

    持续集成(Continuous Integration)

    ut和apiuia test的主要功用就是回归
    这个之前我一直在说,CI的最大作用就是在开发提交每次代码的10分钟之内,就应该知道这次代码提交有没有引起原来的bug

    三、CI优缺点

    一) CI的相关成本:
    1. 公司领导的支持和推进
    2. 项目成员的观念改变
    3. QA流程持续改进 
    4. 框架和工具的熟悉和环境搭建
    5. 测试案例设计和开发,包括单元测试,静态代码分析,冒烟测试,集成自动化测试等
    6. 测试脚本的开发和维护,如果UI部分变化大,这部分的维护effort会比较大。
    7. Daily build的测试报告的收集与分发
    8. 问题定位与解决

    二) CI的好处
    1. 每天都有交付物
    2. 可以在尽早的环节,发现问题,解决问题,降低后期风险。 (参考defect的时间与风险/成本曲线)
    3. 从总体上看,敏捷度会提升,项目schedule会比较紧,大部分情况下会压缩项目的duration。 也就是说会比较tough,但是效率会提升。

    三) CI可能不爽的地方
    1. 开发过程中,可能会有一些中间状态存在。这样的话,可能会需要部分的时间频繁处理“中间状态”相关问题。 而这些问题在非CI开发模式下,有可能会自然而然消除。
    2. 目光较多放在碎片化任务上,如果需要较长时间处理核心业务的话,会受到一定影响。
    3. 团队成员压力会比较大,如果前景或者个人收益不明显的话,团队可能不稳定。

    四、 总结的几条做CI的软实力规范:
    1.经常提交代码(签入不够频繁,这会导致集成被延迟)
    2.不要提交无法构建的代码(容易造成构建失败)
    3.立即修复无法集成的构建(破碎的构建,这使团队无法转而执行其他任务)
    4.编写自动化的开发者测试(第一道质量保障:单元测试)
    5.必须通过所有的测试和审查(针对不同项目设置不同审查标准)
    6.执行私有构建(开发人员自己的私有环境要保障)
    7.避免签出无法构建的代码(增加修复代码前务必保障获取到最新的稳定代码)
    8.避免超长时间的构建(保持构建过程不超过N小时)

    例子:

    举个栗子吧,构建一台自行车。
    开发把零件准备好,做好零件级的测试,没出现零件问题,ut测试通过
    构建脚本把零件拼起来,生成一辆自行车,没出现零件组装不起来的情况,编译通过
    测试把车子骑上原地转几圈,没问题,bvt测试通过
    至于车子能跑几公里,能在什么样的路面上跑,这个就是性能测试,异常测试等方面的问题了。

    五、 考核KPI

    c++ coverage
    java maven
    或者前期可以使用如下指标考核:

     

  • 相关阅读:
    JS实现简单的运行代码 & 侧边广告
    JS封装Cookie
    [PHP]array_map与array_column之间的关系
    [PHP]json_encode增加options参数后支持中文
    [CI]CodeIgniter特性 & 结构
    [PHP]PHP缓存机制之Output Control
    [PHP]将回调函数作用到给定数组的单元上
    [Apache]网站页面静态化与Apache调优(图)
    [PHP]PHP自定义遍历目录下所有文件的方法
    [PC]PHPCMS配置文件的读取
  • 原文地址:https://www.cnblogs.com/duyy/p/3596678.html
Copyright © 2011-2022 走看看