> For the complete documentation index, see [llms.txt](https://ai-native-development.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ai-native-development.gitbook.io/docs/ja/testing/test-only-what-is-necessary.md).

# 必要な部分だけをテストする

[![](https://img.shields.io/badge/Lv0-Pattern_Idea-blueviolet)](https://github.com/orgs/AI-Native-Development/projects/1/)

{% hint style="info" %}
不必要なテストケースを書く必要はありませんが、どのようなテストが必要かはチームによります。パターンとして具体化するには、より具体的な議論が必要です。
{% endhint %}

## Description

高速なソフトウェア開発の時代において、効率的で有益なテストの記述はこれまで以上に重要です。GitHub Copilotを使用する際に、開発者はカバレッジを増やすために多くのテストコードを生成してしまうかもしれません。しかし、不必要なテストコードの生成は保守の負担や技術的な負債を引き起こす可能性があります。GitHub Copilotを使用してテストコードを書く際には必要な部分のみをテストする事が重要です。

### Example

特定の関数に対して意味のあるテストを書くことに重点を置くことで、カバレッジを上げるために複数のテストを書く代わりに、意味のあるテストを書くことが重要です。

以下は不必要になりうるテストコードの例です:

* セッターやゲッターのテスト
* 言語の機能のテスト
* フレームワークの機能のテスト
* 定数のテスト
* 同じロジックを持つ冗長なテスト
* 些細なロジックのテスト
* サードパーティのライブラリのテスト
* ロジックのないランダムな値のテスト

カバレッジを増やすだけでなく、また価値を追加しない数多くのテストを追加するのではなく、必要なテストのみを追加します。

## Exercise

* **エクササイズ 1**: 現在意味のないテストで過度にテストされているコードベース内の関数を特定し、必要なテストのみを含むようリファクタリングします。
* **エクササイズ 2**: コードの重要な部分に新しいテストを書き、冗長性を避けて重要な側面に焦点を当てます。
* **エクササイズ 3**: 現在のテストカバレッジを評価し、不可欠なカバレッジを失うことなくテストを削減できる領域を特定します。

## Checklist for Further Learning

* 機能を確実に検証するテストを書いているか、それとも単にカバレッジを上げるためのテストを書いていますか?
* 書いているテストがプロジェクトに価値を提供し、保守の負担を増やすだけでないことをどのように確認できますか?
* 特に GitHub Copilot などのツールを使用する際、テストスイートをスリムで意味のあるものに保つためにどのような戦略を取り入れることができますか?
