---
# System prepended metadata

title: 報告用測試書
tags: [document]

---

設計書：https://hackmd.io/Iwxu2qzWSFiB47NaHk6aLQ
參考資料：**<軟體測試之道>** Chapter 4、5、6、11

**測試細節視開發情況更動**

:::success
:notebook: **Syllabus**
[ToC]
:::

---------

# 測試項目
* https://docs.google.com/document/d/1KQj99Z4PZ3VMFshtZhKJX03-j4awKOEh/edit?usp=sharing&ouid=116454027251455459489&rtpof=true&sd=true



||#|**操作**|**目的與說明**|**預期結果**|
| :- | :- | :- | :- | :- |
|登入畫面|||||
|||安裝app: Fate of thrones: Kingdoms Collide|測試安裝檔能正確在裝置上運作，並成功安裝遊戲。|<p>1\.確認正確安裝app</p><p>2\.確認icon顯示正確</p>|
|||點選app icon|正常進入遊戲時，檢查是否是最新版本。|<p>1\.顯示登入畫面</p><p>2\.確認版本編號是最新版</p>|
|||<p>輸入錯誤帳號密碼:</p><p>1\.錯誤帳號、密碼</p><p>2\.特殊符號</p><p>3\.帳號密碼空白</p><p>4\.SQL injection (’ or 1=1)</p>|輸入錯誤或不合法的帳號、密碼，應顯示錯誤訊息，且此錯誤訊息不應包含更詳細內容。|1\.顯示登入錯誤訊息|
|||<p>修改密碼:</p><p>1\.輸入錯誤username或email</p><p>2\.SQL injection</p><p>3\.輸入正確username和email</p><p></p>|應檢查輸入是否正確且合法，若非則應顯示錯誤訊息。當輸入正確且合法時，確認資料庫之內容正常更新。|<p>1\.顯示錯誤訊息</p><p>2\.顯示錯誤訊息</p><p>3\.發送修改密碼郵件，使用者修改完畢後，資料庫確實更改成新密碼</p><p></p>|
|||輸入正確登入帳號密碼|輸入正確帳密，資料庫回傳正確結果，並可代出所需之資料。（顯示之資料視開發結果而定）|<p>1\.登入成功，進入主畫面</p><p>2\.主畫面帶出正確使用者資料（顯示之資料視開發結果而定）</p>|
|||沒有網路連線|嘗試連線失敗時，顯示提示訊息。並應設有按鍵可重新連線。|顯示無網路連線訊息|
|數值驗證|||||
|||<p>驗證排位計算:（須修改）</p><p>1\.勝場數測試集{[0,2),[2,4),[4,7),[7,10),[10,12),[12,15]}</p>|驗證排位計算（實際會以經驗值判斷，設計書以勝場數估計），實際排位計算方式視開發結果而定。|1\.排位依序顯示為 {1,2,3,4,5,6,7}|
|||<p>排位場經驗值計算:</p><p>1\.勝敗場次測試集（1:勝場, 0:敗場）{(1),(0),(1,1,1,1,0),(0,0,0,1)}</p>|<p>驗證經驗值計算程式之正確性，經驗值目前以比例表示。</p><p>勝場+1，敗場-0.5。</p><p>Bonus:</p><p>連勝n場: +0.3n</p><p>敵人分數與自己分數差值：±0.3</p>|1\.經驗值計算依序為{+1,-0.5,+6.2,-0.5}|
|||<p>一般場經驗值計算:</p><p>1\.勝敗場次測試集（1:勝場, 0:敗場）{(1),(0),(1,1,1,1,0),(0,0,0,1)}</p>|<p>驗證經驗值計算程式之正確性，經驗值目前以比例表示。</p><p>勝場+1，敗場+0.8。</p><p>連勝n場：+0.3 \* n</p>|1\.經驗值計算依序為{+1,+0.8,+6.6,+3.4}|
|||<p>PVE出牌機制</p><p>1\. 自動化測試（想辦法）</p>||1\. 每張牌出牌機率需很接近(+-1%)|
|||<p>回合紀錄</p><p>1\. 遊玩遊戲五個回合</p>|檢驗回合資訊紀錄正確（詳細紀錄內容視開發結果而定）。|1\. 玩家無法在遊戲進行時查看各回合紀錄。程式中正確記錄本局為第五回合。|
|||<p>回合紀錄</p><p>2\. 遊玩一整局遊戲</p><p>3\. 遊戲結束</p>|正常遊戲結束後，畫面顯示各回合紀錄。|<p>2\. 玩家無法在遊戲進行時查看各回合紀錄。程式中正確記錄回合數據。</p><p>3\. 結束畫面顯示各回合紀錄。</p><p></p>|
|||<p>無課金玩家卡池機率</p><p>1\. 自動化測試</p>||<p>1\. 統計機率需很接近(+-1%)以下比例（視開發結果而定）</p><p>coins: 70%, skill: 15%, card\_style: 15%</p><p></p>|
|||<p>課金玩家卡池機率</p><p>1\. 自動化測試</p>||<p>1\. 統計機率需很接近(+-1%)以下比例（視開發結果而定）</p><p>coins: 55.5%, skill: 22.5%, card\_style: 22.5%</p><p></p>|
|||<p>背包賣出系統</p><p>1\. 合法賣出背包物品</p><p></p>|驗證物品與金幣之計算是否符合設計。（開發結果而定）|1\. 賣出物品與兌換之金幣價值一致（視開發結果而定）|
|||<p>玩家技能升級</p><p>1\. 合法升級技能</p>|<p>驗證升級所需消耗素材在資料庫正確扣除，且升級為新素材。</p><p>無法合併之牌卡應顯示無法合併之訊息。可以升級之卡牌依預期合併。</p><p>此處驗證集待開發完成再補上。</p>|<p>1\. 消耗卡牌數及因升級產生之卡牌數正確儲存在資料庫（視開發結果而定）</p><p>2\. 可以合併的牌（有數值），正確合併</p><p>3\. 不能合併的牌，不能合併。</p>|
|||<p>玩家統計數據</p><p>1\. 按（什麼按鍵？）</p>|遊戲某處提供玩家過往統計紀錄。唯應放之處及預計列出數據仍未有共識，因此待開發完成再補齊此測試集。|1\. 正確列出資料庫之資料。（會顯示什麼數據？）|
|功能驗證||<p>升級獎勵驗證:</p><p>排位場</p><p>1\.排位由1升級至2</p><p>一般場</p><p>2\.排位由1升級至2</p>|當排位升級時，系統發放獎勵。應驗證發放獎勵是否符合預期。（發放獎勵視開發結果而定）|<p>1\.技能或服裝卡池解鎖（視開發結果而定）</p><p>且技能升級突破極限(+1)</p><p>2\.金幣發送、特定升等贈送物品</p><p></p>|
|||<p>1\.新手玩家進入勝率入口</p><p>2\.非新手玩家{(玩家經驗值:10,勝率:70%),(玩家經驗值:9,勝率:10%)}進入勝率入口</p><p></p>|<p>此案例測試新手、非新手玩家進入勝率入口之配對模式，是否依下列模式配對（需驗證配對分數之計算，視開發結果而定）：</p><p>若玩家為新手玩家 ( 遊戲總場數 <= 2 )，則保證配對新手玩家或簡易版電腦玩家</p><p>否則，玩家進入房間前會計算一個配對分數，並攜帶該分數進去，分數由玩家等級、勝率進行計算，最終配對分數較為接近的玩家，若指定時間配對不到玩家，房間會自行配對電腦玩家</p>|<p>1\.動畫顯示正常。配對新手玩家或(10秒內仍未配對)簡易版電腦玩家</p><p>2\.動畫顯示正常。配對到同程度（視計算方式而定）或(10秒內仍未配對)電腦玩家</p><p></p>|
|||1\. 玩家{(段位:1, 經驗值:4, 連勝場數: 3), (段位:5, 經驗值:40, 連勝場數: 2)}進入排位入口|<p>此案例測試新手、非新手玩家進入排位入口之配對模式，是否依下列模式配對（需驗證配對分數之計算，視開發結果而定）：</p><p>玩家進入房間前會計算一個配對分數，並攜帶該分數進去，分數由段位、玩家等級、連勝場數進行計算，最終配對分數較為接近的玩家，若指定時間內配對不到玩家，段位12會直接配對電腦玩家，而其他段位會繼續等待，除非玩家自行離開。</p>|1\. 配對到程度接近的玩家{(程度相當玩家或電腦玩家), (程度相當玩家)}（視開發結果而定）|
|||<p>友誼賽房間代碼</p><p>1\. 兩玩家使用相同房間代碼進入</p><p></p>|驗證房間代碼生成機制（不會生成重複值）以及配對機制（同代碼進入相同房間）。|1\. 進入相同房間，開始遊戲|
|||<p>友誼賽房間代碼</p><p>2\. 一方玩家輸入錯誤房間代碼</p>|驗證房間代碼生成機制（不會生成重複值）以及配對機制（同代碼進入相同房間）。|2\. 顯示房間不存在|
|||<p>友誼賽房間代碼</p><p>3\. 三人以上輸入同一個房間代碼</p>|驗證房間配對機制（同代碼進入相同房間），且至多進入兩名玩家，其餘玩家應顯示錯誤訊息。|3\. 前兩個玩家輸入房間代碼可進入，在後玩家顯示「房間已滿」訊息。|
|||<p>友誼賽房間代碼</p><p>4\. 一方輸入房間代碼，無另一方加入該房間</p>|驗證房間配對機制，房間存續直到所有玩家退出。|4\. 房間存續到進入房間那方玩家退出為止。|
|||<p>PVE機制</p><p>1\. 電腦玩家強度等級</p>|玩家強度之計算視開發結果而定。需驗證玩家強度越強，電腦玩家之技能越強，才得以平衡遊戲。|1\. 強度越強，攜帶的技能越強（視開發結果而定）|
|||<p>遊戲進行流程：選牌階段</p><p>1\. 雙方10秒內選牌</p>|驗證選牌階段於10秒內結束，直接進入揭牌階段，而非等待至完整10秒。|1\. 選牌階段提早結束，牌卡可正常丟出中央，並進入揭牌階段|
|||2\. 等候超過10秒選牌|本案例測試正常遊玩情況：玩家選牌時間超過10秒，自動丟出最右方牌卡，且進入揭牌階段。|2\. 電腦自動丟出玩家手中最右方牌卡，並進入揭牌階段|
|||<p>3\. 網路斷線</p><p>4\. 玩家持續斷線，直至遊戲結束</p>|當網路斷線，遊戲仍應繼續進行。若選牌階段結束，斷線方仍未恢復連線，則自動替玩家出牌。由電腦接管斷線方玩家，直到遊戲結束。|<p>3\. 超過10秒，網路斷線玩家自動出牌。</p><p>4\. 電腦玩家接管斷線玩家，直到遊戲結束。</p>|
|||4\. 網路斷線，10秒內重新連線|當網路斷線，遊戲仍應繼續進行。若選牌階段結束，斷線方仍未恢復連線，則自動替玩家出牌。當玩家恢復連線時，可切換回玩家控制模式。|5\. 玩家恢復連線後，可以選牌。|
|||<p>遊戲進行流程：揭牌階段</p><p>1\. 此時再次選牌丟出揭牌區（非選牌階段出牌）</p>|測試在非選牌階段，無法丟出牌卡。|1\. 出牌失敗，返回自己的卡牌中。卡牌強弱判斷結果正確。|
|||<p>遊戲進行流程：結束動畫</p><p>1\. 等候超過15秒</p>|<p>當遊戲結束時，測試結束畫面（動畫）正常顯示，且各項數值（視開發結果而定）正確儲存在資料庫。</p><p>15秒後若未有任何操作，則自動返回主畫面。</p>|1\. 結束動畫正常顯示。遊戲勝負、經驗值、金幣獲取量數值正確。寫入資料庫數值正確。15秒後自動跳轉回主畫面。|
|||<p>平民卡技能</p><p>1\. 使用「簡易剔除」平民卡，且該回合揭牌結果為平手</p><p>2\. 使用「簡易剔除」平民卡，且該回合揭牌結果為使用者勝利</p><p>3\. 使用「全部重置」平民卡，且該回合揭牌結果為平手</p><p>4\. 使用「全部重置」平民卡，且該回合揭牌結果為對手勝利</p><p>5\. 使用「不敗的勇者」平民卡，且該回合揭牌結果為平手</p><p>6\. 使用「爆發式成長」平民卡，且該回合揭牌結果為平手，且累積2回合平手。</p><p>7\. 使用「爆發式成長」平民卡，且該回合揭牌結果為使用者勝利</p><p>8\. 使用「大革命」平民卡，且該回合揭牌結果為平手</p><p>9\. 使用「大革命」平民卡，且該回合揭牌結果為對手勝利</p><p>10\. 使用「特洛伊木馬」平民卡</p>|此案例測試各卡牌技能應以符合設計之方式，於特定情況下觸發技能。|<p>1\. 從對手手排中選出一張卡牌移出遊戲。遊戲繼續進行下一回合。</p><p>2\. 不觸發技能。遊戲繼續進行下一回合。</p><p>3\. 對手贏到的牌全部放到平手區。遊戲繼續進行下一回合。</p><p>4\. 不觸發技能。遊戲繼續進行下一回合。</p><p>5\. 使用者所出的牌贏過對手所出的牌。中央牌卡皆放到使用者方。若遊戲尚未結束，則繼續進行下一回合。</p><p>6\. 增加使用者2張自身的贏取卡。遊戲繼續進行下一回合。</p><p>7\. 不觸發技能。遊戲繼續進行下一回合。</p><p>8\. 此回合後，所有卡牌優劣反轉，遊戲繼續進行下一回合。</p><p>9\. 不觸發技能。遊戲繼續進行下一回合。</p><p>10\. 當輸給對手之王家或騎士時，對手玩家的一半贏取卡牌（半張自動進位為一張）加到自身贏取卡牌當中</p>|
|||<p>玩家技能</p><p>\* 縮短對手選牌時間5秒  (1回合)  (可升級)</p><p>\* 一張平民變騎士  (整場)</p><p>\* 一張平民變暗殺者  (整場)</p><p>\* 禁止對方使用玩家技能  (1回合)  (可升級)</p><p>\* 平民卡效果無效  (1回合)  (可升級)</p><p>\* 獲勝金幣總數\*1.5 (整場)  (可升級)</p><p>\* 看對手剩下的手牌  (1回合)  (可升級)</p><p>\* 限制對手二選一出牌  (1回合)  (可升級)</p><p>\* 對手贏牌區張數-1 (整場)</p><p>\* 己方贏牌區+1 (整場)</p>|此案例測試各技能應以符合設計之方式，於特定情況下觸發技能。|<p>檢驗以下是向是否達成／正常顯示</p><p>1\. 遊戲中顯示技能狀態</p><p>可使用：達成技能條件</p><p>已使用：技能已使用過</p><p>無法使用：為達成技能使用條件、被敵方玩家干擾</p><p>2\. 第一次點擊技能，顯示技能點擊特效。再次點擊技能，若為可使用狀態，則發動該技能。</p><p>3\. 點擊無法使用技能，檢驗技能無法發動（顯示無法發動提示於畫面上）。</p><p>4\. 長按技能，顯示技能之詳細敘述。</p><p>5\. 技能發動時，動畫正確顯示。</p><p></p>|
|||<p>遊戲結束判斷</p><p>1\. 自身手牌耗盡，對手贏取較多牌卡</p><p>2\. 自身手牌耗盡，自身贏取較多牌卡</p><p>3\. 對手手牌耗盡，對手贏取較多牌卡</p><p>4\. 對手手牌耗盡，自身贏取較多牌卡</p><p>5\. 自身先贏得10張牌卡</p><p>6\. 對手先贏得10張牌卡</p><p>7\. 自身手牌耗盡，兩方贏取牌卡數相同</p><p>8\. 對手手牌耗盡，兩方贏取牌卡數相同</p><p></p>|此案例測試程式能正確判斷遊戲結束之條件。|<p>1\. 對手勝利</p><p>2\. 自身勝利</p><p>3\. 對手勝利</p><p>4\. 自身勝利</p><p>5\. 自身勝利</p><p>6\. 對手勝利</p><p>7\. 平手</p><p>8\. 平手</p><p></p>|
|註冊||<p>玩家註冊</p><p>1\. 輸入錯誤格式email (abc1234mail.com)</p><p>2\. 輸入不合法名字(NULL, or, and, ‘, “, 特殊符號)</p><p>3\. 輸入不合法密碼(長度不符)</p><p>4\. 密碼空白</p><p>5\. 正確輸入user email, user name, passwd</p><p>6\. 正確輸入user email, user name, passwd，但輸入錯誤驗證碼</p><p></p>|此案例測試新使用者註冊時填入之資料，是否合法及符合預期。若是非法輸入，則需顯示錯誤訊息。|<p>1\. 顯示錯誤訊息。</p><p>2\. 顯示錯誤訊息。</p><p>3\. 顯示錯誤訊息。</p><p>4\. 顯示錯誤訊息。</p><p>5\. 所有資料皆加密儲存於資料庫。顯示發送驗證碼訊息。於設定之電子郵箱收取驗證碼，並輸入正確驗證碼。註冊成功。</p><p>6\. 所有資料皆加密儲存於資料庫。顯示發送驗證碼訊息。於設定之電子郵箱收取驗證碼，並輸入錯誤驗證碼。顯示驗證碼錯誤訊息。</p><p></p>|
|抽卡系統||1\. 執行抽卡時，網路斷線|當玩家執行抽卡時，抽卡流程應在server端執行，因此不受玩家local端連線影響。當玩家斷線，下一次恢復連線後，應正確顯示前次抽卡之結果。|1\. server正常執行抽卡流程，並正確儲存數據。|
|||1\. 抽卡所需金幣不足，執行抽卡功能|當抽卡所需素材不夠時，無法執行抽卡，且應顯示相關訊息。|1\. 顯示金幣不足提示訊息|
|||1\. 金幣足夠，執行抽卡流程|驗證抽卡所需素材正確扣除，且抽卡流程於server端執行。|1\. 確認抽卡過程建立在server端。動畫正常顯示。|
|背包賣出系統||<p>1\. 選取欲賣出物品</p><p>2\. 賣出物品</p>|驗證物品價值計算符合預期（視開發結果而定），且售出時正確修改資料庫數據。|<p>1\. 正確顯示該物品價值，及可供選取數量。</p><p>2\. 顯示總價值，並確認兌換畫面。(帳號, 物品, 數量)正確儲存在資料庫。並在畫面顯示兌換的金幣總數。</p>|
|||<p>1\. 選取欲賣出物品，並選擇超過自身擁有之數量</p><p>2\. 賣出物品</p>|當預售出物品所需素材不足時，需顯示相關訊息，且無法賣出物品。程式亦須根據資料庫之數據判斷是否能夠賣出。|<p>1\. 無法選擇超過自身擁有之數量。修改local端數值，強制插入資料庫。</p><p>2\. 資料庫驗證失敗，兌換失敗。顯示錯誤訊息。</p>|
|更換卡牌造型||<p>1\. 選擇欲更換卡牌之造型（玩家無該卡牌）</p><p>2\. local端強制插入資料庫</p>|更換卡牌造型時，需在server端驗證該玩家是否擁有造型。若擁有，則應正確更換造型。|<p>1\. Local端正確判斷玩家無該造型及卡牌，並顯示錯誤訊息。</p><p>2\. Server檢查無卡牌，無法更改造型，顯示錯誤訊息。</p>|
|||<p>1\. 選擇欲更換卡牌之造型（玩家有該卡牌）</p><p>2\. 點選更換造型</p>|更換卡牌造型時，需在server端驗證該玩家是否擁有造型。若擁有，則應正確更換造型。|<p>1\. Local和server判斷玩家有該造型及卡牌。</p><p>2\. 更換造型成功。顯示更換後之造型。</p>|
|更換玩家技能||<p>1\. 選擇欲更換之技能（玩家無該技能）</p><p>2\. local端強制插入資料庫</p>|更換技能時，需在server端驗證該玩家是否擁有技能。若擁有，則應正確更換技能。|<p>1\. Local端正確判斷玩家無該技能，並顯示錯誤訊息。</p><p>2\. Server檢查無該技能，無法更改技能，顯示錯誤訊息。</p>|
|||<p>1\. 選擇欲更換之技能（玩家有該技能）</p><p>2\. 點選更換技能</p>|更換技能時，需在server端驗證該玩家是否擁有技能。若擁有，則應正確更換技能。|<p>1\. Local和server判斷玩家有該技能。</p><p>2\. 更換技能成功。顯示更換後之技能。</p>|
|玩家技能升級||<p>1\. 選擇欲升級之卡牌（玩家無該卡牌）</p><p>2\. local端強制插入資料庫</p>|<p>驗證升級所需消耗素材在資料庫正確扣除，且升級為新素材。</p><p>無法合併之牌卡應顯示無法合併之訊息。可以升級之卡牌依預期合併。</p>|<p>1\. Local端正確判斷玩家無該卡牌，並顯示錯誤訊息。</p><p>2\. Server檢查無該卡牌，無法升級技能，顯示錯誤訊息。</p>|
|||<p>1\. 選擇欲升級之卡牌（玩家有該卡牌，但升級條件不滿足）</p><p>2\. local端強制插入資料庫</p>|<p>驗證升級所需消耗素材在資料庫正確扣除，且升級為新素材。</p><p>無法合併之牌卡應顯示無法合併之訊息。可以升級之卡牌依預期合併。</p>|<p>1\. Local端正確判斷玩家不滿足升級條件，並顯示錯誤訊息。</p><p>2\. Server檢查不滿足升級條件，無法升級技能，顯示錯誤訊息。</p>|
|||<p>1\. 選擇欲升級之卡牌（玩家有該卡牌，且滿足升級條件）</p><p>2\. 點選升級按鍵</p>|<p>驗證升級所需消耗素材在資料庫正確扣除，且升級為新素材。</p><p>無法合併之牌卡應顯示無法合併之訊息。可以升級之卡牌依預期合併。</p>|<p>1\. Local和server判斷玩家有該卡牌且滿足升級條件。</p><p>2\. 升級動畫正常顯示。所消耗卡牌正確扣除在玩家背包。因升級而新增之卡牌正確顯示在背包中。</p>|
|玩家成就系統||<p>1\. 有功能之成就（如：新手玩家）</p><p>2\. 無功能之成就</p>|<p>檢查儲存於資料庫之成就是否正確列出。</p><p>擁有「新手玩家成就」之玩家，於配對時應採新手配對模式。</p>|<p>1\. 配對時是否是新手配對模式</p><p>2\. 正確顯示與資料庫一致之成就。</p>|
|用戶設定儲存系統||<p>1\. 更改合法名字</p><p>2\. 更改不合法名字(NULL, ‘, 特殊符號)</p><p>3\. 更改背景音樂</p><p>4\. 調整音量大聲</p><p>5\. 調整音量小聲</p><p>6\. 更改背景主題</p>|測試調整系統功能符合預期。且能夠正確儲存，於下一次重啟遊戲時仍能載入使用者之設定。|<p>1\. 更改成功</p><p>2\. 無法更改，顯示錯誤訊息。</p><p>3\. 更改成功</p><p>4\. 調整成功</p><p>5\. 調整成功</p><p>6\. 更改成功</p>|
|||1\. 重啟遊戲|測試調整系統功能符合預期。且能夠正確儲存，於下一次重啟遊戲時仍能載入使用者之設定。|1\. 仍保有所更改之設定|
|Server||<p>1\. 使用機器人大量登入遊戲並遊玩</p><p>2\. 超過最多容納人數進行遊玩</p>|<p>1\. 測試伺服器最多容納人數</p><p></p>|得到最多容納人數|
|||伺服器出現問題 (待補充)||遊戲跳出警告並鎖起來|
|||資料庫滿到80%||伺服器顯示警告訊息給開發團隊|
|||多組玩家同時進行遊戲|測試勝負判斷是否正確|勝負判斷正確|
|||多筆資料同時改動|測試資料庫儲存是否正確|資料庫儲存正確|
|手機安裝|56\.|使用google play安裝遊戲|測試能否安裝|順利安裝|
||57\.|使用apk安裝遊戲|測試能否安裝|順利安裝|
||58\.|安裝時手機記憶體不足||無法安裝|
||59\.|安裝時網路斷線||<p>1\. google play會解決</p><p>2\. (視到時候的安裝流程決定)</p>|
|使用者行為|60\.|在無人工說明的情況下，將app給不同年齡層使用(小學、國中、高中、大學)|觀察使用者行為|在30分鐘內順利使用遊戲各功能|
||||||
||||||
||||||
||||||
||||||
||||||
||||||





