Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

Každý veřejný příkaz má behaviorální test a negativní test, vypočtené, ne zapamatované

Pro každý příkaz v share/commands.yaml označený jako veřejný musí sada obsahovat případ, který

deklarovaný stavdeklarovaný stav: zaručeno Deklarováno jako deterministické a blokující, implementováno a s uvedeným behaviorálním testem, který to má dokázat. Zda to zaznamenaný běh podporuje, říká verdikt důkazů zobrazený vedle.

zaznamenané důkazyzaznamenané důkazy: nespuštěno Deklarováno jako zaručené, ale nepodložené zaznamenaným během: test je pojmenován, ale žádný úspěšný běh nad současnými vstupy zaznamenán není. jak se zaznamenávají důkazy

Požadavek se odvozuje z registru, takže příkaz přidaný zítra dluží pokrytí od té chvíle. Pokrytí se deklaruje v hlavičkách jednotlivých případů, ne odhaduje, protože negativní aserce využívající stdin a smyčka případu povrchu jsou pro každé skenování neviditelné.

Co to znamená

Pro každý příkaz v share/commands.yaml označený jako veřejný musí sada obsahovat případ, který procvičuje jeho běžnou cestu, a případ, který tvrdí pojmenovaný režim selhání. Sada musí také nést jeden workflow, který provede úlohu až k přijatému finish, a jeden, který poruší kontrakt, je odmítnut, opraven a poté přijat.

Nic z toho se nezapisuje po jednotlivých příkazech. Požadavek se počítá z registru, takže příkaz přidaný zítra dluží pokrytí od té chvíle a správce se dozví, která vrstva chybí, místo aby to zjistil později.

Princip

test/cases/31_command_coverage.sh čte veřejný povrch z registru a pokrytí z metadat, která každý případ o sobě deklaruje, ve třech komentářových hlavičkách:

# majordomus-covers: handover start       the normal path
# majordomus-negative: handover           a named failure mode
# majordomus-lifecycle: refused           a multi-command workflow

Pokrytí se deklaruje, ne odvozuje, protože ho nelze ze zdroje spolehlivě přečíst. Negativní tvrzení pro handover a checkpoint jsou zapsána jako bash -c "... | '$MJ' cmd", protože tyto příkazy čtou stdin, a případ povrchu ověřuje selhání každého příkazu přes proměnnou smyčky. Obojí je neviditelné pro jakékoli skenování a název souboru říká méně než jedno i druhé. Hlavička jmenující neexistující příkaz je rozbitý odkaz a selže.

Každý případ v této sadě je z konstrukce end-to-end: test/run.sh vytvoří v dočasném adresáři nový git repozitář a uvnitř spustí skutečný binární soubor. Není třeba deklarovat samostatnou end-to-end vrstvu ani udržovat druhý runner v souladu.

Jak to vidět

bash test/run.sh 31_command_coverage      # prints the matrix it computed
grep -rn 'majordomus-covers' test/cases/

Co nepokrývá

Počítá vrstvy, ne kvalitu. Případ, který deklaruje negativ pro příkaz, splňuje požadavek bez ohledu na to, co tvrdí, a nic zde neměří, jak velkou část chování příkazu případ pokrývá. Brání se veřejnému příkazu bez jediného případu, což je selhání, které se skutečně děje.

Proč existuje

Pokrytí, které si musí maintainer pamatovat, je pokrytí, které vyprší v prvním rušném týdnu. Pravidlo „přidej i test“ je přesně ten druh sekundárního registračního kroku, na který se tento repozitář odmítá spoléhat, že si ho někdo pamatuje.

Detail vykreslen z docs/claims/command-coverage.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Každý veřejný příkaz má behaviorální test a negativní test, vypočtené, ne zapamatované

    Vzniklo na Doctor.

  2. 2 · kanonické tvrzení

    command-coveragedeklarovaný stav: zaručeno v docs/CLAIMS.yaml

    Definováno v číst na tomto webu · docs/DYNAMICITY.md

  3. 3 · implementace

    test/cases/31_command_coverage.sh

  4. 4 · test a scénáře

    Test: test/cases/31_command_coverage.sh

    Provedeno v Podmínit CI samotným nástrojem, s exit kódem, který je kontraktem.

  5. 5 · zaznamenané běhy

    zaznamenané důkazy: nespuštěno jak se zaznamenávají důkazy

Ověřte si to sami

Test běží v jednorázovém dočasném repozitáři a ověřuje chování, ne řetězec ve zdrojovém kódu.

z klonu repozitáře
bash test/run.sh 31_command_coverage

Kde se toto tvrzení používá

pokryté odpovědnosti

Okamžiky, na které to odpovídá

Prohledává názvy a popisy všech stránek, které tento web publikuje.