posts - 256, comments - 1315, trackbacks - 41, articles - 8
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

关于测试和调试

Posted on 2004-09-26 23:59 FantasySoft 阅读(442) 评论(0)  编辑 收藏 所属分类: All About SoftThought Ware
        没有想到《数据结构、算法与应用》一书如此之强调测试,曾经以为只有在Kent Beck的书中,才会将测试摆在一个极其重要的位置。尽管书中对于测试与调试的讲述并不是太多,却将要点讲述得特别的清楚,让自己对于测试和调试有了些许的顿悟。
        测试是为了尽可能的发现错误,这个是一定要牢记的。为了实现这个目标,测试数据的选择就显得尤为重要了。毕竟能够作为一个函数的输入条件的数据集合实在是太大了。在选择测试数据的时候应该遵循以下三个覆盖原则:
        1、语句覆盖:选择足够多并且合适的测试数据使得每一条语句都能够被执行;
        2、分支覆盖:选择测试数据集使得每一个条件都出现true和false两种情况;
        3、子句覆盖:子句覆盖与分支覆盖有类似的地方,只是子句覆盖的测试粒度会更细,因为通常一个条件语句有可能会包含多个条件子句,那么子句覆盖就是让条件语句中包含的每一个条件子句都出现true和false两种情况。
        以上提到的这些覆盖原则是用在白盒测试中的。白盒测试是针对代码本身的,而与白盒测试相对应的则是黑盒测试。黑盒测试常用的方式是I/O类,也就是分析代码会出现哪几类输入和输出(通常输入类和输出类是一一对应的),然后根据输入类的不同选择合适的测试数据,并且检验输出类的正确性。
        测试是为了能够发现错误,那么定位错误并且修改错误的过程则是调试(debug)。调试也需要遵循几个原则:
        1、在修改错误的同时一定要避免引入新的错误;
        2、不能够通过异常来掩盖错误;
        3、增量测试和调试原则(incremental test and debug)。测试与调试应该从相对独立的函数开始,继而依次引入其他函数进行测试。在一个相对独立的函数测试通过之后,引入另外的一个函数进行测试,如果发生了错误,就可以很容易地确定错误出现在新引入测试的函数中了。

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2004-10-14 17:46 编辑过
 
另存  打印
最新IT新闻:
· 万名Linux使用者向暴雪请愿Linux版《Diablo III》
· 56.com我乐网将全面转行 退出视频行业
· Joost借道TOM在线 将正式进军中国
· 微软副总裁公开承认Vista存在问题
· 互联网DNS存在重大漏洞 黑客可能控制网络流量