微服务测试之静态代码扫描

  
  

静态代码扫描为整个发展组织增加价值。无论您在开发组织中发挥的作用如何,静态代码扫描解决方案都具有附加价值,拥有软件开发中所需要的尖端功能,最大限度地提高质量并管理软件产品中的风险。

     

背景   

微服务架构模式具有服务间独立,可独立开发部署等特点,独立开发诱发了技术上的分离,HTTP通信增加了问题诊断的复杂度,对系统的功能,性能和安全方面的质量保障带来了很大的挑战。

  

"

  

微服务架构对测试的挑战

  

微服务架构模式下多个独立业务服务同时开展开发工作,每个系统都有各自的业务范围和开发周期要求,这样一来,下图所示的传统流程中产品经理提供需求,需求人员进行需求分析,开发人员进行开发,最后交给测试人员进行测试的方法,就无法满足测试覆盖和测试效率的要求。微服务测试之静态代码扫描”>相对于传统的单体模式而言,微服务模式下对测试带来的挑战总结起来包括以下内容:</p>
  <ul>
  <李>
  <p> 1。微服务系统模块层次化,需要保证模块内部代码的质量。这种场景下传统的端到端的测试无法满足测试要求,</p>
  李</>
  <李>
  <p> 2。需要保证各个微服务系统内部模块间的正确性。系统模块间以及前端和后端通常会同时开展开发工作,模块间或者前后端通过接口(通常是Restful http接口)进行连接,而模块和后端往往没有界面,为了保证各个系统单个依赖系统的正确性,因此需要借助模拟技术隔离依赖的前提下进行接口级的测试。</p>
  李</>
  <李>
  <p> 3。需要保证微服务系统中的接口一致性,即契约的一致性。需要通过契约测试手段保证契约的正确性,进而保证同步开发过程中的前后开发的正确性和一致性;</p>
  李</>
  <李>
  <p> 4。需要保障单个微服务系统的正确性。需要进行组件级的测试进行微服务系统的正确性;</p>
  李</>
  <李> 5。需要保障整个系统的正确性。各个微服务系统串接之后通过端到端的测试保证整体系统的正确性;李</>
  </ul>
  <p> <img src=   

微服务架构下如何开展测试

  

针对上面提到的微服务对测试的挑战,一方面为了保证在服务各个层级上对微服务进行全面的测试,特别是对于分布式系统,另一方面又要确保测试执行的效率,这样才能保证持续集成/持续交付(CI/CD),因此,总体的测试策略采用如下解决方法:

  
      <李>   

    1。开展”质量”文化。让开发人员建立起代码”质量”意识,用于保障模块内部的质量;

      李   <李>   

    2。采用自动化测试手段。在微服务架构中,开发分解为负责不同服务的多个小组,测试人员往往每天要花费大量的时间,了解不同团队的开发进度。如果还需要手动进行回归测试(回归测试),最终将会不堪重负。所以自动化测试在微服务模式下是必须采取的手段。

      李   <李> 3。分层的自动化测试策略。自动化测试分层在Mike Cohn提出的测试金字塔(测试金字塔)原理中进行了详细的阐述。它提倡在代码级,接口级,应用级进行不同粒度的测试来保证系统的质量。从自动化测试投入比例来看,单元测试和静态代码扫描的投入比例最大,其次是接口自动化测试,最后是UI自动化测试。同时为了提高测试效率和测试覆盖率,功能测试需要借助探索式测试手段开展测试。   
  

微服务测试之静态代码扫描”> </p>
  <ul>
  <李> 4。采用流水线技术进行可视化快速反馈。由于微服务系统非常多,这样往往会增加了运维和沟通成本,为了提高沟通效率,需要借助流水线的技术,可视化查看每一个构建(构建),测试(测试),部署(部署)过程,快速做出质量反馈和处理决策。通过可视化流水线最终可以实现各个环节的监控,采用DevOps手段打通业务,开发,测试和运维的部门墙。</李>
  </ul>
  <p> <img src=微服务测试之静态代码扫描