軟工第三組
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Write
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Versions and GitHub Sync Note Insights Sharing URL Help
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Write
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       owned this note    owned this note      
    Published Linked with GitHub
    Subscribed
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Subscribe
    :::info **測試書進度(11/9 課堂報告)** 11/4:了解測試內容 11/8:產完初步測試書 ::: 設計書:https://hackmd.io/Iwxu2qzWSFiB47NaHk6aLQ 參考資料:**<軟體測試之道>** Chapter 4、5、6、11 **要處理 用戶端 和 伺服器端!!!!!** --- :::success :notebook: **Syllabus** [ToC] ::: --- # **測試設計規格 (p68)** (軟體測試之道 p68) + (ChatGPT) * 目的 * 策略 * **功能測試:** 測試軟體或系統的功能,確保它們按照需求規格正確運作,包括單元測試和集成測試 * **元件測試:** 單元測試,針對軟體的獨立模組或元件進行測試,以確保每個元件都能正確運作 * **整合/系統測試:** 測試多個元件或模組的整合,以確保它們在結合後能夠協同工作,同時也涵蓋整個系統的測試 * **互通性(interoperability)測試:** 測試軟體與其他系統、硬體或環境的互通性,確保它們之間能夠正確地交互運作 * **標準遵循(compliance)測試:** 確保軟體或系統符合相關的標準、規範或法規要求的測試,確保產品的合法性和合規性 * **效能測試:** 評估軟體或系統的性能,包括反應時間、吞吐量、資源利用率等方面的測試,確保它們在預期的工作負載下能夠有效運行 * **安全性測試:** 測軟體或系統中的安全漏洞,以確保它們對潛在的威脅和攻擊有足夠的防禦機制 * **設計/部署測試:** 測試軟體的設計是否符合需求,以及在實際部署時是否能夠正確運作。這包括配置管理和部署程序的測試 * (國際化) * (相依性) * (度量) --- ## 範例 (ChatGPT) **功能測試:** 場景: 在一個電子商務網站上,確保使用者能夠成功添加商品到購物車,並順利完成結帳過程。 測試: 模擬使用者點擊商品、加入購物車、輸入付款資訊,確認交易過程中沒有錯誤。 **元件測試:** 場景: 在一個社交媒體應用程式中,針對「發布貼文」功能進行測試。 測試: 測試確保貼文功能能夠正確地創建、存儲到資料庫,並在用戶界面上顯示。 **整合/系統測試:** 場景: 在一個網上銀行系統中,整合測試使用者登錄、查看帳戶餘額和轉帳功能。 測試: 測試確保這三個功能能夠在一個連續的流程中正確執行,不會出現任何錯誤。 **互通性測試:** 場景: 測試一個新的印表機是否與各種操作系統(Windows、Mac、Linux)相容。 測試: 在每個操作系統上連接印表機,列印文件,確保沒有任何互通性問題。 **標準遵循測試:** 場景: 測試一個醫療應用程式是否符合HIPAA(美國醫療健康保險機構可攜帶性與責任法案)的安全標準。 測試: 檢查應用程式中的數據加密、用戶身份驗證等功能,確保符合HIPAA的要求。 --- # 機率測試方法 (網友)+(chatgpt) - R語言參考 https://forum.gamer.com.tw/C.php?bsn=8897&snA=92289 - 蒐集大量數據->卡方檢定(觀察值和期望值的差異) (PS 這東西用excel就以做了XD) --- ||#|**Action**|**Expected & Checked**| | :- | :- | :- | :- | |登入畫面|0|安裝app:Fate of thrones: Kingdoms Collide|<p>1\.確認正確安裝app</p><p>2\.確認icon顯示正確</p>| ||1|點選app icon|<p>1\. 顯示登入畫面</p><p>2\.確認版本編號是最新版</p>| ||2|<p>輸入錯誤帳號密碼:</p><p>1\.錯誤帳號、密碼</p><p>2\.特殊符號</p><p>3\.帳號密碼空白</p><p>4\.SQL injection(’ or 1=1)</p>|1\.顯示登入錯誤訊息| ||3|<p>修改密碼:</p><p>1\.輸入錯誤username或email</p><p>2\.SQL injection</p><p>3\.輸入正確username和email</p>|<p>1\.顯示錯誤訊息</p><p>2\.顯示錯誤訊息</p><p>3\.發送修改密碼郵件,使用者修改完畢後,資料庫確實更改成新密碼</p>| ||4|輸入正確登入帳號密碼|<p>1\.登入成功,進入主畫面</p><p>2\.主畫面帶出正確使用者資料(顯示之資料視開發程度而定)</p>| ||5|沒有網路連線|顯示無網路連線訊息| |數值驗證|6|<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}| ||7|<p>驗證經驗值計算:</p><p>排位場</p><p>1\.勝敗場次測試集(1:勝場, 0:敗場){(1),(0),(1,1,1,1,0),(0,0,0,1)}</p><p>一般場</p><p>2\.勝敗場次測試集(1:勝場, 0:敗場){(1),(0),(1,1,1,1,0),(0,0,0,1)}</p>|<p>1\.經驗值計算依序為{+1,-0.5,+6.2,-0.5}</p><p>2\.經驗值計算依序為{+1,+0.8,+6.6,+3.4}</p>| ||8|<p>PVE出牌機制</p><p>1. 自動化測試(想辦法)</p>|1. 每張牌出牌機率需很接近(+-1%)| ||9|<p>回合紀錄</p><p>1. 遊玩遊戲五個回合</p>|1. 玩家無法在遊戲進行時查看各回合紀錄。程式中正確記錄本局為第五回合。| ||10|<p>回合紀錄</p><p>2. 遊玩一整局遊戲</p><p>3. 遊戲結束</p>|<p>2. 玩家無法在遊戲進行時查看各回合紀錄。程式中正確記錄回合數據。</p><p>3. 結束畫面顯示各回合紀錄。</p>| ||11|<p>無課金玩家卡池機率</p><p>1. 自動化測試</p>|<p>1. 統計機率需很接近(+-1%)以下比例(視開發結果而定)</p><p>coins: 70%, skill: 15%, card\_style: 15%</p>| ||12|<p>課金玩家卡池機率</p><p>1. 自動化測試</p>|<p>1. 統計機率需很接近(+-1%)以下比例(視開發結果而定)</p><p>coins: 55.5%, skill: 22.5%, card\_style: 22.5%</p>| ||13|<p>背包賣出系統</p><p>1. 合法賣出背包物品</p>|1. 賣出物品與兌換之金幣價值一致(視開發結果而定)| ||14|<p>玩家技能升級</p><p>1. 合法升級技能</p>|<p>1. 消耗卡牌數及因升級產生之卡牌數正確儲存在資料庫(視開發結果而定)</p><p>2. 可以合併的牌(有數值),正確合併</p><p>3. 不能合併的牌,不能合併。</p>| ||15|<p>玩家統計數據</p><p>1. 按(什麼按鍵?)</p>|1. 正確列出資料庫之資料。(會顯示什麼數據?)| |功能驗證|16|<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>| ||17|<p>1\.新手玩家進入勝率入口</p><p>2\.非新手玩家{(玩家經驗值:10,勝率:70%),(玩家經驗值:9,勝率:10%)}進入勝率入口</p>|<p>1\.動畫顯示正常。配對新手玩家或(10秒內仍未配對)簡易版電腦玩家</p><p>2\.動畫顯示正常。配對到同程度(視計算方式而定)或(10秒內仍未配對)電腦玩家</p>| ||18|1. 玩家{(段位:1, 經驗值:4, 連勝場數: 3), (段位:5, 經驗值:40, 連勝場數: 2)}進入排位入口|1. 配對到程度接近的玩家{(程度相當玩家或電腦玩家), (程度相當玩家)}(視開發結果而定)| ||19|2. 玩家{(段位:1, 經驗值:4, 連勝場數: 3), (段位:5, 經驗值:40, 連勝場數: 2)}進入勝率入口|2. 配對到程度接近的玩家{(程度相當玩家或電腦玩家), (程度相當玩家)}(視開發結果而定)| ||20|<p>友誼賽房間代碼</p><p>1. 兩玩家使用相同房間代碼進入</p>|1. 進入相同房間,開始遊戲| ||21|<p>友誼賽房間代碼</p><p>2. 一方玩家輸入錯誤房間代碼</p>|2. 顯示房間不存在| ||22|<p>友誼賽房間代碼</p><p>3. 三人以上輸入同一個房間代碼</p>|3\. 前兩個玩家輸入房間代碼可進入,在後玩家顯示「房間已滿」訊息。| ||23|<p>友誼賽房間代碼</p><p>4. 一方輸入房間代碼,無另一方加入該房間</p>|4\. 房間存續到進入房間那方玩家退出為止。| ||24|<p>PVE機制</p><p>1. 電腦玩家強度等級</p>|1. 強度越強,攜帶的技能越強(視開發結果而定)| ||25|<p>遊戲進行流程:選牌階段</p><p>1. 雙方10秒內選牌</p>|1. 選牌階段提早結束,牌卡可正常丟出中央,並進入揭牌階段| ||26|2. 等候超過10秒選牌|2. 電腦自動丟出玩家手中最右方牌卡,並進入揭牌階段| ||27|<p>3. 網路斷線</p><p>4. 玩家持續斷線,直至遊戲結束</p>|<p>3. 超過10秒,網路斷線玩家自動出牌。</p><p>4. 電腦玩家接管斷線玩家,直到遊戲結束。</p>| ||28|4\. 網路斷線,10秒內重新連線|5. 玩家恢復連線後,可以選牌。| ||29|<p>遊戲進行流程:揭牌階段</p><p>1. 此時再次選牌丟出揭牌區(非選牌階段出牌)</p>|1. 出牌失敗,返回自己的卡牌中。卡牌強弱判斷結果正確。| ||30|<p>遊戲進行流程:結束動畫</p><p>1. 等候超過15秒</p>|1. 結束動畫正常顯示。遊戲勝負、經驗值、金幣獲取量數值正確。寫入資料庫數值正確。15秒後自動跳轉回主畫面。| ||31|<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></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>| ||32|<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>| ||33|<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>1\. 對手勝利</p><p>2\. 自身勝利</p><p>3\. 對手勝利</p><p>4\. 自身勝利</p><p>5\. 自身勝利</p><p>6\. 對手勝利</p><p>7\. 平手</p><p>8\. 平手</p>| |註冊|34|<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>1. 顯示錯誤訊息。</p><p>2. 顯示錯誤訊息。</p><p>3. 顯示錯誤訊息。</p><p>4. 顯示錯誤訊息。</p><p>5. 所有資料皆加密儲存於資料庫。顯示發送驗證碼訊息。於設定之電子郵箱收取驗證碼,並輸入正確驗證碼。註冊成功。</p><p>6. 所有資料皆加密儲存於資料庫。顯示發送驗證碼訊息。於設定之電子郵箱收取驗證碼,並輸入錯誤驗證碼。顯示驗證碼錯誤訊息。</p>| |抽卡系統|35|1. 執行抽卡時,網路斷線|1. server正常執行抽卡流程,並正確儲存數據。| ||36|1. 抽卡所需金幣不足,執行抽卡功能|1. 顯示金幣不足提示訊息| ||37|1. 金幣足夠,執行抽卡流程|1. 確認抽卡過程建立在server端。動畫正常顯示。| |背包賣出系統|38|<p>1. 選取欲賣出物品</p><p>2. 賣出物品</p>|<p>1. 正確顯示該物品價值,及可供選取數量。</p><p>2. 顯示總價值,並確認兌換畫面。(帳號, 物品, 數量)正確儲存在資料庫。並在畫面顯示兌換的金幣總數。</p>| ||39|<p>1. 選取欲賣出物品,並選擇超過自身擁有之數量</p><p>2. 賣出物品</p>|<p>1. 無法選擇超過自身擁有之數量。修改local端數值,強制插入資料庫。</p><p>2. 資料庫驗證失敗,兌換失敗。顯示錯誤訊息。</p>| |更換卡牌造型|40|<p>1. 選擇欲更換卡牌之造型(玩家無該卡牌)</p><p>2. local端強制插入資料庫</p>|<p>1. Local端正確判斷玩家無該造型及卡牌,並顯示錯誤訊息。</p><p>2. Server檢查無卡牌,無法更改造型,顯示錯誤訊息。</p>| ||41|<p>1. 選擇欲更換卡牌之造型(玩家有該卡牌)</p><p>2. 點選更換造型</p>|<p>1. Local和server判斷玩家有該造型及卡牌。</p><p>2. 更換造型成功。顯示更換後之造型。</p>| |更換玩家技能|42|<p>1. 選擇欲更換之技能(玩家無該技能)</p><p>2. local端強制插入資料庫</p>|<p>1. Local端正確判斷玩家無該技能,並顯示錯誤訊息。</p><p>2. Server檢查無該技能,無法更改技能,顯示錯誤訊息。</p>| ||43|<p>1. 選擇欲更換之技能(玩家有該技能)</p><p>2. 點選更換技能</p>|<p>1. Local和server判斷玩家有該技能。</p><p>2. 更換技能成功。顯示更換後之技能。</p>| |玩家技能升級|44|<p>1. 選擇欲升級之卡牌(玩家無該卡牌)</p><p>2. local端強制插入資料庫</p>|<p>1. Local端正確判斷玩家無該卡牌,並顯示錯誤訊息。</p><p>2. Server檢查無該卡牌,無法升級技能,顯示錯誤訊息。</p>| ||45|<p>1. 選擇欲升級之卡牌(玩家有該卡牌,但升級條件不滿足)</p><p>2. local端強制插入資料庫</p>|<p>1. Local端正確判斷玩家不滿足升級條件,並顯示錯誤訊息。</p><p>2. Server檢查不滿足升級條件,無法升級技能,顯示錯誤訊息。</p>| ||46|<p>1. 選擇欲升級之卡牌(玩家有該卡牌,且滿足升級條件)</p><p>2. 點選升級按鍵</p>|<p>1. Local和server判斷玩家有該卡牌且滿足升級條件。</p><p>2. 升級動畫正常顯示。所消耗卡牌正確扣除在玩家背包。因升級而新增之卡牌正確顯示在背包中。</p>| |玩家成就系統|47|<p>1. 有功能之成就(如:新手玩家)</p><p>2. 無功能之成就</p>|<p>1. 配對時是否是新手配對模式</p><p>2. 正確顯示與資料庫一致之成就。</p>| |用戶設定儲存系統|48|<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>| ||49|1. 重啟遊戲|1. 仍保有所更改之設定| |Server|50|伺服器最多容納人數|| ||51|伺服器斷線|遊戲鎖死| ||52|資料庫滿到80%|伺服器顯示警告訊息| ||53|多組玩家同時進行遊戲|勝負判斷是否正確| ||54|多筆資料同時改動|資料庫儲存是否正確| 缺的東西(之後提醒他們): 配對 - 玩家配對分數的計算公式 設計 - 「玩家統計數據」UI和進入按鈕、玩家斷線警告、server斷線直接遊戲鎖死 遊戲B - 回合紀錄 要處理的問題: ` `動畫放在手機還是server (先不急) 不一定會做出來的功能: ` `背包賣出 ` `回合紀錄 ` `玩家統計 ` `成就系統 --- # 測試案例 (p69) 測試案例範例(p214) ## **驗證測試** 預期資料 -> 驗證功能 * 快樂路徑要能通過 ## **反證測試** 非預期資料 -> 程式如何應付 ## **灰箱測試** 看使用者層面(黑箱)+實作的細節(白箱) ## **探索測試** 人工方法,使用者行為 --- # 功能測試技術 (p73) ## 等價類別分割(ECP) (p78) * 檢查參數的輸入和輸出 * 分成 **有效** 和 **無效** 兩類 * 建立 有效類別子集合 的聯集 * 類別分子集的方法 * **範圍:** 邊界值內結果會相同 * **群組:** 群組內所有項目會以相同方式處理 * **唯一值:** 要用特殊方式處理的東西 * **特殊值:** 必須出現or不可出現的東西 * 不針對邊界 ECP表 (p84) | 輸入/輸出 | 有效類別子集 | 無效類別子集 | | -------- | -------- | -------- | | Text | v1 | i1 | | | v2 | i2 | ECP矩陣 (p87) ## 邊界值分析(BVA) (p90) * 評估 邊界值、邊界值+1、邊界值-1 * 隱藏的邊界值:迴圈結構 * 數量 = 3*邊界條件數目 BVA矩陣 (p94) ## 組合式分析 (p100) * 檢查會互相影響的參數 * 負向測試:每次只含一個無效值 --- # 結構測試技術 (p115) 程式的內部結構和實作(白箱) ## 區塊測試 (p118) * 測試一組連續的陳述式 * switch/case 陳述式 * 確認例外狀況的處理 ## 決策測試 (p126) * 評估條件子句T/F的結果 ## 條件測試 (p129) * 區塊+決策 * 評估複合式條件子句 ## ~~基本路徑測試 (p132)~~ 這部分我目前看不太懂,要再研究 by可伊 * 走訪程式中每一條可能路徑 * 每個條件子句的輸出值都要獨立測試 * 找路徑的方法 (p134、p135) --- # 非功能性測試 (p249) * **可靠性** 是否在各種情況下可正常運行 是否能從故障中恢復 * **易用性** 對使用者是否容易使用 * **可維護性** 不導致發生新錯誤的情況下完成修改 * **可攜性** 支援的設備 ## 效能測試 (p252) 各種重要動作的執行時間 ## 壓力測試 (p255) 軟體在高負載情況下的執行能力、處理過多容量的能力 ### 負載測試 超過正常動作或尖峰負載下的情況 ### 平均失效時間測試 軟體從開始執行到發生錯誤的平均時間 ### 低資源測試 用盡重要資源時會發生的狀況(eg 記憶體) ### 容量測試 最多能支援多少使用者 ### 重複測試 重複執行一項功能 ## 相容性測試 (p261) 和其他軟體的互動 ## 可及性測試 (p265) 任何人都能操作介面 ## 易用性測試 (p269) 軟體有多容易上手 ## 安全性測試 (p270) ### 模糊測試 (p271) 當程式碰到無效輸入的反應(資料庫、讀取資料、解譯資料)

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully