“闖過了也就不當回事了”凱樂軟件的架構師王彤說。回顧Visual Unit長達五六年的開發過程,缺乏資金、技術難關、大量功能通不過應用檢驗推倒重來等困難接踵而至,但王彤樂觀地認為這些是原創產品必然要面對的。
Visual Unit是一款可視化、自動化的C/C++單元測試工具,具有自動打樁(包括補齊、隔離、控制)、自動生成測試代碼和用例框架、可視化編輯測試用例等特性。
有趣的是,這樣一款使得“單元測試原來如此簡單”的軟件,最初的開發原因竟是自我需要。當時王彤所在的團隊是一個用業余時間承接外包項目的開發小組,為了保證項目質量及明確各成員的質量責任,決定推行單元測試,但未找到合用的工具,所以決定自己開發。
Visual Unit的操作界面之一
最早的版本應用後感覺不錯,所以一直使用,期間不斷發現新需求,基本上每完成一個外包項目就升級一次,持續了兩年左右。這個工具(當時還沒有命名為Visual Unit)解決了測試效率低下和測試效果不佳的問題。測試效率方面,自動生成測試代碼,節省了編寫測試代碼的時間;同時,通過自動打印輸入輸出數據和標示某種輸入時所執行的代碼,使程序行為一目了然,幫助我們整理編程思路和快速排查錯誤源,提高編程效率,此外還通過增強調試器功能來提高調試效率。測試效果方面,它開創了基於現有用例找出遺漏用例的技術,可以比較輕松地實現高覆蓋,並自動生成大量邊界測試用例來捕捉遺漏的可能導致錯誤的輸入。
“單元測試的好處是誰做誰知道,那段時間我們的外包項目基本上都很順利,切實體驗到了單元測試的價值。”因此他們產生了把這個工具做成通用產品的想法。就這樣在原來的基礎上又經過一年多的研發,他們突破了一些比較高級的技術,例如邏輯結構圖的自動繪制、路徑及路徑覆蓋的自動統計、白盒用例的設計等,在05年八月份推出了1.0 Beta版,十月份發布正式版也即Visual Unit 1.0。
Visual Unit 1.0的第一套商業版在發布的當月就賣了出去,是客戶主動聯系的,“當時我們還沒有注冊公司,連FP都是由朋友公司開的。”但由於1.0版的研發是基於自我需要,所以優點和缺點都很突出:優點是功能實用、測試效率高,因此引起了不少大企業的關注;缺點是不夠大氣,比較適用於小團隊小項目的邊開發邊測試,缺少解耦合、底層模擬等功能,無法對付大型企業的大型項目。
去年十二月一日正式發布的2.0是完全重新設計的版本,解決了阻礙單元測試實施的主要難題:一是自動解耦合,可以對大型特大型高耦合的項目實施分割測試;二是自動建立並行開發過程中的個體開發調試測試環境,使大型特大型項目,也能從編碼開始就實現邊開發邊測試;三是完善的底層模擬功能,解決了因打樁造成的失真難題,不需要編寫代碼就可以在用例中控制底層代碼的行為,包括設定返回值、輸出參數、全局變量、成員變量。另外,增加了自動生成WEB格式的測試報告功能,重新設計了界面,易用性也有很大改進。
“從2.0推出的當月就開始拿簽單”王彤說。有了產品性能上的保證,產品的運營也便漸漸順利暢通了起來。雖然目前Visual Unit還談不上盈利,但它的原創團隊已經可以為此感到興奮和更加有信心了。
接下來,他們將進一步完善產品,在半年到一年內大概會開發五個中級版本(2.1至2.5),這些中級版本主要解決兩方面問題:一是進一步提高用戶體驗,盡可能滿足用戶提出來的中小型需求;二是拓展產品的適應范圍,包括直接支持嵌入式開發環境。至於市場推廣,從今年上半年開始,他們會舉行一些巡回講座,主題是“如何推行單元測試”,下半年將開始拓展國外市場。【吶不喊】
凱樂軟件的架構師王彤的MSN:vusupport#hotmail.com
附:
看著一個產品從無到有,到發展到今天,王彤也分享了他做產品和做架構師的感悟。
開發一個軟件產品,最難的是設計出真正符合用戶需求的功能,但只要真心為用戶著想,從用戶的角度考慮問題,積極了解用戶的真正需要,就會不斷產生好創意,就能夠設計出符合用戶需求的功能。當不知道該做什麼功能的時候,捷徑不是去參考抄襲同類產品,而是去接觸用戶,從用戶中收集素材,獲取靈感。
產品都是在應用中才能完善的,只要真心為用戶著想,就會積極為用戶提供好的服務,幫助用戶解決問題,在這個過程中,你會知道產品哪裡有問題,哪裡不好用,哪裡不易用,並隨時改進。用戶不但是衣食父母,更是良師益友。
軟件的價值在於為用戶創造價值,只要真心為用戶著想,幫助用戶創造效益,產品就會贏得用戶、贏得口碑、贏得市場。
有一個論調是:對工具類產品來說,國內的用戶不好,要做國際市場才有前途。我們當然有開拓國際市場的計劃,但是我感覺國內用戶非常好,只要做好產品,做好服務,用戶就會真誠地支持我們,幫助我們。
作為架構師,王彤的基本職責就是“決定產品做什麼功能”。在開發1.0的時候,這個職責比較簡單,因為自己就是用戶。1.0正式版發布後,有了外面的用戶,需要盡可能接觸用戶,為此,王彤盡可能參與以下工作和活動:
顧問,這是比較宏觀的服務,就是幫助用戶制定推行單元測試的方案,解決推行過程中的非技術問題。
技術支持,這是比較微觀的服務,就是解決開發或測試工程師在使用Visual Unit過程中遇到的技術問題。
講座,“教學相長”,這有助於分享你的技術和感悟,同時也會在講座中修正和提高自己。
業務,雖然不太會做業務,但偶爾也客串一下,因為業務所接觸的對象跟技術往往是不同的,可以從另一個角度來審視產品。
總之,王彤認為只要做到既了解用戶需要什麼,又了解自己能做什麼,就能不斷產生好創意,保證產品在技術上不斷前進,方向上不會出大錯,日積月累,產品就能穩步成長。