Testing
測試應用程序儀表板數據的最佳實踐
我們有一個儀表板,其中包含基於 6 個月報告期的指標。使用者登錄並查看基於目前 6 個月報告期的指標。
每 6 個月,我們會在 DEV/QA 環境中載入新指標,並為即將到來的報告期配置它們,以便我們進行測試。但是,我們的應用程序和 ETL 使用 GETDATE(),所以為了讓 ETL 正確計算,我們一直在設置伺服器的 DATE 在未來,所以一切都會像我們在未來一樣計算和顯示。
我們的 DBA 小組現在告訴我們,不應該這樣做,而且業內沒有其他人這樣做。有人可以給我一些他們在這種情況下進行測試的例子嗎?我們是否應該重新設計我們的 ETL 和應用程序?對於最佳實踐有哪些想法?
我們對應用程序進行了單元測試,所以它可以工作。 我們更擔心 ETL 的數據在新周期的第 1 天會不正確。指標正確顯示並且數據在第 1 天正確是非常重要的。
對於這種固定期限的方案,我不會使用 GetDate() 作為查詢的結束日期,因為這些報告僅對特定時期有意義。
更好的方法是為每個報告期使用特定的執行日期。該執行日期不是目前日期。
例如,假設您的一個 KPI 是 2013 年前 6 個月的銷售額。無論報表何時執行,您的系統都應使用 6 月底作為結束日期而不是目前執行日期。如果你這樣做,你就不必接觸數據。
DBA 通過艱苦的經驗了解到墨菲定律應該適用於所有情況 - 任何可能出錯的事情都會出錯。您期望 DBA 以奇怪的方式修補環境以節省您使應用程序以更靈活的方式工作的困難,這絕對是不合理的。只要值相同,系統也沒有理由根據日期是從 GetDate 還是從使用者輸入中收集來產生不同的輸出。除非您在這裡留下了一些關鍵資訊,否則您的擔憂是沒有根據的,您的 DBA 對這種情況採取立場是正確的。