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

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. 玩转Bootstrap(基础) -- (6.导航条基础)

    1.导航条样例 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" ...

  2. actionbar spinner-用法实例

    今天需要更改一个actionbar上的spinner的字体颜色,结果试了好长时间都没有解决,最后才发现,原来他是在代码下增加的一个textview,然后使用adapter加载的,并不是直接用frame ...

  3. .condarc(conda 配置文件)

    Configuration - Conda documentation .condarc以点开头,一般表示 conda 应用程序的配置文件,在用户的家目录(windows:C:\\users\\use ...

  4. Vue使用Promise自定义confirm确认框组件

    使用Promise模拟浏览器确认框,可自定义标题,内容,按钮文字和类型 参数名 类型 说明 title String 标题 content String 内容 yesBtnText String 确认 ...

  5. 01011_怎么打开任务管理器?win7打开任务管理器方法

    以下几种方法可以打开任务管理器 1.在系统的任务栏点击鼠标右键,然后在弹出的右键菜单中选择“启动任务管理器”: 2.同时按下这三个按钮:Ctrl + Shift + Esc: 3.同时按下键盘的Ctr ...

  6. Dcloud课程5 php如何实现文件缓存技术(静态数据缓存)

    Dcloud课程5 php如何实现文件缓存技术(静态数据缓存) 一.总结 一句话总结:保存在磁盘上的静态文件,用PHP生成数据到静态文件中.其实cookie和session使用的就是这样的技术,所以c ...

  7. 重新启动IIS不重启电脑

      有时候我们在WEB程序如:ASP,中无意中使用到了一个死循环,或者在测试 DLL组件时,挂了.这时候IIS就停止了响应,我们要继续我们的工作啊,重启IIS服务吧. 然而这个进程还在执行,Inter ...

  8. Swiper+ ejs模板引擎+ iScroll插件知识总结

    一. Swiper swiper是一个应用于移动端的动画插件,原理类似于轮播图 官网 http://www.swiper.com.cn/# html结构 <div class="swi ...

  9. CSS笔记 - fgm练习 - 三个div变色 - CSS div等分布局

    <title>三个div变红</title> <style> *{margin: 0; padding: 0} body{ text-align: center; ...

  10. 2013腾讯编程马拉松初赛第〇场(HDU 4503) 湫湫系列故事——植树节

    http://acm.hdu.edu.cn/showproblem.php?pid=4503 题目: 已知湫湫的班里共有n个孩子,每个孩子有Bi个朋友(i从1到n),且朋友关系是相互的,如果a小朋友和 ...