qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類(lèi)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 理塘县| 沭阳县| 麦盖提县| 宜昌市| 靖边县| 芮城县| 徐水县| 遂宁市| 江华| 淮南市| 肇东市| 修水县| 乐至县| 东莞市| 鄱阳县| 德阳市| 临泽县| 左权县| 长寿区| 海原县| 德惠市| 资兴市| 防城港市| 霍城县| 雷波县| 高青县| 屯留县| 临洮县| 天镇县| 同仁县| 海门市| 利川市| 寻乌县| 桃源县| 浮山县| 锦屏县| 镇沅| 赤壁市| 伊宁市| 安徽省| 青海省|