@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ks: <https://comcomponent.com/vocab/> .

<https://comcomponent.com/blog/mutation-testing-test-your-tests/#article>
    schema:about <https://comcomponent.com/knowledge/mutation-testing/>, <https://comcomponent.com/knowledge/stryker-net/> ;
    schema:mentions <https://comcomponent.com/knowledge/mutant/>, <https://comcomponent.com/knowledge/unit-test/>, <https://comcomponent.com/knowledge/code-coverage/>, <https://comcomponent.com/knowledge/test-assertion/>, <https://comcomponent.com/knowledge/stryker-config-json/> .

<https://comcomponent.com/knowledge/mutation-testing/> a skos:Concept ;
    skos:prefLabel "ミューテーションテスト"@ja ;
    skos:definition "本番のコードに小さな書き換え(ミュータント)を自動で入れ、ミュータントごとにテストを流して、テストが失敗するかでテストがその変化に気づけるかを調べる方法。"@ja ;
    skos:altLabel "Mutation Testing" ;
    skos:altLabel "変異テスト"@ja ;
    ks:uses <https://comcomponent.com/knowledge/mutant/> ;
    ks:requires <https://comcomponent.com/knowledge/unit-test/> .

<https://comcomponent.com/knowledge/stryker-net/> a skos:Concept ;
    skos:prefLabel "Stryker.NET"@ja ;
    skos:definition "C#と.NET向けのミューテーションテストのツール。.NETのツールとしてdotnet-strykerを入れ、単体テストのプロジェクトのフォルダーでdotnet strykerを実行する。"@ja ;
    skos:altLabel "dotnet-stryker" ;
    ks:implements <https://comcomponent.com/knowledge/mutation-testing/> ;
    ks:configuredBy <https://comcomponent.com/knowledge/stryker-config-json/> .

<https://comcomponent.com/knowledge/mutant/> a skos:Concept ;
    skos:prefLabel "ミュータント"@ja ;
    skos:definition "ミューテーションテストで、本番のコードに決まった書き換えの規則(ミューテーター)を当てて作った、少しだけ違うコード。テストが失敗すればkilled、すべて通ればsurvivedになる。"@ja ;
    skos:altLabel "Mutant" .

<https://comcomponent.com/knowledge/unit-test/> a skos:Concept ;
    skos:prefLabel "ユニットテスト"@ja ;
    skos:definition "分離された1責務の正しさを、外部資源を切り離して確かめるテストの層のこと。"@ja ;
    skos:altLabel "Unit Test" ;
    skos:altLabel "単体テスト"@ja .

<https://comcomponent.com/knowledge/code-coverage/> a skos:Concept ;
    skos:prefLabel "コードカバレッジ"@ja ;
    skos:definition "テストを実行したときに、プログラムのどれだけの部分が実行されたかを、行・分岐・メソッドなどの単位で表す尺度。実行されたかを数えるもので、テストが結果を確かめたかは表さない。"@ja ;
    skos:altLabel "Code Coverage" ;
    skos:altLabel "テストカバレッジ"@ja ;
    skos:altLabel "カバレッジ"@ja .

<https://comcomponent.com/knowledge/test-assertion/> a skos:Concept ;
    skos:prefLabel "アサーション"@ja ;
    skos:definition "テストの中で実行結果を期待値と比べ、テストの合否を決める確認の処理。Arrange・Act・Assertの構成のAssertに当たり、満たさなければテストは失敗する。"@ja ;
    skos:altLabel "Assertion" ;
    skos:altLabel "Assert" .

<https://comcomponent.com/knowledge/stryker-config-json/> a skos:Concept ;
    skos:prefLabel "stryker-config.json"@ja ;
    skos:definition "Stryker.NETの設定ファイル。ルートのキーstryker-configの下に、project・mutate・reporters・since・thresholdsなどを書く。"@ja ;
    skos:altLabel "Stryker.NETの設定ファイル"@ja .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/stryker-net/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/mutation-testing/> ;
    schema:description "Stryker.NETはC#と.NET向けにミューテーションテストを行うツールで、単体テストのプロジェクトのフォルダーでdotnet strykerを実行する。"@ja ;
    ks:evidence <https://stryker-mutator.io/docs/stryker-net/getting-started/>, <https://stryker-mutator.io/docs/> ;
    ks:verifiedAt "2026-11-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mutation-testing/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/mutant/> ;
    schema:description "本番のコードに決まった規則で書き換えたミュータントを自動で入れ、ミュータントごとにテストを流す。"@ja ;
    ks:evidence <https://stryker-mutator.io/docs/>, <https://stryker-mutator.io/docs/stryker-net/mutations/> ;
    ks:verifiedAt "2026-11-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mutation-testing/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/unit-test/> ;
    schema:description "ミュータントごとに既存のテストを流し、どれかが失敗すればkilled、すべて通ればsurvivedと判定する。"@ja ;
    ks:evidence <https://stryker-mutator.io/docs/>, <https://stryker-mutator.io/docs/mutation-testing-elements/mutant-states-and-metrics/> ;
    ks:verifiedAt "2026-11-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mutation-testing/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/code-coverage/> ;
    schema:description "Strykerはテストが実行しない場所のミュータントをNo coverageとして分け、カバーされたコードだけで計算したミューテーションスコアも出す。カバレッジは実行したかを示すだけなので、確かめたかはミュータントが倒れるかで調べる。"@ja ;
    ks:evidence <https://stryker-mutator.io/docs/mutation-testing-elements/mutant-states-and-metrics/>, <https://stryker-mutator.io/docs/> ;
    ks:verifiedAt "2026-11-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/test-assertion/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/mutation-testing/> ;
    schema:description "結果を期待値と比べないアサーションでは、コードを書き換えてもテストが通り、ミュータントが生き残る。生き残ったミュータントから、確かめていない動きが分かる。等価ミュータントはどのテストでも倒せない。"@ja ;
    ks:evidence <https://stryker-mutator.io/docs/>, <https://stryker-mutator.io/docs/mutation-testing-elements/mutant-states-and-metrics/>, <https://stryker-mutator.io/docs/mutation-testing-elements/equivalent-mutants/> ;
    ks:verifiedAt "2026-11-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/stryker-net/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/stryker-config-json/> ;
    schema:description "実行するフォルダーに置いたstryker-config.jsonのstryker-configの下に、project・mutate・reporters・since・thresholdsなどを書く。"@ja ;
    ks:evidence <https://stryker-mutator.io/docs/stryker-net/configuration/> ;
    ks:verifiedAt "2026-11-01" ;
    ks:certainty "established" .
