線上BUG分析報告

昨天下午大神把組內幾十號人召集在一起開Online bug分析大會,主要是針對近期線上事故從事故原因和解決方案兩個維度來分析
  對金融軟件來說,每一次的線上事故都有可能給公司帶來重大的損失,少扣了用戶的錢,爲公司帶來資金方面的虧損;多扣了用戶的錢,則爲帶來不必要的合約或法律糾紛,故測試金融軟件不比其他行業的軟件,後者線上bug大多不會直接引起資金方面損失,最多就是用戶體驗不好,功能沒有實現,導致用戶量的流失。
  對金融軟件來說沒有小bug,一旦出現bug那就是重大的bug,必須引起高度重視。
  俗話說”人非聖賢,孰能無過“,軟件是由人編寫的,所以再所難免都會有問題,而我們所要做就是儘量避免出現問題,或者是避免出現重複的問題。
  對於軟件測試人員來說分析線上BUG是非常好的一個措施,這樣可以檢測到測試人員在測試過程中哪些地方考慮不周,或沒有考慮到,從而可以提醒測試人員下次思考的範圍擴大,儘可能地完全覆蓋測試範圍。
  從分析結果的角度出發,線上bug大多都是開發人員和測試人員麻痹大意所導致的,並不是不可避免的。
  經過分析得出線上的bug出現的原因基本有以下幾類:
  1.開發人員使用java框架錯誤
  2.開發人員上線時合併代碼不仔細,導致代碼有遺漏
  3.測試人員迴歸測試流程不全
  4.多系統一起上線,缺少聯調或者聯調不全
  01 開發人員使用java框架錯誤
  這個問題已經出現了兩次,在8月份就出現過一次,原因就是開發人在使用多線程時,將多例使用成單例,導致系統在高併發進出現了串數據的現象,導致系統在處理時放錯款,將A的錢放到B的賬戶中去了。
  雖然使用單例能節省資源,降低系統的佔用率,但這種情況並不合適目前的系統。
  而此中情況在測試過程中並不一定能測試出來,這種出現的機率不定,必須在數據高併發時纔有可能出現。
  解決方案:技術問題,將單例修改成多例。
  02 開發人員上線時合併代碼有遺漏
  開發人員上線時刪除了master中的某行代碼,引起有個變量沒有定義,導致上線之後某功能失效。
  開發人員將git分支上的代碼合併到master時,master提示某一行代碼沒有,開發人員就將分支上的代碼刪除再合併到master,等將代碼上線之後,導致某個功能失效。
  解決方案1:開發人員將代碼合併到master時,先將master上的代碼拉到一個新分支上,然後再將要合併的代碼合到新分支上,最終將新分支上的代碼合併到master上。
  解決方案2:開發人員建立良好的習慣,在開發某個項目時,每天(固定頻率)都將master上的代碼合併到自己代碼的分支上
  03 測試人員迴歸測試不全==漏測
  說是迴歸測試不全,其實就是相當於一定程度上的漏測,漏測應該是軟件測試人員儘量避免,一般漏測是因爲測試人員思考不全,導致某個方面沒有測試到。
  這次線上bug分析有以下幾個問題:
  迴歸測試時,驗證某個流程,但只驗證到任務創建,就沒有執行任務,上線後,該任務創建後執行會報錯。
  未測試冪等性,上線後,導致兩次返回的結果不一樣。
  開發修改某一個bug,迴歸測試未迴歸以前的流程,導致上線後,原來正常的流程執行不通過。
  解決方案:
  1.迴歸測試時,主流程必須迴歸,並且有完整的迴歸步驟。
  2.一個業務流程測試必須跑完一個完整流程。
  3.測試過程中一定要細緻,不能遺漏重要的點。
  軟件中的bug不可能完全測試出來,但最不應該出現的就是原本是正確的流程或功能,經過版本改動,在後期又出現,但測試人員再次測試時竟然沒有發現,像這種情況是軟件測試人員最應該避免的,所以迴歸測試很重要,不僅要回歸主要流程,還需要回歸修改bug相關的代碼部分。
  解決迴歸測試流程測試不全最好的解決方案就是引入自動化,就目前我們的系統不夠成熟,改動太多,業務流程或需求都不穩定,所以自動化測試還未正式引入。
  04 多系統一起上線,缺少聯調或聯調不全
  因爲聯調出現問題也不再是一次二次了,爲什麼聯調會出現問題呢?
  公司業務是由有多個系統組成的,同時還需要調用其他公司業務接口,測試人員在測試時調用相關係統接口時模擬返回或回調,基本都是使用的mock,mock返回的值並不是真的從相應系統的返回值,所以如果聯調測試時沒有把握好,就非常容易出現問題。
  在測試過程中聯調就非常重要,但由於聯調測試人員的放鬆,對聯調內容的遺漏,導致業務上線之後:
  1.調用某查詢任務,對方會一直返回處理中,導致流程卡住。
  2.A系統回調B系統失敗,原因是編碼方式不一樣。
  3.某系統功能失敗後,調用查詢接口報錯。
  4.調用某系統,應返回code=1,結果返回code=0,導致業務處理錯誤。
  以上問題都是由於系統之間的調用或回調導致的線上bug。
  解決方案:
  1.在聯調之前先將自己系統中本次項目所有用例測試完全。
  2.編寫聯調用例,並且與多方測試人員溝通,確保聯調用例能全面覆蓋業務流程和任務。
  3.在聯調時,確保所有業務流程是全部走通,且返回的值正確。
  聯調測試與平時的功能測試重點和關注點都不同:
  1.聯調測試保證業務流程是通的。
  2.聯調測試時要檢查其他系統返回來的數據是否正確?檢查相同數據在各個系統存的值是否相同?
  3.檢查推送的報文mapping與其他系統接口文檔中的mapping是否一致(映射)。
  此次線上BUG分析再次驗證程序中的bug就是人爲的,避免這些情況就需要開發人員在開發過程中多注意,培養良好的編程習慣,而測試人員在測試過程中需要將測試範圍考慮完全,儘量避免遺漏測試點,對於不清楚的點,不管是開發還是測試人員,都應該拿出來討論,切忌閉門造車,不懂裝懂。
  大家可以一起來說說你們線上發生了哪些重大事故?讓你開始引以爲戒了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章