------



# 參考資料

* https://hackmd.io/NASmIXV-S_aTA09MN6Mfew?both

**接下來再慢慢研究怎麼和上面結合**

## **測試設計規格 (p68)** 
(軟體測試之道 p68) + (ChatGPT)
* 目的
* 策略
* **功能測試:** 測試軟體或系統的功能，確保它們按照需求規格正確運作，包括單元測試和集成測試
* **元件測試:** 單元測試，針對軟體的獨立模組或元件進行測試，以確保每個元件都能正確運作
* **整合/系統測試:** 測試多個元件或模組的整合，以確保它們在結合後能夠協同工作，同時也涵蓋整個系統的測試
* **互通性(interoperability)測試:** 測試軟體與其他系統、硬體或環境的互通性，確保它們之間能夠正確地交互運作
* **標準遵循(compliance)測試:** 確保軟體或系統符合相關的標準、規範或法規要求的測試，確保產品的合法性和合規性
* **效能測試:** 評估軟體或系統的性能，包括反應時間、吞吐量、資源利用率等方面的測試，確保它們在預期的工作負載下能夠有效運行
* **安全性測試:** 測軟體或系統中的安全漏洞，以確保它們對潛在的威脅和攻擊有足夠的防禦機制
* **設計/部署測試:** 測試軟體的設計是否符合需求，以及在實際部署時是否能夠正確運作。這包括配置管理和部署程序的測試
* (國際化)
* (相依性)
* (度量)

