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






















