单元测试粒度最细,外部依赖少,适合开发团队快速排查错误,从而保证代码质量和异常处理; 接口测试相对界面测试成本较低,可以在标准的开发环境下运行,效益较高; 界面测试最为直观,但成本高,外部依赖多,实施起来最困难,接口测试和界面测试保证了产品的质量和数据验证。
一、单元测试
对于面向过程语言,单元是一个函数; 对于面向对象语言,单元是一个类; 如果是图形化软件,单元可能是一个窗口或者菜单。
强制性测试包括:模块接口、局部数据结构、出错处理; 推荐性测试包括:路径测试、第三方服务、数据访问层、超时测试。
模块接口测试,指对通过被测模块的数据流进行测试; 局部数据结构,要求检查数据类型说明、初始化、缺省值等; 出错处理,指检查错误处理功能是否包含错误; 路径测试,指对基本执行路径和循环进行测试,建议覆盖所有的逻辑语句; 超时测试,指测试生产代码在某些情况下的运行时间是否会超过可容忍程度; 数据访问层测试,指验收数据访问框架与SQL语句的联合正确性; 第三方测试,指检查代码是否成功调起第三方服务。
二、自动化单元测试
通过版本控制系统实现配置管理; 由构建工具来管理依赖; 测试框架方便测试用例编写和批量测试; 通过反馈平台可以很方便的查看测试结果。
三、农行自动化单元测试实践
单元测试、打包、部署等都通过Maven的生命周期管理,测试用例的编写遵循Junit规范; 项目的构建可以通过代码提交,也可以通过定时按周期触发; 构建结束后在TFS上能够看到构建单元测试历史,以及单元测试代码覆盖率等信息。
【作者简介】叶岚
2009年加入农行,现任软件开发中心项目管理办公室质量控制组高级专员,从事测试过程管理和质量控制相关工作。