• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

软件单元测试中的异常处理

发布: 2010-6-28 09:49 | 作者: 不详 | 来源: 领测测试网采编 | 查看: 102次 | 进入软件测试论坛讨论

领测软件测试网

         软件单元测试中的异常处理   软件测试

  记得一个牛人曾经说过(实在想不起来谁也搜不到),大概的意思就是“处理一个问题的最好的办法就是不去处理它”。我不知道当时他讲这句话的具体场景是什么,不过我觉得这句话用在单元测试的异常处理中还是比较合适的。

  首先来看看两条关于异常处理的原则:

  ● 如果无法处理某个异常,那么就不要捕获它

  ● 如果捕获到一个异常,那么不要胡乱处理它

  单元测试的代码和开发的生产代码,虽然同是程序代码,但是他们存在的意义是不一样的。前者是验证程序的正确性,属于为程序服务的;后者是实现某种功能,属于为客户服务的。然后在看上面的两条异常处理的原则。

  ● 作为测试代码,如果捕获到一个异常,其实是无法处理它的。从某种角度来看,测试代码和被测代码是不在一个系统中,AUT所抛出的异常,测试代码无法处理,其实也无需处理。

  ● 假如测试代码捕获了一个异常,那么唯一能做的事情就是把这个异常重新包装一下,或者直接重新抛出给单元测试框架,然后由单元测试框架打印到界面上或者是执行结果中。但是其实我们什么都不做(不用Try…Catch)也能达到这样的效果。

  可能会有这样的一些测试用例:在输入某些数据的情况下,该函数会抛出某异常。测试工程师就是要验证有异常的抛出。如果是这样的情况,可以用 ExpectedException的Attribute(.NET)来标识出该测试代码必须要抛出该异常,如果没有抛出,该测试就是失败。

  所以在单元测试的代码中出现Try…Catch其实是没有必要的,如果是真的觉得要使用Try…Catch才能完成某些用例,那么我觉得可以重新设计测试用例,或者测试用例的实现。Try…Catch增加了测试代码的不确定性,而这样的不确定性会导致诡异的自动化测试脚本的出现。在回归测试的过程中就有可能出现运行10次测试,有2次失败8次成功的情况。

  不过在单元测试(集成测试)中Try…Finally语句的使用还是很有必要的,例如我们会把数据库链接释放的代码放在Finally语句块中,保证测试运行无论成功还是失败,都能释放数据库链接,或者其他昂贵的系统资源。

  总结:在单元测试(集成测试等……)中,尽量不要使用Try…Catch代码块;如果需要释放昂贵或者有限的系统资源、做清理工作,可以把相关的代码放在Finally代码块中。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: 单元 软件


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网