有限狀態(tài)機(jī):如何增強(qiáng)軟件測(cè)試第二部分:FSM 的優(yōu)勢(shì)
FSM 可以清晰地了解不同事件的預(yù)期系統(tǒng)行為。它們有助于定義和記錄需求。通過映射 FSM,測(cè)試人員可以有效地設(shè)計(jì)涵蓋所有可能轉(zhuǎn)換的測(cè)試用例,并確保系統(tǒng)對(duì)各種場(chǎng)景做出適當(dāng)?shù)姆磻?yīng)。FSM 可以幫助在早期設(shè)計(jì)階段識(shí)別不一致或缺失的邏輯。這可以防止在開發(fā)過程的后期出現(xiàn)代價(jià)高昂的錯(cuò)誤。它們充當(dāng)技術(shù)和非技術(shù)利益相關(guān)者之間的橋梁,促進(jìn)測(cè)試期間更好的溝通和協(xié)作。但讓我們看一些例子:
明確需求規(guī)范
一家科技初創(chuàng)公司正在開發(fā)一款革命性的智能樓宇管理系統(tǒng)。他們最新的挑戰(zhàn)是開發(fā)一款控制復(fù)雜電梯的應(yīng)用程序。該團(tuán)隊(duì)由熱情的項(xiàng)目經(jīng)理索菲亞領(lǐng)導(dǎo),但面臨溝通障礙。
“工程師們一直在改變應(yīng)用程序的行為!”索菲亞在一次團(tuán)隊(duì)會(huì)議上說道?!扒耙环昼娝€優(yōu)先處理快速呼叫,下一分鐘它就為所有樓層提供服務(wù)??蛻舾械嚼Щ?,我們落后于計(jì)劃?!?
首席軟件工程師戴維撓了撓頭。“我們都了解核心功能,但將這些要求轉(zhuǎn)化為代碼卻很棘手。”
新任 UI/UX 設(shè)計(jì)師 Aisha 說道:“也許我們需要一種更直觀的方式來表現(xiàn)電梯的行為。讓每個(gè)人一眼就能看懂?!?
索菲亞拿出一塊白板?!叭绻覀?yōu)槲覀兊膽?yīng)用程序創(chuàng)建一個(gè) FSM 會(huì)怎么樣?”
團(tuán)隊(duì)圍成一圈,索菲亞則畫了一張圖。FSM 描述了電梯的不同狀態(tài)(空閑、上行、下行、門打開)以及觸發(fā)它們之間轉(zhuǎn)換的事件(按鈕按下、樓層傳感器激活)。它還為每個(gè)狀態(tài)定義了明確的輸出(門打開、樓層廣播)。
“這太神奇了!”大衛(wèi)驚呼道?!八吻辶穗娞菘刂葡到y(tǒng)的決策過程?!?
艾莎笑了。“這個(gè) FSM 還可以指導(dǎo)用戶界面設(shè)計(jì)。我們可以根據(jù)用戶的輸入向他們顯示電梯的當(dāng)前狀態(tài)和預(yù)期行為。”
在接下來的幾天里,團(tuán)隊(duì)完善了 FSM,確保所有用戶場(chǎng)景和極端情況都得到考慮。他們使用 FSM 作為編碼、UI 設(shè)計(jì)甚至客戶演示的參考點(diǎn)。
結(jié)果令人印象深刻。他們的應(yīng)用程序運(yùn)行完美,在高峰時(shí)段優(yōu)先處理快速呼叫,并高效地為所有樓層提供服務(wù)。基于 FSM 的清晰用戶界面讓每個(gè)人都能了解電梯的當(dāng)前狀態(tài)。
“FSM 改變了游戲規(guī)則,”Sofia 在一次成功的客戶演示中說道?!八峁┝藢?duì)系統(tǒng)行為的共同理解,從而實(shí)現(xiàn)了順利的開發(fā)和客戶滿意度?!?
該應(yīng)用的成功證明了 FSM 的強(qiáng)大功能。通過提供系統(tǒng)行為的清晰視覺表示,F(xiàn)SM 彌補(bǔ)了溝通鴻溝,確保了明確定義的需求,并有助于開發(fā)出功能強(qiáng)大且用戶友好的軟件。
測(cè)試用例生成
另一家初創(chuàng)公司正在開發(fā)一款用于限制區(qū)域的人工智能安全門。門禁控制基于員工身份證和許可級(jí)別。然而,測(cè)試階段變成了一個(gè)令人沮喪的隨機(jī)場(chǎng)景迷宮。
“這些漏洞到處都有!”首席 QA 測(cè)試員 Mike 抱怨道?!扒耙环昼姶箝T還打開,需要提供有效身份證件,下一分鐘大門就毫無理由地拒絕進(jìn)入?!?
首席開發(fā)人員麗莎皺起了眉頭。“我們已經(jīng)寫了很多測(cè)試用例,但這些小故障還是不斷出現(xiàn)。”
團(tuán)隊(duì)新成員、剛剛畢業(yè)的計(jì)算機(jī)科學(xué)畢業(yè)生亞歷克斯 (Alex) 認(rèn)真地聽著。“你們考慮過使用 FSM 嗎?”
邁克問道:“有限狀態(tài)機(jī)?那是什么?”
Alex 解釋了 FSM 如何直觀地表示應(yīng)用的行為。它將顯示各種狀態(tài)(空閑、驗(yàn)證 ID、允許訪問、拒絕訪問)以及觸發(fā)轉(zhuǎn)換的事件(刷卡、檢查通行證)。
“通過映射 FSM,”Alex 繼續(xù)說道,“我們可以系統(tǒng)地設(shè)計(jì)涵蓋所有可能轉(zhuǎn)換的測(cè)試用例,并確保我們的應(yīng)用程序在每種情況下都能做出適當(dāng)?shù)姆磻?yīng)?!?
團(tuán)隊(duì)決定嘗試一下。他們一起在白板上畫了一個(gè) FSM。它詳細(xì)說明了所有可能的徽章刷卡(有效身份證、無效身份證、吊銷身份證)以及相應(yīng)的狀態(tài)轉(zhuǎn)換和輸出(門打開、訪問被拒絕消息、安全警報(bào))。
基于 FSM,Mike 和 Alex 設(shè)計(jì)了全面的測(cè)試案例。他們測(cè)試了不同權(quán)限級(jí)別的有效訪問權(quán)限、使用無效徽章的嘗試訪問權(quán)限,甚至模擬了被吊銷的身份證件。他們還測(cè)試了極端情況,例如在驗(yàn)證過程中同時(shí)刷徽章或網(wǎng)絡(luò)中斷。
結(jié)果非常顯著。FSM 幫助他們識(shí)別并修復(fù)了之前未曾預(yù)料到的錯(cuò)誤。例如,他們發(fā)現(xiàn)了一個(gè)邏輯錯(cuò)誤,該錯(cuò)誤導(dǎo)致應(yīng)用程序在 ID 被撤銷后仍授予訪問權(quán)限。
“這個(gè) FSM 真是救星!”Mike 驚呼道。“它就像一張路線圖,確保我們測(cè)試了系統(tǒng)中每一條可能的路徑?!?
麗莎松了一口氣,點(diǎn)點(diǎn)頭?!巴ㄟ^這些全面的測(cè)試,我們終于可以對(duì)我們的應(yīng)用程序的可靠性充滿信心了?!?
該團(tuán)隊(duì)學(xué)到了寶貴的教訓(xùn):FSM 不僅僅是理論工具,而且是軟件測(cè)試戰(zhàn)場(chǎng)上的強(qiáng)大盟友。
早期錯(cuò)誤檢測(cè)
另一個(gè)開發(fā)團(tuán)隊(duì)正在開發(fā)一款 VoIP 應(yīng)用。該應(yīng)用承諾通過互聯(lián)網(wǎng)實(shí)現(xiàn)清晰的語音通話,但開發(fā)過程卻令人沮喪不已。
“通話質(zhì)量一直在下降!”首席開發(fā)人員 Mary 愁眉苦臉地說。“前一分鐘音頻還很清晰,后一分鐘就變得一團(tuán)糟。”
項(xiàng)目經(jīng)理杰森壓力很大,捏了捏鼻梁?!懊看螠y(cè)試后我們都會(huì)修復(fù)錯(cuò)誤,但這些音頻問題就像一場(chǎng)打地鼠游戲?!?
新任 UI/UX 設(shè)計(jì)師 Anna 建議:“也許我們需要一種更結(jié)構(gòu)化的方法來直觀地展示我們的 VoIP 應(yīng)用應(yīng)該如何運(yùn)行。在編碼開始之前就暴露出潛在的故障?!?
馬克想起了他一年級(jí)計(jì)算機(jī)科學(xué)學(xué)位時(shí)學(xué)到的一個(gè)概念?!坝邢逘顟B(tài)機(jī) (FSM) 怎么樣?”
團(tuán)隊(duì)圍坐在白板旁,馬克畫了一張圖。FSM 描述了應(yīng)用的各種狀態(tài)(空閑、發(fā)起呼叫、已連接、通話中)以及觸發(fā)轉(zhuǎn)換的用戶操作(撥號(hào)、接聽、掛斷)。它還定義了每個(gè)狀態(tài)的預(yù)期輸出(鈴聲、語音連接、通話結(jié)束消息)。
“這太神奇了!”安娜驚呼道?!巴ㄟ^繪制流程,我們可以在邏輯中潛在的弱點(diǎn)導(dǎo)致音頻問題之前發(fā)現(xiàn)它們?!?
在接下來的幾天里,團(tuán)隊(duì)精心設(shè)計(jì)了 FSM。他們很早就發(fā)現(xiàn)了邏輯中的一個(gè)關(guān)鍵漏洞。最初的設(shè)計(jì)沒有考慮到不同的互聯(lián)網(wǎng)連接強(qiáng)度。這可以解釋 Mary 描述的不穩(wěn)定的通話質(zhì)量。
以 FSM 為指導(dǎo),網(wǎng)絡(luò)工程師 Alex 改進(jìn)了應(yīng)用程序適應(yīng)不同帶寬的能力。該應(yīng)用程序根據(jù)用戶的互聯(lián)網(wǎng)速度動(dòng)態(tài)調(diào)整音頻壓縮級(jí)別。這確保了即使在連接不穩(wěn)定的情況下也能獲得更流暢的通話體驗(yàn)。
FSM 揭示了另一個(gè)潛在問題:缺乏明確的“通話中斷”狀態(tài)。如果連接突然中斷且沒有任何通知,這可能會(huì)讓用戶感到困惑?;谶@一洞察,團(tuán)隊(duì)設(shè)計(jì)了一條由意外連接中斷觸發(fā)的信息豐富的“通話結(jié)束”消息。
到發(fā)布當(dāng)天,VoIP 應(yīng)用的表現(xiàn)已堪稱完美。FSM 幫助他們?cè)谠缙陔A段發(fā)現(xiàn)關(guān)鍵故障,從而防止用戶失望和潛在流失。
改善溝通
另一個(gè)開發(fā)團(tuán)隊(duì)正在開發(fā)一款移動(dòng)銀行應(yīng)用程序。它承諾提供最先進(jìn)的安全性和用戶友好的功能。然而,開發(fā)團(tuán)隊(duì)與利益相關(guān)者之間的溝通卻因誤解而變成了一場(chǎng)財(cái)務(wù)噩夢(mèng)。
“市場(chǎng)營(yíng)銷部門想要一個(gè)炫酷的登錄動(dòng)畫,”首席開發(fā)人員尼克嘆了口氣?!暗赡軙?huì)與雙因素身份驗(yàn)證過程相沖突?!?
項(xiàng)目經(jīng)理喬揉了揉太陽穴?!岸沂紫瘓?zhí)行官一直在問面部識(shí)別的問題,但目前的設(shè)計(jì)中還沒有這個(gè)功能。”
充滿熱情的實(shí)習(xí)生約翰插話說:“你考慮過使用有限狀態(tài)機(jī)(FSM)來建模我們的應(yīng)用程序嗎?”
John 解釋了 FSM 如何直觀地表示應(yīng)用程序的流程。它將顯示不同的狀態(tài)(空閑、登錄、帳戶選擇、交易確認(rèn)),用戶操作(輸入憑證、選擇帳戶、確認(rèn)轉(zhuǎn)賬)會(huì)觸發(fā)轉(zhuǎn)換。
“FSM 的優(yōu)點(diǎn)在于,”John 繼續(xù)說道,“它為所有參與者提供了清晰簡(jiǎn)潔的畫面。技術(shù)和非技術(shù)利益相關(guān)者可以輕松了解應(yīng)用程序的預(yù)期行為?!?
團(tuán)隊(duì)決定試一試。他們一起為該應(yīng)用繪制了一個(gè) FSM,詳細(xì)描述了用戶旅程的每一步。這包括雙因素身份驗(yàn)證過程及其與登錄動(dòng)畫的交互?,F(xiàn)在營(yíng)銷人員清楚地認(rèn)識(shí)到,華麗的動(dòng)畫可能會(huì)破壞安全協(xié)議。
FSM 成為了溝通的橋梁。Joe 將它介紹給了 CEO,CEO 很容易就理解了當(dāng)前設(shè)計(jì)階段面部識(shí)別集成的局限性。FSM 幫助確定了功能的優(yōu)先順序,并確保每個(gè)人都達(dá)成共識(shí)。
測(cè)試人員也受益匪淺。FSM 充當(dāng)了路線圖,引導(dǎo)他們了解各種用戶場(chǎng)景和潛在的 HYPERLINK "https://dzone.com/articles/russells-paradox-permissive-rules-and-contradictin" 。他們可以系統(tǒng)地測(cè)試每個(gè)狀態(tài)轉(zhuǎn)換并識(shí)別應(yīng)用程序行為中的不一致之處。
到發(fā)布時(shí),該應(yīng)用程序已完美運(yùn)行。FSM 促進(jìn)了清晰的溝通,從而打造出設(shè)計(jì)精良且安全的銀行應(yīng)用程序。利益相關(guān)者很高興,開發(fā)團(tuán)隊(duì)松了一口氣,而 John 憑借其 FSM 知識(shí)成為團(tuán)隊(duì)的寶貴財(cái)富。
團(tuán)隊(duì)的關(guān)鍵結(jié)論是:FSM 不僅僅適用于內(nèi)部開發(fā)。它們可以彌合溝通鴻溝,并確保整個(gè)軟件開發(fā)生命周期中技術(shù)和非技術(shù)利益相關(guān)者之間的順利協(xié)作。