高效开发与彻底测试
2010-09-04 20:48:16 来源:WEB开发网自动驱动
在Visual Unit的支持下编码调试,除了兼具自然驱动和专门驱动的优点外,还能享受Visual Unit的独特殊功能带来的便利。
首先我们用个人版来说明,个人版是免费的版本,并且开发商也提供免费的基本技术支持。
Visual Unit具有丰富的文档,包括视频教程,这里不再叙述其基本使用方法。只要选择要测试(调试)的类和函数(如果使用企业版的IDE插件,会根据当前文档和光标位置自动选择),VU就会生成测试代码,并弹出测试用例编译器。VU是自动生成测试代码,而不是自动生成测试用例,也就是说,输入输出数据是由用户指定的,不过VU已经生成了输入输出数据的声明。下面是本例中VU生成的第一个测试用例的输入输出:
输入部分:
CTokenList iList =
输出部分:
ret ==
这里的“=”和“==”仅仅表示可能需要赋值或判断输出,对于基本数据类型,可以直接填写数值,高级数据类型需要灵活处理(详细信息请查看帮助或教程)。只要把输入输出改为这样就完成了第一个测试用例的建立:
输入部分:
CTokenList iList = //多余的=会自动删除
CTokenReader reader
reader.ReadTokenList(iList, "int i")
输出部分:
ret->type == "int"
ret->name == "i"
更多的测试用例,只要点击"新建",就会自动拷贝当前用例,只要修改输入输出就行了。这里没有涉及到成员变量和变局全量,不过都很简单的(成员变量用点操作符访问,全局变量直接访问),请查看帮助。
可以看出,使用VU建立调试支持环境是很快速的:对于第一个测试用例,输入输出比较复杂时需要写少量简单的代码,输入输出简单时直接填写输入输出数值,其他测试用例只需点击一个按钮拷贝现有测试用例并修改输入输出就行,可以选择相近的用例来生成新的用例,这样通常只需要修改一两个数据就可以得到想要的用例。
那么,还可以得到哪些好处呢?
方便地进入调式:在被调试函数的入口加断点,并调试测试工程即可进入调试;
方便地选择输入:在测试用例编辑器中轻点鼠标即可指定要调试的输入,如果执行了测试,只要点击出错的测试,就会自动选择相应的输入;
方便地切换输入:调试过程中,不需要退出调试,就可以切换到其他输入:只要在测试用例编辑器中选择另一个测试用例,用调试器的"执行到光标所在行"命令回到函数入口,即可切换到新的输入;
无限制后退重复:用调试器的"执行到光标所在行"命令可以自由地后退和重复执行,其实现的原理是"重来",后退时相关数据也会"还原",感觉上是真正的"后退",这个奇特而有用的功能是VU生成的测试代码自动实现的。
上述是免费的个人版所具有功能,VU企业版除了具有这些功能外,还具有"描述程序行为"的功能:
自动输出参数、成员变量的输入输出值,返回值,用户也可以用简单的语法输出任何变量或表达式的值。这些数值都是上下文相关的,也就是说,同一个用例的相关值放在一起;
显示在任一个用例下程序所执行的代码,可以很方便地查看程序是否按预想的流程执行。
程序无论多复杂,无非就是执行一些代码,读写、计算一些数据,因此,上述两方面信息已完整地描述了程序行为,很容易看出"程序干了什么"。这个功能大幅度地提高了开发人员的工作效率:
帮助整理、验证编程思路:写几行代码,就可以看看"程序干了什么",轻松判断"现在所写的对不对",也比较容易想清楚"接下来要怎么写"。
快速找出程序错误:根据输入输出数据和所执行的代码,通常可以很快判断程序是否按预期工作并找到出错原因,比单步调试要快得多。
编程的时间消耗主要不在于敲键盘,而在于编程思路和调试,VU企业版可谓"对症下药",在这两方面大量提高工作效率。
以上所述,都是针对软件开发过程中无可逃避的工作:编码调试。仅从时间上来说,对于编写调试有一定复杂度的程序,使用专门驱动,可能比自然驱动多费一点时间,但也是完全合算的,至于自动驱动,如果使用VU个人版,大概能省时10%,如果使用企业版,则可以省时20-50%!读者可以自行尝试比较一下。是否省时还不是最重要的,更高的价值在于:使用专门驱动或自动驱动编码调试,实际上也已经把令人望而生畏的单元测试工作完成了一半,并清除了实施单元测试的最主要障碍。
更多精彩
赞助商链接