?
?
??作者簡(jiǎn)介:博主是一位測(cè)試管理者,同時(shí)也是一名對(duì)外企業(yè)兼職講師。
??主頁(yè)地址:【Austin_zhai】
??目的與景愿:旨在于能幫助更多的測(cè)試行業(yè)人員提升軟硬技能,分享行業(yè)相關(guān)最新信息。
??聲明:博主日常工作較為繁忙,文章會(huì)不定期更新,各類行業(yè)或職場(chǎng)問(wèn)題歡迎大家私信,有空必回。

?
?
1. 前言
??隨著科技日新月異的發(fā)展,人工智能正逐漸滲透到我們生活的各方各面,從智能語(yǔ)音助手到自動(dòng)駕駛汽車,從智能家居到人臉識(shí)別技術(shù),AI正以其卓越的智能和學(xué)習(xí)能力引領(lǐng)著新時(shí)代的發(fā)展方向。在這個(gè)快速演進(jìn)的時(shí)代中,軟件測(cè)試領(lǐng)域也受到了不小的沖擊。雖然在當(dāng)下,傳統(tǒng)的軟測(cè)技術(shù)仍然是絕對(duì)的主力,但是身為IT行業(yè)中的一員,近幾年AI的全新業(yè)務(wù)體驗(yàn)與其超強(qiáng)的算力所帶來(lái)的震撼感受也應(yīng)該遠(yuǎn)超其他行業(yè)。所以為了跟上時(shí)代的步伐,作為軟測(cè)的大家是不是也應(yīng)該考慮如何讓AI輔助我們更加完整高效的完成日常的各類質(zhì)量保障工作呢?
??上一期我們介紹了mabl平臺(tái)的CI/CD集成,相信實(shí)踐過(guò)的測(cè)試同學(xué)們也一定有了自己的使用體驗(yàn)了吧。接下來(lái)我們來(lái)介紹一些帶日常工作場(chǎng)景中會(huì)高頻出現(xiàn)的一些mabl平臺(tái)進(jìn)階玩法,掌握了這些就能讓我們的自動(dòng)化測(cè)試工作的效率再次上升一個(gè)臺(tái)階。
?
?
2. 變量創(chuàng)建
??在自動(dòng)化測(cè)試框架或腳本中,變量永遠(yuǎn)是一個(gè)回避不了的話題。同樣的,在mabl中如何使用變量也是大有講究。
??我們打開(kāi)mabl trainer之后可以在窗口的最下方看到{x}圖標(biāo)的按鈕,這個(gè)就是添加在測(cè)試步驟中添加變量的按鈕。如果不是以編寫腳本的方式來(lái)定義的話直接用這個(gè)按鈕來(lái)創(chuàng)建就行了。
?
??按下后會(huì)詢問(wèn)你需要進(jìn)行的變量操作,這里可以進(jìn)行變量的管理、創(chuàng)建變量和使用變量三個(gè)操作。我們先來(lái)創(chuàng)建一個(gè)變量來(lái)看看,選擇Create a variable。
??創(chuàng)建的選項(xiàng)有四種,字符串模板、元素屬性、自定義 JavaScript 代碼、Mabl 郵箱地址,每項(xiàng)具體的內(nèi)容與含義后續(xù)會(huì)詳細(xì)說(shuō)明。這邊我們先選擇字符串模板 (String template),可以看到下面會(huì)讓我們填寫各種參數(shù)。屬性(Property)中填寫要添加原始變量的位置,當(dāng)前值(Current value)則顯示的是當(dāng)前變量的預(yù)覽值,最后再定義一個(gè)變量的名稱(Variable name)點(diǎn)擊OK就完成了一個(gè)變量的創(chuàng)建操作了。
?
2.1 字符串模板
??當(dāng)然再屬性框中我們不僅僅可以填入一些常量,還可以使用各類變量、隨機(jī)數(shù)據(jù)、算式這些靈活的元素來(lái)表達(dá)自己的變量屬性。如下圖,在mabl的字符串模板中表達(dá)式可以使用兩個(gè)大括號(hào)“{{}}”來(lái)表示,如果要引用變量的話只要在前面加上@符號(hào)即可。這里我使用了一個(gè)隨機(jī)的6位字母當(dāng)作注冊(cè)賬號(hào)的郵箱名,在一些注冊(cè)的正向場(chǎng)景中,我們可以引入一些隨機(jī)的字符來(lái)滿足用戶名的注冊(cè)條件,這樣就無(wú)需特意去指定這些繁瑣的命名規(guī)則,即可達(dá)成一些業(yè)務(wù)測(cè)試場(chǎng)景的需求。
?
以下是一些有效的表達(dá)式例子,大家可以做下參考:
{{@username}}:引用變量的值username
{{alpha:6}}:生成一個(gè)由六個(gè)大小寫字母組成的隨機(jī)字符串
{{fake.name.firstName}}:生成一個(gè)隨機(jī)的名字
{{(6 + 10) / 2}}:將 6 和 10 之和除以 2
{{date}}:生成時(shí)間戳。如果您需要格式化的日期,請(qǐng)參閱我們關(guān)于在 mabl 中使用日期的指南。
?
??這里需要注意的是,如果你在表達(dá)式中引用變量的時(shí)候,要先確保引用的變量包含正確的賦值,不然就會(huì)出現(xiàn)值未定義的情況出現(xiàn)。
?
2.2 宏
??除了引入變量之外,宏也是一個(gè)不錯(cuò)的選擇。一般生成隨機(jī)字符串和快速的指定任意的輸入內(nèi)容,都可以用宏來(lái)達(dá)成類似的效果。宏的表示方法包括一個(gè)字符類型,后面跟一個(gè)冒號(hào)和一個(gè)數(shù)字,其中數(shù)字表示要?jiǎng)?chuàng)建的隨機(jī)字符數(shù)。如下這些例子所示:
{{alpha:6}}: 6位大寫和小寫字母
{{alphaLower:4}}: 4位小寫字母
{{alphaUpper:5}}:5位大寫字母
{{digit:4}}:4位數(shù)字
{{alnum:11}}:11位字母數(shù)字
??mabl同樣可以使用模板生成隨機(jī)數(shù)據(jù),它的表達(dá)式是使用雙大括號(hào)并且以fake為開(kāi)頭,如{{fake.phone.phoneNumber}}這樣的格式,但這里因?yàn)閙abl平臺(tái)僅支持英文區(qū)域,所以生成的數(shù)據(jù)格式均為美國(guó)區(qū)域的數(shù)據(jù),這個(gè)就存在著很大的局限性,對(duì)于沒(méi)有海外業(yè)務(wù)的小伙伴來(lái)說(shuō),這塊功能就有些雞肋了。當(dāng)然如果你正好需要用到,那相較于其他的生成方式或在線網(wǎng)頁(yè)生成器的隨機(jī)數(shù)據(jù),mabl自帶的隨機(jī)數(shù)據(jù)方式就比較便捷了。以下是一些基礎(chǔ)的隨機(jī)數(shù)據(jù)使用的表達(dá)式:
{{fake.name.firstName}}:隨機(jī)名字
{{fake.name.lastName}}:隨機(jī)姓氏
{{fake.address.streetAddress}}:隨機(jī)街道地址
{{fake.address.city}}:隨機(jī)城市名稱
{{fake.address.state}}:隨機(jī)美國(guó)州名
{{fake.address.zipCode}}:隨機(jī)美國(guó)郵政編碼
{{fake.address.countryCode}}:隨機(jī) 2 個(gè)字母的國(guó)家/地區(qū)代碼
{{fake.company.companyName}}:隨機(jī)公司名稱
{{fake.phone.phoneNumber}}:隨機(jī)手機(jī)電話號(hào)碼,格式為美國(guó)地區(qū)
{{fake.lorem.text}}:隨機(jī)填充文本
{{fake.random.uuid}}:隨機(jī) UUID
{{fake.finance.amount}}:隨機(jī)貨幣金額
??除此之外,mabl還支持?jǐn)?shù)學(xué)運(yùn)算,它可以在字符串模板中執(zhí)行基本的數(shù)學(xué)運(yùn)算并將結(jié)果保存到新變量或覆蓋現(xiàn)有變量。這里要注意點(diǎn)的是,指定表達(dá)式對(duì)于獲得正確的結(jié)果很重要。數(shù)學(xué)表達(dá)式同樣也必須用要計(jì)算的雙大括號(hào)括起來(lái)。以下是一些數(shù)學(xué)運(yùn)算的表達(dá)式:
{{5 + 3 / 2}}:結(jié)果為:6.5 這是很基本的運(yùn)算,在mabl中依然遵循運(yùn)算符優(yōu)先級(jí)來(lái)進(jìn)行運(yùn)算
{{(5 + 3) / 2}}: 結(jié)果為:4 按照括號(hào)的指定優(yōu)先級(jí)來(lái)進(jìn)行運(yùn)算
${{(5 + 3 ) / 2}}:結(jié)果為:$4 類似于美元符或百分號(hào)這樣的計(jì)算符號(hào)可以組合使用
??有了基礎(chǔ)數(shù)學(xué)運(yùn)算外,我們還可以使用一定的高級(jí)數(shù)據(jù)表達(dá)式來(lái)進(jìn)行一些特定的場(chǎng)景計(jì)算。例如:
round:將數(shù)學(xué)計(jì)算結(jié)果四舍五入到小數(shù)位數(shù),表達(dá)式為:round(number, numberOfDecialPlaces)
abs:返回?cái)?shù)學(xué)計(jì)算的絕對(duì)值,表達(dá)式為:abs(number)
randomInt:返回一個(gè)大于或等于但小于,表達(dá)式為:randomInt(min, max)
?
2.3 元素屬性
??元素屬性,就和它的字面意思一樣,元素屬性的變量會(huì)從當(dāng)前頁(yè)面上(Trainer上的當(dāng)前頁(yè)面)的元素進(jìn)行提取,并將其存儲(chǔ)在元素屬性變量中。
?
??其實(shí)這個(gè)類型很好理解,我們選擇完元素屬性這個(gè)類別后點(diǎn)擊Select圖標(biāo),在當(dāng)前的頁(yè)面上選擇你想要提取的元素。如圖,我們將鼠標(biāo)懸停在百度的logo上,頁(yè)面上就會(huì)顯示當(dāng)前被選中的元素屬性,可以看到在元素定義的時(shí)候這個(gè)img元素的id于classname都是已經(jīng)被識(shí)別出來(lái)的。
?
??然后我們點(diǎn)擊這個(gè)logo元素,返回元素屬性變量創(chuàng)建的對(duì)話框。此時(shí)我們就可以在屬性(Property)選擇框內(nèi)選擇該元素對(duì)應(yīng)的屬性名了,而當(dāng)前值(Current value)這里會(huì)對(duì)應(yīng)顯示當(dāng)前元素屬性的屬性值。就好比我們?cè)瓌t了id,那剛才與id對(duì)應(yīng)的屬性值就應(yīng)該是s_lg_img。最后我們填入相應(yīng)的變量名即可完成創(chuàng)建。
?
??可以看到我們的元素屬性變量創(chuàng)建還是相當(dāng)?shù)暮?jiǎn)單的,所見(jiàn)即所得的操作可以免去在頁(yè)面上用F12查找捕獲元素的繁瑣過(guò)程。同時(shí)在我們的自動(dòng)化測(cè)試腳本的設(shè)計(jì)與維護(hù)過(guò)程中,因?yàn)椴捎昧俗兞康男问剑词姑鎸?duì)頻繁多變的頁(yè)面改動(dòng),仍舊可以以最少的工作量來(lái)覆蓋所需的業(yè)務(wù)場(chǎng)景。
?
2.4 自定義JS代碼
??第三種方式是利用JS代碼段來(lái)進(jìn)行變量的創(chuàng)建,這種情況相對(duì)來(lái)說(shuō)會(huì)比較的少見(jiàn)。因?yàn)槲覀兊膍abl平臺(tái)已經(jīng)提供了相當(dāng)完善的低代碼功能,但往往有些小伙伴的公司小部分產(chǎn)品不支持開(kāi)箱即用(out of the box),那么mabl也可以支持JS代碼來(lái)提供更為高級(jí)的場(chǎng)景解決方法。
?
??如下圖,比如在我們的業(yè)務(wù)測(cè)試過(guò)程中,無(wú)論是產(chǎn)品本身技術(shù)?;蛐螒B(tài)不支持普通的低代碼測(cè)試手段,利用mabl的JS代碼段就可以進(jìn)行對(duì)應(yīng)的業(yè)務(wù)測(cè)試。對(duì)于一些web前端的測(cè)試來(lái)說(shuō),自定義JS代碼段也不妨是一種劍走偏鋒的好方式。
?
2.5 mabl郵箱
??最后一種是使用mabl郵箱地址來(lái)創(chuàng)建變量,對(duì)于一些電子郵件的測(cè)試我們可以填入真實(shí)的郵箱來(lái)進(jìn)行對(duì)應(yīng)的測(cè)試內(nèi)容。
?
??在一些需要用到電子郵箱的測(cè)試業(yè)務(wù)中,這個(gè)類別就可以簡(jiǎn)單快速的達(dá)成測(cè)試業(yè)務(wù)目標(biāo),而無(wú)需編寫腳本或進(jìn)行復(fù)雜的設(shè)置。比如一些驗(yàn)證定時(shí)郵件、密碼找回、注冊(cè)賬號(hào)、身份驗(yàn)證、郵件中的附件驗(yàn)證等。
?
驗(yàn)證的方式也十分的簡(jiǎn)單,我們可以在Trainer中添加對(duì)應(yīng)的斷言,可以包括發(fā)送人、主題、日期和附件等。
??當(dāng)然mabl中的郵件測(cè)試也是存在有一定的限制的,比如郵件地址長(zhǎng)度無(wú)法超過(guò)25個(gè)字符、附件大小不能超過(guò)10MB、郵件必須在斷言步驟后的5分鐘內(nèi)到達(dá),不然斷言就會(huì)失敗。
?
?
3. 變量使用
??我們創(chuàng)建完對(duì)應(yīng)的變量之后就可以在腳本中的不同場(chǎng)合使用這些變量了,這里為大家總結(jié)幾種高頻的使用場(chǎng)合。
?
??輸入值應(yīng)該是我們最常用的一種變量調(diào)用方式了,首先在Trainer中按{x}打開(kāi)變量界面,點(diǎn)擊使用變量,這時(shí)可以看到變量使用方式選擇的界面,我們選擇Input Value選項(xiàng)。然后與元素屬性類別的選擇按鈕一樣,在當(dāng)前頁(yè)面中選擇需要進(jìn)行變量操作的元素。
?
??這里我們依然選擇搜索框元素,并在下一個(gè)頁(yè)面中選擇search_key_word變量,該變量是之前定義好的其中一個(gè),我們直接選擇后,該變量就會(huì)直接作用于當(dāng)前的搜索框。
?
?
??此時(shí)我們就可以看到搜索框內(nèi)已經(jīng)輸入了自動(dòng)化測(cè)試這幾個(gè)關(guān)鍵字了,這樣我們只要保存好之前的業(yè)務(wù)操作步驟,就可以每一次在使用搜索頁(yè)面的時(shí)候輸入自己指定的內(nèi)容了。是不是特別的簡(jiǎn)單?
?
??如果我們不是使用新建的變量,想改變用調(diào)用一些既存的變量,我們也可以在執(zhí)行步驟的過(guò)程中進(jìn)行編輯和修改。我們先找到對(duì)應(yīng)步驟,在步驟的右側(cè)選擇編輯(Edit)。
?
??開(kāi)打后可以看到界面中對(duì)應(yīng)元素的一些詳細(xì)信息,也可以看到我們剛才調(diào)用的變量search_key_word,現(xiàn)在我們想調(diào)用另一個(gè)變量,我們一個(gè)是可以在下面的變量下拉列表中選擇一個(gè)既存的變量。
?
??另一個(gè)方法是直接編輯這個(gè)元素的文本內(nèi)容,我們先將選項(xiàng)單選按鈕調(diào)至字符串(String),然后按照之前所說(shuō)的字符串模板的表達(dá)式來(lái)調(diào)用其他的變量,這里我們調(diào)用了一個(gè)混沌工程的變量??梢钥闯鲞@里的操作是靈活多變的,完全可以根據(jù)小伙伴們自己的實(shí)際習(xí)慣與需求來(lái)自行使用。
?
??一般在我們的測(cè)試項(xiàng)目中,存在多個(gè)測(cè)試環(huán)境已經(jīng)不是什么新鮮事情了。無(wú)論是DEV、UAT、PRD還是其他的一些環(huán)境都是我們測(cè)試需要涉及的主體環(huán)境,所以在mabl中也可以通過(guò)變量來(lái)快速的訪問(wèn)你所指定的多個(gè)測(cè)試環(huán)境。當(dāng)然mabl不單單是提供了整體的環(huán)境訪問(wèn),還支持各類的業(yè)務(wù)子頁(yè)面的跳轉(zhuǎn),這里就完全看大家各自的發(fā)揮了。
?
??默認(rèn)情況下mabl開(kāi)啟Trainer的時(shí)候都會(huì)默認(rèn)開(kāi)始你設(shè)置的Application時(shí)設(shè)置的URL,當(dāng)然我們的日常業(yè)務(wù)肯定不是那么簡(jiǎn)單的訪問(wèn)一個(gè)或兩個(gè)地址。所以這里我們就需要根據(jù)業(yè)務(wù)流程的需求來(lái)定制我們的URL訪問(wèn)路徑與跳轉(zhuǎn)頁(yè)面甚至是環(huán)境的快速切換。
?
??當(dāng)需要添加URL跳轉(zhuǎn)變量的時(shí)候我們需要先在Trainer中點(diǎn)擊最下面的加號(hào)按鈕,在添加步驟的界面中選擇訪問(wèn)URL(Visit URL)。
?
??跳轉(zhuǎn)進(jìn)來(lái)后我們可以在字符串和變量?jī)蓚€(gè)輸入種類中選擇,這里的用法與字符串模板中的表達(dá)式用法一致,就不重復(fù)介紹了。在一些測(cè)試場(chǎng)景中我們可以在url的前后或本身進(jìn)行url的拼接以達(dá)到正確跳轉(zhuǎn)業(yè)務(wù)頁(yè)面的目的。
?
??另一種較為高頻的場(chǎng)合就是在我們的用例中進(jìn)行斷言,無(wú)論是判斷值或元素是否存在,變量都可以很好的滿足這些測(cè)試場(chǎng)景。在mabl中,如果已經(jīng)事先將被測(cè)對(duì)象進(jìn)行了變量創(chuàng)建,那我們大可以在業(yè)務(wù)操作的測(cè)試過(guò)程中將斷言設(shè)置為你所需驗(yàn)證功能的核心元素。
?
??例如你需要測(cè)試一個(gè)系統(tǒng)的測(cè)試,登錄按鈕的亮起與文案變化會(huì)隨著用戶名密碼輸入而發(fā)生改變,那登錄頁(yè)面的一些特征元素或隨業(yè)務(wù)狀態(tài)變化的元素完全可以變成你的斷言依據(jù)。我們先在對(duì)應(yīng)需要斷言的步驟處添加一個(gè)斷言操作。
?
??在斷言界面中,我們這里斷言的對(duì)象是登錄按鈕,判斷的內(nèi)容則是按鈕的內(nèi)部文案,而變量使用預(yù)先創(chuàng)建的登錄按鈕的innerText的屬性值,創(chuàng)建的時(shí)候需要注意必須將按鈕的對(duì)應(yīng)屬性調(diào)整為登錄信息錄入完整狀態(tài)下的屬性,不然肯定會(huì)斷言失敗。下面的選項(xiàng)可以根據(jù)自己的測(cè)試場(chǎng)景需求來(lái)酌情選擇。
?
??添加完斷言并保存用例,我們先簡(jiǎn)單的跑一下用例,在報(bào)告結(jié)果中查看詳細(xì),就可以看到我們剛才添加的斷言已經(jīng)執(zhí)行成功了。
?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-854861.html
??以上就是mabl中的變量的創(chuàng)建與使用的一些高頻場(chǎng)景,其實(shí)對(duì)于我們的日常工作來(lái)說(shuō),頻繁的利用變量的特性來(lái)豐富自動(dòng)化業(yè)務(wù)測(cè)試腳本是一個(gè)非常高效的解決方案,面對(duì)敏捷開(kāi)發(fā)的項(xiàng)目,即使頻繁的更改需求與版本迭代,越是這樣的環(huán)境,就越可以體現(xiàn)變量在整體腳本靈活性與維護(hù)性上的絕大優(yōu)勢(shì)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-854861.html
到了這里,關(guān)于軟件測(cè)試下的AI之路(4)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!