一邊是軟件開發、測試謹小慎微,一邊是系統宕機、癱瘓事故頻發。供應商、用戶、第三方應如何做好測試管理,提升軟件質量?
中國軟件測試市場究竟有多大?互相矛盾的現象讓人難以看明白。
借助對1066家企業IT應用質量的一手調查,對10位業內人士的獨家采訪,我們來分析如何細化測試崗位和行業的專業分工、提升復合的測試技能、化解測試與開發亦敵亦友難題、消除測試考核評估的掣肘……
讓我們一層層揭開軟件測試的迷局。
2010 年世界杯足球賽期間,Twitter的多次大規模宕機事件讓用戶無法忍受;2007年,奧運票務系統因無法承受瞬間每小時800萬次的流量而宕機;2006年,英國倫敦希思羅機場航站樓因應用缺陷致行李處理系統故障,積壓行李達萬件;近期,國內某銀行核心業務系統發生故障,導致該銀行包括柜臺、網銀、ATM機在內的所有渠道的業務停止4.5小時……
重開發、輕測試,讓軟件系統故障頻發。
為什么經過測試的軟件系統還是會出現問題?測試與業務有著怎樣錯綜復雜的關系?軟件測試的瓶頸究竟是什么?國內軟件測試將呈現怎樣的發展趨勢?
借助中國測試平臺網對1066家企業的一手調查,以及中國計算機報記者對10位業內人士的獨家采訪,讓我們層層揭開軟件測試的迷局。
測試軟件不能承受之輕
捷克作家米蘭·昆德拉告訴我們,生命中有太多事情看似輕如鴻毛,卻讓人難以承受。在IT應用中,軟件測試就是如此。
2007 年10月30日,奧運票務系統因無法承受瞬間達到每小時800萬次的流量而宕機,這也許是美國票務系統提供商史上最沒面子的時刻。這家公司是2004年雅典奧運會票務獨家供應商,其系統技術已經經過市場的考驗。據說在2008年奧運會的票務系統中,他們已經提高了峰值流量的預設值,可是沒想到還是估計不足,才出了大問題。
2009年11月22日,eBay網站長時間宕機,造成賣家蒙受相當于當天銷售額80%的損失。已經不止一次的宕機事件讓eBayCEO臉面無光,不得不對eBay的系統負載能力重視起來。
另據業內人士透露,擁有600多家分店、18家配送中心,每天向全球180萬客戶提供種類繁多的設備維護、修理和運作產品的工業品分銷商固安捷(Grainger)曾在SAP系統實施過程中,由于系統功能性故障損失了2300萬美元,使其無法完成當季收入指標。
“測試時候不把好關,后期上線后應用就會出現大的問題。”清華大學教授、中國軟件行業協會系統與軟件過程改進分會常務副會長鄭人杰在接受中國計算機報記者采訪時表示,近20年來他一直在關注軟件質量的問題。
通過剪報等方式,鄭人杰收集了這方面的諸多新聞素材,其中包括:上世紀90年代海灣戰爭時期美國部隊由于導彈系統故障炸了自己軍營;2003年美國出現史上最嚴重的大面積停電,影響1/4國土面積的居民;2008年英國航站樓系統故障,導致15000件行李積壓;2006年ATM機故障,造成轟動一時的許霆案;近期不斷出現的ATM“雙倍吐錢”等問題還不斷出現。
相信這些系統上線前是經過了測試的。那么,為什么經過測試的系統還是會出現問題呢?
“業務需求不清楚,以及現有軟件測試能力有限,導致了上述問題的發生。”中國惠普企業業務集團軟件及解決方案部技術總監于志偉在接受記者采訪時表示,軟件測試已經不只是一個IT問題,它和業務息息相關。
軟件質量問題不只造成了上述有特別惡劣影響事件出現,中國軟件評測中心金融電信測試部總經理羅文兵向《中國計算機報》記者介紹說,眾多項目的上馬時間一推再推,以及軟件產品面臨層出不窮的更新,背后都是軟件質量的問題,而軟件測試問題是矛頭所指。
現在,軟件測試已經不是傳統意義上軟件產品交付前單一的“找錯”過程,而是軟件正常交付、應用提升的一大利器。它貫穿于軟件生產過程的始終,是一個科學的質量控制過程。從一個軟件項目的需求調研、設計、編碼、驗收,直到運行維護,整個過程都需要有軟件測試工程師的介入和把關。
羅文兵介紹說,根據執行體的不同,目前他們把測試分為三類:第一方測試,指的是軟件開發商、系統集成商內部的測試;第二方測試,指的是用戶單位的測試,即用戶委托他人開發了一套系統或者購買了軟件產品后,需要對系統或產品進行驗收測試;第三方測試,指的是獨立的機構或者單位進行的測試,像中國軟件評測中心這樣的第三方檢測實驗室,以及惠普等IT巨頭,都有獨立測試部門為客戶提供測試服務。測試外包本質上等同于第一方測試,因為整個測試的要求和管理都是由第一方負責的。
從被測內容角度看,軟件測試涵蓋了單元測試、集成測試、系統測試等不同內容。羅文兵介紹,從軟件生命周期來看,單元測試、集成測試更偏重于代碼級測試,一般主要是由第一方測試來實現,少量依靠第三方。用戶測試和第三方測試做的更多的是系統級測試,主要是從業務執行角度,來看軟件能不能完成業務要求。系統測試層次更高,全面的系統測試包括系統的功能測試、性能測試、安全測試等。
“軟件測試的重要性不言而喻。微軟做Windows產品開發時,測試人員與開發人員的比例是1∶1,甚至達到了2∶1。他們邊開發邊測試,測試是貫穿整個開發過程的。”某IT領域資深人士對記者說。
羅文兵強調,現在對于電子商務、金融、電信等行業企業而言,系統和業務是一體的,因為其信息化依賴程度很高,信息系統的質量直接決定著經營能力,它們的產品創新都是依賴后臺的信息系統來實現出來。如果它們的軟件測試做得不好,對業務的影響是顯而易見的。
那么,測試工作怎么才能更貼近業務?細化行業分工和提升測試能力是兩條關鍵的途徑。
三方測試一個都不能少
“第一方、第二方、第三方,三方測試都是必要的,一個都不能少。”羅文兵說,“軟件測試鏈條中的各個角色,必須各司其職:軟件開發商和系統集成商必須自己做好嚴格的測試,為用戶提供高質量、可信的軟件產品;用戶要根據自己的需求,做好自開發和所購買產品的驗收測試;第三方測試機構則更是要一絲不茍地為第一方的產品質量把關,讓用戶方放心。”
阜外心血管病醫院信息中心主任趙韡對此有相同的看法。他認為,軟件測試應該做到誰的東西誰負責:軟件供應商應該做好測試,保證自己的產品質量;阜外心血管病醫院也要根據自身的需求,做好自行開發系統以及所購買產品和系統的測試。趙韡介紹說,阜外心血管病醫院有80多個系統,有自己開發的,也有直接購買的標準產品,各系統之間需要進行很好的集成。趙韡指出,金融、電信等行業因為擁有巨大的并發用戶數和數據量,實時性要求很高,而對測試環境要求非常高,但對于軟件測試而言,醫院屬于小行業,因此測試環境的要求也就不那么高。他介紹說,阜外心血管病醫院信息中心的測試部門有4人,他們應用的基本是虛擬機,甚至用一些舊機器,就可以搭出測試環境,完成產品、系統的測試。雖然,對測試環境要求不高,但醫院的軟件測試卻有自己的特點,那就是要求測試人員必須對醫院業務非常熟悉。鑒于目前第三方測試機構的行業積累還比較低,趙韡認為,目前醫院還是自己來測試比較靠譜。
某金融機構的測試工程師朱倩在接受記者采訪時表示,她所在公司的主要業務是從紐交所等國外金融機構購買金融信息,提供給國內的一些諸如像大智慧這樣的金融市場行情軟件提供商。他們每天要保障海量金融數據的準確性,必須做好數據庫系統的測試,因為行情軟件提供商也要用他們的軟件來進行數據分析和發布。“我們必須不斷地測試,以保障我們的數據庫數據的準確性。”朱倩說。
對于任何類型的測試執行主體而言,無論是產品級還是系統級的測試,都是需要衡量成本收益的。測試團隊的建立、測試環境的搭建、測試工具的選擇、測試過程的管理、外包與否,企業都要根據自己需求和實際情況來衡量后再做決定。
北京中原地產信息技術部經理王雨在接受記者采訪時表示,他們現在沒有獨立的測試部門,測試基本是由開發人員與業務人員組隊完成,或者是通過內部用戶小范圍試用來完成測試,“如有需要,我們會考慮將軟件測試外包給第三方,因為這樣對我們來說投入產出最合適。”
于志偉介紹,軟件測試與開發同樣重要,必須從測試需求、測試工具、測試環境等方面提升軟件測試的專業性,更好地保證軟件質量。另外,于志偉強調,測試具有非常強的行業特征,比如同樣是客戶關系管理系統,電信行業和金融行業測試的重點是不一樣的。因此,于偉認為,第三方測試將走向更獨立、更專業、更細化的行業分工是必然的趨勢。
羅文兵也強調,第三方測試機構必須專注于行業。“與軟件開發一個道理,做金融開發的集成商是相對固定的,不會隨意跳轉行業,因為只有通過更多的積累才能對行業需求了解得更透徹。中國軟件評測中心之所以成立金融電信測試部,就是順應這種市場需求。這樣,我們天天做金融或者電信業務的測試,會更加熟悉被測軟件的業務特點。如果對業務的了解不到位,就會出現漏測等問題,會最終影響業務的正常開展。”羅文兵說。




