<ruby id="h6500"><table id="h6500"></table></ruby>
    1. <ruby id="h6500"><video id="h6500"></video></ruby>
          1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>
            • 軟件測試技術(shù)
            • 軟件測試博客
            • 軟件測試視頻
            • 開(kāi)源軟件測試技術(shù)
            • 軟件測試論壇
            • 軟件測試沙龍
            • 軟件測試資料下載
            • 軟件測試雜志
            • 軟件測試人才招聘
              暫時(shí)沒(méi)有公告

            字號: | 推薦給好友 上一篇 | 下一篇

            LoadRunner中的一個(gè)關(guān)聯(lián)技巧

            發(fā)布: 2007-11-16 13:52 | 作者: xingcyx | 來(lái)源: http://www.blogjava.net/xingcyx | 查看: 900次 | 進(jìn)入軟件測試論壇討論

            領(lǐng)測軟件測試網(wǎng)    眾所周知,在LoadRunner中,關(guān)聯(lián)是一個(gè)很重要的動(dòng)作,大多數的腳本在錄制完成后并不能直接回放,需要通過(guò)一定的關(guān)聯(lián)才能成功回放。關(guān)聯(lián)的技巧有很多,這里介紹的就是其中之一,以下用一個(gè)實(shí)際的例子來(lái)說(shuō)明。
                腳本的背景如下:
                web_submit_data("classiLoanMaterial.jsf_2")(web_submit_data函數的其它部分省略,下同。)返回的頁(yè)面上可能存在多條記錄,可能一條,可能兩條,也可能三條,等等。我們需要將這些記錄逐個(gè)選中進(jìn)行操作。注意:不是全部選中,而是要逐條記錄進(jìn)行操作。同時(shí),每一條記錄各有一個(gè)編號,這是需要進(jìn)行關(guān)聯(lián)的值。在下面的操作中web_url("directAdjust.jsf",
                    "URL=http://128.64.96.105:1158/clpmapp/bizprocess/loanservice/creditassetsriskclassi/
            classiadjuststepbystep/directAdjust.jsf?approveFormNum=123456")需要使用到該編號,即黑體字部分的值。面對這樣的目的,很自然地,我們會(huì )想到用一個(gè)循環(huán)語(yǔ)句來(lái)實(shí)現。首先,在classiLoanMaterial.jsf頁(yè)面之前加一個(gè)關(guān)聯(lián)如下:
                web_reg_save_param("sor","LB=sor\" value=\"","RB=\"","Ord=ALL",LAST);將Ord參數值設定為ALL,則關(guān)聯(lián)函數將自動(dòng)把符合條件的關(guān)聯(lián)值保存到參數數組里。在本例中,假設關(guān)聯(lián)值返回三條記錄,則LR分別將值保存到sor_1,sor_2,sor_3中,同時(shí),LR還將自動(dòng)創(chuàng )建一個(gè)sor_count變量來(lái)保存總的記錄數,在這里sor_count值等于3。利用這些信息,我們就可以很方便地在循環(huán)語(yǔ)句中實(shí)現我們的目的了。步驟如下:
            1、聲明各變量:
                int count;
                int i;
                char sor[50];
                char sorvalue[50];
            2、將返回的記錄數保存到count變量里:
            count=atoi(lr_eval_string("{sor_count}"));
            3、使用for循環(huán):
            for(i=1;i<=count;i++)
            {
                sprintf(sor,"{sor_%d}",i); //分別將各個(gè)sor值保存到sor字符串中

                sprintf(sorvalue,"%s",lr_eval_string(sor));//通過(guò)lr_eval_string函數將字符串賦給sorvalue變量

            }
            4、在循環(huán)體中使用關(guān)聯(lián)值替換相關(guān)值:
            web_url("directAdjust.jsf",
                    "URL=http://128.64.96.105:1158/clpmapp/bizprocess/loanservice/creditassetsriskclassi/
            classiadjuststepbystep/directAdjust.jsf?approveFormNum={sorvalue}")
             
                一切看起來(lái)似乎順理成章,然而如果按照以上的步驟做下來(lái),將會(huì )很遺憾地發(fā)現:我們定義的{sorvalue}值根本就不被LR認可并接受,于是它將無(wú)情地給我們拋出一個(gè)錯誤,說(shuō)該值是非法的。怎么辦?難道我們前面做的一切都白費了嗎?
                有句老話(huà)說(shuō)得好:天無(wú)絕人之路。聰明而又善良的LR開(kāi)發(fā)團隊已經(jīng)為我們考慮到了這個(gè)問(wèn)題,給我們預備了一個(gè)很有用的函數:lr_save_string,它可以幫助我們解決這個(gè)問(wèn)題。于是我們祭出lr_save_string這道最后的殺手锏:
            5、在使用關(guān)聯(lián)值之前進(jìn)行字符串格式轉換:
                lr_save_string(sorvalue,"sorvalue1");
               
            web_url("directAdjust.jsf",
                    "URL=http://128.64.96.105:1158/clpmapp/bizprocess/loanservice/creditassetsriskclassi/
            classiadjuststepbystep/directAdjust.jsf?approveFormNum={sorvalue1}")

            需要特別注意lr_save_string的用法,它是參數值在前(sorvalue),參數名在后("sorvalue1"),這和一般的習慣用法正好反過(guò)來(lái)(真是好奇怪。。而且"sorvalue1"這個(gè)參數名稱(chēng)不需要事先聲明,它只是一個(gè)字符串而已(這也比較奇怪!^_^)。

            到此,我們總算大功告成!腳本回放成功,并且正確達到了預期的效果!打完收工!

            總結:C的變量不能直接在LR的API里調用,所以必須用lr_save_string進(jìn)行轉換。

            最后順便說(shuō)一下,lr_save_string這個(gè)函數真的很好用,這個(gè)例子中提到的方法也適用于另外一些情況,比如說(shuō)有時(shí)候,通過(guò)關(guān)聯(lián)函數出來(lái)的值我們不能直接使用,還需要做一些特殊的處理時(shí),那么我們可以把關(guān)聯(lián)得到的值取出來(lái),賦給一個(gè)字符串,對其進(jìn)行一番修剪加工后,再用lr_save_string,就可以使用它來(lái)替代需要關(guān)聯(lián)的值了。

            后記:我的這篇文章發(fā)布在網(wǎng)上以后,在廣大的測試同行中間引起了強烈的反響,他們紛紛發(fā)來(lái)賀電和表?yè)P信,對我這種勇于探索、樂(lè )于分享的精神給予了充分的肯定。^_^當然,這中間也難免存在極個(gè)別的不和諧聲音,例如Zee同學(xué)就對我的這篇文章提出了不同看法,他覺(jué)得我的做法是把簡(jiǎn)單的問(wèn)題復雜化了,理由是可以只做一次關(guān)聯(lián),每次只取第一筆記錄即可,當循環(huán)進(jìn)行操作時(shí),第一筆做完以后,第二筆記錄自然會(huì )上升到第一筆記錄的位置,因此沒(méi)有必要使用關(guān)聯(lián)數組。我認為他的疑問(wèn)并非沒(méi)有道理,而且是比較有代表性的,因此我在這里做一個(gè)補充說(shuō)明。在我接觸過(guò)的大多數應用系統中,確實(shí)都是按照Z(yǔ)ee所說(shuō)的方式進(jìn)行處理,在這種情況下,腳本的處理的確沒(méi)有必要像我以上所述的那樣復雜。不過(guò)我在本例中談到的例子比較特殊,在操作完成后,它只是把每筆記錄的狀態(tài)位由“未完成”修改為“已完成”,而原有的記錄并沒(méi)有消失,而是仍然停留在原有的位置,此時(shí)如果按照Z(yǔ)ee所說(shuō)的方法,那么在執行第二次循環(huán)時(shí),LR將取到操作狀態(tài)為“已完成”的第一筆記錄,而不會(huì )取到下一筆未完成的記錄,顯然這是不符合我們的要求的,因此在這里我需要做以上這樣復雜的一個(gè)處理。

            延伸閱讀

            文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/

            TAG: loadrunner 關(guān)聯(lián)


            關(guān)于領(lǐng)測軟件測試網(wǎng) | 領(lǐng)測軟件測試網(wǎng)合作伙伴 | 廣告服務(wù) | 投稿指南 | 聯(lián)系我們 | 網(wǎng)站地圖 | 友情鏈接
            版權所有(C) 2003-2010 TestAge(領(lǐng)測軟件測試網(wǎng))|領(lǐng)測國際科技(北京)有限公司|軟件測試工程師培訓網(wǎng) All Rights Reserved
            北京市海淀區中關(guān)村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
            技術(shù)支持和業(yè)務(wù)聯(lián)系:info@testage.com.cn 電話(huà):010-51297073

            軟件測試 | 領(lǐng)測國際ISTQBISTQB官網(wǎng)TMMiTMMi認證國際軟件測試工程師認證領(lǐng)測軟件測試網(wǎng)

            老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
              <ruby id="h6500"><table id="h6500"></table></ruby>
              1. <ruby id="h6500"><video id="h6500"></video></ruby>
                    1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>