qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          性能測試之?dāng)?shù)據(jù)準(zhǔn)備

          不知道大家在做性能測試的時候,測試數(shù)據(jù)是如何準(zhǔn)備的,筆者在實際工作中發(fā)現(xiàn)測試數(shù)據(jù)的準(zhǔn)備會遇到以下幾個問題:

            其一,由于性能測試需要具備一定的并發(fā)量,尤其在實際系統(tǒng)所能承受最大并發(fā)量未知的情況下,測試數(shù)據(jù)的量也必須滿足預(yù)期業(yè)務(wù)并發(fā)量的一個量的需求,如何準(zhǔn)備這些量的數(shù)據(jù)是第一個問題;

            其二,除了量的需求,數(shù)據(jù)也必須是符合業(yè)務(wù)邏輯的,是可用或者可測試用的數(shù)據(jù),不是臟數(shù)據(jù)或無效數(shù)據(jù)。比如表與表之間是具備一定的關(guān)聯(lián)關(guān)系,記錄之間也有關(guān)聯(lián)關(guān)系,所有的測試數(shù)據(jù)要符合這些規(guī)則,如何完全了解掌握這些規(guī)則,并且根據(jù)規(guī)則來生成測試數(shù)據(jù)是第二個問題;

            其三,性能測試往往是安排在功能測試完成之后,在項目進度非常緊張的情況下,時間資源甚至是人力資源非常有限的情況下,如何快速掌握業(yè)務(wù),準(zhǔn)備有效的并且符合量的需求的測試數(shù)據(jù)是一個比較大的挑戰(zhàn)。

            針對以上問題,筆者工作中用到以下幾種數(shù)據(jù)準(zhǔn)備的方法:

            一是用SQL腳本方式,插入測試數(shù)據(jù),但是有幾個前提條件,首先需要對該業(yè)務(wù)下所有關(guān)聯(lián)的表結(jié)構(gòu)非常熟悉,其次對整個業(yè)務(wù)也需要非常熟悉,而這些條件只有開發(fā)或者功能測試人員會具備。在以這種方式準(zhǔn)備數(shù)據(jù)的時候,需要密切與開發(fā)或者功能測試人員進行溝通了解學(xué)習(xí),并且在信息來源不全的情況,需要不斷嘗試,不斷調(diào)試才能夠準(zhǔn)備出符合要求的測試數(shù)據(jù)。但是仍然會存在風(fēng)險,即便數(shù)據(jù)準(zhǔn)備完畢,也不能完全確保這些數(shù)據(jù)是真正合法的,可能這些數(shù)據(jù)符合被測業(yè)務(wù)的需求,但是卻不符合其他業(yè)務(wù)或者實際生產(chǎn)環(huán)境的需求,也就是說不能完全代表真實數(shù)據(jù);并且也存在遺漏其他數(shù)據(jù)但是業(yè)務(wù)卻跑通的情況。通常情況下,SQL腳本批量導(dǎo)入數(shù)據(jù)的方式仍然是非常直接有效的方法,比較靈活,量和業(yè)務(wù)需求都是可控的;缺點就是需要搞清表間關(guān)系,精通業(yè)務(wù)流程,腳本也需要經(jīng)常維護。

            二是通過業(yè)務(wù)的方式去產(chǎn)生測試數(shù)據(jù),當(dāng)然不是手工去一個一個添加,如果量很大,勢必需要依靠自動化工具來實現(xiàn)。這種情況下,測試人員只需要了解業(yè)務(wù)的操作流程,然后采用自動化工具比如LoadRunnerQTP之類就能通過業(yè)務(wù)大量生成數(shù)據(jù),這樣的數(shù)據(jù)一般都是合法可用的,能夠確保之后的性能測試的質(zhì)量。然而缺點也很明顯,需要開發(fā)額外的測試腳本,要花費額外的時間和人力。

            三是直接采用生產(chǎn)數(shù)據(jù),在有現(xiàn)成數(shù)據(jù)并且數(shù)據(jù)保密性要求不高的情況下,可以采用這種方法,畢竟生產(chǎn)數(shù)據(jù)是原原本本的用戶行為所產(chǎn)生的數(shù)據(jù)。但是有這樣幾個缺點,量不可能控,可能某些業(yè)務(wù)的數(shù)據(jù)量少了,不符合性能測試的需求;生產(chǎn)數(shù)據(jù)也會有臟數(shù)據(jù)的產(chǎn)生,會因為系統(tǒng)架構(gòu)的調(diào)整,表結(jié)構(gòu)的變化等等諸多因素產(chǎn)生臟數(shù)據(jù),而這些數(shù)據(jù)是不具備業(yè)務(wù)意義的;多數(shù)情況下,生產(chǎn)數(shù)據(jù)一般不會被用于測試。

            在沒有開發(fā)的支持下,第一種方法會略顯困難,但第一種方法也是非常直接有效的。

            最后講一下,我所設(shè)想的最后一種方法,可以節(jié)省很多時間和精力,從而把重點放在性能的調(diào)優(yōu)上。在性能測試的初期分析階段,可以先確立被測的模塊,盡量縮小模塊的范圍,針對這個小模塊的業(yè)務(wù)來準(zhǔn)備數(shù)據(jù),讓開發(fā)配合去掉不必要的業(yè)務(wù)限制,比如說驗證碼、資格碼之類就用相同的碼就能驗證通過,盡量減少數(shù)據(jù)之間的關(guān)聯(lián)和限制。這樣在準(zhǔn)備數(shù)據(jù)的時候就非常輕松,可能只是簡單的插入操作而已。從而把主要的精力放在了性能調(diào)優(yōu)或者用戶模型以及場景的設(shè)計上。

            如果各位看客有自己的想法或者經(jīng)驗,非常歡迎暢所欲言,感激不盡!

          posted on 2013-06-14 10:30 順其自然EVO 閱讀(240) 評論(0)  編輯  收藏 所屬分類: web 前端性能測試 、安全性測試

          <2013年6月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 军事| 勃利县| 偃师市| 信宜市| 广饶县| 五大连池市| 长沙市| 汉阴县| 拜泉县| 濮阳市| 绥宁县| 沅江市| 丰顺县| 灵宝市| 莱阳市| 讷河市| 西乌| 清涧县| 济源市| 绥芬河市| 巢湖市| 乌拉特前旗| 襄樊市| 西藏| 丰台区| 铅山县| 花莲市| 吉安市| 江口县| 繁昌县| 文化| 黄冈市| 开阳县| 滦平县| 尤溪县| 屏南县| 南岸区| 腾冲县| 荔波县| 蒲江县| 鹤山市|