隨着軟件行業敏捷開發的推動,軟件的版本迭代愈來愈快,升級測試在軟件測試中也變得愈來愈重要。升級測試是安裝測試的一個分支,主要檢驗軟件從低版本升級到高版本的能力,關注升級過程是否成功,用戶數據是否得以保留或更新,升級後系統文件是否更新、系統功能是否正常。數據庫
相對於軟件全新安裝來講,升級測試更爲複雜,主要的區別以下:工具
類別性能 |
全新安裝測試 |
升級測試spa |
關注版本3d |
一個(當前版本)日誌 |
多個(多箇舊版本、當前版本)blog |
測試前準備索引 |
沒有或不多內存 |
舊版本備份(數據、配置等)、模擬數據、模擬客戶環境等 |
執行過程複雜度 |
低(默認參數執行安裝) |
高(版本驗證、新舊版本區別、參數的增減修改等等) |
執行後驗證 |
迴歸測試 |
數據遷移和更新驗證、新功能驗證,迴歸測試 |
從圖表中可見,相對全新安裝,升級測試須要考慮的方面多且複雜,測試執行也須要更多的資源。
升級測試很容易作,但作好卻很難。咱們常常會在升級測試中面臨各類各樣的困擾:
。。。。。。
面對這麼多問題,一開始總會讓咱們無所適從,那麼如何打開思路,進行高效升級測試呢?這就提到了升級測試模型。
升級測試模型主要包括幾個測試階段:前期準備階段、升級過程測試階段以及後續的迴歸測試階段。每一個階段之間都有強關聯,在測試的過程當中須要特別注意,下面對各個階段進行展開介紹。
升級測試前期準備主要包括:升級流程分析、環境搭建、數據準備以及備份策略。
經過分析升級流程,畫出軟件升級的流程圖,並根據流程圖中的判斷邏輯建立邏輯路徑覆蓋測試用例,不只清晰並且不容易遺漏。(下圖來自互聯網)
因此在開展升級測試以前必定要對測試流程進行詳細的分析,以便在以後的升級測試中作到有的放矢。
升級過程測試階段依賴於升級前準備中的升級流程分析,不一樣的升級流程對升級過程的關注點也不一樣,本模型中羅列的是一些具備通用性的升級過程階段:版本檢查、軟件依賴檢查、安裝參數檢查、備份機制、產品模塊更新、用戶數據保留、文件版本檢查、升級日誌及失敗重試機制。
下面着重介紹比較重要的幾個驗證階段:
a) 升級後新版本和以前版本數據庫中用戶數據的比較(檢查用戶數據是否保留)
b) 升級後新版本和全新安裝新版本進行比較(檢查數據庫結構是否一致)
c) 升級後新版本和全新安裝新版本數據庫默認數據進行比較(驗證默認數據的準確性)
對於數據庫的驗證包括數據庫的結構和數據的驗證:結構包括表、索引、視圖、存儲過程以及agent job等;數據的驗證主要包括對主要數據表的數據進行驗證。
由於這一部分是比較容易出問題的,這裏羅列一些比較好的實踐和注意點:
1) 針對數據庫比較龐大的系統,具體分析數據庫,獲取關注的數據庫表,忽略不關注表(好比一些能夠刪除的history或者log表)的數據比較。
2) 某些狀況下,數據庫在升級以後一些數據的id會變化,須要確保以該id爲foreign key的列也獲得相應的更新
3) 針對某些數據變化的列,須要特別注意分析業務邏輯判斷是否須要更改,好比某列的默認值爲0,用戶在使用過程當中修改成1,而新版本的默認值爲5,這就須要判斷升級後是保留用戶原系統的值1,仍是使用新系統的默認值5,這是須要特別注意的
另外針對數據庫的比較有不少好用的工具,如Visual Studio自帶的數據庫比較、DB Comparer等。
a) 升級後新版本和以前版本配置文件進行比較(保證用戶在以前版本中的配置保留)
b) 升級後新版本和全新安裝新版本配置進行比較(保證配置結構和數據正確)
非功能性測試:這裏主要列出了性能方面的時間以及內存消耗。這部分在數據庫過大的狀況下數據遷移比較容易出現時間過長、內存佔用過大的狀況。
負面測試:主要來驗證升級程序針對一些打斷或者邊緣狀況的處理能力,保證可以失敗重試,或者即便不能升級成功也能夠恢復到升級前的狀態
通過了升級過程的驗證,新版本已經安裝成功,這時候就須要驗證新版本是否可以工做正常。迴歸測試的級別和策略須要視產品性質而定,通常分爲:
升級測試模型提供了升級測試開展的一個突破口,針對升級過程當中的前期準備,升級過程驗證以及後續升級完成後的迴歸測試打開了一些思路,而且對1.2中升級測試中的問題提出了一些解決方案,但羅列的各個檢測點不必定適用於全部的產品,你們能夠在具體的測試過程當中有所取捨。
附錄:升級測試模型(upgrade testing model)