### 範例 
(ChatGPT)

**功能測試：**
場景： 在一個電子商務網站上，確保使用者能夠成功添加商品到購物車，並順利完成結帳過程。
測試： 模擬使用者點擊商品、加入購物車、輸入付款資訊，確認交易過程中沒有錯誤。

**元件測試：**
場景： 在一個社交媒體應用程式中，針對「發布貼文」功能進行測試。
測試： 測試確保貼文功能能夠正確地創建、存儲到資料庫，並在用戶界面上顯示。

**整合/系統測試：**
場景： 在一個網上銀行系統中，整合測試使用者登錄、查看帳戶餘額和轉帳功能。
測試： 測試確保這三個功能能夠在一個連續的流程中正確執行，不會出現任何錯誤。

**互通性測試：**
場景： 測試一個新的印表機是否與各種操作系統（Windows、Mac、Linux）相容。
測試： 在每個操作系統上連接印表機，列印文件，確保沒有任何互通性問題。

**標準遵循測試：**
場景： 測試一個醫療應用程式是否符合HIPAA（美國醫療健康保險機構可攜帶性與責任法案）的安全標準。
測試： 檢查應用程式中的數據加密、用戶身份驗證等功能，確保符合HIPAA的要求。

---

### 機率測試方法 
(網友)+(chatgpt)
 - R語言參考 https://forum.gamer.com.tw/C.php?bsn=8897&snA=92289
