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