成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

自動化功能性測試的分步指南

譯文 精選
開發 測試
本文將和您探討如何基于Web應用,設計出功能性測試用例,并使用典型的測試工具對其自動化。

譯者 | 陳峻

審校 | 孫淑娟

眾所周知,無論是桌面應用、Web應用、還是移動應用,在投放到市場之前,都需要經過嚴格的測試。而由于功能性測試能夠檢驗應用程序的各項操作與功能,是否符合既定的需求規范,因此它往往被認為是在整個測試生命周期中,最關鍵且成本最高的一項活動。對此,自動化的功能性測試則能夠在提升軟件質量的同時,降低有效的成本。下面,我將和您一起探討如何基于Web應用,設計出功能性測試用例,并使用典型的測試工具對其自動化。

功能性測試的流程與分類

在功能性測試中,測試人員會根據所有的功能需求規范,驗證被測軟件是否符合要求,是否能夠按照預期工作,及時發現它與規范之間的“差異”。簡單而言,這是一種黑盒技術,測試人員并不知道軟件的內部邏輯與細節(如圖1),只需讓測試用例遵從規范開展即可。通常,功能性測試的流程包括:

1.向被測系統提供測試性輸入

2.從被測系統獲取結果輸出

3.驗證實際輸出是否符合規范所預期的輸出

圖1-功能性黑盒測試

從測試類型上分,功能性測試包括如下幾種(如圖2):

  • 單元
  • 冒用
  • 健全測試(Sanity)
  • 集成
  • 系統
  • 回歸測試
  • 其他更多

圖2-功能性測試類型

在此,我將重點介紹用于測試應用功能的集成性系統測試。

自動化功能性測試

從測試伊始,我們就知道可以采取手動與自動兩種不同的執行方式。其中,手動測試是指測試人員需要直接與應用程序進行交互;而自動化測試是指測試人員使用諸如Maveryx之類的自動化工具,通過編程的方式、或基于腳本來自動實現,以及在無代碼的自動化(例如,關鍵字驅動方法)環境中實現。

注意,此處的基于腳本的測試是指用Java、C#和Python等編程語言來編寫測試腳本。當然,這對測試人員的編程水平要求較高。而無代碼測試則是構建在諸如:從下拉菜單中選擇,或者通過拖放測試組件等方式之上。因此,它對于測試人員的編程水平要求不高。

一個測試用例

許多Web應用都離不開用戶登錄這一基本功能。下面,我將在https://opensource-demo.orangehrmlive.com/上,擬定如下功能規范:

  • 用戶可以根據登錄頁面上的提示,使用用戶名和密碼憑證(如圖3)登錄并訪問OrangeHRM演示系統。

圖3-OrangeHRM演示網站

  • 當用戶輸入有效的用戶名和密碼,并單擊登錄按鈕時,用戶可以看到應用的儀表板界面(如圖4)。

圖4-儀表板網頁

  • 當用戶輸入無效的名稱和/或密碼,并單擊登錄按鈕時,系統會顯示一條錯誤消息:“無效憑據”(如圖5)。

圖5-無效憑據錯誤

  • 如果用戶名或密碼為空,單擊登錄按鈕,系統將顯示錯誤消息:“用戶名不能為空”或“密碼不能為空”(如圖6)。

圖6-用戶名和密碼為空的錯誤

由上述規范可知,我們需要設計針對如下方面的功能性測試用例:

測試用例名稱

測試用例的描述

預期輸出

TC_001號


輸入有效的用戶名和有效的密碼,然后單擊登錄按鈕。


用戶登錄到應用程序,并訪問位于??https://opensource-demo.orangehrmlive.com/index.php/dashboard?? 的儀表板頁面

TC_002號


輸入無效用戶名和有效的密碼,然后單擊登錄按鈕。


錯誤:“無效憑據。”

用戶仍在登錄頁面??https://opensource-demo.orangehrmlive.com/index.php/auth/validateCredentials?

TC_003號


輸入有效的用戶名和無效密碼,然后單擊登錄按鈕。


錯誤:“無效憑據。”

用戶仍在登錄頁面??https://opensource-demo.orangehrmlive.com/index.php/auth/validateCredentials?


TC_004號

輸入無效用戶名和無效密碼,然后單擊登錄按鈕。


錯誤:“無效憑據。”

用戶仍在登錄頁面??https://opensource-demo.orangehrmlive.com/index.php/auth/validateCredentials?

