iT邦幫忙

2026 iThome 鐵人賽

DAY 10
0
Build on Google AI

將考國際證照的應用程式變成開源系列 第 13

mock-exam.feature , notes.feature , payment-subscription.feature

  • 分享至 

  • xImage
  •  

mock-exam.feature
Feature: 完整模擬考試
身為準備認證考試的考生,
我希望能在限時情況下進行完整模擬考試,
以便評估我對實際考試的準備程度。

Background:
Given 使用者已登入
And 使用者導覽至模擬考試設定畫面

Scenario Outline: 設定自訂題目數量的模擬考試
When 使用者選擇題目數量為
And 開始模擬考試
Then 模擬考試恰好包含 題
Examples:
| count |
| 10 |
| 30 |
| 50 |
| 100 |

Scenario: 設定自訂時間限制的模擬考試
When 使用者將時間限制設定為 90 分鐘
And 開始模擬考試
Then 考試計時器初始化為 90 分鐘

Scenario: 選擇模擬考試的資料庫來源
When 使用者選擇「Supabase」作為模擬考試的資料來源
And 開始模擬考試
Then 考試題目專門從 Supabase 擷取

Scenario: 高題數的高級功能限制
Given 使用者具有「pending」角色 (免費用戶)
When 使用者嘗試選擇 100 題
Then 該選項被鎖定
And 顯示高級升級提示

Scenario: 開始帶有倒數計時器的模擬考試
When 使用者開始模擬考試
Then 顯示考試介面
And 倒數計時器開始從指定的時間限制倒數

Scenario: 模擬考試期間作答
Given 模擬考試進行中
When 使用者為目前題目選取選項
Then 該選項記錄在本地
But 不提供即時回饋 (正確/錯誤)

Scenario: 計時器到期自動提交
Given 模擬考試進行中
And 計時器剩餘 1 秒
When 計時器歸零
Then 考試自動提交
And 使用者被引導至成績報告畫面

Scenario: 計時器到期前手動提交
Given 模擬考試進行中
When 使用者點擊「提交考試」按鈕
And 在對話方塊中確認提交
Then 考試提早提交
And 使用者被引導至成績報告畫面

Scenario: 產生詳細分析成績報告
Given 剛提交模擬考試
Then 產生成績報告
And 顯示總分、通過狀態與花費時間
And 依考試主題顯示表現分析

Scenario: 模擬考試後檢閱錯誤答案
Given 使用者正在檢視成績報告
When 使用者點擊「檢閱錯誤答案」
Then 僅向使用者顯示其答錯的題目
And 正確答案與解析現在變為可見

Scenario: 模擬考試歷史紀錄追蹤
Given 已提交模擬考試
When 使用者導覽至考試歷史紀錄畫面
Then 列出最近的模擬考試及其日期、分數與持續時間

Scenario: 在模擬考試中導覽題目
Given 模擬考試進行中
When 使用者在導覽網格中點擊第 5 題
Then 立即顯示第 5 題

notes.feature
Feature: 學習筆記
學習筆記功能允許使用者檢閱補充學習材料,
閱讀 Markdown 格式的文件,並儲存 AI 家教解析以供日後參考。

Background:
Given 我以「viewer」身分登入
And 我導覽至「學習筆記」區塊

Scenario: 從 GitHub 儲存庫檢視筆記清單
Given 應用程式設定為從遠端儲存庫擷取筆記
When 我開啟筆記區塊
Then 應用程式應從 GitHub 擷取索引
And 顯示可用的遠端 markdown 筆記清單

Scenario: 從本地資產檢視筆記清單
Given 裝置處於離線狀態
When 我開啟筆記區塊
Then 應用程式應回退至綁定的本地資產
And 顯示離線 markdown 筆記清單

Scenario: 在 Markdown 閱讀器中開啟筆記
When 我點擊標題為「子網路劃分基礎」的筆記
Then 應用程式應轉換至 Markdown 閱讀器畫面
And 顯示「子網路劃分基礎」檔案的內容