- 蒐集大量數據->卡方檢定(觀察值和期望值的差異)

---

## 測試案例 (p69)

測試案例範例（p214）

### **驗證測試** 
預期資料 -> 驗證功能
* 快樂路徑要能通過
    
### **反證測試** 
非預期資料 -> 程式如何應付

### **灰箱測試** 
看使用者層面(黑箱)+實作的細節(白箱)

### **探索測試** 
人工方法，使用者行為

---

## 功能測試技術 (p73)

### 等價類別分割(ECP) (p78)
* 檢查參數的輸入和輸出
    * 分成 **有效** 和 **無效** 兩類
        * 建立 有效類別子集合 的聯集
        * 類別分子集的方法
            * **範圍:** 邊界值內結果會相同
            * **群組:** 群組內所有項目會以相同方式處理
            * **唯一值:** 要用特殊方式處理的東西
            * **特殊值:** 必須出現or不可出現的東西
* 不針對邊界

ECP表 (p84)
| 輸入/輸出 | 有效類別子集 | 無效類別子集 |
| -------- | -------- | --------    |
| Text     | v1       | i1          |
|          | v2       | i2          |

ECP矩陣 (p87)

### 邊界值分析(BVA) (p90)
* 評估 邊界值、邊界值+1、邊界值-1
* 隱藏的邊界值:迴圈結構
* 數量 = ３＊邊界條件數目

