国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

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

譯文 精選
開發 測試
本文將和您探討如何基于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自動化

2018-12-12 08:15:13

物聯網設備物聯網IOT

2024-09-25 08:46:31

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-06-08 14:22:55

自動化測試測試

2022-05-10 11:18:42

自動化測試軟件測試

2015-03-19 09:35:36

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

2009-08-12 18:37:46

VSTS2005單元測

2022-11-23 15:57:40

測試開發Java

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技術棧公眾號

亚洲iv一区二区三区| 国产在线观看一区| a视频在线观看| 91小视频免费观看| 九九久久99| 成人在线视频免费观看| 韩剧1988免费观看全集| av资源一区| 欧美无砖砖区免费| 色偷偷免费视频| 国产精品国产a| 亚洲最大综合网| 91浏览器在线视频| 国产三级日本三级在线播放| 国产日韩欧美一区二区三区综合| 精品久久久久久久免费人妻| 91一区一区三区| 美女黄色片视频| 亚洲色图丝袜美腿| 人与动性xxxxx免费视频| 一区二区三区丝袜| 中文字幕123| 亚洲高清免费观看| 亚亚洲欧洲精品| 欧美性极品xxxx做受| 成人免费黄色网页| 欧美日韩精品系列| 爱看av在线| 日韩视频免费大全中文字幕| 国产精品亚洲欧美日韩一区在线| 蜜臀久久99精品久久久无需会员| 亚洲视频一起| 国产精品福利小视频| 欧美日韩国产综合网| 日韩成人在线资源| 国产自产2019最新不卡| 久色视频在线播放| 亚洲精品午夜久久久| 超碰免费在线| 亚洲精品久久久久| 日本一区二区三区视频在线看| 久久久女人电视剧免费播放下载| 欧美性感美女一区二区| 国产九色91| 国产乱码一区二区三区| 粉嫩虎白女毛片人体| 亚洲成人777| 黑人玩欧美人三根一起进| 国产亚洲视频在线| 岳的好大精品一区二区三区| 国产99在线免费| 老司机免费视频一区二区| 妺妺窝人体色www在线小说| 亚洲卡通欧美制服中文| 欧美13一16娇小xxxx| 成人动漫av| 成人性视频网站| 女生裸体视频一区二区三区| 欧美伦理免费在线| 国语精品免费视频| 欧美极品美女视频| 国产乱子视频| 97久久国产精品| 成人av在线资源网站| 久久久久久蜜桃一区二区| 久久久久久久久蜜桃| 欧美成人免费| 欧美精品一区二区视频| 欧美精品在线播放| 日本一区二区三区免费乱视频| caoporn-草棚在线视频最| 中文字幕一区综合| 亚洲人被黑人高潮完整版| 亚洲人成网亚洲欧洲无码| 台湾av在线二三区观看| 91原创国产| 亚洲色图清纯唯美| 美女国产一区二区三区| 欧美日韩有码| 午夜视频精品| 亚洲自拍偷拍网| 成人污版视频| 亚洲淫性视频| 宅男一区二区三区| 色婷婷综合久久久中文字幕| 国产日韩一区二区三区在线| 欧美巨大xxxx做受沙滩| 国产 国语对白 露脸| 亚洲国产精品字幕| 色综合一本到久久亚洲91| 在线成人性视频| 国产精品久久久久久婷婷天堂| 91精品啪在线观看国产60岁| 日本怡春院一区二区| 欧美gay囗交囗交| 在线观看av片| 日韩人妻精品无码一区二区三区| 欧美激情视频网址| 久久久久国产精品厨房| 天堂综合网久久| 日韩激情av| 97精品国产aⅴ7777| 中文字幕一区在线| 国产精品视区| 久久99九九99精品| 国内精品视频在线观看| 日韩一区中文| 久久精品嫩草影院| 在线观看日韩羞羞视频| 欧洲亚洲免费视频| 精品国产乱码久久| 亚洲午夜一区二区| 国产嫩草影院久久久久| 福利一区在线观看| 岛国精品一区| 亚洲精品一区| 免费一级毛片在线观看| 国产91色在线| 亚洲成人综合视频| 亚洲国产婷婷综合在线精品| 激情文学综合丁香| 国产激情小视频在线| 无圣光视频在线观看| www.激情小说.com| 福利视频一二区| 中文字幕不卡每日更新1区2区| 亚洲中国色老太| 成人网在线免费观看| 成人黄色免费看| 色综合伊人色综合网站| 亚洲国产成人久久| 91精品啪在线观看国产60岁| 一区二区三区日韩欧美| 69av一区二区三区| 国产一区二区毛片| 久久99热99| 影音先锋国产精品| 欧美在线首页| 亚洲欧美在线人成swag| 成人在线免费观看av| 国产成人综合精品| 日韩国产欧美精品| av一卡二卡| 欧美精品性生活| 北条麻妃在线视频| 91好吊色国产欧美日韩在线| 免费观看国产精品视频| 久久精品视频免费观看| 欧美色窝79yyyycom| 欧美成人精品xxx| 日韩成人在线观看| 欧美一级片在线观看| 欧美本精品男人aⅴ天堂| 国产精品18久久久| 亚洲国内在线| 亚洲国产另类久久精品 | 懂色av噜噜一区二区三区av| 日韩另类视频| 在线免费av播放| 国产精品色婷婷视频| 欧美午夜一区二区三区| 麻豆精品蜜桃视频网站| 激情综合五月| 日本成本人片免费观看| 国产精品毛片一区视频| 亚洲国产一区自拍| 国产欧美va欧美不卡在线| 欧美gay男男猛男无套| 91麻豆国产福利在线观看宅福利| 色乱码一区二区三区熟女| 欧美激情一区二区三区高清视频| 亚洲激情一二三区| 亚欧成人精品| xxxx日韩| 国产精品刘玥久久一区| 成人av在线不卡| 国产精品成人免费视频| 欧美日韩国产综合草草| 顶级嫩模精品视频在线看| 欧美日韩破处| 宅男在线观看免费高清网站| 免费黄色福利视频| www 成人av com| 这里只有视频精品| 亚洲高清一区二区三区| 国产精品一区专区| 波多野结衣在线观看一区二区| 国产探花在线观看| 99reav| 欧洲精品码一区二区三区免费看| 日韩中文字幕久久| 欧美自拍偷拍一区| 久久老女人爱爱| 亚洲永久免费| 久久久久久毛片免费看| 制服丝袜中文字幕在线| 午夜丝袜av电影| 久久手机在线视频| 国产日韩精品推荐| 久久久久免费精品国产|