<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    李順利
    隨筆-50  評論-170  文章-0  trackbacks-0

    關于SoapUI的簡單使用,大家可以參考網上并自己摸索下,這里就不說了,下面說的是一些不常見的用法(但是又很有用),再加一些性能測試方面的經驗。

    File Import

    很多時候會有 File Import(Upload)類的Functions的,如果要用SoapUI做集成測試的話,免不了要處理 byte[] 類型的參數,那么如何通過SoapUI傳遞byte[](File)的參數了,實際上,也很簡單,看圖就很清楚了。 

    Property Transfer

    Property Transfer 就是在SoapUI不同的Test Steps之間傳遞數據,具體的可以看看文檔 Transferring Property Values。通過下面的實例圖你就創建了一個Property Transfer并添加了一個Transfer Value,而每個Transfer Value都有兩個部分,一個是Source,一個是Target,都可以選擇不同的Step和不同的Property。 
     
    如何配置這些內容,請看一個例子。e.g.

    假設在一個系統中有一個function:send msg step,它需要一個參數,而這個參數是另一個Step:login 成功后的response,那么這種情況就可以這樣: 

    貼上要寫的配置信息:

    Source
    1
    2
    
    declare namespace ns1='http://mic2.taifook.com/';
    //ns1:loginResponse/return
    
    Target
    1
    2
    
    declare namespace mic2='http://mic2.taifook.com/';
    //mic2:send/arg0
    

    Groovy

    在SoapUI中可以寫一些腳本,這個腳本語言就是 Groovy ,實際上平常我們需要使用的Groovy還是很簡單的(因為和Java很類似),下面舉一些例子來看看: 
    e.g.1

    rand
    1
    2
    
    import static java.util.UUID.randomUUID
    randomUUID() as String
    

    這個就是用UUID作為一個隨機字符串的例子,在Test Step中可以這樣使用(上面Groovy Script 文件名為 rand)

    1
    
    <arg2>${rand#result}</arg2>
    

    e.g.2

    getAccount
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    def num = Integer.parseInt(testRunner.testCase.getPropertyValue( "count" ))
    num = (++num) % 10
    testRunner.testCase.setPropertyValue( "count", num + "")
    String[] acList = [
    "02-0000000-22",
    "02-1000001-22",
    "02-2000002-22",
    "02-3000003-22",
    "02-4000004-22",
    "02-5000005-22",
    "02-6000006-22",
    "02-7000007-22",
    "02-8000008-22",
    "02-9000009-22"
    ]
    acList[num]
    

    這個就是順序并輪流從一個長度為10的字符串數組里取一個元素(第一行有些錯誤,一開始得不到 count’s PropertyValue ,你可以用類似第三行先 set count = 0 后刪除,或者手動添加 count PropertyValue,如何添加?請自己google下),這個可以用來做一些性能測試的一些數據輸入(可以做到盡量不同),用法和上面一樣

    1
    2
    3
    
    <arg3>
    &lt;MSG>&lt;REC instrCode="985" ... acId="${getAccount#result}" ... />&lt;/MSG>
    </arg3>
    

    e.g.3

    initData
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    
    import au.com.bytecode.opencsv.CSVReader;
    
    def filename = testRunner.testCase.getPropertyValue( "filename" )
    log.info("[load data] CSV File Path and Name: " + filename)
    log.info("[load data] Reading the CSV...")
    
    CSVReader reader = new CSVReader(new FileReader(filename));
    
    def isHeader = true
    List approvalList = []
    
    while ((nextLine = reader.readNext()) != null) {
      if (isHeader) {
          isHeader = false
      } else {
          approvalList.add nextLine
      }
    }
    //set property to test case context 
    def loopCount = 0
    log.info("[load data] Number of Approval: " + approvalList.size())
    context.setProperty("approvalList",approvalList)
    context.setProperty("loopCount",loopCount);
    
    // get property
    log.info("[loop start] Current Loop Count: " + context.loopCount);
    def msg = context.approvalList.remove(0)
    
    testRunner.testCase.testSuite.getTestCaseByName("Approval").setPropertyValue("userid",msg[0])
    testRunner.testCase.testSuite.getTestCaseByName("Approval").setPropertyValue("password",msg[1])
    testRunner.testCase.testSuite.getTestCaseByName("Approval").setPropertyValue("key",msg[2])
    testRunner.testCase.testSuite.getTestCaseByName("Approval").setPropertyValue("body","&lt;![CDATA[" + msg[3].trim() + "]]&gt;")
    
    context.setProperty("loopCount", ++context.loopCount);
    

    看到沒有,這個例子就很像Java了,用其它的Jar包(opencsv-xxx.jar,請把它放到SoapUI安裝路徑下的lib目錄下)里的方法來讀csv格式的文件,然后把讀出來的數據放到List中并存到context中,后面還用到了getTestCaseByName獲得當前的Test Case(本例中TestCase名為Approval,請注意:不是Test Step名),并賦值以供使用。使用這里的值,也很簡單

    1
    
    <arg0>${#TestCase#userid}</arg0>
    

    這里的例子只是冰山一角,更多的請參考: 
    Tips & Tricks 
    Property Expansion

    Load Tests

    Load Tests 就是使SoapUI連續多次執行一個Test Steps,目前我用到的是用它來做一些性能測試,很直觀明了。使用它很簡單,直接在【Load Tests】選項【New LoadTest】就可以了,大概會是下面的樣子,具體的測試方法你就可以親自試試了(比如Limit,Threads等配置)。 

    這個也是在工作中的一個分享,對象是有使用SoapUI經驗的同事,所以,您看這部分,可能會有一些不清楚的,個人了解也不是很深,請大家盡量在官網多查查,希望對您探索SoapUI有點點幫助。

    順利
    2012年4月10日



    博客中的一些下載已經放到了百度云了,請根據需要下載。【點我去百度云下載】

    最后弱弱地說一下,如果可以的話,轉載請提供出處( ),謝謝。
    posted on 2012-04-11 10:17 李順利 閱讀(13116) 評論(1)  編輯  收藏 所屬分類: TipsTools

    評論:
    # re: SoapUI的進階使用 2013-03-05 00:05 | metaboy
    總結得挺不錯的!  回復  更多評論
      
    主站蜘蛛池模板: 日本视频免费观看| 国产成人A亚洲精V品无码| 热re99久久6国产精品免费| 成人免费夜片在线观看| 亚洲色大18成人网站WWW在线播放 亚洲色大成WWW亚洲女子 | 国产日产亚洲系列| 四虎影在线永久免费观看| 成年女人免费v片| 青草草色A免费观看在线| 久久99国产乱子伦精品免费| a毛片在线还看免费网站| 在线视频网址免费播放| 一道本在线免费视频| 国产亚洲精品国产福利在线观看| 精品国产成人亚洲午夜福利| 亚洲中文无码线在线观看| 亚洲综合一区二区国产精品| 久久99亚洲网美利坚合众国| 亚洲视频在线观看免费| 亚洲精品高清视频| 亚洲bt加勒比一区二区| 亚洲大尺度无码专区尤物| 亚洲码国产精品高潮在线| 亚洲熟妇无码AV在线播放| 亚洲桃色AV无码| 国产偷v国产偷v亚洲高清| 人人狠狠综合久久亚洲婷婷| 久久国产亚洲精品麻豆| 亚洲精品在线观看视频| 久久丫精品国产亚洲av不卡| 久久狠狠高潮亚洲精品| 亚洲国产成人九九综合| 亚洲国产最大av| 亚洲欧美日韩中文二区| 阿v视频免费在线观看| 人成免费在线视频| 中文在线免费看视频| 久久国产乱子伦精品免费不卡| 99爱在线观看免费完整版| 97免费人妻无码视频| 成年私人影院免费视频网站|