高端人才不只是找BUG高手
葛優在《天下無賊》里那句話說得好,“21世紀最缺的是什么?人才!”
君不見“我國軟件測試人才缺口已達20萬、30萬、40萬”之類的新聞頻頻見于報端,各類測試工程師培訓機構如雨后春筍般冒出,測試工程師已經成為各大招聘網站中最熱門、活躍的職業之一。
測試工程師的進入門檻看似很低,實際上要做一名合格的、高層次的測試工程師并非易事。而目前國內的測試領域最缺的就是高端測試人才。
那么,到底什么是高端的測試人才呢?
于志偉用圍棋中的段位形象地向記者做了說明。“10個測試工程師中有5個可能是業余級別的最高段位。他們不是專業級別的。”于志偉進一步描述說,“類似業余級別的一般測試人員更關注‘測’,對測試工具運用得淋漓盡致。如果發現了BUG,該測試人員會興高采烈地跟開發人員說有一個BUG,但是開發人員也不知道應該怎么修改處理。為什么呢?因為該測試人員有本事把BUG找出來,但對BUG的描述不到位,也就是不能告訴開發人員這個BUG具體是什么,究竟是什么原因造成的等細節。他們不能提供一個合適的路徑讓開發人員直接找到BUG。開發人員還得來回測才能確定BUG。可見,這樣的測試人員只是一個找BUG的高手,但是他不能解決問題。”
“要做好軟件測試并不容易。軟件測試是一個終生的職業,越老越吃香。”鄭人杰認為,行業業務經驗的積累和專業測試能力的提升,是成就一個出色的軟件測試工程師的兩個同等重要的條件。
于志偉認為,目前,軟件測試領域最受關注的都是工具的應用等具體測試問題,而高端測試人才更應該關注如何做好從測試需求、測試計劃、測試流程、測試執行,到將測試結果很好地展現在報告上,進而追蹤問題,并最終解決問題的全過程。
同時,高端測試人才還要有更先進的理念,即不只是關注測試,而是要更加關注軟件質量。“也許有時候及時發現了BUG也不應改動,因為它對客戶體驗沒有影響,而改動后會帶來更大的影響,并增加成本。但怎么判定這個BUG該不該動呢?現在市場上缺的就是能夠做出正確判斷的高端測試人才。他們具有先進的理念,掌握科學的方法論。”于志偉分析說。
怎樣才能培養出大量的高端測試人才呢?
通過第三方的測試平臺,把先進測試的理念、更專業的測試方法和工具傳達給喜歡測試的fans(熱衷者),讓他們吸收更多的最佳實踐,不斷提升自身的測試技能,借此來實現對高端測試人才的培育和儲備,這是中國惠普培育軟件測試市場的一條嘗試途徑,也是它們與中國信息主管網合作建立中國測試平臺網的初衷所在。
中國測試平臺網
測試fans的資源池

