程序调试小tips

1 篇文章 0 订阅
1 篇文章 0 订阅

身为万千码农中的一员,程序中的bugs往往困扰着我们,给我们朴实无华的编程生活带来无尽的惊喜(惊吓)和感动(崩溃),下面结合我编程经历,分享一些调试经验。

1. 找bugs

当代码报错的时候,最重要就是出错提示,IDE会给我们提示errors有哪些,errors在哪些行,这往往是最有用的,但往往也是最有迷惑性的,当看到几十个error的时候,可能会有些崩溃,但是通常的经验而言,有两种常见的情况:(1)这众多的error所属同一类的可能性非常高,也就意味着当解决一个,其他的也就迎刃而解;(2)一个error引发其他error,由于存在函数的层次、嵌套调用,最底层的代码出现error(一般情况为传参失误,导致高层一系列错误),导致高层代码出错。

2. 软件测试思想

软件测试是一个发现错误的过程,核心思想“证伪”。软件测试最常用的是白盒、黑盒以及灰盒测试。白盒测试是在已知代码的情况下进行的测试,从而编写详细测试代码;黑盒测试是没有获得代码,从而处于“黑盒”状态,我们只可以使用程序的功能,所以黑盒测试是功能测试;灰盒测试结合了白盒和黑盒的特点,黑盒测试直接面向功能和需求,所以容易发现错误,但是我们无法提出解决bugs的方案,而白盒测试要求程序员清楚程序代码的逻辑和细节信息,工作量巨大而且要求比较高,灰盒测试最为常用,我们常常是先进行黑盒测试,再对代码进行白盒测试。

3. bug定位

在报错的行设置断点,然后debug的思路固然很好,但是有些程序往往不能进行调试,例如程序涉及多线程、事件触发等等,所以常用的解决方法如下:在报错的行前后写一些输出语句,核对前后的输出结果。我们需要验证的是:程序有没有执行进入这一分支(循环或这一行代码)、执行结果是否正确。所以常用的两种输出语句,第一类例如在报错前后输出print(“haha”)来验证程序有没有执行或进入这一部分(需要注意的是前后都要有,形成自己定义的一个测试域);第二类,类似第一类,在需要测试的域前后分别输出变量值,用来核对……这一方法虽然简单,但是非常实用,可以发现和解决大量错误,如果自己不能解决的话,在搜索引擎查找可以解决99.9%的问题。

4. 常用方法

(1)边界值分析

如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少一、比最大个数多一的数作为测试数据。用来验证值的边界部分。

(2)专业的软件自动化测试软件

例如PC-Lint用来做C/C++静态测试,Junit进行Java单元测试,QTP:功能测试(QTP需要VBScript基础),Eclemma:用测试覆盖率评价测试代码的质量……

5. 软件测试整体流程

(1)单元测试:分模块测试;

(2)集成测试:模块间的集成;

(3)确认测试:确认功能;

(4)系统测试:验证系统是否满足需求规格定义;

(5)验收测试:用户在测试人员的协助下对系统进行测试和接收;

(6)回归测试:修改了旧代码后,重新进行测试以确认修改没有引入新的错误。

结合软件测试各阶段的思想,进行软件测试从而发现bugs,祝大家都有所收获,解决所有bugs。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值