最近做spark streaming任務時用到了hbase做中間狀態查詢和儲存,順手寫了一些測試,小小總結了一下各部分測試的寫法。話說這裡為什麼不用redis呢?redis作為kv儲存系統還是太簡單了,hbase可以讓你少操很多很多心,這裡就不跑題了。
2. csdn上的翻譯:使用常用工具測試hbase應用
利用hbasetestobj的hbase的put測試。個人認為沒什麼用,要檢查put還不如直接檢查進入put之前的內容。
使用mrunit來測試mapreduce的hbase表輸入輸出,這一部分可以參照前一篇的mapreduce測試,本質與1是一致的,就是檢查put物件(取出put物件中的內容做比較,不要費神去自己構造put物件了,神煩)。
使用hbase mini cluster的hbasetestingutility
進行整合測試,網上的介紹是說啟動一次需要20-30秒,實測結果是比一般的測試慢不了多少,建議就直接使用這個,簡單並且統一,不用專門為了測試而測試。下面的例子都是以hbase mini cluster為基礎進行的測試。
fakehbase,沒有嘗試使用,看起來挺好的。
一般來說只會使用其中的一種,選乙個就好。
org.apache.hadoopgroupid>
hadoop-commonartifactid>
2.4.0version>
test-jartype>
testscope>
dependency>
org.apache.hbasegroupid>
hbaseartifactid>
0.94.11version>
test-jartype>
testscope>
dependency>
org.apache.hadoopgroupid>
hadoop-hdfsartifactid>
2.4.0version>
test-jartype>
testscope>
dependency>
org.apache.hadoopgroupid>
hadoop-hdfsartifactid>
2.4.0version>
testscope>
dependency>
class
hbasetest
extends
flatspec
with
beforeandafterall
override
protected
def afterall(): unit =
驗證乙個寫入和讀出這個一般來說這一步意義不大,因為hbase裡面只有一種型別的資料——bytes。如果使用的是hbase提供的一系列方法
byte bytes.tobytes(long t);
byte bytes.tobytes(int t);
byte bytes.tobytes(byte t);
byte bytes.tobytes(string t);
是不會有問題的。需要驗證的是在某個邏輯序列之後輸出到hbase的結果的驗證。但是由於這裡使用的是mini cluster,具體操作上來說與普通的hbase表的put/get/delete並沒有差異。需要注意的是htable的獲得不能夠再由conf檔案建立得到
htable htable = new htable(conf, "tablename")
如果之前有直接使用conf
來獲得表的函式,在這裡需要進行拆分成類似於def ipgeographicquery(htable: htable, ...)
這樣的。要適應測試也是需要對**進行一些修改的。剩下的就沒有什麼了,都是普通的操作。下面是一段沒有邏輯的**:
val put = new put(key)
put.add(col.family(), col.qualifier(), thriftserde.serialize(u))
table.put(put)
val get = new get(key)
get.add(col.family(), col.qualifier(), thriftserde.serialize(u))
val rs = table.put(get)
val thriftobj = new thriftobj()
thriftserde.deserialize(thriftobj, rs.getvalue(col.family(), col.qualifier()))
基本上意思就是,如果使用mini-cluster就沒有什麼需要專門為測試特殊處理的地方了。 如何寫測試策略
簡單的說,測試 策略的意思就是說 你如何測試目標產品或應用程式?你要在測試策略中很明確的提出你進行測試時所使用的方法和步驟。我看到過很多公司嚴格地按照一些測試策略模板來寫。但是,其實不用模板,你也可以並且更高效地寫測試策略。下面是一些簡單的寫測試策略的技巧,1 在測試策略中要包括產品的背景資訊。在測...
如何寫測試用例
1 了解軟體的原始需求 測試目的 在編寫乙個軟體或者模組的測試用例時候,一定要明白這個功能的原始需求,也就是軟體的使用者 客戶 的需求。理解原始需求後,編寫的測試用例才更有目的性。2 熟悉軟體的功能需求 測試點 這個功能需求是指軟體的細化需求點,這個一般在需求文件裡面都會體現。這裡要做的是把需求穩定...
測試計畫應如何寫
良好的測試計畫應包括 1 目標。必須定義每個測試階段的目標 2 結束準則。必須制定準則以規定每個階段何時可以結束。3 進度。每個階段都須有時間表。應支出何時設計 編寫和執行測試用例。4 責任。對於每乙個階段,應該確定誰來設計 編寫和驗證測試用例,誰來修改發現的軟體錯誤。5 測試用例庫及標準。在大型專...