工具的力量

最近半年的工作都集中在 SQL 分佈式執行框架(Parallel eXecution Framework),代碼寫得差不多了,測試成頭等大事。不測試充分無法上線,所有工作都無法兌現成價值。

如何測試呢?我們分爲三個階段:編碼階段、功能測試階段、性能測試階段

在編碼階段,手動測試是王道。根據實現的功能針對性寫小測試,可以快速驗證編碼正確性。但手動測試的侷限在於覆蓋場景非常有限,會遺漏大量場景。所以,後期需要成規模的功能測試介入。

當編碼基本完成後,進入功能測試階段。這個階段的目的是發現軟件中隱藏的絕大多數功能缺陷。爲達到這個目的,需要豐富的用例覆蓋。我們取了個巧,用非常非常小的代價實現了分佈式框架的功能測試覆蓋。

mysqltest 裏包含了豐富的 SQL 功能測試用例,如果能把這些用例移植到分佈式執行場景,一定可以獲得非常好的效果。我們通過修改 mysqltest.cc,只增加 20 行代碼,將測試用例中的所有 select 語句都轉換成分佈式模式執行,獲得幾百個有效的、場景豐富的分佈式執行測試用例。

新工具剛剛上線,就發現數個框架 bug,真可謂四兩撥千斤!這種感覺,讓我想起當年將 pquery 引入到測試體系中的感覺,一跑就 N 個 core,爽得不要不要的 ^_^ 。 pquery 也是圍繞 mysqltest 測試集做文章,隨機讀取 mysqltest 中的語句亂序執行。就這麼簡單,但效果出奇的好,還是全程無人值守。直到今天, pquery 還在爲 OceanBase 默默貢獻 bug,正所謂吃進去的是電,吐出來的是 bug。

性能測試階段,我們計劃使用 tpch 1G、100G 數據集來做。大數據量場景下能有效放大性能問題,非常有效!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章