TC_005號


留下空白的用戶名和空白的密碼,然后單擊登錄按鈕。


錯誤:“用戶名不能為空。”

用戶仍在登錄頁面??https://opensource-demo.orangehrmlive.com/?

TC_006號


留下空白的用戶名并輸入有效的密碼,然后單擊登錄按鈕。


錯誤:“用戶名不能為空。”

用戶仍在登錄頁面上??https://opensource-demo.orangehrmlive.com/??

TC_007號


輸入有效的用戶名并留下空白的密碼,然后單擊登錄按鈕。


錯誤:“密碼不能為空。”

用戶仍在登錄頁面https://opensource-demo.orangehrmlive.com/ 

讓我們采取如下步驟來測試第一個測試用例(TC_001):

測試步驟(/輸入)

預期輸出

啟動瀏覽器


導航到OrangeHRM演示網站:??https://opensource-demo.orangehrmlive.com/??

OrangeHRM演示網站將通過URL-- ??https://opensource-demo.orangehrmlive.com/?? 被打開


輸入有效用戶名?“Admin”

用戶名字段被填如“Admin”

輸入有效密碼?“ admin123”

密碼字段已填充

單擊登錄按鈕

儀表板頁面通過??https://opensource-demo.orangehrmlive.com/index.php/dashboard??被顯示

自動化功能性測試腳本

我將使用??Maveryx???和??Java??來自動化其功能性測試。其中,Maveryx是一種自動化的功能和回歸測試工具。它提供了功能、回歸、用戶界面、無代碼、以及數據驅動測試等自動化測試功能。它能夠支持包括基于Web、.Net、Java等一系列應用。下面我將通過代碼的形式,逐步展示編寫TC_001測試用例的腳本:

1.啟動瀏覽器。

Java
//launch Chrome browser
Bootstrap.startApplication(chrome);

//new browser instance
GuiBrowser browser = new GuiBrowser();

2.通過URL--https://opensource-demo.orangehrmlive.com/導航到OrangeHRM演示網站。

Java
//OrangeHRM demo Website page URL
String pageURL = "https://opensource-demo.orangehrmlive.com/";

//navigate to the OrangeHRM demo Website
browser.navigateTo(pageURL);

//check the landing page URL
assertEquals(pageURL, browser.getCurrentPageUrl());

在此,我建議您使用斷言,來驗證預期的結果(如圖7)。如果實際結果與斷言的預期結果相匹配,則該測試用例算作通過,否則算作失敗。

圖7-JUnit斷言列表

3.在用戶名字段處輸入合法的數值“Admin”。

Java
//the username
String username = "Admin";

//the Username text field
GuiText usrName = new GuiText("Username");
//set the username
usrName.setText(username);

//check that the username has been correctly inserted
assertEquals(username, usrName.getText());

不同于??Selenium??,Maveryx并不使用包括XPath的“定位器”,來識別它與測試腳本通過交互而復制過來用戶的操作元素。用戶可以直接使用Maveryx,來描述待測試的UI元素,就像它們出現在應用程序中一樣。在本例中,我使用“username”作為用戶名文本字段的占位符,來識別對象(如圖8)。

測試對象通常可以在運行時中被直接識別,而無需使用任何預先錄制(pre-recorded)的UI映射,或測試對象與鏡像存儲庫。

圖8-用戶名文本字段

4.輸入有效的Password=“admin123”來填充密碼字段。

Java
//the password
String pwd = "admin123";

//the Passoword text field
GuiPasswordText password = new GuiPasswordText("Password");
//set the password
password.setText(pwd);

//check that the password has been correctly inserted
assertEquals(pwd, password.getText());

密碼的文本字段由其占位符“password”來標識(如圖9)。

圖9-密碼文本字段

5.單擊登錄按鈕,應用將加載儀表板頁面https://opensource-demo.orangehrmlive.com/index.php/dashboard,如圖10。

Java
//click The Login button
new GuiButton("LOGIN").click();

//check that the header "Dashboard" is present (fig.10)
new GuiHtmlElement("Dashboard", AccessibleRoleMaveryx.WEB_H1).waitForObject(5, 1);

//the Dashboard page URL
String dashboardURL = "https://opensource-demo.orangehrmlive.com/index.php/dashboard";
//check the Dashboard page URL
assertEquals(dashboardURL, new GuiBrowser().getCurrentPageUrl());

