一款软件测试脚本生成工具
應用案例:如何使用AutoTCG設計測試模型
AutoTCG是一款模型驅動的測試腳本生成工具。使用本工具,測試人員能夠對被測件的使用流程進行業務建模,描述使用軟件各個步驟;然后配置每個動作的操作內容和參數;軟件能夠自動將各個動作和參數進行組合,生成執行的測試腳本。
測試人員使用AutoTCG創建的模型,是從開始節點到結束節點之間的一系列動作。每個動作代表對被測件的一次操作或者從被測件獲取的一次反饋。動作節點之間用連線進行連接。如果執行的動作需要用到參數,則在動作之前的連線上設置參數,然后動作節點上使用參數。
當模型創建完成后,AutoTCG根據流程圖計算從開始節點到任何一個結束節點之間的路徑,并且把路徑上的動作一個個接續起來,形成該測試路徑(用例)的測試腳本。
有些路徑的參數取值有一些要求。為了避免無效路徑,需要在路徑(連線)上設置約束條件。所有不滿足約束條件的路徑都不會被產生。
???????? 同時,所有參數的各種取值也會進行組合,從而在每一條有效路徑上使用不同的參數組合產生不同的測試用例來進行測試。
AutoTCG可以和不同的測試腳本執行平臺進行集成,比如Selenium,Etest等。集成完成后,可以用該執行平臺的操作原語來完成(實現)每個動作;同時自動生成的測試用例也可以在該平臺上運行,完成自動化測試。
總之,AutoTCG就是一款結合了相鄰路徑深度和參數組合的模型驅動的自動化測試用例生成平臺。
下面我們用一個例子來看如何進行模型的設計。
應用場景:某軟件具有密碼輸入界面。用戶需要輸入密碼;如果密碼正確,則提示成功,進入操作界面;如果密碼錯誤,則提示失敗。
設計測試模型如圖1所示。
圖 1 密碼檢查測試模型
每個動作模型,我們都設置一些對應的操作。在這里可以調用集成的自動化測試運行平臺的操作原語,進行控制操作和結果判讀。比如,“輸入密碼”動作可以調用輸入框原語輸入password變量的值作為密碼值,然后調用提交按鈕的點擊原語發送密碼(假設集成了selenium平臺)。在這里我們暫且使用注釋文本來表達動作。如圖2所示。
圖 2 輸入密碼動作
同理,我們配置其他幾個動作“提示密碼正確,進入操作界面”、“提示密碼錯誤”相應的動作內容。這里我們都用文本來描述。
圖 3 提示密碼正確動作
圖 4提示密碼錯誤動作
其中“輸入密碼”動作包含了參數password。這個參數設置在這個動作之前的連線上,如圖5所示。
圖 5 設置參數
點擊“參數”界面,設置password參數的取值范圍。如圖6所示。
圖 6 參數設置
假設參數password的取值有四個值:"aaa","bbb","ccc","abcd",其中"abcd"為正確的密碼。
當輸入正確的密碼時和輸入錯誤的密碼時,程序走的路徑是不一樣的。為了讓生成的測試腳本按照參數取值不同走不同的路徑,我們需要在路徑上設置約束條件:向上的路徑,密碼為"abcd";向下的路徑,密碼為"aaa","bbb","ccc"。如圖7所示。
圖 7 密碼正確的路徑約束條件
同理可以設置密碼錯誤的路徑的約束條件。
這個簡單的模型就建立完成了。我們來看一下生成的測試用例。點擊“生成”按鈕。
軟件會彈出信息提示,我們選擇“相鄰路徑深度”為2,“輸入組合配對數”也為2。
點擊“確定”后,顯示了生成的測試路徑。如圖8所示。
圖 8 生成的測試用例
一共生成了兩條測試用例。第一條測試用例走的是包含了正確密碼的路徑,輸入的參數使用的是正確的密碼。將鼠標點擊到第二條用例上,會顯示第二條路徑。如圖9所示。
圖 9 生成的測試用例2
第二條測試用例走的是包含了錯誤密碼的路徑,輸入的參數使用的是錯誤的密碼。
點擊藍色的“運行”按鈕,可以顯示執行代碼。如果已經集成了自動化腳本運行平臺,則可以直接運行腳本。
執行代碼支持Lua、python、Javascript、C++、C#語言。
使用Python語言的執行代碼如下。
| # 入口函數為TCG(ctx, idx)? ctx:用例執行環境上下文 idx:用例編號對應的整數值 # 測試任務函數為Task_xxx(ctx, argv)? ctx:用例執行環境上下文? argv:輸入參數值對應的json對象 import json # ? def StartEvent_0agjamv(ctx, argv): ??? """ ??? """ ??? return # 輸入密碼 def Activity_0h7t438(ctx, argv): ??? """ ??? 提交{password}作為密碼輸入 ??? """ ??? return # 提示密碼正確,進入操作界面 def Activity_08hucmq(ctx, argv): ??? """ ??? 提取提示信息文本,判定提示內容為“密碼正確” ??? 提取界面信息,判定界面標志為操作界面。 ??? """ ??? return |
| # ? def Event_0k7fivl(ctx, argv): ??? """ ??? """ ??? return # 提示密碼錯誤 def Activity_0fvvcgn(ctx, argv): ??? """ ??? 提取提示信息文本,判定提示內容為“密碼錯誤” ??? 提取界面信息,判定界面標志為輸入密碼界面。 ??? """ ??? return # ? def Event_00nxzy0(ctx, argv): ??? """ ??? """ ??? return # 開始→輸入密碼→提示密碼正確,進入操作界面→結束 def PATH0(ctx, argv): ??? StartEvent_0agjamv(ctx, argv) ??? Activity_0h7t438(ctx, argv) ??? Activity_08hucmq(ctx, argv) ??? Event_0k7fivl(ctx, argv) # 開始→輸入密碼→提示密碼錯誤→結束 def PATH1(ctx, argv): ??? StartEvent_0agjamv(ctx, argv) ??? Activity_0h7t438(ctx, argv) ??? Activity_0fvvcgn(ctx, argv) ??? Event_00nxzy0(ctx, argv) # 用例執行入口 def TCG(ctx, idx): ??? if idx==0: ??????? PATH0(ctx, json.loads('{"password":"abcd"}')) ??? elif idx==1: ??????? PATH1(ctx, json.loads('{"password":"bbb"}')) ??? elif idx==2: ??????? PATH1(ctx, json.loads('{"password":"aaa"}')) ??? elif idx==3: ??????? PATH1(ctx, json.loads('{"password":"ccc"}')) |
小結:
本文通過一個簡單的例子介紹了使用AutoTCG設計被測軟件模型,自動生成測試腳本的方法。下一期我們會使用更復雜的模型,介紹AutoTCG在路徑深度覆蓋和參數組合方面強大的功能。
總結
以上是生活随笔為你收集整理的一款软件测试脚本生成工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GB35114---基于openssl加
- 下一篇: android虚拟摇杆