QTP——功能測試
一、前言(課設目的及內容)
QTP是quicktest Professional的簡稱,是一種自動測試工具。使用QTP的目的是想用它來執行重複的手動測試,主要是用於回歸測試和測試同一軟件的新版本。因此你在測試前要考慮好如何對應用程序進行測試,例如要測試那些功能、操作步驟、輸入數據和期望的輸出數據等
1.1 測試目的
(1) 使學生能掌握網站功能測試的基本思路和方法,學會使用自動化測試工具QTP進行功能測試;
(2) 培養學生分析、解決問題的能力;
(3) 提高學生的創新思維能力與動手能力;
(4) 提高學生的科技論文寫作能力。
1.2 測試內容
QTP進行功能測試的測試流程的五個步驟:
1.制定測試計劃
自動測試的測試計劃是根據被測項目的具體需求,以及所使用的測試工具而制定的,完全用於指導測試全工程。
2.創建測試腳本
當測試人員瀏覽站點或在應用程序上操作的時候,QTP的自動錄製機制能夠將測試人員的每一個操作步驟及被操作的對象記錄下來,自動生成測試腳本語句。
3.增強測試腳本的功能
錄製腳本只是為了實現創建或者設計腳本的第一步,基本的腳本錄製完畢後,測試人員可以根據需要增加一些擴展功能,QTP允許測試人員通過在腳本中增加或更改測試步驟來修正或自定義測試流程。
4.運行測試
QTP從腳本的第一行開始執行語句,運行過程中會對設置的檢查點進行驗證,用實際數據代替參數值,並給出相應的輸出結構信息。測試過程中測試人員還可以調試自己的腳本,直到腳本完全符合要求。
5.分析測試
運行結束後系統會自動生成一份詳細完整的測試結果報告。
二、測試計劃及測試需求
2.1 測試原理分析
QTP主要採用的是使用GUI模擬人的操作。它在模擬人的操作時會記錄操作的對象及所做的操作和順序,然後在回放時按記錄順序操作這些對象。而在這個模擬的過程中,最重要的莫過於界面對象(控件)的識別。
例如,在「用戶名輸入框」中輸入「a用戶」,偽代碼如下:
WebEdit(「用戶名輸入框」).Set 「a用戶」,下面分析這個測試原理。
首先,QTP會通過「用戶名輸入框」這個名字到對象庫的對象名中查找;
然後通過找到的對象名,找到對象名映射的屬性包;
接着QTP就會通過這個屬性包來匹配頁面上的控件的屬性,如果在頁面上找到一個唯一與此屬性包匹配的控件,那QTP就會認為此控件為要找的控件;
最後QTP根據「WebEdit」來確定控件的類型,並調用QTP對於此類控件內置的操作方法「Set」把「a用戶」賦予了控件。
至於其他控件的識別和操作,基本原理和上面一樣。
2.2測試流程圖
根據測試原理的分析以及QTP測試的基本步驟可以設計如圖2-1的測試流程圖。
圖2-1 測試流程圖
·2.3 測試計劃設計
根據測試原理分析與測試思想設計,設計如圖2-2所示的測試過程計劃流程圖。
圖2-2 測試計劃流程圖
2.4 測試需求分析
對於一個網站系統,其鏈接的正確性和各個功能模塊的功能實現的準確性是其測試的關鍵性環節。同時在最短的時間內開發出需求分析中的網站系統的軟件產品,以最快的速度能先於其他競爭對手佔領軟件市場,從而獲取最大的利益,所以測試速度也是至關重要的。
傳統的軟件測試是靠人進行手工測試,也就是現在各個公司的主流方法,我們稱之為Manual test。測試部門每天都要計算在某個項目上Charge多少個人。這樣的測試耗費時間、人力、物力以及成本。自動化測試的目的就是儘可能的減少在測試上的人力和財力的開銷,以最便捷省時省事的方法完成同樣的任務。
因此以QTP自動化測試工具對網站的鏈接正確性檢查和各個功能模塊的功能實現的準確性測試能夠在滿足測試需求的前提下加快測試進度。
2.5 測試環境搭建
操作系統:Windows 10
語言:中文
瀏覽器:IE瀏覽器
網絡:寬帶連接
網站://127.0.0.1:5000/newstype
軟件:QuickTest Professional
其他軟件需求:Microsoft Visio2007和Microsoft Word2016
三、測試用例的設計
3.1 登錄與註冊測試用例
(1).註冊測試用例設計如表3-1所示:
表3-1註冊測試用例
前置條件 |
輸入數據 |
預期結果 |
實際結果 |
輸入姓名: |
小明 |
註冊成功 |
註冊成功 |
輸入電話: |
154567327890 |
||
輸入密碼: |
****** |
(2). 登錄測試用例如表3-2所示:
表3-2 登錄測試用例
前置條件 |
輸入數據 |
預期結果 |
實際結果 |
已註冊用戶 |
|
登錄成功 |
登錄成功 |
輸入電話: |
154567327890 |
||
輸入密碼: |
****** |
3.2 查看新聞的測試用例
(1). 查看新聞的測試用例如表3-3所示:
表3-3 查看新聞的測試用例
前置條件 |
輸入數據 |
預期結果 |
實際結果 |
點擊想要查看的新聞類別 |
點擊對應新聞類別鏈接 |
進入對應類別的新聞列表頁面 |
進入對應類別的新聞列表頁面 |
點擊想要查看的新聞 |
點擊對應新聞鏈接 |
進入對應新聞詳情頁面 |
進入對應新聞詳情頁面 |
3.3 關閉新聞返回新聞諮詢頁面的測試用例
(1). 關閉新聞返回新聞諮詢頁面的測試用例如表3-4所示:
表3-4 關閉新聞返回新聞諮詢頁面的測試用例
前置條件 |
輸入數據 |
預期結果 |
實際結果 |
關閉新聞詳情頁面 |
點擊關閉頁面按鈕 |
新聞詳情頁面關閉進入新聞列表頁面 |
新聞詳情頁面關閉進入新聞列表頁面 |
點擊導航欄中的「新聞首頁」 |
點擊導航欄中「新聞首頁」鏈接 |
進入新聞諮詢頁面 |
進入新聞諮詢頁面 |
3.4 腳本
SBrowser(“Accordion Slider”).Page(“Accordion Slider”).Link(“登錄|註冊”).Click
Browser(“Accordion Slider”).Page(“註冊或登錄”).WebEdit(“WebEdit”).Set “15297323390”
Browser(“Accordion Slider”).Page(“註冊或登錄”).WebEdit(“WebEdit_2”).SetSecure “627c7a0e614001379ef301f87ebc5b3ea454”
Browser(“Accordion Slider”).Page(“註冊或登錄”).WebButton(“登錄”).Drag 137,142
Browser(“Accordion Slider”).Page(“註冊或登錄”).WebButton(“登錄”).Drop 137,142
Browser(“Accordion Slider”).Page(“Accordion Slider_2”).Link(“新聞資訊”).Click
Browser(“Accordion Slider”).Page(“新聞資訊”).Link(“旅遊”).Click
Browser(“Accordion Slider”).Page(“旅遊”).Link(“最火五一小長假將來臨!這三座熱門城市就別去了,火車票已秒光”).Click
Browser(“Accordion Slider”).Page(“旅遊_2”).Link(“新聞首頁”).Click
Browser(“Accordion Slider”).Page(“新聞資訊”).Link(“返回首頁”).Click
四、測試過程
4.1開始錄製腳本:
點擊打開QTP,創建一個Blank Test;
圖4-1 創建空白測試
點擊Record來錄製一個腳本:
圖4-2 開始錄製腳本
點擊「確定」後進入新聞網站主頁:
圖4-3 進入新聞網站主頁
然後進入用戶登錄頁面,如下圖所示:
圖4-4 進入用戶登錄頁面
輸入用戶名和密碼後,進入網站首頁:
圖4-5 進入網站首頁
點擊新聞資訊,進入新聞類別頁面:
圖4-6 新聞類別界面
點擊想要查看的新聞類別進入新聞列表頁面:
圖4-7 新聞列表界面
點擊新聞鏈接進入新聞詳情界面:
圖4-8 新聞詳情界面
返回新聞首頁:
圖4-9 返回新聞首頁
進入QTP的Keyword視圖:
圖4-10 進入QTP的Keyword視圖
而下圖是其Expert View(Expert就是代碼視圖,一般編寫腳本都在這個區域):
圖4-11進入QTP的Expert視圖
4.2 回放錄製腳本:
錄製完成後,點擊按鈕,由於沒有加入檢查點,故而結果都是Done,出現如下圖:
圖4-12 腳本回放完成界面
4.3 加入檢查點
下面加入檢查點,在用戶頁面的輸入用戶名時加入一個檢查點,以檢查輸入的用戶名是否正確:,
圖4-13 在用戶名處加入檢查點
然後設置檢查點屬性,檢查點插入位置設為後,檢查點超時設為2)):
圖4-14 設置檢查點屬性
插入檢查點後效果:
圖4-15 插入檢查點後效果
Expert View:
圖4-16 插入檢查點後的Expert視圖
4.4 重新運行腳本
再次點擊按鈕,得到結果如下:
圖4-17 腳本回放完成界面
兩個結果都是Passed,表示都通過了,功能驗證測試完成。
五、測試結果分析
本次實驗主要利用QTP的檢查點功能來測試登錄時輸入用戶名功能。在開始設置檢查點的時候,我開始將檢查點放在了輸入用戶名之前,導致用戶名還沒有輸入就進行檢查,所以一直失敗,後來發現檢查點位置放錯了,應該放在輸入用戶名之後,修改之後測試通過。
圖5-1 測試通過界面
六、課設小結及心得體會
QTP是一款非常強大自動化測試工具,它的用途非常廣泛,各項功能如對象庫,同步點,檢查點等也非常好用。通過本次的課程設計,使我對軟件測試這門課程有了一個更加深入的了解,尤其是相對於小學期之前來說,使用QTP進行功能測試熟練了很多,尤其是插入檢查點這一環節,之前做實驗時對這一環節並沒有完全理解,所以在這次測試過程中卡在了插入檢查點這一環節,測試一直不通過,後來通過網上查找資料以及查看學習通的視頻才對這一環節完全理解,測試過程中除了插入檢查點之外,基本沒有出現其他問題。