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

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

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

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

    軟件測試中使用WinRunner 進行測試給新手們的幾點建議

    發布: 2010-8-30 10:02 | 作者: 網絡轉載 | 來源: 領測軟件測試網采編 | 查看: 380次 | 進入軟件測試論壇討論

    領測軟件測試網

    軟件測試中使用WinRunner 進行測試給新手們的幾點建議

    一、分解TestCase

     在大型程序測試中,往往有很多任務是可以分開來Record。同時,如果錄制的代碼過長的,進行調試是很麻煩的事情,此外如果今后某一部分的程序進行了修改的話,修改和重新錄制的工作也是非常痛苦的一件使用。因此我們可以將一個TestCase 進行分解,分解TestCase 可以采用以下幾種方式

    1、將任務分段,比如Log、Logout、公共窗口的打開、關閉

    2、錯誤處理的分類,比如將某一輸入項目的各中錯誤輸入分開錄制

    3、公共界面的操作函數化統一處理,這種方式主要可以象移動BOSS 的業務受理等不

    同窗口使用同一子界面的情況,如DELPHI/C++ Builder 中的Frame。將不同任務(TestCASE)的分解之后,我們可以使用call 函數及自定義函數機制來調用不同的子Script、函數來完成一個的testCase

    二、通過隨機組合實現大規模路徑覆蓋

    有時候我們需要將一組數據隨機組合來進行大量數據測試,如填寫某些表單。那么我們有兩種辦法:一是使用外邊工具隨機生成大量數據,也可用使用先將各個數據按測試要求生成一小組數據,然后使用rand 方法隨機抽取數據來測試
    偽代碼如下

    data a[];

    date b[];

    for (i="0;i<要測試的次數;i++){

     ca=a[rand()]

    cb=b[rand()]

    dosomething;

    }
     

    使用這種代碼的好處是隨意調整測試力度,缺點是數據單一,不想外邊工具一樣生產的數據的多樣化。如果想根據數據分段標準動態產生不同數據,應該使用其他編程工具來生產而不應采用這種辦法。

    三、動態修改chk 文件實行參數化的動態Check

    有時候我們知道在測試過程中的某些數據是動態生產的,比如某些按順序或隨機產生的單號,而我們又往往需要根據這個單號進行一些判斷,比如數據庫中對應的數據是否完整。還有,當我們需要根據輸入的某些條件來判斷輸出的條件是否正確,這個時候WINRUNNER 就無能為力了,因為它目前沒有提來實現參數化的Check。但是我們可用使用WINRUNNER 的函數及WINNRUNNER 的錄制功能,先錄制一個使用ULTRAEDIT(或類似工具)手工修改chk 文件的函數。然后將要修改的內容參數化,在主SCRIPT 執行Check 以前先調用該函數。

    四、在Script 里面管理GUI

    使用WINRUNNER 都知道GUI 文件的重要性,MI 推薦的一種方式是專人來管理GUI 文件,整個測試使用同一個/系列GUI 文件。但實際我覺得這很困難的,特別是程序比較的話,光是找出所有的窗口就已經是很痛苦的一件事情。我認為應該首先應該將GUI 與SCRIPT 同時存儲在同一目錄下。然后使用GUI_load 在SCRIPT 開始以前就裝載GUI,在SCRIPT 開始增加:

    if (GUI_load(".\\login.gui")!="0)
    {

    pause ("Can't load login.gui");

    texit;

    }
     

    使用Winner 做過復雜測試的可能會問,如果不同GUI 文件中的對象名稱相同的話,運行時候就會出問題。因此我們應該在SCRIPT 完畢的時候加入GUI_close(".\\login.gui");

     五、注意恢復測試前的狀態

    此外,如果我們要連續運行多個測試CASE、就必須考慮將被測試程序恢復測試前的狀態,比如我們在測試SCRIPT A 中打開了窗口A,如果下一個TESTCASE 不需要用到窗口A,那么在SCRIPT A 窗口A。這樣下一個TESTCASE 才能正常運行。如果我們采用采用批處理及CALL 的方式來組織SCRIPT 的話,就應該堅持這樣一個原則:“誰打開、誰關閉”,這樣才便于管理。此外如果對數據庫的操作也要根據具體要求考慮恢復。這些操作可以考慮通過錄制通過錄制庫客戶端的操作來實現。

    六、WinRunner 腳本標準格式

    (一)目錄結構

    存放目錄要求:

     1、根目錄與項目名稱相同,如江西移動BOSS 測試目錄為JXBOSS
     2、根目錄下應該是按子項目存放,如SALES、ACCOUNT。如果有公共腳本,存放在Share 目錄下面
     3、子項目下面應該根據功能/TestCase 來存放,如果有公共腳本也應該存放在Share 目錄下
     4、為存取及備份方便,目錄不能使用中文。使用的名稱應該盡量與開發保持一致
     5、GUI 文件應該存放在腳本的同一目錄,并且名稱相同
     6、正確性測試(使用完全正確數據來檢查程序功能是否完成)目錄名稱規定為

    validity
    以下是一個目錄例子
    JxBoss
    -Sales
    --ChangeSimCard
    --validity
    --CheckSimNoExistAnIdError
    --Share
    --Share
    -Account

    腳本要求
     注釋要求
     腳本創建及修改說明注釋
     每個腳本的開頭注釋格式如下:
     #腳本名稱:文件名稱
     #創建人:創建人
     #創建日期:格式為YYYY/MM/DD
     #功能:腳本完成的功能描述
     #運行前要求:運行前的要打開的窗口及狀態要求、數據庫中的數據要求、被測試程序運行目錄等
     #參考文檔:描述錄制代碼是參考的有關設計測試文檔
     #修改歷史:
     # 修改人:
     # 修改 http://www.csai.cn 格式為YYYY/MM/DD
     # 主要修改內容:
     注意創建人及修改人必須是中文完整姓名,不允許使用其它任何名稱。運行前的要求一定要描述清楚
     子功能注釋

     在各小段功能前應該加入功能注釋,注意不能只是WinRunner 自己產生的注釋 如:

    # insert a record
    # Flight Reservation
    set_window ("Flight Reservation", 1);
    obj_mouse_click ("Button", 13, 16, LEFT);
    obj_type ("MSMaskWndClass","101002");
    list_select_item ("Fly From:", "London"); # Item Number 2;
    list_select_item ("Fly To:", "Paris"); # Item Number 3;
    obj_mouse_click ("FLIGHT", 56, 22, LEFT); 

    注釋可以使用英文或中文。
     修改代碼說明注釋
     在具體修改的代碼附近應該加入如下注釋
     #修改人
     #修改日期
     #修改原因/增加功能
     注釋可以放在一行中,簡單修改可以忽略“修改原因/增加功能”,復雜修改應該不能忽略(簡單及復雜標準待定)
     代碼要求
     路徑要求
     代碼中使用的路徑都應該使用相對路徑,不允許出現類似“d:\\”、“\\”下的代碼,應該使用類似“..\\..\\”的代碼。
     在Script 里面打開和關閉GUI各Script 的GUI 的文件應該分開保存在與Script 保存在同一個目錄,應該使用用GUI_load 在SCRIPT 開始以前就裝載GUI,在SCRIPT 開始增加:

    if (GUI_load(".\\login.gui")!="0)

    {pause ("Can't load login.gui");
    texit;
    }
     

    在SCRIPT 完畢的時候加入GUI_close(".\\login.gui");關閉GUI,注意代碼中的路徑一定要使用相對路徑。
     錯誤報告
     在使用錯誤報告的時候,應該注意包括出錯的腳本文件名稱,這樣當腳本文件被其他腳本調用時候,也能很清楚在什么地方沒有通過。Report_msg 的參數格式定義為“文件名稱:錯誤描述”。同時鑒于WinRunner 的Check 函數不能提供清楚的錯誤報告,要求錯誤報告使用以方式

    if ( win_check_bitmap("Flight Reservations", "Img1", 1)!="E_OK)
    {
    report_msg("DateCheck:月份輸入錯誤提示不對!");
    }

    附件:一個完整的例子
     #腳本名稱:DateCheck
     #創建人:謝慧強
     #創建日期:2002/09/08
     #功能:檢查FLIGHTA 程序在輸入錯誤月份的時候提示是否正確
     #運行前要求:要求FLIGHA 進入定票窗口(New_Order 狀態)且無任何數據輸入
     # 或者FLIGHTA 沒有運行,這時候要求FLIGHTA。EXE 位
     # 于E:\\Program Files\\Mercury
     Interactive\\WinRunner\\samples\\flight\\app\\flight1a.exe
     #參考文檔:無
     #修改歷史:
     # 修改人:謝慧強
     # 修改 http://www.csai.cn 2002/09/09
     # 主要修改內容:不采用位圖方式,改為直接判斷字符串內容
     #load gui file
     #Flight Reservation

    if (GUI_load(".\\DateCheck.gui")!="0)
    {
    report_msg ("DataCheck:Can't load .\\DateCheck.gui");
    texit;
    }
    #Check windows exists ,if don't exist ,call login to open it.
    # Flight Reservation
    if (win_exists("Flight Reservation")!="E_OK){
    pause ("Windows Flight Reservation don't exist");
    #texit;
    call "..\\login\\login"();
    }
    #input error month
    win_activate ("Flight Reservation");
    set_window ("Flight Reservation", 3);
    obj_mouse_drag ("Button_4", 17, 6, 17, 7, LEFT);
    obj_type ("MSMaskWndClass","301212");
    list_select_item ("Fly From:", "Denver"); # Item Number 0;
    #check message bitmap
    # Flight Reservations_1
    set_window ("Flight Reservations", 3);
    #2002/09/09 謝慧強
    #if ( win_check_bitmap("Flight Reservations", "Img1", 1)!="E_OK)
    #static_check_info("Invalid month Entered.The month must be greater than 01 and less than
    12.(static)","enabled",1);
    if (static_check_info("CheckMessage","label","Invalid month Entered.The month must be
    greater than 01 and less than 12.")!="E_OK)
    #2002/09/09 謝慧強修改結束
    {
    report_msg("DateCheck:月份輸入錯誤提示不對!");
    }
    button_press ("確定");
    #close gui file
    GUI_close(".\\DateCheck.gui");
    注意恢復測試前的狀態
            此外,如果我們要連續運行多個測試CASE、就必須考慮將被測試程式恢復測試前的狀
    態,比如我們在測試SCRIPT A 中打開了窗口A,如果下一個TESTCASE 不必用到窗口A,
    那么在SCRIPT A 窗口A。這樣下一個TESTCASE 才能正常運行。
            如果我們采用采用批處理及CALL 的方式來組織SCRIPT 的話,就應該堅持這樣一個原
    則:“誰打開、誰關閉”,這樣才便于管理。
            此外如果對數據庫的操作也要根據具體需求考慮恢復。這些操作能考慮通過錄制通過
    數據庫客戶端的操作來實現。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: winrunner WinRunner Winrunner 建議 軟件測試 新手


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

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品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>