“當前,信息化正在改變IT角色,IT已成為企業發展的重要支撐元素。企業在IT建設中,必須縮短開發周期,快速響應業務需求。然而,IT項目愈是‘短、平、快’,愈是容易在一定程度上降低系統的可靠性。IT鏈條的牢固程度取決于其最薄弱環節——軟件測試的疏漏。”作為中國測試平臺網項目負責人,中國信息主管網副總編楊春暉介紹,“當軟件質量成為軟件產業新的核心競爭力時,作為軟件質量‘把門人’——軟件測試人才自然成為企業爭搶的稀缺資源。軟件測試人才已成為2010年IT業就業的主力,其職業具有極大發展潛力。”
正是在這樣的背景下,中國信息主管網聯姻軟件質量管理領域的龍頭企業——中國惠普,共同建立了軟件測試領域的專業技術網站——中國測試平臺網。“中國測試平臺網堅持以報道軟件測試專業技術為核心,關注軟件測試領域的前沿技術和管理思想,定期舉辦各種在線活動以推動軟件測試相關領域的交流,力求為中國廣大軟件廠商、系統集成商、IT渠道,以及IT專家、測評專業人士、熱心網友等提供一個軟件測試、專家問詢、交流溝通的在線互動平臺。”楊春暉說。
“中國測試平臺網也會為軟件測試愛好者提供很多職業發展的機會。惠普現在就很需要高端的測試人才。”于志偉向記者透露。
除了用中國測試平臺網這個平臺網聚、培育軟件測試人才,惠普也在逐漸向其大量的高端客戶滲透軟件測試的一些先進理念,以得到他們的認同并付諸實踐,從而帶動上下游的公司形成良好的市場環境,促進產業內軟件測試工作的進步。
當記者提到現在由于企業沒有成套考核體系來評估軟件測試人員,所以沒有足夠動力推進軟件測試工作更上一層樓時,于志偉笑了笑說:“這確實是目前大家迷茫的地方,大家都不知道軟件測試的評估、考核該怎么做,但這也恰恰是體現惠普優勢的地方。”
于志偉介紹說,惠普擁有先進的測試生命周期管理、應用生命周期管理的方法和最佳實踐,并且在這個領域完成了很多成功項目,能夠明確測試的定位、測試與開發的關系,知道哪些指標應該分給開發,明白不同的測試項目中這些指標應該怎么調整,從而幫助企業一步步走向更高水平的軟件測試,或者更準確地說是保障軟件質量。“這需要一個過程。要通過先進的理念和經驗的積累,才能慢慢摸索出測試的考核、評估辦法。”
中國惠普企業業務集團軟件及解決方案部華東、華南售前經理,測試專家王慧慧向記者介紹了惠普的應用質量管理(AQM)的質量成熟度模型。王慧慧說,該模型不僅參考了已有IS09000、ITIL、CMM等行業標準,而且總結了惠普客戶的實踐經驗,將企業軟件質量保障情況從最基礎的第一步到最高級的最后一步 CoE(CenterofExcellence),分為5個階段,模型中涉及測試人員的素質,外界對測試人員的認可度,測試人員自身的定位,測試的組織架構、流程、績效考核等制度問題,還涵蓋了測試的先進方法。
“對用戶而言,這個成熟度模型是其衡量自己軟件測試水平的一個標桿。通過比對,并且在惠普的專家、產品和服務的幫助下,企業可以在現有狀態的基礎上一步一步提升,最終走向CoE。”王慧慧說,“這個模型不是靜止的,而是在不斷充實、改進中。每個用戶在改進的投入、時間、步驟等方面都會不同。對于某一用戶,惠普專家會為其做出評估,量身定制出一條適合用戶自身情況的改進路徑。”
記者手記
軟件測試七大戒律
軟件要控制人的思維,但思維是不可控的。這決定了沒有BUG的軟件是不存在的。“測試是要被終止的”,這是測試圈內一條原則性的定律,意思是說軟件測試要適度,不能不問代價一測到底,過分追求沒有BUG的完美軟件。通過大量的采訪,受到業內多位專家的啟發,記者認為當前我國軟件測試領域有七個趨勢:
一、不只是為了測試,軟件測試工作應有更高的定位,那就是提升軟件質量。測試人員的工作目標不僅僅是找BUG,而是與開發人員、業務人員協作,以得到質量更高的軟件。
二、對任何類型的執行主體而言,軟件測試都是一項需要衡量投入產出、成本收益的工作,因此測試團隊的建立、測試環境的搭建、測試工具的選擇、測試過程的管理、外包與否,企業都要根據自己的需求衡量決定。
三、開發與測試是對立統一的整體,二者的工作內容和考核都不可能嚴格分開。企業可以從管理學和心理學的角度加強對測試管理的研究和實踐。
四、測試工作的專業分工將更加細化,測試工程師崗位分工和測試機構行業分工趨勢將顯現。
五、當前我國測試人員的能力有待提升。我們除了需要熟練的找BUG高手,還需要能站到更高層面,從開發、測試的整體層面掌握測試需求、設計、流程和結果展現的人才。這要求測試工程師掌握更新的測試理念、更高的測試技能,具備更深的業務積累。
六、已經滲透至整個軟件開發生命周期的測試管理工作是一個有機的整體,缺陷管理、測試需求管理、測試環境管理、測試用例管理、測試執行管理是組成木桶的木板,任何一塊都不能短。
七、如何對測試工作進行考核評估是當前業界的一個難題,有待進一步研究、實踐。
