AutoRunner 功能自動化測試專案實訓之第二的案例指令碼增強,正反例設計增加測試覆蓋率範圍(六)

small but strong發表於2020-12-04

實驗三、指令碼編輯和正反例詳細設計過程和回放實驗

實驗內容導航

1.實驗步驟

2.實驗需求

3.實驗目標

4.實驗理論

5.操作步驟

6.實驗報告模板

7.實驗課尾交流

 

 

實驗步驟

1.理解指令碼錄製的原理

2.熟悉需要測試的功能的需求

3.認真分析實驗需求

4.獨立完成實驗任務

5.認真填寫實驗報告,並細緻分析與總結本次實驗

 

 

實驗需求

1.成功搭建被測系統crm客戶管理平臺;

2.成功安裝AutoRunner功能自動化測試工具,可以錄製回放指令碼

3.使用IE瀏覽器,並且版本不超過IE9

 

 

實驗目標

1.初步瞭解功能自動化測試工具的使用

2.掌握錄製和回放的基本操作

3.熟悉指令碼編輯區域的指令碼資訊

4.掌握報告結果的分析

 

實驗理論

實驗理論:自動化測試工程實際就是一個工具模擬人工的過程,這個過程可以

細分成倆個獨立又相互關聯的階段,首先是用自動化測試工具模擬記錄人工的

操作過程形成測試指令碼,第二個階段是自動化測試工具根據及錄下的人工的操

作步驟和後期設計的輸入引數,自動迴圈往復執行重複的操作,對被測系統進

行全方位立體式的測試,以期找出系統的所有缺陷。

 

 

實驗操作步驟:

在上一個實驗的基礎上我們對測試思路進行進一步處理,我們在上一個實驗裡

面做的引數化都是設計的正確的“name”和正確的“password”,那麼還有使用者名稱

錯誤;密碼錯誤的情況我們沒有考慮進來,下面我們就要考慮這個問題,因為

在實際專案裡面我們的測試不是單純地用正確的資料去驗證功能的正確性,也

要測試在輸入的資料有誤的情況下系統是否能返回錯誤的提示資訊,並且按照

系統的提示正確地處理提示資訊使得crm客戶管理系統能恢復正常執行,在以

上指令碼的基礎上我們先對使用者名稱不存在的情況進行分析:輸入一個錯誤的使用者

名:tes,正確的密碼:test,點選登入。

Crm客戶管理系統提示使用者名稱不存在,這個時候我們點選提示框中的確定按鈕

,則系統可以回到初始的登入頁面,這樣的話符合我們對系統後續測試的需要

(重複登入系統)。在作自動化測試的時候我們由以上的分析可知完全可以正

常實施,在實施之前我們要考慮一個問題,那就是提示框資訊如何錄製,在已

經錄製好的正確登入的指令碼的什麼位置開始錄製?我們知道登入的時候輸入用

戶名和密碼點選登入按鈕之後才會有登入成功後的頁面跳轉或者輸入錯誤的用

戶名正確的密碼後點選登入才會有提示框出現,那麼我們接下來錄製提示框信

息一定是在點選登入按鈕之後,那麼我們在點選登入按鈕的指令碼後面空出一行

開始錄製提示資訊:

注意:在點選錄製按鈕之後,把全新錄製的勾選去掉之後再點選確定開始錄製

,因為我們希望之前錄製的指令碼仍然存在,我們要做的是在原有的指令碼基礎上

把提示資訊補錄進來:

然後我們開始錄製指令碼,首先是記錄提示框:注意這個時候我們把滑鼠定位到

提示框內的空白區域,然後點選滑鼠左鍵就可以記錄指令碼了。

接下來我們考慮,提示框中的提示資訊:“使用者名稱不存在!”,這個資訊剛好可以

作為同型別用例的執行結果,也就是我們在測試裡面所說的實際結果。但是我

們仔細觀察發現它既不是輸入框也不是按鈕,它是屬於一類特殊物件,我們直

接點選滑鼠左鍵發現記錄不到該物件,這種特殊物件的記錄需要用到強制抓取

的方法。具體的做法是:將游標懸停在該物件上,同時按住滑鼠上的ctrl和alt鍵

,輕輕挪動一下滑鼠,直到該物件上出現紅框,該物件就被記錄下來了。

然後點選提示框中的確定按鈕,使得crm客戶管理系統回到初始的登入頁面:

然後結束錄製回到指令碼編輯區:

將註釋部分的指令碼全部刪除處理,留下記錄訊息框和點選確定按鈕的指令碼:

再對指令碼進行編輯,這個是登入過程中的第二種情況,使用者名稱不存在;我們寫

下判斷,這裡我們可以判斷window(“#32770_來自網頁的訊息”)這個視窗存不存

在,如果存在則點選提示框中的確定按鈕,編輯後的指令碼如下:

下面按照對使用者名稱不存在的分析和操作,我們對密碼錯誤的情況進行指令碼的錄

制和編輯,首先我們輸入正確的使用者名稱:test,錯誤的密碼:tes,然後點選登

錄:

 

指令碼錄製編輯,在使用者名稱不存在情況的指令碼後面錄製:

 

取消全新錄製的勾選後點選確定開始錄製:

點選密碼錯誤訊息框的空白區域,強抓密碼錯誤特殊物件:

點選確定按鈕,使得crm客戶管理系統退回到初始登入頁面:

結束錄製,然後刪除指令碼中的註釋部分:

接下來對指令碼進行編輯:

接下來我們把登入成功的情況進行下改造:

判斷的情況是判斷物件存不存在我們編輯下指令碼:

接下來我們把參數列部分的資料修改一下,把使用者名稱不存在,和密碼錯誤的數

據新增進來,用資料驅動測試指令碼,執行測試過程。

完整的指令碼如下:

for(ParameterData pd : ar.getParameterDataList("login.xls")/*.subList(0, 2)*/)

{

//ar.parameterData = pd;//ar.parameterData可用於指令碼之間傳遞引數

ar.window("IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer").setValue("INPUT_text_username", ""+pd.getFrom("name"));

ar.window("IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer").setValue("INPUT_password_password", ""+pd.getFrom("pwd"));

ar.window("IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer").clickControl("INPUT_submit_登 錄", 41, 16, "left");

if(ar.windowExist("#32770_來自網頁的訊息")){

ar.window("#32770_來自網頁的訊息").clickControl("Button_確定", 43, 12, "left");

}else if(ar.windowExist("#32770_來自網頁的訊息_2")){

ar.window("#32770_來自網頁的訊息_2").clickControl("Button_確定_2", 40, 6, "left");

}else if(ar.window("IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer_2").controlExist("TD")){

System.out.println("登入成功!");

ar.window("IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer").clickControl("A_退出系統", 30, 5, "left");

}

}

 

下面我們點選執行按鈕,執行指令碼:

執行日誌資訊:

指令碼詳細:

行號

指令碼內容

1

for(ParameterData pd : ar.getParameterDataList("login.xls")/*.subList(0, 2)*/)

2

{

3

    //ar.parameterData = pd;//ar.parameterData可用於指令碼之間傳遞引數

4

    ar.window("IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer").setValue("INPUT_text_username", ""+pd.getFrom("name"));

5

    ar.window("IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer").setValue("INPUT_password_password", ""+pd.getFrom("pwd"));

6

    ar.window("IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer").clickControl("INPUT_submit_登 錄", 41, 16, "left");

7

    if(ar.windowExist("#32770_來自網頁的訊息")){

8

        ar.window("#32770_來自網頁的訊息").clickControl("Button_確定", 43, 12, "left");

9

    }else if(ar.windowExist("#32770_來自網頁的訊息_2")){

10

        ar.window("#32770_來自網頁的訊息_2").clickControl("Button_確定_2", 40, 6, "left");

11

    }else if(ar.window("IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer_2").controlExist("TD")){

12

        System.out.println("登入成功!");

13

        ar.window("IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer").clickControl("A_退出系統", 30, 5, "left");    

14

    }

15

}

 

 



記錄詳細:

行號

物件

詳細

結果

時間

備註

1

login.xls

getParameterDataList

Successed

2019-10-27 12:31:40

 

4

IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer

window

Successed

2019-10-27 12:31:40

 

4

INPUT_text_username

setValue

Successed

2019-10-27 12:31:41

 

5

IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer

window

Successed

2019-10-27 12:31:42

 

5

INPUT_password_password

setValue

Successed

2019-10-27 12:31:44

 

6

IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer

window

Successed

2019-10-27 12:31:45

 

6

INPUT_submit_登 錄

clickControl

Successed

2019-10-27 12:31:46

 

11

IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer_2

window

Successed

2019-10-27 12:31:56

 

11

TD

controlExist

Successed

2019-10-27 12:31:57

 

13

IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer

window

Successed

2019-10-27 12:31:57

 

13

A_退出系統

clickControl

Successed

2019-10-27 12:31:57

 

4

IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer

window

Successed

2019-10-27 12:31:58

 

4

INPUT_text_username

setValue

Successed

2019-10-27 12:31:59

 

5

IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer

window

Successed

2019-10-27 12:31:59

 

5

INPUT_password_password

setValue

Successed

2019-10-27 12:32:02

 

6

IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer

window

Successed

2019-10-27 12:32:03

 

6

INPUT_submit_登 錄

clickControl

Successed

2019-10-27 12:32:04

 

8

#32770_來自網頁的訊息

window

Successed

2019-10-27 12:32:04

 

8

Button_確定

clickControl

Successed

2019-10-27 12:32:04

 

4

IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer

window

Successed

2019-10-27 12:32:05

 

4

INPUT_text_username

setValue

Successed

2019-10-27 12:32:06

 

5

IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer

window

Successed

2019-10-27 12:32:06

 

5

INPUT_password_password

setValue

Successed

2019-10-27 12:32:09

 

6

IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer

window

Successed

2019-10-27 12:32:09

 

6

INPUT_submit_登 錄

clickControl

Successed

2019-10-27 12:32:10

 

10

#32770_來自網頁的訊息_2

window

Successed

2019-10-27 12:32:16

 

10

Button_確定_2

clickControl

Successed

2019-10-27 12:32:16

 

 

 

 

 

 

 



結果總結:

名稱

指令碼名稱:

login.bsh

錄影檔案:

 

開始執行時間:

2019-10-27 12:31:39

執行結束時間:

2019-10-27 12:32:16

執行耗時(秒):

37

指令碼執行結果:

執行成功!

 

指令碼執行結果:

從指令碼的執行結果來看,知識把登入成功的情況列印到了輸出,我們希望把三

種情況的執行結果都列印出來方便統計。

接下來我們處理指令碼,使得使用者名稱不存在和密碼錯誤的情況下的結果也能列印

到輸出:

首先我們要在點選之前去新增獲取“使用者名稱不存在!”物件的name屬性:

我們之前搶抓下來的物件“使用者名稱不存在!”的name屬性值,這個值好就是“使用者

名不存在!”,我們可以在物件庫裡面去檢視:

新增過程:

生成的指令碼如下:

這裡生成的是校驗屬性的指令碼命令,我們要將它改造一下,改成獲取屬性值的指令碼語句:

ar.window("#32770_來自網頁的訊息").getProperty("Static_使用者名稱不存在!", "name");

接下來我們定義一個變數str1,將獲取到的name屬性值儲存起來,然後列印出來:

Srting str1 = ar.window("#32770_來自網頁的訊息").getProperty("Static_使用者名稱不存在!", "name");

System.out.println(str1);

密碼錯誤的情況也類似:

String str2 = ar.window("#32770_來自網頁的訊息_2").checkProperty("Static_密碼錯誤!", "name");

System.out.println(str2);

完整的指令碼如下:

for(ParameterData pd : ar.getParameterDataList("login.xls")/*.subList(0, 2)*/)

{

//ar.parameterData = pd;//ar.parameterData可用於指令碼之間傳遞引數

ar.window("IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer").setValue("INPUT_text_username", ""+pd.getFrom("name"));

ar.window("IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer").setValue("INPUT_password_password", ""+pd.getFrom("pwd"));

ar.window("IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer").clickControl("INPUT_submit_登 錄", 41, 16, "left");

if(ar.windowExist("#32770_來自網頁的訊息")){

String str1 = ar.window("#32770_來自網頁的訊息").getProperty("Static_使用者名稱不存在!", "name");

System.out.println(str1);

ar.window("#32770_來自網頁的訊息").clickControl("Button_確定", 43, 12, "left");

}else if(ar.windowExist("#32770_來自網頁的訊息_2")){

String str2 = ar.window("#32770_來自網頁的訊息_2").getProperty("Static_密碼錯誤!", "name");

System.out.println(str2);

ar.window("#32770_來自網頁的訊息_2").clickControl("Button_確定_2", 40, 6, "left");

}else if(ar.window("IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer_2").controlExist("TD")){

System.out.println("登入成功!");

ar.window("IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer").clickControl("A_退出系統", 30, 5, "left");

}

}

下面我們來執行下指令碼:

執行日誌:

 

指令碼詳細:

行號

指令碼內容

1

for(ParameterData pd : ar.getParameterDataList("login.xls")/*.subList(0, 2)*/)

2

{

3

    //ar.parameterData = pd;//ar.parameterData可用於指令碼之間傳遞引數

4

    ar.window("IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer").setValue("INPUT_text_username", ""+pd.getFrom("name"));

5

    ar.window("IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer").setValue("INPUT_password_password", ""+pd.getFrom("pwd"));

6

    ar.window("IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer").clickControl("INPUT_submit_登 錄", 41, 16, "left");

7

    if(ar.windowExist("#32770_來自網頁的訊息")){

8

        String str1 = ar.window("#32770_來自網頁的訊息").getProperty("Static_使用者名稱不存在!", "name");

9

        System.out.println(str1);

10

        ar.window("#32770_來自網頁的訊息").clickControl("Button_確定", 43, 12, "left");

11

    }else if(ar.windowExist("#32770_來自網頁的訊息_2")){

12

        String str2 = ar.window("#32770_來自網頁的訊息_2").getProperty("Static_密碼錯誤!", "name");

13

        System.out.println(str2);

14

        ar.window("#32770_來自網頁的訊息_2").clickControl("Button_確定_2", 40, 6, "left");

15

    }else if(ar.window("IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer_2").controlExist("TD")){

16

        System.out.println("登入成功!");

17

        ar.window("IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer").clickControl("A_退出系統", 30, 5, "left");    

18

    }

19

}

 

 



記錄詳細:

行號

物件

詳細

結果

時間

備註

1

login.xls

getParameterDataList

Successed

2019-10-27 13:27:07

 

4

IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer

window

Successed

2019-10-27 13:27:12

 

4

INPUT_text_username

setValue

Successed

2019-10-27 13:27:12

 

5

IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer

window

Successed

2019-10-27 13:27:13

 

5

INPUT_password_password

setValue

Successed

2019-10-27 13:27:16

 

6

IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer

window

Successed

2019-10-27 13:27:16

 

6

INPUT_submit_登 錄

clickControl

Successed

2019-10-27 13:27:17

 

15

IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer_2

window

Successed

2019-10-27 13:27:28

 

15

TD

controlExist

Successed

2019-10-27 13:27:28

 

17

IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer

window

Successed

2019-10-27 13:27:28

 

17

A_退出系統

clickControl

Successed

2019-10-27 13:27:29

 

4

IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer

window

Successed

2019-10-27 13:27:30

 

4

INPUT_text_username

setValue

Successed

2019-10-27 13:27:30

 

5

IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer

window

Successed

2019-10-27 13:27:31

 

5

INPUT_password_password

setValue

Successed

2019-10-27 13:27:34

 

6

IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer

window

Successed

2019-10-27 13:27:34

 

6

INPUT_submit_登 錄

clickControl

Successed

2019-10-27 13:27:35

 

8

#32770_來自網頁的訊息

window

Successed

2019-10-27 13:27:36

 

8

Static_使用者名稱不存在! name

getProperty

使用者名稱不存在!

2019-10-27 13:27:36

 

10

#32770_來自網頁的訊息

window

Successed

2019-10-27 13:27:36

 

10

Button_確定

clickControl

Successed

2019-10-27 13:27:36

 

4

IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer

window

Successed

2019-10-27 13:27:37

 

4

INPUT_text_username

setValue

Successed

2019-10-27 13:27:38

 

5

IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer

window

Successed

2019-10-27 13:27:38

 

5

INPUT_password_password

setValue

Successed

2019-10-27 13:27:41

 

6

IEFrame_上海澤眾軟體科技有限公司客戶管理系統 - Windows Internet Explorer

window

Successed

2019-10-27 13:27:41

 

6

INPUT_submit_登 錄

clickControl

Successed

2019-10-27 13:27:42

 

12

#32770_來自網頁的訊息_2

window

Successed

2019-10-27 13:27:48

 

12

Static_密碼錯誤! name

getProperty

密碼錯誤!

2019-10-27 13:27:48

 

14

#32770_來自網頁的訊息_2

window

Successed

2019-10-27 13:27:48

 

14

Button_確定_2

clickControl

Successed

2019-10-27 13:27:49

 

 

 

 

 

 

 



結果總結:

名稱

指令碼名稱:

login.bsh

錄影檔案:

 

開始執行時間:

2019-10-27 13:27:05

執行結束時間:

2019-10-27 13:27:49

執行耗時(秒):

43

指令碼執行結果:

執行成功!

指令碼執行結果:

這樣我們的指令碼就完成了,整個登入模組的測試也就完成了。

 

 

 

 

相關文章