Visual Unit:单元测试原来可以如此简单

 

 

“闯过了也就不当回事了”凯乐软件的架构师王彤说。回顾Visual Unit长达五六年的开发过程,缺乏资金、技术难关、大量功能通不过应用检验推倒重来等困难接踵而至,但王彤乐观地认为这些是原创产品必然要面对的。

Visual Unit是一款可视化、自动化的C/C++单元测试工具,具有自动打桩(包括补齐、隔离、控制)、自动生成测试代码和用例框架、可视化编辑测试用例等特性。

有趣的是,这样一款使得“单元测试原来如此简单”的软件,最初的开发原因竟是自我需要。当时王彤所在的团队是一个用业余时间承接外包项目的开发小组,为了保证项目质量及明确各成员的质量责任,决定推行单元测试,但未找到合用的工具,所以决定自己开发。

Visual Unit:单元测试原来可以如此简单_第1张图片

                                    Visual Unit的操作界面之一

最早的版本应用后感觉不错,所以一直使用,期间不断发现新需求,基本上每完成一个外包项目就升级一次,持续了两年左右。这个工具(当时还没有命名为Visual Unit)解决了测试效率低下和测试效果不佳的问题。测试效率方面,自动生成测试代码,节省了编写测试代码的时间;同时,通过自动打印输入输出数据和标示某种输入时所执行的代码,使程序行为一目了然,帮助我们整理编程思路和快速排查错误源,提高编程效率,此外还通过增强调试器功能来提高调试效率。测试效果方面,它开创了基于现有用例找出遗漏用例的技术,可以比较轻松地实现高覆盖,并自动生成大量边界测试用例来捕捉遗漏的可能导致错误的输入。

“单元测试的好处是谁做谁知道,那段时间我们的外包项目基本上都很顺利,切实体验到了单元测试的价值。”因此他们产生了把这个工具做成通用产品的想法。就这样在原来的基础上又经过一年多的研发,他们突破了一些比较高级的技术,例如逻辑结构图的自动绘制、路径及路径覆盖的自动统计、白盒用例的设计等,在05年八月份推出了1.0 Beta版,十月份发布正式版也即Visual Unit 1.0。

Visual Unit 1.0的第一套商业版在发布的当月就卖了出去,是客户主动联系的,“当时我们还没有注册公司,连发票都是由朋友公司开的。”但由于1.0版的研发是基于自我需要,所以优点和缺点都很突出:优点是功能实用、测试效率高,因此引起了不少大企业的关注;缺点是不够大气,比较适用于小团队小项目的边开发边测试,缺少解耦合、底层模拟等功能,无法对付大型企业的大型项目。

去年十二月一日正式发布的2.0是完全重新设计的版本,解决了阻碍单元测试实施的主要难题:一是自动解耦合,可以对大型特大型高耦合的项目实施分割测试;二是自动建立并行开发过程中的个体开发调试测试环境,使大型特大型项目,也能从编码开始就实现边开发边测试;三是完善的底层模拟功能,解决了因打桩造成的失真难题,不需要编写代码就可以在用例中控制底层代码的行为,包括设定返回值、输出参数、全局变量、成员变量。另外,增加了自动生成WEB格式的测试报告功能,重新设计了界面,易用性也有很大改进。

“从2.0推出的当月就开始拿签单”王彤说。有了产品性能上的保证,产品的运营也便渐渐顺利畅通了起来。虽然目前Visual Unit还谈不上盈利,但它的原创团队已经可以为此感到兴奋和更加有信心了。接下来,他们将进一步完善产品,在半年到一年内大概会开发五个中级版本(2.1至2.5),这些中级版本主要解决两方面问题:一是进一步提高用户体验,尽可能满足用户提出来的中小型需求;二是拓展产品的适应范围,包括直接支持嵌入式开发环境。至于市场推广,从今年上半年开始,他们会举行一些巡回讲座,主题是“如何推行单元测试”,下半年将开始拓展国外市场。【呐不喊】

 凯乐软件的架构师王彤的MSN:vusupport#hotmail.com

附:

看着一个产品从无到有,到发展到今天,王彤也分享了他做产品和做架构师的感悟。

开发一个软件产品,最难的是设计出真正符合用户需求的功能,但只要真心为用户着想,从用户的角度考虑问题,积极了解用户的真正需要,就会不断产生好创意,就能够设计出符合用户需求的功能。当不知道该做什么功能的时候,捷径不是去参考抄袭同类产品,而是去接触用户,从用户中收集素材,获取灵感。

产品都是在应用中才能完善的,只要真心为用户着想,就会积极为用户提供好的服务,帮助用户解决问题,在这个过程中,你会知道产品哪里有问题,哪里不好用,哪里不易用,并随时改进。用户不但是衣食父母,更是良师益友。

软件的价值在于为用户创造价值,只要真心为用户着想,帮助用户创造效益,产品就会赢得用户、赢得口碑、赢得市场。

有一个论调是:对工具类产品来说,国内的用户不好,要做国际市场才有前途。我们当然有开拓国际市场的计划,但是我感觉国内用户非常好,只要做好产品,做好服务,用户就会真诚地支持我们,帮助我们。

作为架构师,王彤的基本职责就是“决定产品做什么功能”。在开发1.0的时候,这个职责比较简单,因为自己就是用户。1.0正式版发布后,有了外面的用户,需要尽可能接触用户,为此,王彤尽可能参与以下工作和活动:

顾问,这是比较宏观的服务,就是帮助用户制定推行单元测试的方案,解决推行过程中的非技术问题。

技术支持,这是比较微观的服务,就是解决开发或测试工程师在使用Visual Unit过程中遇到的技术问题。

讲座,“教学相长”,这有助于分享你的技术和感悟,同时也会在讲座中修正和提高自己。

业务,虽然不太会做业务,但偶尔也客串一下,因为业务所接触的对象跟技术往往是不同的,可以从另一个角度来审视产品。

总之,王彤认为只要做到既了解用户需要什么,又了解自己能做什么,就能不断产生好创意,保证产品在技术上不断前进,方向上不会出大错,日积月累,产品就能稳步成长。
 

你可能感兴趣的:(Visual Unit:单元测试原来可以如此简单)