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

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

  上述是免费的个人版所具有功能,VU企业版除了具有这些功能外,还具有"描述程序行为"的功能:
自动输出参数、成员变量的输入输出值,返回值,用户也可以用简单的语法输出任何变量或表达式的值。这些数值都是上下文相关的,也就是说,同一个用例的相关值放在一起;

  显示在任一个用例下程序所执行的代码,可以很方便地查看程序是否按预想的流程执行。
程序无论多复杂,无非就是执行一些代码,读写、计算一些数据,因此,上述两方面信息已完整地描述了程序行为,很容易看出"程序干了什么"。这个功能大幅度地提高了开发人员的工作效率:

  帮助整理、验证编程思路:写几行代码,就可以看看"程序干了什么",轻松判断"现在所写的对不对",也比较容易想清楚"接下来要怎么写"。快速找出程序错误:根据输入输出数据和所执行的代码,通常可以很快判断程序是否按预期工作并找到出错原因,比单步调试要快得多。编程的时间消耗主要不在于敲键盘,而在于编程思路和调试,VU企业版可谓"对症下药",在这两方面大量提高工作效率。

  以上所述,都是针对软件开发过程中无可逃避的工作:编码调试。仅从时间上来说,对于编写调试有一定复杂度的程序,使用专门驱动,可能比自然驱动多费一点时间,但也是完全合算的,至于自动驱动,如果使用VU个人版,大概能省时10%,如果使用企业版,则可以省时20-50%!读者可以自行尝试比较一下。是否省时还不是最重要的,更高的价值在于:使用专门驱动或自动驱动编码调试,实际上也已经把令人望而生畏的单元测试工作完成了一半,并清除了实施单元测试的最主要障碍。

   
三、实现彻底单元测试

  是什么使单元测试难于实施?首先是代码的可测性。可测性是什么?如果一个类具有基本的可测性,那么把它加入到另一个工程后(当然有关联的文件也要加入)能够通过编译,这其实是很低的要求,但对于一个有一定规模的项目,如果开发调试时使用自然驱动,在完成编码后才进行单元测试,那么通常都不具有可测性,因为开发人员常常在无意之中使代码之间产生了不当耦合,这些不当耦合累积起来,会使整个项目的代码纠缠在一起,造成难于测试。

  使单元测试难于实施的另一个方面是建立测试用例。在本例中,如果由不熟悉代码的测试人员建立测试用例,那么他很可能不知道如何生成CToken对象 指针的列表。

  如果边开发边使用专门驱动(测试代码放在另一个工程中)或自动驱动调试,那么一旦出现影响可测性的不当耦合就会及时发现及时解决,保证了代码的可测性,另一方面,由于至少建立了一个测试用例,测试人员建立其他用例时只要修改一下输入输出数据,从而大大降低建立测试用例的难度。总之,使用专门驱动或自动驱动调试,在不增加开发工作量的同时,已经为单元测试打一下了坚实的基础。

  范例项目V0.1处于这样一个阶段:刚刚完成代码编写,并未完成单元测试,现有的多数测试用例都是编码时用于调试的。在此基础上,单元测试由谁做,难度都不大。VU的典型应用是通过三个 阶段来完成针对一个函数的彻底的测试:
  1)基本功能测试:测试代码的基本功能;
  2)完成白盒覆盖:在现有用例的基础上,使用测试用例设计器为未覆盖的语句、条件、分支、路径设计测试用例,达到100%语句、条件、分支、路径覆盖;
  3)执行自动边界测试捕捉意料之外的错误。

  以上三阶慰梢杂刹煌嗽痹诓煌奔渫瓿桑哦涌梢愿菔导是榭鲎龀隽榛畎才牛旅媸且桓龅湫偷目⒉馐粤鞒獭?/P>

  1)开发人员边开发边使用VU调试测试,完成基本功能测试。在VU的支持下开发调试,可以大幅提高开发效率,绝不会影响开发进度。也许读者会认为,开发人员没有时间去设计测试用例,其实这是一种误解,开发人员写代码时肯定要想清楚代码的功能并且要使用基本的输入进行调试,这些就是基本的测试用例,实际上不需要多做什么。开发人员提交代码同时提交测试代码和测试报告。如果项目已完成或部分完成编码,也建议先由程序员首先对重要代码进行基本的功能测试。
2)测试人员检查基本测试用例是否符合设计,并在此基础上完成白盒覆盖和边界测试。由于有了初步的测试,保证了代码可测性,不可能产生因为不当耦合造成难于测试的状况;在现有用例的基础上,使用测试用例设计器找出遗漏用例也不会有太大障碍,这就使测试人员的工作易于进行。测试人员只需要提交更新过的测试代码和测试报告,不需要另外记录测出的问题。
3)开发人员下载新的测试代码和测试报告,执行整体测试,然后针对报告了错误的函数执行函数测试以获取详细信息,必要时进行调试,找出错误,修改代码,使所有测试通过,再次提交产品代码和测试报告。
4)测试人员再次执行整体测试,验证所有的测试均已通过。

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

关注我们

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