• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 打開BOSS應用軟件測試的死結

    發表于:2009-05-27來源:作者:點擊數: 標簽:死結應用軟件BOSS
    作為運營商的核心生產系統之一,BOSS系統的穩定性運行非常關鍵,其每次發生的重大故障都會引起運營商嚴重的經濟損失。而BOSS系統的穩定運行,和應用研發/集成商提供的應用軟件本身的穩定性密切相關。甚至能不夸張地認為,目前國內BOSS系統的大部分穩定性問題

    作為運營商的核心生產系統之一,BOSS系統的穩定性運行非常關鍵,其每次發生的重大故障都會引起運營商嚴重的經濟損失。而BOSS系統的穩定運行,和應用研發/集成商提供的應用軟件本身的穩定性密切相關。甚至能不夸張地認為,目前國內BOSS系統的大部分穩定性問題,主要集中在BOSS應用軟件的不穩定上。

    何謂系統的穩定性?無非就是這三方面:系統功能穩定,不要動輒操作失??;系統運行效率好,實時性高;系統運行平穩,不要動輒重啟甚至宕機。而要做到這三方面,不對應用軟件進行充分的測試,是無法確保的。

    那么,為什么BOSS應用軟件的測試沒有做好?怎么解決這個問題?

    從運營商的角度理解,是研發/集成商沒有對軟件進行充分的測試,導致系統出現大量BUG,所以研發/集成商應該加強測試,從而提高自身軟件的質量。如果說研發/集成商要提高自身軟件的價值,必須首先提高自身軟件的質量。這是簡單、勿庸置疑的道理。

    而從研發/集成商的角度來理解,是運營商的業務需求繁雜多變,研發周期短,難以進行充分的測試即被迫匆匆上線。而且目前BOSS軟件的報價一般僅考慮研發成本,無法考慮包括測試環境、測試工具等成本,要搭建這些測試環境、引入這些測試工具將消耗幾倍于目前的研發成本,所以無法也無力進行嚴格的軟件測試。要加強測試,提高質量,首先要運營商給予更大的成本空間,否則無法實現。

    這是個典型的“雞”和“蛋”的問題,看起來是個死結,難以解開。本文的目的,就是從分析當前BOSS應用軟件測試方面存在的問題入手,立足于實際可操作的角度,對怎么打開這個“死結”做出積極探討。

    應用軟件不穩定問題總結

    在BOSS的實際建設和維護過程中,關于應用軟件導致的系統不穩定(主機、存儲等設備,數據庫、中間件等系統軟件導致的不穩定,本文不作討論),能大致歸結為以下幾種。

    1.新上線系統的BUG過多,功能不穩定。某個新系統上線后,才發現應用軟件的BUG非常多,營業員時不時的操作失敗,而又不是每次都操作失敗,讓人難以琢磨該系統的“性格”。

    2.新上線業務功能導致原有正常業務功能出錯。這能說是BOSS系統維護中最常發生的不穩定問題,實際上就是新功能研發時,只對新功能進行了測試,而沒有對原有功能的影響進行測試,導致上線前沒有發現問題,而倉促上線所致。

    3.新上線業務越來越多,系統越來越慢,直至系統宕機。這屬于典型的性能、壓力的測試和分析不夠,并進而對系統支撐業務能力估算不足所致。

    這三個問題,從另一個角度來看,能理解為解決當前BOSS應用軟件測試問題的三個步驟。首先必須加強上線前研發/集成商的軟件測試,建立完整的測試流程和測試環境,這樣才能解決新上線系統BUG過多的問題;其次,在此基礎上,對每個新上線的業務功能,除了執行新功能本身的測試外,還通過建立豐富的測試用例庫來確保執行嚴格的功能回歸測試,才能確保新上線業務沒有對原有正常業務功能產生不良影響;最后,有了這些測試流程、測試環境、測試用例庫,才能進行嚴格的性能測試和分析,為新業務上線對系統荷載造成的影響進行科學客觀的分析,從而準確地把握系統實際運行荷載的變化趨勢,并進而盡早發現系統支撐能力的“臨界點”,最終做到對系統宕機現象的“防患于未然”。

    下面將對這三個步驟進行深入的剖析和闡述。

    打開死結的三個步驟

    一、第一步:加強上線前研發/集成商的軟件測試

    關于“新上線的系統BUG過多,功能不穩定”這一點,毋庸置疑就是研發/集成商對新研發的應用軟件,沒有在系統上線前做足夠充分的測試,從而沒有在上線前發現并解決足夠的BUG。怎么解決這個問題,在當前現實市場條件下,則需要研發/集成商、運營商雙方面的努力。

    1.要做好具體工作

    為了做好軟件測試,研發/集成商需要做好這些具體的工作內容。

    1)建立真正完整而務實的測試工作流程。在“玩”測試這個“游戲”之前,首先要確定怎么測試的游戲規則。其內容包括:測試工作分為幾個階段;這些階段的工作內容分別怎么和研發對應;在各個階段,測試人員怎么和研發人員交互;測試發現的BUG怎么落實解決;測試的爭議怎么解決;測試環境怎么維護;測試的軟件版本怎么獲??;測試版本和研發版本之間又怎么交互演進;軟件發布的標準怎么依賴測試結果等。

    2)組建技術、業務均合格并掌控測試方法論的獨立測試隊伍。設計出一個完整、務實、適應于本企業內部環境和文化的測試流程,只需要依賴企業內部少數熟悉公司內部環境的人才就可實現。而建立合格的測試技術隊伍,則需要一個團隊的努力,甚至涉及到軟件企業文化的改動。這是軟件企業當前最難解決的問題。目前的現狀,無論是高校還是社會,普遍沒有形成有效的軟件測試人員的培養經驗,甚至連起碼的認識都欠缺。

    3)引入適當的測試工具軟件。一方面,即使針對正在研發中的軟件,由于在研發過程中不斷引入的變更(發現錯誤進行的變更,業務需求變化引起的變更等),對于已測試通過的功能,也需要在每次修改代碼后進行回歸測試,只有這樣才能確保即使在代碼不斷修改的情況下,軟件發布時相應的功能測試仍然是通過的。而這種回歸測試的工作量非常之巨,以至于如果完全人工來做,是不可能實際做到的。另一方面,對于像內存泄漏、Core Dump、性能壓力等方面測試,如果全部采用人工進行,也將變得非常困難和低效。為此,研發/集成商需要引入相應的自動化測試(包括自動回歸、模擬壓力、代碼分析等)工具,才能真正做好測試。

    4)搭建完整的測試環境。沒有研發環境就沒法研發。同樣,沒有測試環境就無法測試。測試環境之于研發環境的差別,一方面是測試環境下不會修改所有代碼,而是測試人員利用研發人員提交到原始碼版本服務器的代碼,編譯而形成可執行軟件,進而進行測繪;另一方面,測試環境下要始終維護著狀態一致的業務數據,只有這樣才能確保測試用例的完整運行(一般來說,每個測試用例運行完成后,他要確保下次該用例在同樣的測試數據上仍然能夠運行成功,否則無法執行自動的回歸測試)。

    5)工程進度緊張的情況下確保測試的完整性。由于實際的市場壓力,現有大部分BOSS系統建設的進度壓力都非常大,這直接導致軟件測試的進度壓力也非常大,甚至變得不現實。必須考慮怎么結合實際情況,確保在非常緊張的進度壓力下,仍然能夠開展充分的測試。

    2.工作落實建議

    第一、二項工作,是研發/集成商無法推卸的責任,而且也是其應該能夠解決的問題。至于怎么解決,則需要依靠研發/集成商自身在管理上的努力。但一般來說,建立完整務實的測試流程,和組建技術、業務均合格并掌控測試方法論的獨立測試隊伍,少則1年、多則2、3年才能真正實現。

    第三個引入測試工具軟件的工作,存在這樣的落實難點:限于當前國內應用軟件的現實價格平,研發/集成商一般無力承擔這些測試工具的昂貴代價(根據一般的BOSS軟件研發隊伍規模,其至少三、四十人以上,需要購買的測試工具license價格動輒上百萬美元。而目前BOSS應用軟件的總體價格,不過才幾十萬美元。),如MercuryWinRunner/ LoadRunner/ TestDirector系列等,或IBM的Rational系列工具等。實際上,直至今日,甚至非常多研發/集成商連研發工具都是依賴運營商去購買的。比較現實的建議,還是通過運營商采購、研發/集成商使用的方式來解決這個矛盾。當然,具體采用哪些工具,采用什么樣的測試工作流程,這是需要研發/集成商來提出方案,并由運營商認可的。

    第四個搭建測試環境的工作,和測試工具軟件類似,相對于目前應用軟件的現實價格,這些設備和軟件的價格都太昂貴,研發/集成商目前根本無力承擔購買和維護一套這樣的完整環境的代價。因為測試環境涉及到UNIX主機、存儲、網絡等昂貴的硬件設備,而且研發/集成商要研發運行于各種主流UNIX主機平臺的應用軟件,還必須擁有各種主流的主機臺,才能真正解決問題。這個問題,同樣只有通過運營商來解決。建議能在設計BOSS系統方案時就考慮到這部分設備的提供,這樣,就能讓研發/集成商的研發測試依賴于運營商提供的測試環境。

    根據以往的BOSS系統建設經驗,一方面往往在系統建設方案中對測試環境所需要的設備、系統軟件的考慮不足,另一方面也沒有嚴格區分研發環境和測試環境的差別。為了做好這個工作,建議運營商和研發/集成商在系統方案設計之初,就充分考慮這部分投入。一般來說,相對運行環境,只需要考慮一個按比例縮小的、具有典型代表意義的測試環境方案即可。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>