跳至內容
Astera Technology

提前停止後,未試個案要另列

遇首敗停止後未做題用 null,已做成功與計劃覆蓋分開。

下載完整個案資料及參考答案 ↓

訂明本例驗收任務

假設有序驗收遇第一題失敗就停止,後面須用 null 表示未做。已做結果須為連續前段;首敗或未做 null 後不能再有布林結果。分開列計劃覆蓋及已做個案成功比例;未做不能當成功或失敗。

  1. 核有序停止記錄
  2. 分開數已做與未做
  3. 通過數沿用已觀察分母

停止點後仍有結果,須修執行定義或記錄。

使用已填個案

原創假設輸入及確切答案鍵
個案已提供輸入預期結構化結果判斷及原因
第二題失敗便停止{"results":[true,false,null,null,null]}{"planned":5,"observed":2,"passed":1,"notRun":3}已做通過 1/2,計劃覆蓋 2/5;三題未做。
全部計劃題通過{"results":[true,true,true]}{"planned":3,"observed":3,"passed":3,"notRun":0}沒有失敗觸發停止,三次觀察都保留。
未做中間題後又有觀察{"results":[true,null,false]}{"error":"stop-ledger"}未做後段開始後又有觀察,違反連續有序記錄。
停止後又有結果{"results":[false,true,null]}{"error":"stop-ledger"}記錄違反遇首敗停止的規則。
下載可編輯 CSV ↓

逐步處理 result-after-stop 個案,須得到甚麼結果?原因是甚麼?

查看參考答案

{"error":"stop-ledger"}。記錄違反遇首敗停止的規則。

執行完整本機驗算

另存為 .mjs,以 Node.js 執行;只驗提供的個案
import assert from 'node:assert/strict';

function evaluate(x){
 let stopped=false;for(const v of x.results){if(stopped&&v!==null)return {error:'stop-ledger'};if(v===false||v===null)stopped=true;if(v!==null&&typeof v!=='boolean')return {error:'label'};}
 const observed=x.results.filter(v=>v!==null),passed=observed.filter(Boolean).length;return {planned:x.results.length,observed:observed.length,passed,notRun:x.results.length-observed.length};
}

const cases = [
  {
    "id": "stop-on-second",
    "input": {
      "results": [
        true,
        false,
        null,
        null,
        null
      ]
    },
    "expected": {
      "planned": 5,
      "observed": 2,
      "passed": 1,
      "notRun": 3
    }
  },
  {
    "id": "all-completed",
    "input": {
      "results": [
        true,
        true,
        true
      ]
    },
    "expected": {
      "planned": 3,
      "observed": 3,
      "passed": 3,
      "notRun": 0
    }
  },
  {
    "id": "observation-after-not-run",
    "input": {
      "results": [
        true,
        null,
        false
      ]
    },
    "expected": {
      "error": "stop-ledger"
    }
  },
  {
    "id": "result-after-stop",
    "input": {
      "results": [
        false,
        true,
        null
      ]
    },
    "expected": {
      "error": "stop-ledger"
    }
  }
];
for (const c of cases) assert.deepEqual(evaluate(c.input), c.expected, c.id);
console.log(JSON.stringify({checked:cases.length,caseIds:cases.map(c=>c.id)}));
下載可執行例子 ↓

計劃編號連同 null 狀態保存。此有限清單不提供略過題的答案或整體人口準確率。

相關資源