BVA矩陣 (p94)

### 組合式分析 (p100)
* 檢查會互相影響的參數
* 負向測試:每次只含一個無效值

---

## 結構測試技術 (p115)
程式的內部結構和實作(白箱)

### 區塊測試 (p118)
* 測試一組連續的陳述式
* switch/case 陳述式
* 確認例外狀況的處理

### 決策測試 (p126)
* 評估條件子句T/F的結果

### 條件測試 (p129)
* 區塊+決策
* 評估複合式條件子句

### ~~基本路徑測試 (p132)~~
這部分我目前看不太懂，要再研究  by可伊
* 走訪程式中每一條可能路徑
* 每個條件子句的輸出值都要獨立測試
* 找路徑的方法 (p134、p135)


---

## 非功能性測試 (p249)
* **可靠性**
是否在各種情況下可正常運行
是否能從故障中恢復

* **易用性**
對使用者是否容易使用

* **可維護性**
不導致發生新錯誤的情況下完成修改

* **可攜性**
支援的設備

### 效能測試 (p252)
各種重要動作的執行時間

### 壓力測試 (p255)
軟體在高負載情況下的執行能力、處理過多容量的能力

#### 負載測試
超過正常動作或尖峰負載下的情況

#### 平均失效時間測試
軟體從開始執行到發生錯誤的平均時間

