软件测试:进阶2

软件测试:进阶2

本节内容:

  • code review
  • 代码静态分析
  • CI/CD

code review

为什么执行 review
1. 代码评审可以及时发现一些容易发现的BUG,而不必将发现的BUG的时间推迟到测试阶段。
2. 代码评审可以保证至少有两个人都理解任何一份代码。当出现员工休假,离职等情况的时候,至少保证团队的代码不会陷入无人理解或者无人处理的状况。

代码评审流程有两种:

  1. 提交前评审

    • 程序员在试图提交代码变更到代码库(代码管理服务器)之前,先提交变更申请,变更申请包含了这次变更的内容,评审人;
    • 评审人查看变更内容,评估变更,与变更申请人沟通,评估是否通过变更;
    • 如果评审人通过变更,则变更申请人才可以提交代码到代码库;
    • 如果评审人不通过变更,则变更申请人需要根据讨论结果或评审建议做出修改,直到与评审人达成一致,通过评审,才可以提交代码到代码库;
  2. 提交后评审

    • 程序员提交变更代码到代码库;
    • 评审人审查这次变更的内容,如果评审通过,则标记此次的变更已审查;
    • 如果评审人有疑义,则与变更人沟通,变更人根据讨论结果或评审意见做出修改,直到与评审人达成一致,通过评审。
      • 如要变更,则需要走变更流程,变更流程一般最少6至7步。

常用工具
Phabricator、 Review Board、gitlab等

代码静态分析

代码静态分析是指在不运行代码的方式下,通过词法分析、语法分析、控制流、数据流分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术。

代码静态分析的特点:
代码静态分析是与程序动态分析相对应的代码分析技术,它通过对代码的自动扫描发现隐含的程序问题,主要具有以下特点:
1. 不实际执行程序。动态分析是通过在真实或模拟环境中执行程序进行分析的的方法,多用于性能测试、功能测试、内存泄露测试等方面。与之相反,静态测试不运行代码只是通过对代码的静态扫描对程序进行分析。
2. 执行速度快,效率高。
3. 误报率较高。

代码静态分析的工作内容
类型检查、风格检查、bug查找、安全漏洞

代码静态分析的时机
1. 在编码时检查,在IDE中集成对应的插件。
2. 编码完成后统一检查。

CI/CD、devops

持续集成是什么(CI)

持续集成(ContinousIntergration,CI)是一种软件开发实践,即团队开发成员经常集成它们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成每次集成都通过自动化的编译、发布、自动化回归测试来验证,从而尽快地发现集成错误。

持续集成是为了持续交付。
没有单元测试的持续集成基本无意义。因为工具没有逻辑测试的功能。

构建过程:
-1 级:手动的,只有个别人手动完成集成。
0级:可重复的,依赖手动完成,指定人员去执行。
1级:重复执行,自动构建,频率太低,起不到作用。
2级:频繁地,自动构建,构建速度快。
3级:对内防御,自动构建,团队对结果有信心。
3+级:对外防御,团队依赖外部库时自动构建,团队对于外部一览可靠

测试阶段:
-1级:独立的,测试由专门的测试人员负责,开发结束后开始。
0级:审查,测试由专门的测试人员QA负责,部分测试在开发过程中执行。
1级:共享的,开发人员参与测试,测试并未集成在构建过程中。
2级:集成的,开发人员参与测试,少部分测试集成在构建过程中执行。
3级:测试驱动开发,业务人员和开发人员均参与测试,测试在构建过程中自动执行。
3+级:全面集成的,全团队对测试负责,测试与构建完全集成。

持续部署是什么(CD)

持续部署(ContinousDelivery,CD)在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境中。比如,我们完成单元测试后,可以把代码部署到测试环境中,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。
此过程不需要人工参与。

代码编译–> 自动化单元测试 —> 部署发布 —-> 自动化测试 —–> 代码审查

这个过程包括自动化反馈(将缺陷以短信或邮件的方式反馈给相关人员,以便及时去修改 )

对于测试最大的好处是节约时间。

DevOps:

DevOps是一个完整的面向IT运维的工作流,以IT自动化以及持续集成(CI)、持续部署(CD)为基础。来优化程序开发、测试、系统运维等所有环节。
运维是一个独立于研发的岗位。来保证用户的体验是正常的。
运维在项目的研发阶段不包含。但在项目的生命周期中是包含的。

DevOps目标:使生产端变得敏捷起来。

DevOps 实际上是一种文化上的变迁,代表了开发、运维、测试等环节之间的协作。DevOps工具是非常多种多样的,甚至可以由多种工具组成一个完整的DevOps工具链。此类工具可以应用于一种或多种类别,并可体现出了软件开发和交付过程的不同阶段:

  • 编码:代码开发和审阅,版本控制工具、代码合并工具
  • 构建:持续集成工具、构建状态统计工具
  • 测试:通过测试和结果确定绩效的工具
  • 打包:成品仓库、应用程序部署前暂存
  • 发布:变更管理、发布审批、发布自动化
  • 配置:基础架构配置和部署,基础架构即代码工具
  • 监视:应用程序性能监视、最终用户体验

最重要的环节是:监视阶段

猜你喜欢

转载自blog.csdn.net/bit666888/article/details/81161040