1.應用服務器的類型和特徵
- Web 服務器
- 數據庫服務器
- 實時通訊服務器
- 郵件服務器
- 羣件服務器
- 文件/打印服務器
B/S結構有點及缺陷
三層結構及應用: 表示層,業務層,應用層各個層次的定義和分工
- 分佈式的結構提供了高性能和高適應性
- 高可用性的服務器平臺
- 可升級的體系結構
- 易整合,易管理和易用性的設計
不同類型的應用服務器不同的測試重點和角度,如:
- 在郵件服務器中,容量,吞吐能力, 防病毒攻擊等是測試重點.
- 在實時通信系統中,測試需要考察服務器功能的實現, 數據的及時性,完整性, 系統穩定性, 系統數據備份的冗餘設計, 防網絡攻擊及故障恢復處理系統的設計
2.基於Web服務器應用的測試範圍
- 功能測試
- UI測試
- 負載/壓力測試
- 安全性測試
- 兼容性測試
- 網絡鏈接測試
- 其他測試如:分辨率,流量
- 頁面是否存在
- 頁面是否正確
- 不同的腳本語言
- 相同的腳本語言在不同瀏覽器中的表現
表單
- 數據加密
- 登錄
- 超時
- Cookie和Session
- SSL (安全套接字)
- 腳本語言 (vbscript, javascript)
- 日誌文件
- 目錄
2.3 Web服務器的負載測試
基準測試以及校驗測試
使用測試工具模擬併發用戶以及獲取測試結果
- Webload
- LoadRunner
- JMeter
- …
- 在執行客戶端併發性能測試的過程中,需要同時監控數據庫服務器、Web服務器以及網絡資源等使用情況,以便對系統的性能做全面評估
- 錄製腳本和手工編寫腳本相結合
- 設置數據池,實現變量加載
- 業務批量執行
- 模擬用戶數的遞增
- 合理設置交易之間時間間隔
- 模擬IP地址變量的技術
- 超時(timeout)的設置
- 併發用戶連續執行交易數的設置
- 錯誤處理
- 利用QALoad的ActiveData技術
- 採用複合交易測試方案
- 儘量將執行負載測試的機器合理分佈
- 併發用戶數量極限點
- 加壓機器的CPU使用率也有必要監控
- 設置併發點
- HTML與URL錄製方式
3.基於數據庫服務器的測試
- 數據庫服務器的組成
- DBMS
- 常用的數據庫服務器平臺
例如:某交易 “enter”的平均響應時間高,使用故障診斷(Oracle diagnostics),就可以查找到是什麼原因導致了這個問題。
利用故障診斷的方法(Oracle DB Side Transactions by SQL Stage)可以將SQL語句執行過程中的時間劃分爲四部分:
- 解析時間(Parse Time)
- 執行時間(Execute Time)
- 讀取時間(Fetch Time)
- 其他時間(Other Time),例如綁定時間(bind time)。
單一類型事務響應時間過長
- 數據庫服務器負載
- 糟糕的數據庫設計
- 事務粒度過大
- 批任務對普通用戶性能的影響
鎖衝突嚴重
- 資源鎖定造成的數據庫事務超時
- 數據庫死鎖
- 監視性能相關數據;
- 定位資源佔用較大的事務並做出必要的優化或調整;
- 定位鎖衝突,修改鎖衝突發生嚴重的應用邏輯;
- 對規模較大的數據或者無法通過一般優化解決的鎖衝突進行分佈。
- 索引
- 並行執行
- 簇與散列簇
- 分區
- 多線程服務器
- 同時讀取多塊數據
3.4 Oracle配置的關鍵參數
- MAX_DSPATCHERS:這個參數指定了系統允許同時進行的調度進程的最大數量。
- MAX_SHARED_SERVERS:這個參數指定了系統允許同時進行的共享服務器進程的最大數量。如果系統中出現的人爲死鎖過於頻繁,那麼管理員應該增大這個參數的值。
- PARALLEL_ADAPTIVE_MULTI_USER:當這個參數的值爲TRUE時,系統將啓動一個能提高使用並行執行的多用戶系統性能的自適應算法。這個算法將根據查詢開始時的系統負載自動降低查詢請求的並行度。
- PARLLEL_MIN_SERVERS:這個參數指定了實例並行執行進程的最小數量。其值就是實例啓動時Oracle創建的並行執行進程數。
- PARLLEL_THREADS_PER_CPU:這個參數指定了實例默認的並行度和並行自適應以及負載平衡算法。它指明瞭並行執行過程中一個CPU能處理的進程或線程數。
- PARTITION_VIEW_ENABLED:這個參數指定了優化器是否使用分區視圖。Oracle推薦用戶使用分區表(這是在Oracle8之後引入的)而不是分區視圖。分區視圖只是爲了提供Oracle的後向兼容性。
- REVOVERY_PARALLELISM:這個參數指定了恢復數據庫系統時使用的進程數。
- 模擬數據庫系統的數據負載,操作,偵測和獲取性能測試數據, 幫助開發和DBA來優化和調整數據庫或者應用程序.
- 最終的結果是獲取更快的數據庫響應速度或者更高吞度能力.
- 硬件 (CPU, Memory, I/O競爭等)
- 系統配置 (SGA/PGA)
- 應用程序(SQL, PL-SQL)
- 網絡連接
3.6 Oralce系統性能測試的範圍
- SQL語句測試調優
- Thin, OCI測試
- Schema(表,索引,存儲過程)設計
- PL-SQL語句和調用
- 數據複製
- 內存/CPU/I/O競爭/網絡
- SGA配置
- 動態表空間估計
- 分區表,索引設計
大容量測試
性能測試過程和策略
理解測試需求:
- 是校驗測試還是基準測試?
- 是單個用戶大數據量測試還是多個用戶併發測試?
- 什麼地方是可能的性能瓶頸?
- 可能是哪個方面的性能測試? (應用程序or系統參數or Schema對象)
- 頁面級的輔助測試工具: JMeter, Webload etc
- 第三方監控程序: 如DB Flash, 或者有些通過log文件, 來監控動態的訪問路徑, 高佔用的進程,會話和SQL語句
3.8 基於數據庫服務器的測試
- 自定義或者常用的命令, 來動態監控和獲取執行SQL, PL-SQL所需要的時間, 佔用的CPU和內存資源.
- 數據庫系統本身的性能工具包, 如在Oracle中使用的Explain Plan, AutoTrace, PKPROF以及Statspack.
- 數據量設計或加載.
- 測試環境建立和測試過程分析
- 測試腳本設計
- 性能瓶頸參數
- 優化和對比
3.9 數據庫併發控制測試
併發主要考慮的幾個方面:
- 數據丟失
- 不可重複數據
- 讀髒數據
- 數據庫的鎖
- 併發流程分析
- 併發控制測試設計