DevOps ACA 软件代码与质量管理(六) 梦里梦外; 2022-11-06 00:54 213阅读 0赞 ### 文章目录 ### * * 软件代码与质量管理 * * 1.版本控制 * 2.代码规约 * 3.单元基础测试 ## 软件代码与质量管理 ## ### 1.版本控制 ### **1. 版本控制-定义** * 在软件工程学里,版本控制是指追踪和控制软件变更的实践; * 版本控制系统是用来辅助进行版本控制的工具; * 版本控制系统的发展历史 – cvS – Subversion/ClearCase – git/hg/tfs ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70] **2. 为什么需要版本控制系统** * 记录谁在什么时间做了什么 * 多人团队协作 – 同步 – 并行 * 发布管理 * Commit Message提供额外的信息,解释变更原因 * Bug 调试 回滚 **3. 分支策略** 1. 主干开发,分支发布 * 管理简单 * 主干问题会阻塞开发进程 -------------------- 1. 分支开发,主干发布 * 开发分支可以提供可靠的代码隔离 * 主干问题会阻塞开发进程 -------------------- 1. 分支开发,分支发布 * 开发分支可以提供可靠的代码隔离 * 主干的问题不回阻塞发布 * 集成时间点可能延后 -------------------- ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 1] ### 2.代码规约 ### **1. 编程规约构成** ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 2] **2. 编程规约的范例** 1. 不允许美元符号、下划线出现在变量中。下划线和美元符号有特殊意义 . 2. 不允许用拼音和英文的混合,或者是中文。所有的变量都应该使用标准的英文,英文单词不会出现歧义。 3. 使用匈牙利命名法 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 3] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 4] **3. 代码规约扫描工具 -P3C** ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 5] ### 3.单元基础测试 ### **1.什么是单元测试** 单元测试是开发者编写的**一小段代码**,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断**某个特定条件(或者场景)下某个特定函数**的行为。 例如,你可能把一个很大的值放入一个有序list中去,然后确认该值出现在list的尾部。或者,你可能会从字符串中删除匹配某种模式的字符,然后确认字符串确实不再包含这些字符了。 执行单元测试,是为了证明某段代码的行为确实和开发者所期望的一致。 **2. 规模代价平方定律** 定位并修复一个BUG所需的代价正比于目标代码规模的平方 例如 : 20行的代码在开发阶段发现bug,定位+修复时间可能只需要10分钟 200行的代码在别人调用时发现问题,定位+修复时间可能就需要1个小时,代码评审又需要1个小时 **3.单元测试框架** ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 6] **4. 单元测试 -Mock测试工具** ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 7] **5. AIR原则** ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 8] **6. BCDE原则** ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 9] **7. 单元测试中的坏味道** 1. 测试场景过于集中 针对某一个单元,要注重简单 2. 测试依赖运行环境 导致不稳定 3. 测试缺少断言 人眼观察是否成功或者失败,导致效率降低 4. 用例间存在依赖 需要独立,不能让用例之间存在依赖 错误实例: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 10] [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70]: /images/20221023/156a44cd609a4fe99335c8f0826550a0.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 1]: /images/20221023/cf703fa4af844a478876254976b69ea1.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 2]: /images/20221023/5c6599d84954484c8b2b1f18796afa03.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 3]: /images/20221023/12c2b748beac4b698a8decb4b51be22c.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 4]: /images/20221023/fd4079d76d4146d195abcb9eb524c81e.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 5]: /images/20221023/d45d61679e3c47278d103adb5f0ad4d9.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 6]: /images/20221023/7b5c743053fd4017a7ed625e367232da.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 7]: /images/20221023/e7e97366ab7a4bac86580e35ef475dc5.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 8]: /images/20221023/6e39a188363a44df868a20b8b4a1b59f.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 9]: /images/20221023/10db12a4b68e4f1aa6c4b1ea8a22bdce.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 10]: /images/20221023/43ac71f819e443828708439fd1c2561c.png
相关 【软件质量】软件质量控制与软件质量保证 软件质量控制SQC 质量控制为保证行动提供了一种手段,以控制和衡量项目、过程或设施的特征,以满足既定的要求。 维持产品或服务质量以满足特定需求的操作技术和活动,也使用这 绝地灬酷狼/ 2022年11月12日 01:54/ 0 赞/ 300 阅读
相关 DevOps ACA 云原生与DevOps(九) 文章目录 云原生与DevOps 1. 云原生的基本概念 2. 微服务 3. 容器 柔情只为你懂/ 2022年11月06日 01:57/ 0 赞/ 9 阅读
相关 DevOps ACA 阿里云效软件测试和质量保证(八) 文章目录 云效软件测试和质量保证 1. 云效平台测试管理功能介绍 2. 云效测试用例 3. 云 逃离我推掉我的手/ 2022年11月06日 01:52/ 0 赞/ 354 阅读
相关 DevOps ACA 软件测试和质量保证基础(七) 文章目录 软件测试和质量保证基础 1.软件测试定义与分类 2. 软件测试活动与设计方法 3. 我不是女神ヾ/ 2022年11月06日 01:49/ 0 赞/ 259 阅读
相关 DevOps ACA 软件代码与质量管理(六) 文章目录 软件代码与质量管理 1.版本控制 2.代码规约 3.单元基础测试 软件代码与质量 梦里梦外;/ 2022年11月06日 00:54/ 0 赞/ 214 阅读
相关 DevOps ACA 云效需求管理与迭代(五) 文章目录 云效需求管理与迭代 1. 需求录入与评审 2. 需求细化 3. 迭代规划 红太狼/ 2022年11月05日 11:47/ 0 赞/ 388 阅读
相关 DevOps ACA 版本管理和版本规划 (四) 文章目录 版本管理和版本规划 1. 需求收集与分析 什么是需求 需求的管理流程 淡淡的烟草味﹌/ 2022年11月01日 15:54/ 0 赞/ 262 阅读
相关 DevOps ACA 云效敏捷项目管理 (三) 文章目录 云效敏捷项目管理 1. 项目管理云效实操 云效项目管理概述 创建一个云 梦里梦外;/ 2022年10月31日 13:35/ 0 赞/ 302 阅读
相关 DevOps ACA 敏捷项目管理基础 (二) 文章目录 一. 项目管理和迭代开发方式 项目管理 迭代开发模式 二. Scrum方法 ╰半橙微兮°/ 2022年10月31日 04:21/ 0 赞/ 239 阅读
还没有评论,来说两句吧...