其實大部分類型的測試都需要去準(zhǔn)備測試數(shù)據(jù)。

  手工測試:一些基礎(chǔ)數(shù)據(jù),比如配置數(shù)據(jù)等等是需要去準(zhǔn)備的;

  自動化測試:基礎(chǔ)需要準(zhǔn)備,現(xiàn)有數(shù)據(jù),動態(tài)運行時產(chǎn)生的數(shù)據(jù)是需要準(zhǔn)備的;

  性能測試:跟自動化測試差不多;

  這里就牽扯到了一些關(guān)于數(shù)據(jù)的概念了。

  測試數(shù)據(jù)的分類

  我們可以給測試數(shù)據(jù)分一些種類

  基礎(chǔ)數(shù)據(jù),比如一些內(nèi)容管理系統(tǒng)會配置站點的標(biāo)題,友情鏈接之類的基礎(chǔ)配置數(shù)據(jù)

  存量數(shù)據(jù),也就是現(xiàn)有數(shù)據(jù)。比如在測試一些電商站點的時候會提前插入一些商品信息,類目信息物流信息等

  動態(tài)數(shù)據(jù),也可以叫做session數(shù)據(jù)。比如在測試電商站點的發(fā)布商品功能的時候,往往會去創(chuàng)建一些新的商品

  我們可以想象到,基礎(chǔ)數(shù)據(jù)其實可以比較容易的跟生產(chǎn)環(huán)境保持一致。測試環(huán)境的存量數(shù)據(jù)會比線上環(huán)境要少,測試環(huán)境的動態(tài)數(shù)據(jù)可能不會像線上環(huán)境那樣真實。

  這里就需要討論測試數(shù)據(jù)的量級和真實性的問題了。

  測試數(shù)據(jù)的量級

  大部分情況下,測試數(shù)據(jù)的量級是沒有產(chǎn)生環(huán)境多的。所以測試數(shù)據(jù)可以是真實數(shù)據(jù)的子集。

  如果有類生產(chǎn)環(huán)境或預(yù)發(fā)布環(huán)境的話,可以盡量保持跟線上數(shù)據(jù)相當(dāng)?shù)牧考墶_@樣一些測試環(huán)境不好測出來的由于數(shù)據(jù)量導(dǎo)致的問題可以在預(yù)發(fā)布環(huán)境測出來。

  測試數(shù)據(jù)的真實性

  我們測試環(huán)境的數(shù)據(jù)往往跟真實用戶產(chǎn)生的數(shù)據(jù)是有差異的。比如測試論壇系統(tǒng)時,我們在帖子里的貼圖可能往往就那么幾張,尺寸也是恰到好處,而線上用戶的貼圖可能是五花八門,從而導(dǎo)致意想不到的問題。

  如何準(zhǔn)備基礎(chǔ)和存量數(shù)據(jù)

  基礎(chǔ)和存量數(shù)據(jù)與線上環(huán)境越一致,測試中發(fā)現(xiàn)問題的概率可能就越高。一般來說,可以有下面的策略

  全量+脫敏策略。直接定期把線上的數(shù)據(jù)做脫敏,導(dǎo)入到測試環(huán)境。這里脫敏是必選,數(shù)據(jù)泄漏導(dǎo)致的問題嚴(yán)重程度往往比普通的線上bug要嚴(yán)重得多。

  定量+脫敏策略。只上一些線上數(shù)據(jù),比如只在線上拉1000個商品,1000個用戶信息,然后做脫敏。這里技術(shù)實現(xiàn)難度會比較高,畢竟要把關(guān)聯(lián)表理順。

  爬蟲策略。如果是新項目/產(chǎn)品的話,線上沒有存量數(shù)據(jù)可以導(dǎo),那么可能要去友商那里爬一些數(shù)據(jù),導(dǎo)到測環(huán)境做測試。比如做一個旅游站點,開始的時候是沒有用戶的游記的,這時候就要去類似站點爬一點來測試了。

  生成動態(tài)數(shù)據(jù)。如果線上沒有數(shù)據(jù),友商也沒有的爬,那么就要人肉或者自動化的方式去產(chǎn)生一些數(shù)據(jù)了。系統(tǒng)簡單的話可以用sql去跑,復(fù)雜點的話可能要調(diào)用接口或者用自動化的方式去生成。實在沒轍的時候也可以手動去造一些數(shù)據(jù)。

  關(guān)于動態(tài)數(shù)據(jù)

  大家在做自動化或者接口測試后往往會大量的去產(chǎn)生動態(tài)數(shù)據(jù)。那么問題就來了。

  這些數(shù)據(jù)存在哪里?什么意思呢?如果我們需要用自動化的方式去創(chuàng)建一個商品,那么商品的信息,圖片地址該放在哪里呢?其實這是個持久化的問題了。

  放文件里。文件格式有很多可以選的,比如xml/csv/json/yaml等。不過不推薦excel,畢竟是私有格式,沒有太強的擴展性。而且excel一升級,你的解析代碼和庫也可能要跟著改一次,嗯,強烈不推薦了。

  放數(shù)據(jù)庫里。爬一些商品的信息存到數(shù)據(jù)庫里,然后讀數(shù)據(jù)庫也是很好的辦法,還能熟悉一下sql的用法,面試經(jīng)常問到,另外可以用數(shù)據(jù)庫的事務(wù)機制來清理測試數(shù)據(jù)

  在代碼里動態(tài)生成。比如動態(tài)隨機生成用戶的姓名啊性別和年齡之類的

  數(shù)據(jù)生成之后就面臨著一個清理的問題。清理問題實際上數(shù)據(jù)生命周期的問題,測試數(shù)據(jù)應(yīng)該有下面一些生命周期吧

  短期數(shù)據(jù)。用例完了就刪掉的數(shù)據(jù),一般線上做性能測試的數(shù)據(jù)都是這樣的短期數(shù)據(jù)

  長期數(shù)據(jù)。用例跑出來的數(shù)據(jù)放在那里也沒事,可以一直存在。這種數(shù)據(jù)太多有時候會影響測試環(huán)境的性能

  自動化測試跑出的數(shù)據(jù)建議做短期數(shù)據(jù),跑出來想辦法清掉,因為自動化跑的頻率其實可以很高,每次都產(chǎn)生一堆數(shù)據(jù)的話數(shù)據(jù)的量級可能會在短期變得很大,對測試環(huán)境的性能造成影響。