C/C++单元测试工具Visual Unit 4发布

单元测试与以前不同了

    测试代码功能逻辑,实现高效率高质量编程。

    如果不做单元测试,编程产能大部分消耗在调试上。一个模块的纯编码时间如果为10,那么,即时调试(编码过程中的调试)时间在10-50之间,后期调试(集成后排除bug的调试)时间也在10-50之间。调试一个bug,一两个小时不知不觉就过去了,一两个小时能够编写一堆代码。

    单元测试节约90%的调试,假如单元测试本身不消耗时间,那么,编写合格代码的产能可以提升两到三倍。可惜单元测试太难,太费时间,高成本基本上抵消了效益。虽然如此,还是有不少企业在实施或不断尝试单元测试,说明业界普遍认为,单元测试的效益,与投入相比,至少是持平的。

    最新发布的C/C++单元测试工具Visual Unit 4,比现有的任何同类工具测试效率高10倍以上,意味着单元测试的时间成本降低90%,同时,只收服务费,使采购工具的成本也降低90%。如果在以前的时间成本和工具成本下,效益和成本是平衡的,那么,这两项成本双降90%意味着什么?大量的钱!如果程序员人手一套VU4,边开发边测试,对于一个效益还过得去的企业,一位中级程序员一年可以产生20万的效益!

10倍效率从何而来?

    VU4完全表格驱动,不用写测试代码。请看下面的测试示例,测试涉及到:底层输入(调用底层函数产生的数据)、局部输出(执行过程中判断变量)、对象指针链表、对象指针映射表。使用VU4,点几下鼠标,在表格填几行数据就OK了,别的工具要写多少代码?且哪个能判断局部输出?岂止是十倍效率。这个示例未涉及到局部输入(中断输入、界面输入、静态输入等),其设置也一样。有些工具宣称自动生成用例完成测试,那不是高效率,那是高忽悠,工具不可能自动了解代码功能,因此不可能生成有意义的用例。VU4任意设置逻辑块的输入输出,一个函数多个逻辑块可以对应多个表格,天下没有难测的代码!

    C/C++单元测试工具Visual Unit 4发布
    C/C++单元测试工具Visual Unit 4发布

    C/C++单元测试工具Visual Unit 4发布

快速完成高标准覆盖

    欧美航空标准MC/DC覆盖很强很科学,可是广受质疑,因为太难了,但使用VU4,则一点也不难。VU4针对未覆盖的逻辑单位,自动计算出近似用例及修改提示,根据提示修改近似用例,就可以找出隐藏很深的用例实现覆盖。完成高标准覆盖又是一个效率瓶颈,不过对VU4来说,却是一项拿手好戏,进一步拉大测试效率的领先距离。

    C/C++单元测试工具Visual Unit 4发布
 

  • 舒服地高效地编写代码

        逻辑块可视编程,提交前完成覆盖,只进行粗线条调试。这就是Easy TDD,舒服而高效的编程模式。
       
        VU4自动示出程序行为:什么输入执行什么代码产生什么输出。写几行代码就观察程序行为,看程序所做的跟你所想的是否一致、思路是否有偏差、录入是否有错误,这样编写代码尤其是复杂的逻辑计算代码,舒服而高效。
       
        编写逻辑块应该用可视编程,其他代码可以先不测试,以保持原来的习惯以及专注。VU4自动统计最近编写或修改的函数,提交代码到版本管理工具前,或模块的编写告一段落时,再把没测的跑一下看一下,并完成覆盖,相当于代码的复查。
    平常的调试,可以只用来跟踪大的流程,不必调试逻辑块。后期发现了bug,调试只用来粗略定位,例如判断是哪个函数的问题,然后补充用例数据,修改代码并使单元测试通过,问题就解决了。

        下图示出代码编写过程中对程序行为的观察。本来以为功能都实现了,可是结果不对,为什么呢?如果代码是你写的,一下子就看出原因来了:指针偏移后没有恢复。图中,黑色代码是当前输入下执行的代码。写几行代码就可以观察程序行为,这就是可视编程。

        C/C++单元测试工具Visual Unit 4发布

        下图是提交前完成覆盖的界面,对于图示的没有逻辑计算的代码,不用做任何工作,直接执行一下就可以完成覆盖。也可以把最近更新的函数一次性执行,然后查看黄灯和红灯函数。

        C/C++单元测试工具Visual Unit 4发布
     
  • 总结

        大道至简,使用VU4,单元测试很简单。

        人手一套VU4,编写合格代码的产能立刻提升到原来的二到三倍,而且开发过程很舒服。节约一张纸很有意义,但节约程序员的一分钟,意义要大很多很多,人才,才是最昂贵的。

        从前,单元测试谁都做不了或成本太高,如今,平衡已被打破。如果做外包,投标时承诺单元测试将秒杀对手(哪个发包方不重视项目质量?);如果做产品,快速的开发过程,将帮你抢占市场先机,抢占几次先机,就把对手远远甩掉了。
  •  

    C/C++单元测试工具Visual Unit 4发布

    上一篇:DNN Install包,DNN Source包和DNN StarterKit包之间有什么区别?


    下一篇:C++如何将CString 转化成char *