@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/ai-generated-tests-quality/#article>
    schema:about <https://comcomponent.com/knowledge/test-assertion/>, <https://comcomponent.com/knowledge/test-oracle/> ;
    schema:mentions <https://comcomponent.com/knowledge/unit-test/>, <https://comcomponent.com/knowledge/test-double/>, <https://comcomponent.com/knowledge/code-coverage/>, <https://comcomponent.com/knowledge/mutation-testing/>, <https://comcomponent.com/knowledge/property-based-testing/> .

<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" ;
    ks:requires <https://comcomponent.com/knowledge/test-oracle/> .

<https://comcomponent.com/knowledge/test-oracle/> a skos:Concept ;
    skos:prefLabel "テストオラクル"@ja ;
    skos:definition "テスト対象のシステムの正しい振る舞いと誤った振る舞いを区別する手順。与えた入力に対する結果が正しいかを判定する拠りどころになる。"@ja ;
    skos:altLabel "Test Oracle" ;
    skos:altLabel "オラクル"@ja .

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

<https://comcomponent.com/knowledge/test-double/> a skos:Concept ;
    skos:prefLabel "テストダブル"@ja ;
    skos:definition "テストのために本番のオブジェクトを置き換える代役の総称。ダミー、フェイク、スタブ、スパイ、モックを含む(Gerard Meszarosの用語)。"@ja ;
    skos:altLabel "Test Double" ;
    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/mutation-testing/> a skos:Concept ;
    skos:prefLabel "ミューテーションテスト"@ja ;
    skos:definition "本番のコードに小さな書き換え(ミュータント)を自動で入れ、ミュータントごとにテストを流して、テストが失敗するかでテストがその変化に気づけるかを調べる方法。"@ja ;
    skos:altLabel "Mutation Testing" ;
    skos:altLabel "変異テスト"@ja .

<https://comcomponent.com/knowledge/property-based-testing/> a skos:Concept ;
    skos:prefLabel "プロパティベーステスト"@ja ;
    skos:definition "入力と期待値の組を並べる代わりに、どの入力でも成り立つはずの性質(プロパティ)を書き、その性質をツールが自動で作った多数の入力で確かめるテストの方法。"@ja ;
    skos:altLabel "Property-Based Testing" ;
    skos:altLabel "PBT" ;
    ks:uses <https://comcomponent.com/knowledge/test-oracle/> .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/unit-test/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/test-assertion/> ;
    schema:description "ユニットテストは準備・実行・確認(Arrange・Act・Assert)で構成し、確認のアサーションで人の手を借りずに合否を判定する。アサーションが確かめていないことはテストも確かめていない。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/testing/unit-testing-best-practices> ;
    ks:verifiedAt "2026-11-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/test-assertion/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/test-oracle/> ;
    schema:description "アサーションは実行結果を期待値と比べる。期待値は正しい振る舞いを見分ける拠りどころ(テストオラクル)で、実装と同じ計算をテストの中でして作ると、実装の誤りをテストも同じように持つ。Microsoftの指針はテストにロジックを書かないよう勧めている。"@ja ;
    ks:evidence <https://discovery.ucl.ac.uk/1471263/>, <https://learn.microsoft.com/en-us/dotnet/core/testing/unit-testing-best-practices> ;
    ks:verifiedAt "2026-11-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/unit-test/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/test-double/> ;
    schema:description "ユニットテストは依存をスタブなどのテストダブルに置き換えて、依存に触れずに対象を試せる。ただし確かめたい処理まで置き換えると、その処理はそのテストでは実行されず、代役が返した値を確かめるだけになる。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/testing/unit-testing-best-practices>, <https://martinfowler.com/bliki/TestDouble.html> ;
    ks:verifiedAt "2026-11-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/unit-test/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/code-coverage/> ;
    schema:description "ユニットテストが実行したコードの行・分岐・メソッドはコードカバレッジで確かめられ、実行されていないコードや試していない分岐を見つけられる。カバレッジの高さはテストの品質を示さず、アサーションのないテストでも上がる。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/testing/unit-testing-code-coverage>, <https://martinfowler.com/bliki/TestCoverage.html>, <https://martinfowler.com/bliki/AssertionFreeTesting.html> ;
    ks:verifiedAt "2026-11-01" ;
    ks:certainty "established" .

[] 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 "コードに小さな変更を入れてもテストが失敗しなければ、そのテストのアサーションはその変化を確かめていない。アサーションが変化を検出できるかはミューテーションテストで確かめられ、.NETではStryker.NETが使える。"@ja ;
    ks:evidence <https://stryker-mutator.io/docs/>, <https://stryker-mutator.io/docs/stryker-net/introduction/> ;
    ks:verifiedAt "2026-11-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/property-based-testing/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/test-oracle/> ;
    schema:description "プロパティベーステストは個々の期待値の代わりに、どの入力でも成り立つべき性質を判定基準(テストオラクル)として使い、生成した多数の入力で確かめる。性質は実装の計算を写さずに書ける。"@ja ;
    ks:evidence <https://fscheck.github.io/FsCheck/>, <https://discovery.ucl.ac.uk/1471263/> ;
    ks:verifiedAt "2026-11-01" ;
    ks:certainty "established" .
