测试与调试

通常来讲,开发过程中程序员在测试和调试阶段花费的时间远比编写代码的时间更长。不会调试的程序不是好程序!!!

测试的目的是暴露错误,调试的目的是发现错误发生的原因并修复解决。

测试分为白盒和黑盒,黑盒测试其实就是测试功能的完整性,是不是符合需求,并不关心内部实现,即编写的测试用例和实现代码内部完全独立。

因为黑盒无法获知内部代码实现情况,所以代码本身可能存在的问题对黑盒而言也是未知的,这种情况下就需要白盒测试了。

白盒测试把大系统拆成多个小模块各自测试,如果有必要,可以对主要的函数都进行单独测试,通过变换不同的输入,检测输出或执行是否符合预期。(特别需要假设各种特殊情况、边界区域等等)

发现问题就需要解决问题,通常情况下,解决比发现更为复杂,需要通过各种手段定位问题的发生位置,合理的使用调试工具,在合适的位置添加断点,能大大提高解决问题的效率。个人的做法是先分析预期和实际的差异,一般而言能大致猜测出问题可能出现在哪一些地方中,然后对这些地方进行测试分析,拆解出现问题的地方,一步步跟踪,直到找到源头(通常而言,如果对代码的全局有一定的了解,大部分情况下都能准确猜测出问题出现在哪一部分,然后对这一部分进行跟踪,当然这种只能解决大部分相对简单的问题,复杂问题可能不是一两次猜测就能准确定位,这时候就需要耐心了,继续猜测,继续调试,直到找到bug源头)

只能说一句,debug经验很重要。经验丰富的情况下,很多问题基本都能直接做出准确的定位猜测,这就是debug的艺术了。。。

 

正确的编程方法:

懂得测试和调试是一个优秀程序员的必备条件,但是要成为一个伟大的程序员来讲,更重要的是如果避免问题的发生!!!

不良的编程习惯对程序员而言简直就是灾难(编程习惯差非常容易导致一些简单但是不易发现的bug,并且这种bug非常蛋疼,特别对于代码的维护者不是自己的情况下更是灾难中的灾难),所以培养良好的编程习惯非常非常重要!!!多学习一些防范出错的编程技术非常必要。

三个方面来避免错误的发生:

1.很多bug的起因是程序规格说明的定义差或者不完备。程序员需要在获知需求后需要自己完善说明,找出存在的各种边界,防止错误的产生。

2.模块化设计,把大模块拆分成各自独立的小模块,这样更易读易写易测试。

3.预防错误式编程:注释代码、采用统一的编程风格、不做任何假设(不要认为输入一定是正确并符合预期的,这一点永远不能保证,做这种假设最后坑的只会是自己)、尽量避免全局变量、合理的依赖编译器检查(注意各种warnning)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值