iT邦幫忙

2024 iThome 鐵人賽

DAY 18
1
Software Development

測試工程師的上線時間:從分析到實戰的刻意練習系列 第 18

Day 18:情緒左右球技?用狀態機解析隊友情緒波動的測試案例!

  • 分享至 

  • xImage
  •  

前言

「鐵人賽差點中斷,因為昨天測試『老婆愛生氣』的題目被她發現,結果她真的很生氣!手差點被打斷,今天差點寫不出來。」(誤)

在日常生活中,不論是家庭還是職場、運動場上,情緒波動都是不可避免的。今天,我們將挑戰設計一個有趣的題目,主題是「當隊友帶著情緒打球」時,如何設計測試案例。我們將使用 狀態機(State Machine) 來模擬不同情緒狀態,並分析這些狀態如何影響隊友的表現。這樣的設計可以幫助我們預測情緒變化,並設計應對策略。


狀態機(State Machine)是什麼

狀態機(State Machine)是一種常用來描述系統中不同狀態之間轉換的模型。簡單來說,它就像是遊戲中的「進入戰鬥模式」或「休息模式」,當某些條件滿足時,角色會從一個狀態進入另一個狀態。狀態機的應用廣泛,不只用於程式設計,還可以用來模擬各種現實生活中的場景,像今天的籃球場情緒波動測試案例。

狀態機的組成要素:

  1. 狀態(State):表示系統在某個時間點的狀態或情況。
  2. 事件(Event):系統接收到的外部輸入或事件,驅動狀態的改變。
  3. 狀態轉換(Transition):當某個事件發生時,系統如何從一個狀態轉換到另一個狀態。
  4. 初始狀態(Initial State):系統啟動時的預設狀態。
  5. 終止狀態(Final State):代表系統流程結束時狀態(不一定每個系統都有終止狀態)。

設計狀態機測試案例的步驟:

  1. 定義系統的所有狀態:確定系統可能處於的所有狀態
  2. 識別所有觸發事件:定義哪些事件會引起狀態改變(如用戶操作、系統輸入)。
  3. 繪製狀態轉換圖:使用圖示來展示不同狀態之間的轉換關係,這有助於梳理測試路徑。
  4. 設計測試案例:根據狀態轉換規則,設計覆蓋每個狀態和轉換的測試案例。每個測試案例應包括:
    • 初始狀態
    • 觸發的事件
    • 預期的狀態和行為
  5. 考慮邊界情況和異常狀況:測試系統在非正常或極端情況下的行為,確保系統穩健性。

現在我們知道了狀態機的基本概念,接下來我們就來看看如何利用這個工具來模擬隊友情緒的起伏,並為這些情緒波動設計測試案例。

挑戰目標

在籃球比賽中,隊友的情緒波動會影響整個比賽過程。我們要設計一個狀態機來模擬隊友的情緒狀態,以及當發生不同事件時,情緒狀態的轉換。這樣的設計可以幫助我們理解情緒如何影響隊友的表現,並設計應對策略。

狀態機模型概述:

我們將定義幾個隊友的情緒狀態,例如「冷靜」、「焦躁」、「憤怒」、「信心不足」。當不同事件(例如:投籃命中、失誤、裁判判罰不公等)發生時,隊友的情緒會發生轉變。我們可以根據這些轉變來設計不同的測試案例。

我們定義以下幾個情緒狀態:

  • 平靜:隊友保持理智,能夠穩定地表現。
  • 沮喪:由於失誤或糟糕的表現,隊友情緒低落,自信心下降。
  • 憤怒:隊友對對手的優秀表現感到壓力,可能會失去理智,表現變差。
  • 興奮:因連續得分或精彩表現,隊友進入亢奮狀態,表現提升。

事件(觸發條件):

  • 投籃失誤:隊友失去信心,情緒波動。
  • 失誤過多:隊友進入沮喪狀態。
  • 對手表現優異:隊友受到壓力,情緒轉為憤怒。
  • 連續得分:隊友變得興奮,表現更加突出。
  • 冷靜下來:當隊友情緒調整回穩定狀態後,回到平靜。
  • 對手反擊強烈:當對手強烈反擊,隊友情緒由興奮轉為憤怒。
  • 表現進一步惡化:在沮喪狀態下,如果表現不佳,會轉入憤怒狀態。

狀態機圖解:

  • 狀態:冷靜 -> 焦躁 -> 憤怒 -> 信心不足 -> 冷靜
  • 觸發事件:失誤、判罰、鼓勵、得分、批評

狀態機圖

stateDiagram
    [*] --> 平靜
    平靜 --> 沮喪 : 失誤過多
    平靜 --> 憤怒 : 對手表現優異
    平靜 --> 興奮 : 連續得分
    沮喪 --> 平靜 : 冷静下來
    憤怒 --> 平靜 : 冷静下來
    興奮 --> 平靜 : 表現穩定
    憤怒 --> 沮喪 : 表現持續不佳
    沮喪 --> 憤怒 : 表現進一步惡化
    興奮 --> 憤怒 : 對手反擊強烈

https://ithelp.ithome.com.tw/upload/images/20241002/20169442mZa9mb2BK3.png

測試案例設計:隊友情緒波動

根據上面的狀態機,我們可以為每個狀態轉換設計相應的測試案例。

測試案例名稱 初始狀態 觸發事件 預期結果
案例 1:平靜轉沮喪狀態 平靜 連續失誤 隊友進入沮喪狀態,自信心受挫
案例 2:平靜轉憤怒狀態 平靜 對手表現優異 隊友情緒失控,進入憤怒狀態,決策失誤增多
案例 3:憤怒轉平靜狀態 憤怒 隊友冷靜下來 隊友回到平靜狀態,表現逐漸恢復穩定
案例 4:興奮轉憤怒狀態 興奮 對手強烈反擊 隊友從興奮轉為憤怒,情緒受到打擊
案例 5:沮喪轉憤怒狀態 沮喪 表現進一步惡化 隊友情緒惡化,進入憤怒狀態,表現更加不穩定

測試案例說明:

  • 平靜 → 沮喪:如果隊友在比賽中頻繁失誤,這會導致其情緒從「平靜」變成「沮喪」。測試案例需要驗證在此狀況下,隊友的表現是否有所下降,並且情緒是否轉換為「沮喪」。
  • 平靜 → 憤怒:當對手表現極佳且壓制隊友時,會引發隊友的挫敗感,進而讓其進入「憤怒」狀態。測試案例需檢查在此情況下,隊友的情緒轉換是否正確。
  • 興奮 → 憤怒:當隊友在「興奮」狀態下進行比賽,但突然遇到對手強烈反擊時,情緒會急轉直下變為「憤怒」。測試案例要模擬對手反擊的效果,檢查情緒轉換是否合乎邏輯。

結論

透過狀態機的設計,我們模擬了隊友在不同情緒狀態下的變化,這不僅幫助我們預測比賽中的情緒波動,也讓我們能夠設計出應對策略。這種方法在測試中同樣適用,尤其是當面對複雜狀態和多事件觸發時,狀態機能夠幫助我們清晰地理解系統行為。

不過,就像我昨天的教訓一樣,這些測試只能幫助我們理解部分情境。畢竟,隊友的情緒不像程式邏輯那麼可控 (老婆也是),有時候還是要依靠臨場反應和團隊合作來應對。


上一篇
Day 17:老婆快樂,人生就快樂
下一篇
Day 19:總結測試分析的進化:從建模到啟發式策略的實戰運用
系列文
測試工程師的上線時間:從分析到實戰的刻意練習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言