• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 自動化用例的自動生成技術(2)

    發表于:2012-12-27來源:淘測試作者:雷藏點擊數: 標簽:自動化用例
    比如,我們想要獲取user的預期取值范圍,代碼可以這么寫: public BaseUserDO getExpectUser(String nick){ //給取值范圍里的nick分組,只有在這個組里面的用戶才存在

      比如,我們想要獲取user的預期取值范圍,代碼可以這么寫:
      public BaseUserDO getExpectUser(String nick){
      //給取值范圍里的nick分組,只有在這個組里面的用戶才存在,否則均返回null
      String[] exsitUserNicks= {Nick.b2bNick.value, Nick.subB2BNick.value};
      if(ArrayUtil.contains(exsitUserNicks, nick)){
      //根據nick查出用戶信息返回
      ResultDO callback = uicReadServiceClient.getUserInfoByNick(nick);
      Assert.assertTrue(callback.getErrMsg(), callback.isSuccess());
      Assert.assertNotNull(callback.getModule());
      return callback.getModule();
      }
      return null;
      }
      代碼中“Nick.b2bNick.value”,Nick是一個枚舉,方便輸入數據值域歸類:
      public enum Nick{
      blankNick(""),
      nullNick(null),
      notExsitNick("1233211"),
      tbNick("leizang_test"),
      b2bNick("leizang_btob_1"),
      subB2BNick("leizang_btob_1:subnick01");
      String value;
      Nick(String value){
      this.value= value;
      }
      }
      類似地,我們需要編寫如下方法:
    中間對象 被依賴對象 編寫獲取方法(省去類型)
    user nick getExpectUser(nick)
    ruleCode user, wwLimitData getExpectRuleCode(user, wwLimitData)
    isFrozen user, wwLimitData getExpectIsFrozen(user, wwLimitData)
    suspended user, isFrozen getExpectSuspended(user, isFrozen)
    punishData user, punishData, suspended getExpectPunishData(user, punishData, suspended)
    mmpData user, mmpData getExpectMmpData(user, mmpData)
      這樣,我們產出結果的預期數據就有了,最終的比對形式應該是這樣子,resultMap為接口返回實際結果:
      public void verify(String nick, String wwLimitData,
      String punishData, String mmpData, Map resultMap){
      BaseUserDO expectUser= getExpectUser(nick);
      String expectRuleCode= getExpectRuleCode(expectUser, wwLimitData);
      boolean expectIsFrozen= getExpectIsFrozen(expectUser, wwLimitData);
      String expectSuspended= getExpectSuspended(expectUser, expectIsFrozen);
      String expectPunishData= getExpectPunishData(expectUser, punishData, expectSuspended);
      String expectMmpData= getExpectMmpData(expectUser, mmpData);
      Assert.assertEquals("user", expectUser, resultMap.get("user"));
      Assert.assertEquals("ruleCode", expectRuleCode, resultMap.get("ruleCode"));
      Assert.assertEquals("suspended", expectSuspended, resultMap.get("suspended"));
      Assert.assertEquals("punishData", expectPunishData, resultMap.get("punishData"));
      Assert.assertEquals("mmpData", expectMmpData, resultMap.get("mmpData"));
      }
      到這里我們已經解決了用例自動生成的兩個難點:輸入數據、預期數據。如果你是個容易滿足的人,那么上面所述的已經夠用了。但如果你是個貪得無厭的人,那么肯定還記得我們上面留下的問題:1080個用例,僅僅一個小功能就會生成如此多的用例,要是把產品線如此復雜的功能都拿來用那豈不是要把硬盤玩爆?更談不上執行了。當然不能這么玩,前面我們已經說了,1080個用例里面是有水分的,場景重復的太多,得獸獸身啊!好吧,下面就開始我們的減肥之旅。
      3、用例瘦身
      根據依賴的傳遞性,找出對原始數據的依賴:
    中間對象 被依賴對象 被依賴原始對象
    user nick nick
    ruleCode user, wwLimitData nick, wwLimitData
    isFrozen user, wwLimitData nick, wwLimitData
    suspended user, isFrozen nick, wwLimitData
    punishData user, punishData, suspended nick, punishData, wwLimitData
    mmpData user, mmpData nick, mmpData
      過濾中間過程對象,如isFrozen,子集合并,最后,整理出“輸出對象”對“原始數據”的依賴關系:

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>