正在阅读:高效开发与彻底测试高效开发与彻底测试

2006-11-10 09:23 出处: 作者:王彤 责任编辑:lizhe

  自然驱动的主要优点是不需要其他工作就可以直接调试,甚至感觉不到需要驱动,主要缺点是输入数据通常是公共的,即很多代码都使用相同的输入源进行调试,实际输入往往是经过其他代码处理后的中间结果,要针对各种可能输入都进行调试往往很困难,造成调试不全面,程序员的思维受到局限,难于做到全面地考虑各种可能输入。

  专门驱动的主要优点是输入数据是专门针对于被测试程序,容易做到比较全面,程序员的思维也会比较全面,对编写功能齐全的健壮的程序很有好处,要针对某种特定输入进行调试比较容易,缺点是需要花费大量的时间来编写驱动代码。

  显然,自然驱动的主要问题是不全面,代码错误较多,专门驱动的主要问题是编写驱动代码很费时。有没有更好的方法,既不需要编写驱动代码,又能方便且全面地调试?有 !这就是自动驱动,即在Visual Unit的支持下编码调试,不但无需费时间写驱动代码,更拥有多种独特的便利,可以大幅提高编码调试的质量和效率。

  Visual Unit是单元测试工具,但也是高效编程调试的支持环境,在Visual Unit的支持下调试,既全面又省时:
  自动生成驱动代码,但又可以方便地设定调试输入;
  测试用例编辑器列出全部输入,可以很方便地检查是否全面。

  除了上述优点外,在Visual Unit的支持下调试,还可以:
  可视化地选择调试输入;
  调试过程中还可以切换输入;
  无限制的后退,重复。

  上述仅是免费的个人版的功能,对于企业版用户,实际上大多数单步调试都可以省略:
自动输出参数、成员变量的输入输出值,返回值,用户也可以用简单的语法输出任何变量或表达式的值,这些数值都是上下文相关的;

  显示在一个用例下,程序所执行的代码,可以很方便地查看程序是否按预想的流程执行。

  程序无论多复杂,无非就是执行一些代码,读写、计算一些数据,因此,上述两方面信息已完整地描述了程序行为,一眼就能看出程序干了什么,通常可以很快判断程序是否按预想的工作并找到出错原因,比单步调试要快得多。

  下面以实例来进一步分析三种调试方式的优缺点。这里所用的示例是范例项目中的CExFunction::ParseOneParameter()函数,这是一个很普通的函数,读者也可以随便拿其他有些复杂度的代码来比较。该函数的功能是解析C++代码中的一个参数,原形如下:

  PARAMETER* CExFunction::ParseOneParameter(CTokenList& iList);
  PARAMETER 是保存一个参数对象的结构,定义如下:

       struct PARAMETER

       {

       CString type; //参数类型

       CString name; //参数名

       CString defVal; //缺省值

       CString array; //如果参数是数组,保存[]及[]内的文字常量

       };

  
  参数iList是一个输入参数(范例的命名规则是用i表示输入参数),传递由C++代码中的一个参数经过词法分析转换获得的记号对象序列,例如参数int* pi,将转换为三个记号对象,分别对应于:int, *, pi。该函数将记号对象序列解析到一个PARAMETER结构的指针中,并作为返回值返回。

键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品