前兩天在阿里技術嘉年華上分享了一個有關《報表類型的數據測試》的話題,發現很多人的遇到了我之前測試時候遇到的問題,我相信我們之前走過的彎路,以及最后的解決方案和經驗,就可以幫助大家構建出更好的數據測試用例。
所以我決定寫一系列關于數據測試的文章,幫助大家避免我們曾經遇到過的問題,建立起強壯的自動化測試用例。
這系列文章不是:
1. 我們不針對敏捷測試,不專門講持續集成等戰略上的概念,戰略上講,這些東西很重要,但是依然要落在每一個強壯和易維護的自動化測試用例上。
2. 我們不推薦框架,更多的講思想和做法。因為我們在開始做這些工作之前,并沒有在市面上找到合適的解決我們問題的框架,所以我們只能從頭開始。好處是可以從很基本的方面理解我們的思想,壞處是沒有現成可用的工具。不過不用擔心,我們非常樂意把自己的框架開源出來,但是要整理一下。
3. 我們不講UI的測試,因為我們的數據測試會更加專注于數據,如果你要測試UI上的數據,那么請先學習UI自動化測試框架,把這些數據獲取好。
這系列文章會:
1. 用我們實際中的例子對數據測試進行系統的講解。如果你可以從我的例子中找到平時工作的影子,那么你一定會有所收獲。
2. 文章中不僅僅會涉及數據測試方面的內容,為了講明白我為什么這么設計框架,我可能還會提及其他自動化測試方面的東西,略嫌啰嗦請海涵。
那么言歸正傳,什么是數據測試呢?
數據測試不是一種測試方法,而是一種針對特定的被測對象所采取的一系列方法,提高這些被測對象測試效率的方法。
我定義我們的被測對象是:一切以數據計算和變化為過程的,可以以只對數據進行對比來測試的系統。
我和你一樣討厭晦澀的定義,我以幾個例子來解釋:
1. 我們團隊的最著名產品:量子恒道店鋪統計,整體來說,因為有很多UI方面的測試,這些測試很多地方不能單靠數據來驗證,所以整體來說量子店鋪統計不是數據測試的被測對象;但是我們拆開來看,量子恒道的所有后臺計算,都是數據測試的被測對象,因為他們從數據開始,經過計算,生成的都是數據。
2. 一個負責在網絡集群之間傳遞消息的消息中間件,不是數據測試的被測對象。他們雖然輸入是數據,輸出依然是數據,也可能進行了數據的計算,但是測試重點在于網絡的可用和穩定,數據測試不是我們的測試重點,所以不是。
3. Hadoop, hive, storm等平臺本身不是我們的被測試對象,但是基于這些平臺寫的應用,全部可以是數據測試的被測試對象。
4. 某網站的OpenAPI,可以是數據測試對象,因為用戶都是從http請求請求數據,經過數據庫,然后通過http響應返回相應的數據。
5. 一個MVC架構的網站,除掉V之后的部分是嗎?大部分情況,是的,但是如果這個網站的M和C層組成的是一套完整的增刪改查業務體系的話,我并不推薦數據測試的方法,原因見文章:《用白盒的思想黑盒的測試》
6. 某銀行的數據庫搬遷服務,是數據測試對象。
總之一句話,當測試人員的關注點在于數據是否正確,而不是其他流程、UI、性能等地方的時候,那么你就需要數據測試了。
不知道你有沒有找到自己工作中的數據被測對象呢?
原文轉自:http://www.anti-gravitydesign.com