在DevOps建设中,主流的测试分层体系可以分为单元测试、接口测试和界面测试。 Google曾提出一个经验法则:70%的小型测试,20%的中型测试,10%大型测试。

当然,这个比例不是确定的, 不同类型的项目,测试需求也不相同:
  • 单元测试 粒度最细,外部依赖少,适合开发团队快速排查错误,从而保证代码质量和异常处理; 
  • 接口测试 相对界面测试成本较低,可以在标准的开发环境下运行,效益较高; 
  • 界面测试 最为直观,但成本高,外部依赖多,实施起来最困难,接口测试和界面测试保证了产品的质量和数据验证。

一、单元测试

今天我们来讲讲单元测试。

  • 对于面向过程语言,单元是一个函数;
  • 对于面向对象语言,单元是一个类;
  • 如果是图形化软件,单元可能是一个窗口或者菜单。
总而言之, 单元测试指人为规定的最小被测功能模块。 
缺少单元测试的项目会带来没有必要的重复工作,缺乏持续反馈机制,导致问题、压力、风险积累到后期爆发。 充分的单元测试可以保证代码的质量和良好的异常处理。

根据测试内容将测试任务分为: 强制性测试和推荐性测试。
  • 强制性测试包括: 模块接口、局部数据结构、出错处理;  
  • 推荐性测试包括: 路径测试、第三方服务、数据访问层、超时测试。
  • 模块接口测试,指对通过被测模块的数据流进行测试;  
  • 局部数据结构,要求检查数据类型说明、初始化、缺省值等;  
  • 出错处理,指检查错误处理功能是否包含错误;  
  • 路径测试,指对基本执行路径和循环进行测试,建议覆盖所有的逻辑语句;  
  • 超时测试,指测试生产代码在某些情况下的运行时间是否会超过可容忍程度;  
  • 数据访问层测试,指验收数据访问框架与SQL语句的联合正确性;  
  • 第三方测试,指检查代码是否成功调起第三方服务。
实际开发中,要求开发人员针对生产代码必须进行强制性测试,选择进行推荐性测试,并且测试粒度达到一定要求。

二、自动化单元测试

自动化单元测试由四个关键部分组成:
  • 通过版本控制系统实现配置管理;
  • 由构建工具来管理依赖;
  • 测试框架方便测试用例编写和批量测试;
  • 通过反馈平台可以很方便的查看测试结果。

三、农行自动化单元测试实践

还在担心上手难? 看看我行是如何做自动化单元测试的。

例如Java开发的项目。
  • 单元测试、打包、部署等都通过Maven的生命周期管理,测试用例的编写遵循Junit规范;  
  • 项目的构建可以通过代码提交,也可以通过定时按周期触发;  
  • 构建结束后在TFS上能够看到构建单元测试历史,以及单元测试代码覆盖率等信息。
今天的自动化单元测试内容就先分享到这里,接下来,还有更精彩的接口和界面自动化测试的内容分享,敬请关注!

【作者简介】叶岚

2009年加入农行,现任软件开发中心项目管理办公室质量控制组高级专员,从事测试过程管理和质量控制相关工作。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