qileilove

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

          自主編寫(xiě)部署性能測(cè)試的備

           與以前使用性能工具和終端性能測(cè)試做的方式不同,自己親自部署的性能環(huán)境對(duì)性能測(cè)試的理解,還有測(cè)試的經(jīng)驗(yàn)以及對(duì)性能測(cè)試開(kāi)發(fā)的一些功底都是一個(gè)考驗(yàn),因?yàn)檫@次是從一行代碼都沒(méi)有到個(gè)人發(fā)布的第一版性能測(cè)試程序(用例)間解決很多難題,所以趁現(xiàn)在有空閑時(shí)間備忘下這次做偏網(wǎng)絡(luò)性能測(cè)試的經(jīng)歷。

            設(shè)計(jì)階段的時(shí)候一定需要弄清楚這次性能測(cè)試的目的和要點(diǎn)。與用lr的web網(wǎng)頁(yè)性能測(cè)試不同,我是測(cè)試更底層或者說(shuō)是網(wǎng)絡(luò)層的性能。與手工測(cè)試不同,做性能測(cè)試務(wù)必有需求,即使沒(méi)有需求都需要組織會(huì)議來(lái)自己定制一套需求。在做性能測(cè)試的經(jīng)驗(yàn)中,70%~80%是做和開(kāi)發(fā)組相似的工作,所以沒(méi)有需求的話,寫(xiě)著寫(xiě)著就會(huì)融入自己的主觀誤區(qū),很容易寫(xiě)出來(lái)的東西根本不符合項(xiàng)目組的要求,尤其是做socket的編程。對(duì)于網(wǎng)絡(luò)相關(guān)的測(cè)試,不用太過(guò)于關(guān)注一些平常web性能的指標(biāo),最重點(diǎn)關(guān)注是每秒的處理數(shù),服務(wù)器的極限值,模擬真實(shí)的流程還有根據(jù)這些設(shè)置值來(lái)定制出一個(gè)產(chǎn)品的性能說(shuō)明書(shū)。主要的設(shè)計(jì)參考為同類產(chǎn)品的對(duì)比,主流服務(wù)器的性能指標(biāo),還有產(chǎn)品的峰值。

            部署性能測(cè)試開(kāi)發(fā)階段需要根據(jù)你的設(shè)計(jì)和項(xiàng)目組或你自身水平(實(shí)際項(xiàng)目由我個(gè)人弄)來(lái)評(píng)定需要那些東西來(lái)做開(kāi)發(fā)活動(dòng)。對(duì)于測(cè)試開(kāi)發(fā)來(lái)說(shuō),偏應(yīng)用的語(yǔ)言和腳本是相對(duì)好用的。大多情況下我會(huì)選擇做常鏈接不錯(cuò)的java和資料充足的python腳本來(lái)制作測(cè)試開(kāi)發(fā),假如是有圖形界面的話C++和java是比較好的選擇。為什么我會(huì)重點(diǎn)提這3個(gè)語(yǔ)言,我經(jīng)歷過(guò)的自動(dòng)化組雖然不是全部都用以上的語(yǔ)言,但是在google強(qiáng)大的開(kāi)源帝國(guó)中提供了很多自動(dòng)化測(cè)試框架和模塊(例如安卓的java robotium,C++的GoogleTest,支持很多API和多個(gè)linux支持的python)本身就帶有優(yōu)勢(shì)。重點(diǎn)在于這3個(gè)語(yǔ)言對(duì)oracle或其他數(shù)據(jù)庫(kù)都有很好的交互,性能測(cè)試很少不和數(shù)據(jù)庫(kù)打交道。其次也可以選擇你很熟悉的語(yǔ)言做自動(dòng)化。

            開(kāi)發(fā)環(huán)境搭建階段,做測(cè)試核心之一的就是返回結(jié)果來(lái)對(duì)期望結(jié)果進(jìn)行匹配,你獲取結(jié)果的地方最多就是在服務(wù)器端,很多時(shí)候我們?cè)趙indows開(kāi)發(fā),獲取結(jié)果在linux服務(wù)器,所以搭建開(kāi)發(fā)環(huán)境對(duì)編譯器,對(duì)打包的工具,對(duì)一些項(xiàng)目組現(xiàn)有的工具,還有各自操作系統(tǒng)帶有的小工具都要進(jìn)行考量。必要時(shí)甚至可以用lr和QTP來(lái)輔助。同時(shí)要對(duì)項(xiàng)目的協(xié)議進(jìn)行分析,解析包,把底層交互的接口都編寫(xiě)完整,當(dāng)然項(xiàng)目組做了給你更加好。

            程序設(shè)計(jì)階段,好比做C++開(kāi)發(fā)和數(shù)據(jù)庫(kù)開(kāi)發(fā)的理念不同,做測(cè)試開(kāi)發(fā)也有著不同的理念。我們本身是測(cè)試代碼,在我此次項(xiàng)目經(jīng)歷考量的最多就是操作系統(tǒng),編譯器,公司網(wǎng)絡(luò),本身語(yǔ)言對(duì)網(wǎng)絡(luò)方面的性能和限制。我們做的不是安全防御,不是應(yīng)用系統(tǒng),最終目的是提出一個(gè)說(shuō)明書(shū)和提交bug,所以我們需要知道我們執(zhí)行程序發(fā)現(xiàn)的問(wèn)題是產(chǎn)品問(wèn)題還是上述問(wèn)題,即使用lr測(cè)試也是如此。這里說(shuō)下幾個(gè)理論:我們的程序做到什么程度?平臺(tái)化?程序化?腳本化?因?yàn)樨?fù)責(zé)的只有我一個(gè)人,所以只做到腳本化。還有腳本的分布。因?yàn)槲覀兪怯美掖蠖嗍切阅苡美幌駝e的功能用例自動(dòng)一個(gè)個(gè)串行執(zhí)行。所以在我選擇了功能強(qiáng)大的語(yǔ)言時(shí)我的測(cè)試腳本分為應(yīng)用層(執(zhí)行用例的函數(shù)),特性層(linux,windows,數(shù)據(jù)庫(kù),網(wǎng)絡(luò)編程的特性函數(shù)),忽略底層(因?yàn)檎Z(yǔ)言已經(jīng)封裝很好) ,然后因?yàn)樾阅苡美奶卣髯隽艘粋€(gè)選擇的接口層(每次每臺(tái)測(cè)試機(jī)只執(zhí)行一個(gè)性能用例),然后根據(jù)用例的目的進(jìn)行分類,測(cè)試模擬真實(shí)環(huán)境的性能指標(biāo)用例,測(cè)試負(fù)載的峰值指標(biāo)用例,測(cè)試壓力的用例(分測(cè)試客戶端用例和備用客戶端用例,往往壓力掛了,自主開(kāi)發(fā)的主用例很難再去給壓壞的服務(wù)器做判斷)

            測(cè)試的部署階段,當(dāng)你的用例第一版正式投入測(cè)試的時(shí)候,需要關(guān)注的是:你實(shí)現(xiàn)壓力的方式,綜合客戶端和綜合服務(wù)器的限制。例如lr這樣的性能工具是怎么做到超越一般的并發(fā)數(shù)的,是靠巧妙的編程方式還是通過(guò)提供的服務(wù)器,在我自己弄整個(gè)過(guò)程,我大概也摸清了一小部分lr的底。除了評(píng)估出各方面性能所需要準(zhǔn)備的測(cè)試機(jī)外,最重要是如何以最小的代價(jià)抓出最多的bug日志,打印日志算是一個(gè)影響機(jī)子性能的關(guān)鍵點(diǎn)。

            總結(jié):下一步不管網(wǎng)頁(yè)相關(guān)的性能是由我做還是使用lr工具,最重要還是要提高代碼的函數(shù)通用性,我經(jīng)歷的測(cè)試組的代碼很多封裝的慘不忍睹,因?yàn)楹芏鄿y(cè)試人員測(cè)試時(shí)抽空出來(lái)寫(xiě)自動(dòng)化用例不可能會(huì)像開(kāi)發(fā)那么專心。其次是繼續(xù)提升自己對(duì)操作系統(tǒng),數(shù)據(jù)庫(kù)和網(wǎng)絡(luò)本身的一些基本配置問(wèn)題要更加了解,我提交很多致命單往往都是很簡(jiǎn)單的東西造成的。最后要按需求走,每做一個(gè)改動(dòng)和新增要知道自己測(cè)試和發(fā)現(xiàn)的是自己的程序性能問(wèn)題,還是局域網(wǎng)絡(luò)問(wèn)題,或者是原生產(chǎn)品操作系統(tǒng)問(wèn)題,排除完后提交bug。

            小數(shù)據(jù):總編寫(xiě)時(shí)間3~4個(gè)星期的腳本在一個(gè)迭代中發(fā)現(xiàn)了15個(gè)嚴(yán)重級(jí)別或以上的單。自己編寫(xiě)性能腳本效率在初中期開(kāi)發(fā)其實(shí)不比lr差。

          posted on 2012-08-29 09:39 順其自然EVO 閱讀(231) 評(píng)論(0)  編輯  收藏 所屬分類: 性能測(cè)試

          <2012年8月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 景德镇市| 湘潭县| 鄂州市| 凤冈县| 馆陶县| 兴仁县| 宜良县| 河间市| 昌乐县| 财经| 泌阳县| 化州市| 梁平县| 新巴尔虎左旗| 正安县| 礼泉县| 南华县| 乌苏市| 海兴县| 根河市| 尼玛县| 道真| 子洲县| 合山市| 泗阳县| 调兵山市| 巴林右旗| 石柱| 牟定县| 高碑店市| 景泰县| 石屏县| 淮北市| 浦北县| 扎兰屯市| 中方县| 城口县| 安多县| 抚宁县| 婺源县| 淄博市|