冲出软件Bug的泥潭
?■ 今年4月,一個軟件的小問題讓美國航空集團公司損失了數千美元,當時一些機票的價格被錯誤地定為1.86美元;
■ 在最近的一次美國總統選舉中,計票錯誤也出現在
| <script language="JavaScript1.1" src="http://ad.ccw.com.cn/adshow.asp?positionID=39&js=1&innerJs=1" type="text/javascript"> </script> |
■ 更嚴重的例子是,2003年8月美國東北地區的大停電也是由軟件Bug造成的,這次停電讓數百萬人陷入黑暗。
??????? 其實,這張清單還可以一直羅列下去,后果也相當嚴重。據有關資料顯示,2002年,存在缺陷的軟件讓美國經濟損失了600億美元。這個數字還在增加之中。如今,低質量的軟件困擾著幾乎每一家使用計算機的機構,軟件Bug造成停機過程中工作時間的損失、數據的丟失或損壞、以及錯失銷售機會,產生了高昂的IT支持與維護費用,并且降低了客戶滿意度。
??????? 因此,CIO們開始認真研究Bug是如何進入應用開發過程的,研究它們為什么那么防不勝防。他們一致認為,這不是某個具體的失誤,而是參與每個應用的規劃、開發、測試和維護的IT人員之間缺乏聯系和交流的結果。
??????? 研究人員說,這個問題是軟件生命周期管理失敗所造成的,他們認為提高軟件質量的任何努力必須跨越應用程序生命的每個階段,從最初的規劃到部署,以及后期的維護。Berkshire壽險公司是美洲Guardian壽險公司的子公司。該公司一直在研究提高應用程序在整個生命周期中質量的方法。
Berkshire壽險公司的項目經理Sorin Fiscu解釋說:“去年,我們研究了自己的開發過程、需求收集方法,以及監測系統的方式。”
??????? Fiscu領導的開發小組進行了一些改革,比如讓質量保證(QA)人員參與早期規劃,征求來自業務分析師的意見,在測試階段引入更多的自動化技術。這些舉措讓該公司可以達到或超越兩個部署后的目標:即應用程序的可用性和用戶對應用程序的整體滿意度。
??????? 在Berkshire公司中,開發應用程序的第一步是將業務用戶和IT人員召集在一起,在應用程序的功能規范上達成一致,列出從屏幕流到數據域的名稱等用戶需要的各種特性和功能。
??????? Fiscu說: “這是一幅描繪應用程序及其用法的細致圖畫。最關鍵的是,讓所有人都在前期發表意見,使得測試人員、分析人員和開發人員盡可能多地交流。”
??????? 應用生命周期管理(ALM)的目標非常明確。它包括保證負責不同階段團隊間的充分交流,防止錯誤在生命周期中擴散,因為在開發過程后期糾正錯誤的成本比開始時要高得多。
??????? Gartner的分析師Theresa Lanowitz表示:“生命周期看上去一目了然,但是近90%的企業并不知道如何有效地管理它。如果生命周期被正確的人員、過程和技術來管理,我們會看到更高質量的軟件和更高效率的IT組織。”
質量從頭抓起
??????? 在開發人員、測試人員和業務用戶之間建立通暢的溝通渠道,對于成功的生命周期管理至關重要。這必須成為規劃階段流程的一部分。據Staples公司質量管理高級經理Kathy Murray說,他們已經將重點放在參與應用程序開發、測試與使用的所有人之間的協作上。
??????? 她說:“我們與業務合作伙伴開會討論業務要求,QA人員也參加會議,因此他們清楚地了解這些需求。我們在定義階段花的時間越多,以后的階段就進行得越順利。有研究顯示,60%~70%的Bug是在定義階段制造的,我們發現的確如此。”
??????? QA服務提供商,Tescom軟件系統測試公司的業務開發經理Arthur Povlot說,低劣的需求是造成大多數QA問題的根源。他說: “企業很少在需求階段就把住質量‘大門’。例如,你應當讓相關人員,包括業務分析師、營銷經理、項目專家等,審計和批準這些需求。”
??????? 編程人員通常喜歡按自己的方式辦事。盡管用繁瑣的手續約束開發人員可能引起反作用力,但是采用一些過程和程序來實現一致性和質量控制是個好辦法。
??????? Fiscu強烈建議,開發人員在將他們的代碼(Bug以及所有其他代碼)交給QA人員糾正前,對程序進行特殊的QA測試。他說:“我們的開發小組收到一套測試腳本,就像一個高級清單。開發只有在做好清單后才進行工作。這樣,我們可以保證不將高級缺陷從開發階段帶到測試環境中。”
??????? 避免開發過程中造成軟件錯誤的另一個難點是,跟蹤記錄更改和版本。配置管理和變更管理政策,以及工具有助于執行開發和測試代碼的標準過程。例如,American Greetings公司依靠CA公司提供的AllFusion Change管理器,在整個開發過程中跟蹤代碼的變更,并執行企業的開發標準。
??????? 該公司的軟件經理Tom Brown說:“例如,一些人不能決定使用一種不同的編譯器,或者跳過測試,因為它全都內置到AllFusion的過程之中。管理生命周期意味著保持源代碼的最新狀態,以及與我們使用的過程類型和編譯器保持一致。”
用測試提升質量
??????? 盡管開發人員應當在開發過程中進行一些早期的測試,但全面的測試過程和部署對于發現和修正Bug至關重要。在開發人員交出代碼后,代碼應該進行全面的檢查,包括評估程序流和功能正確性的功能測試、綜合測試、性能測試、安全性測試以及對程序更新與變更的回歸測試。
??????? 芝加哥交易所(CBOT)對應用程序進行了多項手工和自動測試,包括開發人員進行的單位測試、利用來自Compuware公司的QACenter進行的性能測試,以及由以后使用該軟件的交易員和經紀人進行的用戶接受度測試或功能測試。CBOT在測試時還考慮了未來發展和流量增加的問題。
??????? CBOT的質量保證經理David Burkhart說:“我們采取了主動而不是被動的方式,因此我們針對系統可能遭遇的未來負載進行測試。”由于時間、技術和人員功能上的限制,甚至最敏感、最關鍵任務的系統都不可能測試達到100%的質量保證。Povlot建議,為所有的應用程序最關鍵的需求創建測試案例。他說,總之你應當測試所有需求中的90%。
??????? 自動化的工具可以加快測試規劃和執行速度,對回歸測試尤其如此。Murray說:“我們已經將測試期人工小時減少了50%,這讓我們可以將測試的覆蓋面增加300%。”Murray將這種改進歸功于Staples公司使用Segue Software公司提供的SilkTest和Hopkinton的StarTest。
??????? Berkshire公司利用Empirix公司的e-Test套件管理測試過程和加快回歸測試速度。Fiscu說,現在自動化不僅解放了資源,還保證了一致性。
形成封閉環路
??????? 部署后,必須監測和維護應用程序。不久后,對軟件的升級將開始一輪新的應用生命周期,因此在生產過程中采集到的信息必須反饋給下一個生命周期的需求規劃。
??????? 這正是Midland Dow化學公司所采取的戰略。Dow的IT人員利用美科利(Mercury)公司提供的LoadRunner,在新應用程序運行各種測試腳本。部署之后,其中的很多腳本被再次運行,這一次使用Mercury的一個監測包,即Topaz或SiteScope來比較結果。如果發現應用存在問題,Dow公司的運營人員通過執行事件審查過程來確定原因。
??????? CBOT也使用Compuware監測軟件來捕獲問題。Burkhart說:“我們在它進入生產階段后就封閉這個環路。進入生產階段后,如果發生什么問題,我們將開會討論它,并將意見反饋給QA。”
??????? 大量的廠商擁有用于軟件生命周期的一個或多個階段的產品。一些廠商開始裝配套件,來構建完整的生命周期管理系統。IBM的Rational就提供了端到端的產品線,從收集需求的RequisitePro、建模工具、測試工具到對部署后的監測與維護產品IBM Tivoli。
??????? 同樣,美科利、Compuware、CA和Segue Software都聲稱或計劃擴展自己的產品范圍,以滿足應用程序生命周期的每個重要階段的需要。
??????? 雖然集成的平臺可能是最理想的,但是目前的現實是,企業必須選擇來自不同廠商的不同產品,來自動執行生命周期的不同部分。一些公司提供與補充產品的接口,但很多公司并不這樣做,或者至少不提供與客戶可能擁有的每一種產品的接口。
??????? 然而,生命周期管理更是一個流程問題。因此,專家們表示,不管是不是集成的系統,ALM的目標是盡量減少錯誤和疏忽,提高產品的質量。或者,像CBOT的Burkhart所說的那樣,這是個從過去的錯誤中學習、不要在應用程序的每一次新的生命周期中重犯這些錯誤的問題。他說:“我的基本目標之一是永遠不犯重復的錯誤。每個人都會犯錯誤,但是我們要努力通過高質量的過程來防止重復地犯錯。”
ALM實現五步走
1.? 堅實的開始:開發過程的開始即定義要求,這是非常重要的起步。要確保相關業務人員和開發人員的不斷交流,直到所有人都清楚這個應用程序應該干什么。
2?. 策略與過程:雖然程序員們常常藐視規則,但你必須明確地規定開發部門中一致的過程和策略,并堅決地執行它們。
3.? 每個步驟中的QA:在程序開發的每個關鍵步驟中執行質量保證測試,而不是只在應用程序準備交付給QA人員時才執行。
4.? 跟蹤變更:保留應用程序代碼的各種變化和不同版本的詳細記錄。這將使缺陷糾正變得容易得多。
5.? 從容不迫:過度緊迫的日程表是軟件Bug最好的孵化器。
相關鏈接:軟件開發方法論概覽
??????? IBM Rational RUP(Rational Unified Process):它是一個常用的軟件開發方法論,也是包括測試最佳慣例和技術工具的框架。RUP確定了應用開發的4個階段:開始、細化、構建和轉換。企業統一過程(Enterprise Unified Process)是RUP的一種擴展,它是由Ronin International公司的Scott Ambler開發的,該方法增加了2個階段:即生產和退出。
??????? CMMI(能力成熟度模型集成):由軟件工程協會(SEI)制定的標準。它是SEI最初的CMM(能力成熟度模型)的升級。作為頂級IT質量組織的一種特征,CMMI推廣循環反饋和過程改進的概念。CMMI定義了軟件過程成熟度的5個水平,從以非正式的方法和不可預測的結果為特征的水平1(初始級)到機構實現可測量、持續的過程改進時的水平5(優化級)。
??????? XP(Extreme Programming,極限編程):另一個著名的軟件開發規范,它同樣強調迭代式開發、持續的測試和協作開發。
推薦書籍:
總結
以上是生活随笔為你收集整理的冲出软件Bug的泥潭的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nim_duilib加libvlc制作简
- 下一篇: VMware虚拟机常见错误和解决办法