• <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-28來源:淘測試作者:雷藏點擊數: 標簽:關鍵字驅動
    比如說登錄,可以劃分為: A.獲取登錄頁面、輸入用戶名、輸入密碼、提交四個指令 也可以不進行劃分 B.就一個登錄指令,包含A中所有步驟,只是將登錄

      比如說“登錄”,可以劃分為:

      A.“獲取登錄頁面”、“輸入用戶名”、“輸入密碼”、“提交”四個指令

      也可以不進行劃分

      B.就一個“登錄”指令,包含A中所有步驟,只是將“登錄URL”,“用戶名”,“密碼”作為參數暴露

      這里我傾向于B的分法,也就是說“將一個流程作為一個指令,將流程中所涉及的所有可變因素作為指令的參數暴露”。這樣,我們只要對每個流程做好封裝,以后就可以一勞永逸地重復使用它。

      從技術的角度來看,我們可以定義一個接口,并將可供用戶使用的指令放置其中。代碼如下:

      /*****************************************代碼分割線*****************************************/

      /**

      * 遙控器

      * @author leizang.cs

      *

      */

      public interface ActionCommand {

      /**

      * 用戶登錄

      * @param url 登錄url

      * @param nick 用戶名

      * @param passWord 密碼

      */

      public void login(String url, String nick, String passWord);

      /**

      * 退出

      */

      public void loginOut();

      /**

      * 執行訂購

      * @param subOption 訂購入參

      */

      public void doSub(SubOption subOption);

      /**

      * 訂購成功后校驗數據庫

      * @param dbCheckOption 校驗入參

      * @param needCheckedTables 需要校驗的表格

      */

      public void checkSubDB(SubDbCheckOption dbCheckOption, TableEnum...needCheckedTables);

      /**

      * 數據庫修改或刪除

      * @param sql 需要執行的sql

      */

      public void dbExecute(String... sqls);

      }

      /*****************************************代碼分割線*****************************************/

      這樣我們第一個問題就解決了。下面來看第二個問題。

      <!--[if !supportLists]-->2、 <!--[endif]-->制造商困擾之二——機器人問題

      機器人可以正確執行遙控器發出的各種指令。從技術的角度說就是要求測試框架搭建人員,正確、穩定地實現遙控器中的各種指令。至于如何實現,這跟具體的產品線功能有關,這里僅給出我實現的部分代碼,僅供參考:

      /*****************************************代碼分割線*****************************************/

      public class ActionCommandImpl implements ActionCommand{

      private WebDriver driver;

      private JdbcTemplate jdbc;

      @Override

      public void dbExecute(String... sqls){

      for(String sql: sqls){

      jdbc= CommonUtil.getJdbcFromSql(sql);

      jdbc.execute(sql);

      }

      }

      @Override

      public void login(String url, String nick, String passWord){

      try{

      driver= new HtmlUnitDriver();

      driver.get(url);

      WebElement userName= driver.findElement(By.id("TPL_username_1"));

      userName.sendKeys(nick);

      WebElement passWd= driver.findElement(By.name("TPL_password"));

      passWd.sendKeys(passWord);

      WebElement submit= driver.findElement(By.className("J_Submit"));

      submit.click();

      }finally{

      writePage();

      }

      }

      @Override

      public void loginOut(){

      driver.quit();

      }

      /**

      * @dscription 訂購接口

      * @param subOption 訂購參數

      * @throws ITestException

      */

      @Override

      public void doSub(SubOption subOption)throws ITestException{

      if(subOption== null){

      Assert.fail("訂購參數不能為空!");

      }

      String subUrl= subOption.getSubUrl();

      CycleEnum cycle= subOption.getCycle();

      log("傳入參數為:");

      look(subOption);

      if(subUrl== null || subUrl.isEmpty()){

      Assert.fail("訂購Url不能為空!");

      }

      if(cycle== null){

      Assert.fail("訂購周期不能為空!");

      }

      try{

      driver.get(subUrl);

      log("\n獲取頁面:"+ subUrl);

      WebElement period= null;

      switch(cycle){

      case ONE_MONTH:

      period=driver.findElement(By.id("p-month"));

      period.setSelected();

      break;

      case ONE_SEASON:

      period=driver.findElement(By.id("p-season"));

      period.setSelected();

      break;

      case HALF_YEAR:

      period=driver.findElement(By.id("p-half"));

      period.setSelected();

      break;

    原文轉自: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>