<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
    總結得挺不錯的!  回復  更多評論
      
    主站蜘蛛池模板: 91成年人免费视频| 国产精品亚洲片在线花蝴蝶| 亚洲av无码无在线观看红杏| 亚洲一区二区三区乱码A| 亚洲精品无码av天堂| 亚洲精品高清在线| 国产亚洲精品影视在线产品| 亚洲精品无码久久久影院相关影片 | 亚洲国产一区明星换脸| 日批日出水久久亚洲精品tv| 免费人成在线观看视频播放| 亚洲国产精品嫩草影院久久| 国产亚洲情侣一区二区无| 亚洲无av在线中文字幕| 亚洲αv在线精品糸列| 久久精品国产亚洲av麻| 亚洲欧洲另类春色校园小说| 亚洲综合成人婷婷五月网址| 亚洲AV第一成肉网| 免费高清A级毛片在线播放| 国产日韩精品无码区免费专区国产| 中国videos性高清免费| 99视频在线看观免费| 国产在线a免费观看| 免费国产在线观看老王影院| a级亚洲片精品久久久久久久 | 国产亚洲大尺度无码无码专线 | 亚洲精品国产品国语在线| 亚洲精品私拍国产福利在线| 亚洲乱码在线播放| 亚洲AV无码之国产精品| av成人免费电影| 99在线免费观看视频| 免费的一级片网站| 亚洲一级片内射网站在线观看| 无码久久精品国产亚洲Av影片| 2020久久精品亚洲热综合一本| 美女视频黄频a免费大全视频| 国产情侣久久久久aⅴ免费| 美女网站免费福利视频| 亚洲国产精品综合久久网络|