淺談如何規避生產環境中的性能測試風險
性能測試是針對系統的既定性能指標,制定測試方案,并執行測試,得出測試結果來驗證系統性能是否滿足用戶要求而進行的測試。
性能測試結果的可參考性與測試環境有著直接的關系,如果測試是在模擬環境下進行,會存在一些問題,比如硬件和軟件配置與生產環境的不一致、測試數據量和實際生產環境的數據相差太遠等,這些因素都會影響測試結果的可參考性,因此,為了獲取準確的性能數據,真實的反映系統性能,性能測試應盡量在生產環境進行。
生產環境是業務系統正式運行的環境,一般已經上線使用了一段時間,系統中存在大量的真實業務數據,且業務數據隨著系統的運行在不斷的增加和更新中,因此在生產環境進行性能測試必然會對業務系統產生影響,甚至造成一定的風險,作為測試方,我們必須預知風險,并有效的規避風險。那么在生產環境進行性能測試可能的風險有哪些?我們在測試中應采用什么樣的手段來規避這些風險呢?下面結合我自己的一些項目經驗談一下這方面的體會。
一、在生產環境進行性能測試存在哪些風險?
(一)測試可能會導致系統崩潰
考慮到系統的業務發展,通常設定的性能指標會一定程度的高于目前系統運行時承受的壓力,在系統能承受的最大壓力未知的情況下,測試對系統施加的壓力可能超過其所能承受的壓力,導致系統崩潰,影響系統正常的業務運行。
(二)測試可能會造成數據損壞
在對系統進行壓力測試時,可能會因為系統壓力過大導致某些事務未成功執行,從而導致相關數據被破壞;有些操作需要直接修改系統中的原始數據等,這些都可能對系統數據造成損壞。
(三)測試會產生大量垃圾數據
由于性能測試的并發用戶量大,而且要重復執行多次,所以會在系統中產生大量的垃圾數據,影響系統的使用。
為規避以上的風險,在生產環境進行性能測試時,我們應采取有效的手段避免上述風險的發生。
二、風險規避手段有哪些?
(一)重要數據事前備份、事后恢復
在執行測試前,應盡可能對系統進行備份,至少對系統的重要數據和文件進行備份,確保系統測試結束后可以恢復到初始狀態。
(二)測試時間選擇系統空閑時間
對于系統并發負載測試或者其他可能影響系統運行并導致系統崩潰的測試操作,可以安排在系統空閑時間進行,出現系統異常時有時間可進行系統的恢復工作,不致于影響業務的正常運行。
(三)給測試數據加標記
對于系統測試過程中產生的垃圾數據要進行特殊標記,測試結束后要及時清理。測試數據可以事先準備并予以特殊標記,也可以是帶有特定意義的區域數據或者是特殊時間段內的數據,這樣,當系統測試結束后,我們可以根據這些特殊標記將相應的垃圾數據刪除,保證系統的正常運行,對于那些需要直接在系統中進行變更的數據在相應的業務操作和功能確認完成后應予以及時恢復,確保將系統恢復到數據變更前的正常狀態。
(四)實時關注系統狀態
在具體實施系統并發負載測試時,應按照指標驅動和用戶逐漸增加的方法對系統進行測試。在測試過程中,應實時關注系統狀態,當系統不能承受相應的壓力時,測試立即終止,以有效保證測試不會超出系統的最大可承受壓力,避免系統崩潰和數據損壞。
三、實際工作中風險規避方法的運用
案例1:“計生委人口宏觀管理與決策信息系統”,系統上線運行一年,業務數據實行全國中心集中管理。對系統進行“流入人口登記”負載壓力測試,并發用戶數分別為100、200、500。
分析該系統的實際情況,全國各區縣上報的業務數據在全國中心實行集中管理,在測試過程中如果由于系統壓力過大,出現系統崩潰或數據損壞的情況,那么將會導致系統不可用或一整年的業務數據丟失,損失一旦造成將不可挽回。基于以上的考慮,在測試中我們采用了方法一、二、四來進行風險規避。首先,我們將測試時間安排在周末進行,避開了業務系統使用的繁忙期;其次,在實施測試前,要求廠商進行全庫數據備份,并做了數據恢復測試,在確保數據可以正確恢復的情況下開始進行測試;同時,在測試實施過程中,對必要的操作系統、數據庫的指標進行監控,根據系統的資源占用情況和響應時間等判斷是否可進一步對系統施加壓力。在測試結束后,廠商對系統進行了數據恢復,使系統恢復到了測試前的初始狀態,避免了數據丟失或損壞的風險。
案例2: “北京市社會保險信息系統升級改造項目”,根據業務情況,需進行“183號令補繳明細錄入”操作的負載壓力測試。但該操作為不可逆操作,即系統未提供取消補繳的操作,為了清除測試數據,需手工修改數據庫。
在這個項目測試中,我們采用了方法二、三、四進行風險規避,首先選擇周末進行測試;其次,為了保障測試結束后系統可恢復到測試前的狀態,我們選擇對北京市石景山區的參保用戶進行該操作,測試執行完成后,由廠商對石景山區的數據進行了恢復,確保系統與測試前保持一致。
四、總結
在現在的系統測試,特別是大型項目的測試中,系統性能的好壞已經成為評價系統總體質量的一個必不可少的方面,作為第三方評測服務機構的我們,在生產環境實施性能測試的時候,必須對系統進行深入的了解,分析系統特點,采取合適的測試方法并綜合運用風險規避手段,既要準確的獲得系統的性能數據,又要保證系統的安全,這樣才是一個成功的性能測試。