用户管理  |   用户注册                                                                                    首 页软件下载教程中心办公指南flash动画文档下载办公公文

www.4oa.com - 中科软件园

投递文章 用户管理 投稿指南 资讯通告 :
站内搜索: 您的位置中科软件园 > 教程中心 > 数据库类 > FoxPro > 基础教程 > 教程内容

Foxpro 程序的测试与调试

2005-11-6 19:15:08  来源:本站整理  作者:佚名 【 投递文章
内容提要:开发的测试数据。当然,所有的开发工作都应与真实数据是物理隔离的。在开发过程中很有可能会发生破坏真实数据的错误。例如:错误的输入真实数据的路径而不是测试数据的路径会破坏真实的数据。这也意味着应该定期备份...
开发的测试数据。

当然,所有的开发工作都应与真实数据是物理隔离的。在开发过程中很有可能会发生破坏真实数据的错误。例如:错误的输入真实数据的路径而不是测试数据的路径会破坏真实的数据。这也意味着应该定期备份测试数据测试程序。

不是每个人都擅长测试的。实际上,有些人比其他人更乐于进行测试。应用程序的开发者通常是最差劲的测试者,他们太了解程序而且倾向于总是输入正确的数据。他们下意识不想使自已的程序失败,虽然他们也很清楚地认识到进行测试的必要性。

另一方面,其他人员不会和程序有感情,也就能在测试中更加不留情面。虽然 “ 无情的 ” 测试者会发现更多的问题,但他们必须与开发者进行讨论。程序毕意是别人创建的产品,这点无法否认。

VFP 提供了很多不同的方法来完成同一个任务,所以不要因为与你的方法不同而批评别人的方法。如果存在另一种方法能更好、更有效地完成任务,可以向其他程序员演示它为什么更好。帮助别人学习,而不是强求他们学习新的方法。

  • 确定测试何时结束

    有人也许会说测试永远也不会结束,直到应用程序变得过时,废弃不用为止。实际应用中总会出现数据的新组合,大多数程序会不断发生变化,在这里加个新特性或在那里加个字段。每个新特性都会引入产生错误的可能性。程序路径也可能发生变化,新的变量可能覆盖其他例程中的同名变量,而且其他的副作用也会影响现在的代码。

    不管使用哪种方法都几乎不可能确定什么时候找出所有的故障。更多的时候是根据找出一个故障与放任它存在的代价做出的猜测决定。相反,仅仅为了如期完成测试计划就宣布测试结束是危险的,缺少远见的。测试应当一直持续到每个参加工作的人都对应用程序的性能感到有信心才结束。每个程序员进行的代码测试的方法都略有不同,因此,即使仅有两名程序员在一起进行测试,都会显著提高整体的检测率。

  • 跟踪错误的方法
  • 尽管前面讨论了避常见错误和测试的方法的开发,但是错误仍然会发生。最首要的任务是在发生错误时找到它并修改它。

    在程序执行过程中发生错误时, VFP 显示出一个出错提示框,并给出简单的出错信息。在信息下方有三个按钮; < 终止 >< 挂起 >< 忽略 > 。大多数情况下不想忽略错误。如果是为其他用户编写程序,你决不会希望忽略错误。但事情总有例外。如果程序因为找不到颜色集而失败,就可能希望忽略这个错误。大部分错误是不能忽略的。如果 VFP 不能定位一个表格,则忽略错误没有任何意义。因为某些时候可能会用到这个表格,所以可将问题存档并退出程序。

    作为开发者,读者会发现《挂起》是测试中的一个选项。它停止程序的执行而不是从内存中删除当前的变量。任何当前已打开的表格仍然保持打开,它们的记录指针也在各自的位置上。这时我们可以打开调试窗口( debug )和跟踪窗口( trace )来查看正在被执行的源代码及各种变量和表格的状态。因为已经在前面的章节里讲过了调试工具的使用方法,在这里就不重复了。

    实际上,可能不希望让客户看到这种 VFP 的出错信息。而是你自已的错误处理程序来捕获所有的错误,错误处理程序将发生错误时的系统存档,并安全的退出应用程序。

    下面就讲一下如何编写自已的错误处理程序。

    ON ERROR 正是我们想要的命令,它可把程序定向到一个错误处理程序中,它的主要任务是提供关于错误的信息。以下这条命令的执行将使后续程序的错误定向到 MYERROR 错误处理程序中:

    ON ERROR DO MYERROR WITH error(),message(),message(1),sys(16),lineno()

    ON ERROR 的语法如下:

    ON ERROR [ 命令 ]

    其中, [ 命令 ] 项指出当程序出现错误时将要执行的命令,它即可以是一条简单的命令也可以调用其他的过程。如果省略它的话将使前次定义的 ON ERROR 失去作用。

    在上面的例子中我们定义的是当程序错误时执行

    DO MYERROR WITH error(),message(),message(1),sys(16),lineno()

    命令来调用名为 MYERROR 的错误处理过程。其中 error(),message(),message(1),sys(16),lineno() 为传递给过程的参数,它们分别传递“错误号”,“错误信息”,“返回导致这个错误的程序源代码”,“当前执程行的程序名”,“正在执行的那一行程序的行号”给错误处理过程。在 MYERROR 过程中可以通过检查错误号来确定错误的类型。

    从用户的角度来说主要存在三种主要类型的错误。第一种是轻微错误,其中包括的错误有找不到颜色集,或者打印机或软盘驱动器没有就绪。有些情况下只要登记错误,然后跳过引起错误的命令并继续执行,如找不到颜色集。

    其他情况下,在发给用户的消息后是一个处理错误的 RETRY 或 RETURN 命令。使用这种方法的例子是程序试图从软盘驱动器上读文件时,驱动器中没有软盘或者程序试图写盘时软盘是写保护的。在这种情况下,将显示给用户消息,告诉他们如何用 RETRY 纠正错误。

    另一个例子假设使用 SKIP 在记录中移动时超过了文件的尾。它的错误号为 4. 在遇到这种类型的错误时不必取消程序。为了纠正问题,程序只要把记录指针重置到表格的最后一条记录上即可,程序清单如下:

    prodedure myerror
    lparameters lnErrorNo,lcMessage,lcErrorLine,lcmodule,lnErrorLineNo
    if lnErrorNo = 4
    messagebox(“ 到了记录尾了 ”)
    gotobottom
    else
    cancel
    endif
    return

    另外我们还可以用一个文本文件来记录程序的出错信息,以便程序员查阅。可以用记录本建一个名为 ERROR.TXT 的文件, COPY 到程序所在的目录下。然后在错误处理程序中把各种

    上一页  [1] [2] [3]  下一页

    (评论内容只代表网友观点,与本站立场无关!)[ 全部评论 ]

    网友评论:

        用户名:

        评   分:100分 85分 70分 55分 40分 25分 10分 0分

        内 容:

                     (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码

    关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 -有事点这里