1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Excelテスト仕様書をMarkdownで管理するツールを作り直した

1
Last updated at Posted at 2026-09-01

はじめに

以前、Markdownで書いたテスト仕様書をExcelに変換するツールを作りました。

MarkdownからExcelのテスト仕様書を作成するツールを作りました

当時から、テスト仕様書をExcelで直接管理するのはGitと相性が悪いので、
原本はMarkdownにしておきたいと思っていました。

ただ、実際の現場では、

  • レビュー時にはExcelで見たい
  • テスト結果をExcelへ記録したい
  • すでに決められたExcelの様式がある
  • 最終成果物としてExcelを求められる

といった事情もあるので、「もうExcelをやめよう!」というのもなかなか難しいです。

それなら、

原本はMarkdownで管理して、必要なときだけExcelを生成する

という形がちょうどいいのでは、
ということでツールを作ったのが前回でした。

それから大分放置してしまっていたのですが、
最近になってちゃんと使える状態にしたくなり、構成を含めて大きく作り直しました。

作り直したものはこちらです。

GitHub - kazuki0529/md-test-spec2excel

AI時代になってMarkdown管理の意味が増した気がする

前回の記事を書いたのは2022年でした。

当時、Markdownで管理したかった主な理由は、Gitで差分を確認できることでした。

もちろん今でもそこは大きなメリットなのですが、最近は生成AIとの相性も重要になってきたように思います。

例えば、画面仕様やAPI仕様をAIに渡して、

この仕様をもとに、正常系・異常系・境界値の
テストケースを作成してください。

とお願いすれば、テストケースのたたき台を作ってもらえます。

ただ、出力先がExcelになると少し扱いにくいです。

AIにExcelファイルを直接編集させる方法もありますが、

  • 何が変更されたのか確認しづらい
  • 既存の書式が壊れていないか気になる
  • プロンプトやツールによって出力が安定しない
  • 人間がレビューする前にExcelファイルができてしまう

といった問題があります。

一方、MarkdownであればAIにも生成させやすく、人間もそのまま読めます。

Gitで差分を確認して、問題なければマージし、最後にExcelへ変換できます。

つまり、

AIが扱いやすい原本はMarkdownにして、
人間が使いやすい成果物としてExcelを生成する

という分け方ができるのではないかと思いました。

AIが作ったテストケースが正しいとは限らないので、レビューなしでそのままExcelにするのは怖いですが、Markdownの差分として確認できるのであれば、比較的運用に組み込みやすそうです。

ツールの概要

このツールは、Markdown形式で記載したテスト仕様書を、JXls形式のExcelテンプレートへ埋め込むものです。

Markdownファイルごとに別々のExcelを作るのではなく、複数のMarkdownファイルをまとめて1つのExcelに出力できます。

前回と同じく、Excelファイルをプログラム側で一から組み立てるのではなく、あらかじめ用意したExcelテンプレートへ値を埋め込みます。

そのため、既存のExcel様式やセルの書式、条件付き書式などを残したまま使えます。

Markdownの書き方

基本的には、見出しとリストを使ってテストケースを記述します。

# ログイン機能テスト

## 正常系

### パスワード認証

#### 正しいIDとパスワードでログイン

1. ブラウザでログイン画面を開く
1. 正しいIDとパスワードを入力する
1. ログインボタンを押す

- [ ] ホーム画面が表示される
- [ ] ユーザー名がヘッダーに表示される

```text
事前条件: テストユーザーが登録済みであること
```

Markdownの各要素は、次のようにテスト仕様書へ変換されます。

Markdown Excel上の項目
# テスト仕様書のタイトル
## 大項目
### 中項目
#### 小項目
順序付きリスト 確認手順
チェックリスト 想定動作
コードブロック 備考

番号付きリストをすべて 1. で書いても、出力時に連番へ変換します。

Markdownの差分で番号の振り直しが大量に発生するのが嫌だったので、この形にしています。

front matterに対応した

今回、Markdownの先頭にYAML front matterを書けるようにしました。

---
spec_var: loginSpec
feature: ログイン
viewpoint: 正常系
---

# ログイン機能テスト

spec_var は、Excelテンプレートから参照するときの変数名です。

それ以外の値は、ユーザー定義変数としてテンプレートから参照できます。

${loginSpec.vars['feature']}
${loginSpec.vars['viewpoint']}

テスト仕様書によって表紙へ出したい項目が違ったり、
プロジェクト固有の情報を持たせたかったりするので、
固定のデータモデルへすべて追加するのではなく、
ある程度自由に変数を増やせるようにしました。

テストケース単位のカスタム項目にも対応した

テストケースごとに優先度やテスターなどを設定したい場合は、Markdown内に3列のテーブルを書きます。

| 論理名 | 変数名 | 値 |
|---|---|---|
| 優先度 | priority | High |
| テスター | tester_id | user123 |

Excelテンプレートからは、次のように参照できます。

${case.customFields['priority']}
${case.customFields['tester_id']}

どんな項目が必要になるかをツール側ですべて予測するのは難しいので、
ここも利用側で拡張できるようにしました。

AIと組み合わせる場合

例えば、AIへ次のように依頼します。

以下の画面仕様からテストケースを作成してください。

正常系、異常系、境界値を含めてください。
出力は次の形式にしてください。

# 機能名
## 大項目
### 中項目
#### 小項目
1. 確認手順
- [ ] 想定動作

生成されたMarkdownをそのまま採用するのではなく、
Pull Requestとしてレビューします。

画面仕様
    ↓
AIでテストケースのたたき台を生成
    ↓
Markdownの差分を人間がレビュー
    ↓
Gitへマージ
    ↓
Excelを生成

Excelを直接生成させるよりも、途中にレビュー可能なMarkdownを挟めるところが重要だと思っています。

また、既存のテストケースもMarkdownなので、

  • この機能追加によって必要になるテストケースを追加する
  • 表現が曖昧なテストケースを洗い出す
  • 正常系しかない機能から異常系を検討する
  • 仕様変更の差分から影響を受けるケースを探す

といった用途でも、AIに渡しやすくなります。

ただし、AIが作ったテストケースの妥当性を保証するものではありません。
最終的な確認は人間が行う前提です。

最後に

当初は、Excelのテスト仕様書をGitで管理しやすくするために作ったツールでした。
それから生成AIが身近になり、Markdownで原本を持つことには、単なる差分管理以上の意味が出てきたように感じています。

Excelには、レイアウトの自由度や、レビュー・テスト実施時の使いやすさがあります。
Markdownには、差分管理、自動処理、AIからの読み書きのしやすさがあります。

どちらか一方に統一するのではなく、

Markdownを原本にして、Excelを成果物にする

という分担が、今のところ自分には一番しっくりきています。
まだ改善したいところはありますが、以前よりは大分使いやすい状態になったので、改めて公開してみました。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?