圖10-“儀表板”的標題

根據上述邏輯,我們便可以開始執行測試腳本了。Maveryx將啟動Chrome瀏覽器,并在執行代碼時,打開OrangeHRM的登錄頁面。然后,它將使用相關憑據進行登錄,并通過斷言檢查的方式,比較預期和實際結果。

同理,測試用例2(TC_002)將會生成如下Maveryx測試腳本:

Java
//invalid username
String username = "Admi";

//the Username text field
GuiText usrName = new GuiText("Username");

//set the invalid username
usrName.setText(username);

//check that the username has been correctly inserted
assertEquals(username, usrName.getText());

//the password (valid)
String pwd = "admin123";

//the Passoword text field
GuiPasswordText password = new GuiPasswordText("Password");
//set the password
password.setText(pwd);

//check that the password has been correctly inserted
assertEquals(pwd, password.getText());

//click The Login button
new GuiButton("LOGIN").click();

//check that the message "Invalid credentials" is present (fig.5)
new GuiHtmlElement("Invalid credentials").waitForObject(5, 1);

按照這樣的思路和方法,我們還可以編寫出適用于不同場景的測試用例。

結論

如前文所示,功能性測試是最容易發現軟件缺陷的一種測試類型,也是最考驗我們編寫測試用例的能力與邏輯的環節。希望上面探討的各個功能性測試案例,能夠協助您從現有的規范中,創建出能夠符合實際要求的自動化功能性測試用例。 

譯者介紹

陳峻 (Julian Chen),51CTO社區編輯,具有十多年的IT項目實施經驗,善于對內外部資源與風險實施管控,專注傳播網絡與信息安全知識與經驗;持續以博文、專題和譯文等形式,分享前沿技術與新知;經常以線上、線下等方式,開展信息安全類培訓與授課。

原文標題:??Automated Functional Testing: A Step-by-Step Guide??,作者:Gabriele Piantadosi

責任編輯:華軒 來源: 51CTO
相關推薦

2021-12-29 21:15:08

軟件測試軟件開發

2010-08-10 14:18:15

RationalFunFlex

2011-04-18 12:52:37

自動化測試功能測試軟件測試

2012-02-27 17:34:12

Facebook自動化

2024-09-25 08:46:31

2018-12-12 08:15:13

物聯網設備物聯網IOT

2023-05-08 15:59:27

UI自動化腳本鴻蒙

2022-02-17 10:37:16

自動化開發團隊預測

2021-02-04 09:00:00

跨瀏覽器移動測試工具

2009-07-06 10:08:03

Flex自動化

2023-03-27 15:37:43

自動化測試開發

2022-05-10 11:18:42

自動化測試軟件測試

2022-06-08 14:22:55

自動化測試測試

2015-03-19 09:35:36

OpenStack平臺性能測試Rally功能測試Tempest

2022-11-23 15:57:40

測試開發Java

2009-08-12 18:37:46

VSTS2005單元測

2021-09-03 09:56:18

鴻蒙HarmonyOS應用

2013-05-16 10:58:44

Android開發自動化測試

2010-08-10 14:34:37

QTPFlex

2014-04-16 14:15:01

QCon2014
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人免费视频观看 | 久久久久久电影 | 久久久www成人免费精品 | 国产一级一片免费播放 | 久久久久久免费免费 | 精品综合视频 | 日韩电影免费在线观看中文字幕 | 亚洲国产自产 | av电影手机在线看 | 美女131mm久久爽爽免费 | 久久精品成人 | 久久久久久久一区二区三区 | 懂色中文一区二区在线播放 | 精品一区二区三区中文字幕 | 国产精品日日做人人爱 | 91亚洲精品在线 | 国产在线一区二区三区 | 在线播放第一页 | 久久精品av麻豆的观看方式 | 日韩一级二级片 | 日韩在线观看一区 | 国产片一区二区三区 | 中文字幕一区在线观看视频 | 日韩免费一区 | 久久伊人影院 | 欧美一区二区三区日韩 | 久久人爽爽人爽爽 | 欧美成人手机在线 | 网站国产 | 龙珠z国语版在线观看 | 久草在线 | 免费天天干 | 精品久久久久久久久久 | 亚洲日本欧美 | 亚洲国产一区在线 | 激情的网站 | 人干人人 | 精品99在线| 成年人在线观看视频 | 欧美在线 | 日韩成人在线电影 |