zhaoyu@home:~$

微服务设计模式-testing

测试概述

总之,测试的目的是验证测试下系统的行为,这个系统是可能是一个类,也可能大到整个系统。

自动化测试

自动化测试常使用一个测试框架,如JUnit。一个自动化测试通常由一下几个阶段组成:

  • 设置:初始化测试装置,如类或者服务及他们的依赖。
  • 执行:调用测试系统,如调用一个类的方法。
  • 验证:断言测试系统的输出。
  • 结束清除:清除测试所用的资源,如回滚一个设置阶段初始化的事务,不一点是必须的。
测试的分类

大概可以分为下面4种:

  1. 单元测试:测试服务的一个小部分,如一个类。
  2. 集成测试:测试一个服务和基础服务的交互,基础服务可能是数据库或者其他服务。
  3. 组件测试:单个服务的验收测试。
  4. 端到端测试:整个应用的验收测试。
使用测试象限对测试分类

对测试分类的一种策略是使用Brian Marick提出的测试象限。分两个维度

  • 面向技术还是面向业务
  • 测试的目的是支持编程还是评估应用

象限划分测试如下图所示:

  • Q1——面向技术/支持编程:单元和集成测试,组件测试
  • Q4——面向技术/评估应用:非功能测试,如性能测试。
  • Q2——面向业务/支持编程:组件测试,端到端测试。
  • Q3——面向业务/评估应用:可用性测试或拓展性测试。
测试金字塔

测试象限也不是唯一一种组织测试的方法,还有测试金字塔等。金字塔的核心思想是越往金字塔上,写的测试应该越来越少。