第 15章 程序调试与软件测试本章的学习要点错误的类型调试工具和调试方法软件测试的方法与技术
15.1 错误类型程序调试就是对程序进行测试并查找出错误所在。
Visual Basic的错误类型可以分为 语法错误,编译错误,运行错误 和 逻辑错误 。
1.语法错误通常是由于不正确书写代码而产生的。例如:多写、
漏写、关键字写错,标点符号使用不当等。对于这种错误,用 Visual Basic中提供的自动语法检查功能就可解决。当输入一行代码并回车后,Visual Basic系统就立即检测出错误,出错的那一行变成红色,出错部分被高亮显示并弹出消息对话框指出错误的原因,
对通过基本语法检查的语句,会自动将对象、常数等首字母变为大写,自动调整各单词之间的空格等。
15.1 错误类型
2.编译错误编译错误是指单击了“启动”按钮,VB开始运行程序前,先编译执行的程序段首产生的错误。此类错误是由于用户未定义变量、遗漏关键字等原因而产生的。这时 VB也弹出一个对话框,提示错误信息。出错的那行被高亮显示,同时 VB停止编译。这时,用户必须单击“确定”按钮,关闭出错提示对话框,然后对出错行进行修改。
15.1 错误类型
3.运行错误运行时的错误是 VB在编译通过后,运行代码时发生的错误。这类错误往往是由指令代码执行了非法操作引起的。
例如,除法运算中除数为零,类型不匹配,访问文件时文件夹或文件找不到等。
4.逻辑错误逻辑错误是指程序能正常运行但是没有得到预期结果的错误。
例如,运算符使用不正确,语句的次序不对,循环语句的起始、终值不正确。通常,逻辑错误不会产生错误提示信息,故错误较难排除,需要程序员仔细阅读分析程序,并具有调试程序的经验。
15.2 调试与排错
VB虽不能诊断或更正错误,但是提供了一些非常有用的工具,帮助分析运行是如何从过程的一部分流动到另一部分,分析变量和属性是如何随着语句的执行而改变的。使用调试工具,可以能深入到应用程序内部去观察,
从而确定产生错误的原因。
15.2.1 调试工具
Visual Basic 6.0提供了强大的调试工具,可以在
“调试”菜单中找到,也可以在“调试”工具栏中找到。
通过它们可以便捷有效地检测出程序中逻辑错误地点和原因。
“调试”工具,调试”工具用途运行 从设计模式切换到运行模式或从中断模式切换到运行模式中断 从运行模式切换到中断模式结束 从中断模式或运行模式切换到设计模式切换断点 程序会连续运行到光标所在行后转入中断模式,暂停应用程序的执 行逐语句 程序逐条语句执行,每执行一条语句后转入中断模式逐过程 程序将整个函数或过程作为一条语句来执行跳出 程序将连续执行完该过程的其余部分,返回调用过程的下一条语句 并转入中断模式本地窗口 显示当前过程中变量的值立即窗口 当应用程序处于中断模式时,允许运行代码或查询变量值监视窗口 显示选定表达式的值快速窗口 当应用程序处于中断模式时,列出表达式的当前值调用堆栈 在中断模式中,显示一个对话框,其中列出所有被调用且未完成运 行的过程
15.2 调试与排错
15.2.2 调试方法
Visual Basic 6.0提供了强大的调试工具,
可以在“调试”菜单中找到,也可以在“调试”
工具栏中找到。通过它们可以便捷有效地检测出程序中逻辑错误地点和原因。
1.使用断点断点是一行加有标记的语句,程序执行到该行时会暂停下来(断点语句并未被执行),这时可进行各种调试工作。在程序调试过程中,不仅需要设置断点,而且需要变换断点的位置,清除前面设置的断点。断点的设置既可以在设计时完成,也可以在中断模式下切换。
15.2 调试与排错
( 1)设置断点在代码窗口中将光标移动到欲设置断点的语句行,
按 F9键或单击语句行首的灰色标记区,也可以通过执行 【 调试 】 → 【 切换断点 】 命令完成断点的设置。
( 2)取消断点单击语句行首的灰色标记区中的断点标记,也可以将光标移动到断点所在的行后,执行“调试”菜单中的“切换断点”命令或按 F9键,就可以将该断点清除掉。如果希望清除程序中设置的所有断点,可以按
Ctrl+Shift+F9键或执行“调试” →,清除所有断点”
命令。
15.2 调试与排错
2.跟踪执行轨迹当已经知道某行语句存在问题时,使用断点查找错误是个有效的方法,但通常程序出错的具体位置并不容易确定,只能够猜测到在某个范围内可能存在问题,
这需要在此范围内跟踪程序的执行结果,一条条地单步执行语句,这种方式称为,跟踪,。
VB提供了 4种跟踪方式,逐语句,逐过程,跳出,
和 运行到光标处 。
注意:这 4种方式都只能在中断模式下使用。
15.2 调试与排错
( 1)逐语句逐语句执行又称为单步执行,一次执行一条语句(不包括说明性语句和注释行),每执行完一条语句后就转入中断模式。
在逐语句调试下,用户可以使用调试工具栏或 F8键进入“逐语句”跟踪方式。继续逐语句执行。
( 2)逐过程在执行一般代码语句时,“逐过程”与“逐语句”相似,只有在当前的语句含有一个对过程的调用时,两者才会有差异。
“逐语句”将进入被调用的过程,并在该过程中执行一个语句,
与它不同的是,“逐过程”把被调用的过程视为一个基本单位来执行,然后转回到当前过程的下一语句。要使代码按这种方式执行,单击“调试”工具栏上的“逐过程”按钮。
在现实调试中,一般可以交替使用“逐语句”和“逐过程”。
通过“逐过程”,可以跳过不想测试的过程代码,缩短调试时间;而通过“逐语句”,则可以详细测试可能出现错误的代码。
用户可以使用调试工具栏或 Shift+F8键进入“逐过程”跟踪方式。
15.2 调试与排错
( 3)跳出跳出与前面两种方式也很类似,它连续执行当前过程的剩余部分,并在调用过程的下一行中断执行。
( 4)运行到光标处如果比较肯定错误可能发生在某行代码中,这时就不需要单步调试执行,跳过对无关代码的跟踪,从光标处开始程序的分析。要采取“运行到光标处”调试方法。先将光标置于该行代码上,按 Ctrl+F8键或执行
“调试”菜单中的“运行到光标处”命令,程序就会执行到光标处后转入中断模式。
15.2 调试与排错
3.使用调试窗口
VB提供了 4个调试窗口,本地窗口,立即窗口,监视窗口 及 调用堆栈窗口,用于在跟踪过程中监视变量、
表达式的取值情况。
用户可以在“视图”菜单中相应的命令打开它们。
( 1)“本地”窗口
“本地”窗口的功能是在中断模式下,显示当前过程的所有变量和活动窗体的所有属性,并能改变它们的值。
“本地”窗口可以显示当前过程中所有变量的值。
但需要注意,“本地”窗口只能显示本过程,一般都与“单步执行”配合使用。
15.2 调试与排错
( 2)“立即”窗口
“立即”窗口的功能是帮助用户检查变量或属性的值,同时也可以通过它重新设置变量或属性的值。其优点是:不中断程序执行即可看到结果,以及不影响原有窗体外观。
在程序进入中断模式后,一般会自动弹出“立即”
窗口,如果界面上没有显示出“立即”窗口,可执行
“视图”菜单中的“立即窗口”子菜单来打开它。
( 3)“监视”窗口
“监视”窗口的功能是帮助用户自动对监视表达式所定义的表达式进行监视,当应用程序进入中断模式后,这些监视表达式会出现在“监视”窗口中,可在此处观察它们的值。
15.2 调试与排错
( 4)“调用堆栈”窗口的使用。
通过这个窗口可以显示正在执行的过程、程序和方法程序。第 1个程序运行时,该程序名列在“调用堆栈”
窗口中,如果调用了第 1个程序中的子程序或子过程,
同时又在执行第 2个程序,则两个程序的名字均显示在
“调用堆栈”窗口中。
15.3 软件测试软件测试是为了发现错误而执行程序的过程。测试时要根据软件开发各个阶段的规格说明和程序的内部结构而精心设计的一批有代表性的测试用例,并利用这些测试用例运行程序,以发现错误的过程。
软件测试分 单元测试,集成测试,验收测试 几个阶段:
1)单元测试在编码完成之后由编程人员自己完成;
2)集成测试和验收测试由专门的测试人员在用户和相关的管理部门人员参与下共同完成,验收测试对象为整个软件,包括全部文档。
软件测试的方法与技术大致可以分为 静态测试 与 动态测试 两种。
1)静态测试又叫人工测试,是人工代码复审或人工模拟计算机执行程序的过程。
2)动态测试又叫机器测试,是用事先设计好的测试数据在计算机上执行被测程序的过程。