2009-09-09 118 views
3

我目前做的性能和複雜的多層次的系統研究的不同變化的影響的負載測試,但我有藏在心裏的跟蹤問題:如何跟蹤性能測試

  • 有不同的組件
    • Orignally釋放組件
    • 正式發佈的修補程序
    • 組件是我的許多副本已經建立含有其它附加修復
    • 裝配體,我已經含有額外的診斷日誌記錄或跟蹤構建
  • 有許多數據庫補丁,上述某些組件的依賴於某些數據庫補丁施加
  • 存在許多不同的日誌記錄級別,在不同的層次(應用程序日誌記錄,應用程序性能統計,SQL服務器分析)
  • 有許多不同的情況,有時僅測試1個場景很有用,其他時間我需要測試不同場景的組合。
  • 負載可以在多臺機器或僅單個機器
  • 存在於數據庫中的數據被分割可以與從拍攝數據稍後更改,例如某些測試可能與所生成的數據來完成,然後現場系統。
  • 有每個測試後收集潛在的性能數據的巨量,例如:
    • 許多不同類型的應用程序特定的日誌記錄
    • SQL事件探查器跟蹤
    • 事件日誌
    • DMV
    • Perfmon計數器
  • 數據庫有幾個千兆位的大小因此,如果我將使用備份恢復到以前的狀態,我傾向於在最後一次測試後對所存在的任何數據庫應用更改,這使我很快無法跟蹤事情。

我收集了儘可能多的有關每次測試的信息(測試場景,哪些補丁應用了數據庫中的數據),但由於結果不一致,我仍然發現自己必須重複測試。例如,我只是做了一個測試,我認爲它與我幾個月前運行的測試完全相同,但是數據庫中有更新的數據。我知道一個事實,即新數據應該會導致性能下降,但結果卻顯示出相反的結果!

與此同時,我發現自己在分配這些所有這些細節的時間數量不成比例。

我考慮的一件事是使用腳本來自動收集性能數據等,但我不確定這是一個好主意 - 不僅是花時間開發腳本而不是測試,但是我的錯誤腳本可能會導致我更快地追蹤事物。

我對如何更好地管理測試環境提出了一些建議/提示,尤其是如何在收集所有東西之間取得平衡並實際完成一些測試,以避免丟失重要的東西?

回答

0

腳本化測試參數+環境的集合是一個很好的辦法。如果你在幾天內進行測試,並且腳本需要一天的時間,那麼花費時間。如果過了一天,你會發現它不會很快完成,重新評估並可能停止追求這個方向。

但你欠它自己去嘗試一下。

0

我傾向於同意@orip,腳本至少部分工作量可能會節省您的時間。您可能會考慮花一點時間來問一下,在您的勞動力方面哪些任務是最耗時的,以及他們對自動化的適應性如何?腳本特別擅長收集和彙總數據 - 通常比人們更好。如果您的表現數據需要大量的解釋,那麼您可能會遇到問題。

對這些任務進行腳本編寫的一個好處是,您可以在源代碼/補丁程序/分支中檢查它們,並且您可能會發現自己受益於系統複雜性的組織結構,而不是像你一樣努力追趕它現在。

0

如果您只能測試一些可以讓管理員變得簡單的設置配置,就可以避開測試。它也可以讓一個虛擬機可以快速重新部署,以提供乾淨的基線。

如果你真的需要你描述的複雜性,我建議建立一個簡單的數據庫,讓你查詢你有多元的結果。爲每個重要因素設置一個列將允許您查詢「什麼樣的測試配置具有最低的延遲變量?」等問題。和「哪個測試數據庫允許提高大多數錯誤?」。對於這種輕量級集合,我使用sqlite3(可能是通過Python包裝器或Firefox插件),因爲它使維護開銷相對較低,並且允許您避免讓被測系統過分干擾,即使您需要運行同一個盒子。

腳本化測試將使他們更快地執行並允許以已經排序的方式收集結果,但聽起來您的系統可能太複雜而難以實現。