Scenario: Markdown 算繪語法高亮顯示
Given 我開啟包含程式碼區塊的筆記
When Markdown 閱讀器算繪內容
Then 程式碼區塊應正確設定樣式
And 語法高亮應套用於程式碼片段

Scenario: 將 AI 家教聊天匯出為學習筆記
Given 我正在檢視題目並與 AI 家教聊天
When 我點擊 AI 聊天中的「儲存至筆記」按鈕
Then 聊天逐字稿應格式化為 markdown
And 儲存至本地「已儲存筆記」集合
And 應出現確認提示

Scenario: 從筆記導覽回考試
Given 我直接從考試題目上下文中開啟筆記
When 我在 Markdown 閱讀器中點擊「返回」按鈕
Then 我應返回至先前正在檢視的題目
And 我的考試進度狀態應被保留

payment-subscription.feature
Feature: 付款與訂閱管理
身為使用者,
我想購買高級訂閱並管理我的帳單,
以便解鎖高級功能、移除廣告與同步資料。

Background:
Given 使用者已登入
And 使用者導覽至高級升級畫面

Scenario: 檢視包含功能比較的訂閱方案
When 使用者開啟高級升級畫面
Then 顯示可用訂閱方案清單
And 功能比較表顯示免費與高級階層間的差異

Scenario: 透過 RevenueCat 購買 1 個月訂閱
Given 啟用中的付款提供者為 RevenueCat
When 使用者選擇「1 個月高級」方案
And 透過原生應用程式商店對話方塊完成購買
Then 記錄交易
And 使用者的角色升級為「viewer」

Scenario: 透過 RevenueCat 購買 3 個月訂閱
Given 啟用中的付款提供者為 RevenueCat
When 使用者選擇「3 個月高級」方案
And 成功完成購買
Then 訂閱到期日延長 3 個月
And 解鎖高級功能

Scenario: 透過原生 Google Play 結帳購買
Given 啟用中的付款提供者設定為原生 Google Play 結帳
When 使用者啟動購買
Then 直接調用 Google Play 結帳流程繞過 RevenueCat
And 成功購買會更新使用者的訂閱狀態

Scenario: 成功購買升級角色為 viewer
Given 使用者具有「pending」角色
When 使用者成功完成任何高級訂閱購買
Then 資料庫中使用者的角色變更為「viewer」

Scenario: 成功購買移除廣告
Given 使用者為免費帳號且「showTestAds」為 true
When 使用者完成高級購買
Then 「showTestAds」旗標設為 false
And 應用程式不再顯示橫幅與獎勵廣告

Scenario: 在新裝置上恢復先前購買
Given 具備有效訂閱的使用者在新裝置安裝應用程式
When 使用者點擊「恢復購買」
Then 應用程式向商店查詢有效的收據
And 在新裝置恢復高級狀態

Scenario: 訂閱到期降級角色
Given 使用者具有「viewer」角色與過期的訂閱日期
When 應用程式在啟動時驗證訂閱狀態
Then 訂閱標記為過期
And 使用者的角色自動降級為「pending」

Scenario: 管理員切換付款提供者
Given 使用者具有「admin」角色
When 管理員導覽至設定
And 將付款提供者從「RevenueCat」切換為「原生」
Then 之後的購買將路由透過原生結帳實作

Scenario: 檢視個人交易紀錄
When 使用者導覽至帳號設定
And 點擊「交易紀錄」
Then 顯示過去購買的清單包含日期、金額與狀態

Scenario: 管理員檢視交易報告
Given 使用者具有「admin」角色
When 管理員導覽至管理員儀表板
And 開啟交易報告檢視
Then 顯示平台上所有使用者交易清單

Scenario: Web 平台使用替代付款服務
Given 使用者透過網頁瀏覽器存取應用程式
When 使用者嘗試購買訂閱
Then 調用相容於 Web 的支付閘道 (如 Stripe) 而非行動商店結帳


上一篇
Cloud Spanner - 載入資料並執行備份
下一篇
Spanner - 定義模式和理解查詢計劃
系列文
將考國際證照的應用程式變成開源28
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言