寫數據庫測試工具的一點心得

概述

寫一個好用,持續可用的測試工具,需要滿足如下幾個特徵:

  1. 完備、封閉
  2. 自調度
  3. 結果可評價
  4. 易迴歸

完備、封閉

case 所需要的數據都來自測試工具本身,不需要外部人工準備。例如做一個大查詢測試工具,大查詢的數據應該由工具本身插入。

違反這個要求時,部署測試就會十分麻煩,容易出錯。

自調度

一個複雜的測試可能需要多個邏輯相關的先後步驟,例如:準備數據階段、A測試階段、B測試階段、校驗結果階段、清理環境階段,其中,準備數據階段、B測試階段還會並行執行。這樣一個先後順序,不應該依賴外部人工幫助調度,必須測試工具自身控制調度順序。

違反這個要求,由外部工具來做調度,調度順序很難保證。

結果可評價

就算是隨機測試,或者純粹的壓力測試,結果也必須是可評價的。評價的粒度、角度可以不同,但指標必須明確定義。例如,常見指標包括:數據正確,結果正確,沒有 core,沒有 ERROR 日誌,性能符合預期,測試程序可終止,測試過程中無異常,中間狀態符合預期,等等。

這個要求看起來很自然,但在實踐中會遇到很多問題,需要努力去逐一解決。例如,RandomQueryGenerator(RQG) 測試結果對比中,AB兩個系統本就在某些地方不完全兼容,結果必然不等,但這種不等是符合預期的,評價測試的時候就需要將這種情況過濾出來;再比如,測試程序不夠健壯導致測試結果難以評價;再比如,測試系統熱點,怎樣纔算遇到了熱點,遇到熱點後的表現是怎樣的,如何程序量化?

個人認爲,結果可評價,是設計數據庫測試工具中最難的。

易迴歸

自動迴歸是測試的靈魂,任何一個測試系統都必須具備可自動迴歸的特徵。迴歸成本越低,可能創造的價值越高。上面第一點、第二點特徵,很大程度上都是爲 “易迴歸”服務的。如果不需要回歸,手工完成準備數據,調度 case 的步驟,也未嘗不可。

發佈了415 篇原創文章 · 獲贊 106 · 訪問量 174萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章