#### 低資源測試
用盡重要資源時會發生的狀況(eg 記憶體)

#### 容量測試
最多能支援多少使用者

#### 重複測試
重複執行一項功能


### 相容性測試 (p261)
和其他軟體的互動

### 可及性測試 (p265)
任何人都能操作介面

### 易用性測試 (p269)
軟體有多容易上手

### 安全性測試 (p270)

#### 模糊測試 (p271)
當程式碰到無效輸入的反應(資料庫、讀取資料、解譯資料)

----------

# Bug Tracking System

我覺得照大家目前的做法就可以了，bug的處理看起來沒問題

----------

# 資安測試（紅字為未通過）
* 必須直接使用安卓手機測試，不能用BlueStacks等虛擬機
* 有問題的部分會放在Github的Issues裡面
* 各功能的人也能幫忙協助測試，測試成功證明放到Discord的 #細節處理 頻道

<table><tr><th colspan="1" valign="top"><b>測試內容</b></th><th colspan="1" valign="top"><b>測試方法</b></th></tr>
<tr><td colspan="1" valign="top"><font color="#f00">1. 行動應用程式應於發布時說明欲存取之敏感性資料、行動裝置資源及宣告之權限用途</td><td colspan="1" rowspan="6" valign="top">直接看有沒有</td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">2. 行動應用程式開發者應提供回報安全性問題之管道</td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">3. 行動應用程式應於蒐集敏感性資料前，取得使用者同意</td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">4. 行動應用程式應提供使用者拒絕蒐集敏感性資料之權利</td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">5. 行動應用程式應於儲存敏感性資料前，取得使用者同意</td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">6. 行動應用程式應提供使用者拒絕儲存敏感性資料之權利</td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">7. 行動應用程式應避免在關閉及登出後將敏感性資料儲存於冗餘檔案或日誌檔案中</td><td colspan="1" rowspan="2" valign="top">接上電腦後看log或cache檔案是否存有個資等資料</td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">8. 行動應用程式應避免將敏感性資料儲存於冗餘檔案或日誌檔案中</td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">9. 敏感性資料應採用適當且有效之金鑰長度與加密演算法，進行加密處理再儲存</td><td colspan="1" rowspan="2" valign="top">註冊一個dummy帳號密碼，以利檢查</td></tr>
<tr><td colspan="1" valign="top"><font color="#000">10. 敏感性資料應儲存於受作業系統保護之區域，以防止其他應用程式未經授權之存取</td></tr>
<tr><td colspan="1" valign="top"><font color="#000">11. 敏感性資料應避免出現於行動應用程式之程式碼</td><td colspan="1" valign="top">直接看有沒有</td></tr>
<tr><td colspan="1" valign="top"><s>12. 行動應用程式於非使用者主動進行的畫面擷取時應主動警示使用者</s></td><td colspan="1" valign="top"></td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">13. 行動應用程式應將個人可識別資訊、使用者憑證及加密金鑰等敏感性資料儲存於系統憑證儲存設施</td><td colspan="1" rowspan="2" valign="top">直接看有沒有</td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">14. 行動應用程式應於使用者輸入敏感性資料時將鍵盤的快取機制關閉</td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">15. 行動應用程式應避免在 IPC 機制中洩漏敏感性資料</td><td colspan="1" valign="top">中途攔截資訊(想方法中)，看是否能破解其內容</td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">16. 行動應用程式中的使用者介面應避免洩漏敏感性資料</td><td colspan="1" rowspan="12" valign="top">直接看有沒有</td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">17. 行動作業系統的備份資料中不應存有行動應用程式的敏感性資料</td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">18. 行動應用程式透過網路傳輸敏感性資料，應使用適當且有效之金鑰長度與加密演算法進行安全加密</td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">19. 行動裝置內之不同行動應用程式間，應於分享敏感性資料前，取得使用者同意</td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">20. 行動應用程式應提供使用者拒絕分享敏感性資料之權利</td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">21. 行動應用程式分享敏感性資料時，應避免未授權之行動應用程式存取</td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">22. 行動應用程式應於使用交易資源時主動通知使用者</td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">23. 行動應用程式應提供使用者拒絕使用交易資源之權利</td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">24. 行動應用程式應於使用交易資源時進行使用者身分鑑別</td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">25. 行動應用程式應記錄使用之交易資源與時間</td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">26. 行動應用程式應有適當之身分鑑別機制，確認使用者身分</td></tr>
<tr><td colspan="1" valign="top"><font color="#000">27. 行動應用程式應依使用者身分授權</td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">28. 行動應用程式應避免使用具有規則性之交談識別碼</td><td colspan="1" valign="top">記錄識別碼，並使用分析程式觀察彼此之間關聯性的高低</td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">29. 行動應用程式應確認伺服器憑證之有效性</td><td colspan="1" rowspan="5" valign="top">直接看有沒有</td></tr>
<tr><td colspan="1" valign="top"><font color="#000">30. 行動應用程式應確認伺服器憑證為可信任之憑</td></tr>
<tr><td colspan="1" valign="top"><font color="#000">31. 行動應用程式應避免含有惡意程式碼</td></tr>
<tr><td colspan="1" valign="top"><font color="#000">32. 行動應用程式應避免資訊安全漏洞</td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">33. 行動應用程式於引用之函式庫有更新時，應備妥對應之更新版本</td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">34. 行動應用程式應針對使用者於輸入階段之字串，進行安全檢查</td><td colspan="1" valign="top">刻意輸入敏感字詞、惡意程式碼，看是否擋下來</td></tr>
<tr><td colspan="1" valign="top"><font color="#f00">35. 行動應用程式應提供相關注入攻擊防護機制</td><td colspan="1" valign="top">直接灌病毒，看是否有擋下來</td></tr>
<tr><td colspan="1" valign="top"><font color="#000"><s>36. 行動應用程式於 Webview 呈現功能時，所連線之網域應為安全網域</td><td colspan="1" valign="top">直接看有沒有</td></tr>
</table>

------------

