测试不等同于调试,各自都有自己的概念集和方法论。

Test:examine input/output pairs.

调试:定位,修改。

但如果能做到错误异常的准确定位,调试的一半以上的工作已经完成了。

测试共分两种:

  • unit testing(单元测试)

    • functions
    • classes
  • integration testing(集成测试)
    • overrall program

Test suite(测试集):small enough so that we can test it in a reasonable amount of time, large enough to boost confidence.

debug 的方法:(准确地说应叫 bug 的定位)

二分搜索 + 打印中间值(逐步缩小搜索空间)

每一个函数,无论是普通函数,还是类内成员函数,都是为实现某一功能进行实现,当独立地完成一个函数的设计时,应当编写相应的主调函数,去验证函数的基本功能是否实现,当然若为追求更高的鲁棒性,还应考虑一些常见的非法输入等问题,此外还有内聚性、耦合性等等的要求。

防止错误越积越多,最终难以确定程序出错的源头。

1. 断点与单步

是查找程序中的一些运行时的逻辑错误;

这种错误不易察觉,程序编译运行均可通过,只是最终得到的结果,未必是一种期待的结果,或者说未必是正确的结果。

为避免此类错误:

  • 第一,不放从头至尾通读代码、检查代码,就像考试时,最后的检查时间,检查计算是否正确,是否犯了一些低级错误;
  • 第二,则是回溯而上,直至找到错误的源头;
  • 第三,则是单步追踪,顺流而下,找到开始出错的地方。

2. 区分 debug 模式和 release 模式

两种模式下,代码实现和规模是不同的。

debug 模式,调试成功时,可以将一些 debug 的代码注释掉(而不是完全删除),使其进去 release 模式:

if 0,
assert( ... );
end

3. log

一段复杂、庞杂的代码,仅仅给出最终的结果,在 debug 阶段是十分不够的,而应该在某些程序执行的关键地方,给出必要的日志信息,也即 log 信息。

测试与 debug 心得的更多相关文章

  1. iOS Debug心得 (持续更新)

    最近在维护一个内部比较混乱的APP,Debug的时候遇到很多比较痛苦的地方, 因此做一个Debug记录,对以后的开发会有比较大的帮助: 这样,在开发新项目的时候就可以争取把一些BUG扼杀在襁褓中. & ...

  2. 【超详细】安全测试===sqlmap使用心得(零)

    零.前言 这篇文章是学习Sqlmap的用法时做的笔记,记录了Sqlmap的常见.基础用法. 一.Sqlmap是什么 Sqlmap是开源的自动化SQL注入工具,由Python写成,具有如下特点: 完全支 ...

  3. 测试环境搭建心得 vs2008+SQL2008 PHP+APACHE+mysql Team Foundation Server2013

    大四即将结束,大学的最后一个假期,找到一份实习工作,担任测试工程师.在过年前的最后一周入职,干了一周的活儿.主要工作就是搭建测试环境. VMware 主要熟悉VMware软件,装系统基本都没什么问题. ...

  4. ab和jmeter进行GET/POST压力测试的使用心得和比较

    引言: 互联网服务压测是非常重要的评价方法,ab,webbench,jmeter等都是业界流行的测试工具,ab和webbench作为shell模式下轻量级的测试工具,jmeter则作为有GUI界面的更 ...

  5. debug 心得

    前天做了一个题,就是个简单的状压记忆化搜索,但是debuge了俩小时,给我整的快吐血了,各种不可思议的错误,我都要怀疑是不是电脑有毛病了,后来发现数组开小了,看来以后遇到不可思议的错误就要检查数组开没 ...

  6. laravel的测试工具debug安装:

    在项目根目录执行: composer require barryvdh/laravel-debugbar --dev

  7. Python Revisited Day 09 (调试、测试与Profiling)

    目录 9.1 调试 9.1.1 处理语法错误 9.1.2 处理运行时错误 9.1.3 科学的调试 9.2 单元测试 9.3 Profiling 9.1 调试 定期地进行备份是程序设计中地一个关键环节- ...

  8. 26Mybatis_一级缓存及其测试

    这篇文章讲解一级缓存: 先介绍一级缓存的原理:

  9. myecipse的debug调试操作方法

    在myecipse如果想要查询某个变量的值,或者跟踪程序的执行流程,可以如下操作: 首先在程序中设置好断点(断点的设置方法,就是在想要设置的地方的行首双击,当一个蓝色的圆形实心图标显示出来,就证明你设 ...

随机推荐

  1. [NPM] Publish npm packages using npm publish

    In this lesson we will publish our package. We will first add a prepublish script that runs our buil ...

  2. 本地 oracle 安装文件夹满触发 ORA-7445 [_memmove()+64] 导致Instance Crashed 的事故

    近期处理了一个问题,原因是因为命中ORA-600 [kole_t2u], [34] - description, bugs 导致 在udump 文件夹下大量转储 出cdmp 文件, 然后这些 cdmp ...

  3. $(dom).each(index,ele){} 真正的jquery对象

    1.$(ele)才是each真正的jquery对象,而不是ele.$('.mt-story-info').each(function(index,ele){ if($('.mt-story-info' ...

  4. HDU 2063 过山车 第一道最大二分匹配

    http://acm.hdu.edu.cn/showproblem.php?pid=2063 题目大意: m个女生和n个男生一起做过山车,每一排必须一男一女,而每个女孩愿意和一些男生坐一起,, 你要找 ...

  5. Day2:数据运算

    一.算数运算 如: #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wan print(10%2) #求模(取模) # 0 ...

  6. Java FutureTask Example Program(Java FutureTask例子)

    Sometime back I wrote a post about Java Callable Future interfaces that we can use to get the concur ...

  7. TTS-零基础入门之语音模板化

    上篇介绍了TTS的一个简单样例http://blog.csdn.net/u010176014/article/details/47326413 本篇咱们进一步聊聊 语音怎样读模板. 比方 公交车上的模 ...

  8. 4、runtime电源管理模式(内核文档runtime_pm.txt有详细描述)

    系统睡眠模型是让整个系统休眠,而runtime是在系统正常工作的时候单独控制某个设备休眠和唤醒 1. runtime PM流程怎样动态地打开或关闭设备的电源?最简单的方法:在驱动程序里,在open函数 ...

  9. STATUS CODE: 91, occurs when trying to move media from one volume pool to another.

    Overview:Symantec NetBackup (tm) will not allow a tape with active images to be moved from one volum ...

  10. 解密Arm中国:全球最具影响力的芯片公司中国布局浮出水面

    经济观察报 记者 陈伊凡 沈怡然 李华清 对于Arm与中国合资公司事宜,5月4日下午,Arm授权的代表邮件回复<经济观察报>称:“合资公司目前刚开始运营”,“我们的重点是让这个新的合资公司 ...