🚀

PMのためのNotionで構築するスクラム開発:QAテスト項目を管理する方法

2024/04/22に公開

どんなものを作成するのか?

QAテスト項目をNotionで管理する方法

  • Notionのサブアイテムを利用して、多階層のテスト項目を管理
  • テスト総数とテスト通過済みの総数を出す
  • テストの進捗を表示

簡単に見えるが、Notionの仕様を理解していないと結構難しい。
プロジェクト管理やドキュメント管理だけではなく、QA項目の管理もNotionで完結することができる。
なお、Notionの中級クラスの内容となっています。

なぜNotionで管理するのか?

※結論:人間めんどくさがりなので、複数のツールを確認したがらない。なので、なるべく一つのツールに統合する一環として、Notionにまとめて管理しています。

プロジェクト管理ツールは、多ければ多いほどスイッチコストがかかる。

  • ドキュメント管理・プロジェクト管理:Notion
  • QAテスト項目の管理:スプレッドシート

普段Notionで管理されているため、わざわざスプレッドシートのリンクを開いて、テスト項目を確認するのは手間です。また、毎回スプレッドシートのURLをNotionに貼る手間が生まれる。このため、QAはテスト項目を共有しても閲覧されず流れてしまったり、そもそもスプレッドシートのリンクが共有されない事態になる。
 Notionとスプレッドシートの行き来をなくし、一つのツールに統合を試みることで、エンジニアとQAがどちらにとっても楽に管理できる状態にする。

  • エンジニアとPM、QAEはQAのテスト項目の進捗がわかる
  • エンジニアはQAのテスト項目を確認しながら、開発を進めることができる
  • QAはテスト項目の共有が容易になる
  • QAはテスト項目のテンプレートをNotionで管理することができ、テスト項目作成が楽になる。

テスト項目をサブアイテムで管理する場合

多階層でテスト項目を管理したい場合の選択肢は2つです

  • 階層ごとにDBを分ける
  • サブアイテムを利用して、階層を分ける

階層が決まった使い方をする場合はDBでも良いですが、管理の自由度は下がります。
サブアイテムは階層追加の自由度は上がりますが、値の管理に少々癖があります。

今回の要件としては、大項目・中項目にテスト項目を分けたり、分けなかったりすることができることにします。

- 大項目
 - テスト項目
 - テスト項目
 - 中項目
  - テスト項目
  - テスト項目
  - 小項目
    - テスト項目
    - テスト項目
    - テスト項目

この実現方法として、今回はサブアイテムでの多階層の構築します。

構築方法

isTest項目の判定処理

テスト項目かどうかを判定するプロパティを作成します。
ここでの注意点としては、テスト項目とテスト項目をまとめた大枠・中枠・小枠がある点です。
つまり、テスト項目とそうでないものがあるのです。
そのため、テスト項目かどうかを判定するisTestのプロパティを追加します。判定条件は下記のとおりです。

条件

  • サブアイテム数0個のとき、テスト項目である。
    • isTestの値は1とする。
  • サブアイテム数1個以上のとき、テスト項目ではない。
    • isTestの値は0とする。

実現方法

if(prop("サブアイテム").length() == 0, 1, 0)

実際

NotionによるQA項目のタスク管理:テスト項目の判定処理

テスト通過の判定処理

テスト通過を判定するisPassedプロパティを作成します。通過条件は下記になります。

条件

  • isTest1である
  • 下記のそれぞれの項目のステータスがPASSEDまたはテスト対象外のとき、テスト通過と判定する。テスト通過時は、Pass判定の値は1とする。
    • web(PC/SP)
    • Android(App)
    • iOS(App)
  • 一つでも通過していない場合、テスト通過はfalseとする。isPassedの値は0とする。

実装

if(
	and(
		contains(["PASSED", "テスト対象外"], prop("iOS")), 
		contains(["PASSED", "テスト対象外"], prop("Android")),
		contains(["PASSED", "テスト対象外"], prop("Web(PC)")),
		contains(["PASSED", "テスト対象外"], prop("Web(SP)")),
		prop("isTest項目") == 1
	), 
	1, 
	0)

実際

Notionで構築するQAタスク管理:テスト通過の判定処理

各階層のテスト数の取得

Notionの弱点。

  • 1階層目の合計を出すことができるが、サブアイテムを数値に含めてくれない。
  • プロパティ内で数式を書いているとき、数式内でそのプロパティ自身を呼び出すことができない。

まとめて取得しようとすると、if文が複雑になるため、階層ごとにプロパティを分ける。次のように分けます

プロパティ

  • 2階層目(子)のテスト項目数
  • 3階層目(孫)のテスト項目数
  • 4階層目(ひ孫)のテスト項目数

2階層目

条件

  • サブアイテムisTestの合計

実装

if(
	prop("isTest項目") == 1, 
	0, 
	prop("サブアイテム").map(current.prop("isTest項目")).sum()
)

3階層目

条件

  • サブアイテム2階層のテスト総数の合計

実装

sum(prop("サブアイテム").map(current.prop("2階層のテスト総数")))

4階層目

条件

  • サブアイテム3階層のテスト総数の合計

実装

sum(prop("サブアイテム").map(current.prop("3階層のテスト総数")))

テストの合計数

テスト項目の合計数の式は下記になります。

条件

isTest 
+ 2階層目(子)のテスト項目数 
+ 3階層目(孫)のテスト項目数 
+ 4階層目(ひ孫)のテスト項目数
= テスト項目の合計

1階層目がテスト項目の場合、isTest1です。その配下にサブアイテムはありません。なので合計数は1になります。

isTest: 1
2階層目(子)のテスト項目数: 0
3階層目(孫)のテスト項目数: 0
4階層目(ひ孫)のテスト項目数: 0

テスト項目の合計 = 1

1階層目がテスト項目ではなく、テスト項目をまとめた大枠の場合、下記のようになります。

isTest: 0
2階層目(子)のテスト項目数: 2
3階層目(孫)のテスト項目数: 3
4階層目(ひ孫)のテスト項目数: 5

テスト項目の合計 = 10

このようにプロパティを変数のように扱うことで、テストの合計値を出すことができます。
今回は4階層までしか用意していませんが、5階層目のプロパティを用意してあげれば、集計は可能です。
ただし、Notionが7階層目までしか取得できない仕様があるため、階層には限りがある点を留意してください。

実装

prop("isTest項目") 
+ prop("2階層目(子)のテスト項目数") 
+ prop("3階層目のテスト項目数") 
+ prop("4階層目のテスト項目数")

実際

QAテスト項目の合計数をNotionで管理する方法
※ 階層名の表示は異なります

各階層のテスト通過数の取得

今度はテスト通過済みの数を取得します。
先ほどは各階層ごとにテスト数を取得していましたが、今回はテスト通過済みに絞り込む必要があります。
これも同様に、1階層~4階層ごとに取得します。

2階層目の通過数

まず2階層目は、下記のような判定を行います。

条件

  • isTest1のとき、2階層目の通過数は0個
  • サブアイテムの「isTest1」かつ「Pass判定1」の合計

実装

if(
	prop("isTest項目") == 1,
	0, 
	prop("サブアイテム").map(
		if(
			and(current.prop("isTest項目") == 1, current.prop("PASS判定") == 1),
			1,
			0
		)
	).sum()
)

3階層目の通過数

条件

  • サブアイテム2階層目の通過テスト数の合計

実装

sum(prop("サブアイテム").map(current.prop("2階層の通過テスト数")))

4階層目の通過数

条件

  • サブアイテム3階層目の通過テスト数の合計

実装

sum(prop("サブアイテム").map(current.prop("3階層の通過テスト数")))

通過テストの合計

条件

PASS判定(1 or 0)
+ 2階層の通過テスト数
+ 3階層の通過テスト数
+ 3階層の通過テスト数

実装

prop("PASS判定") 
+ prop("2階層の通過テスト数") 
+ prop("3階層の通過テスト数") 
+ prop("4階層の通過テスト数")

実際

QAテスト項目の通過済みテストの合計数をNotionで管理する方法

テスト進捗率の表示

条件

通過テスト数/テスト総数 * 100

実装

round(prop("通過テスト数") / prop("総数") * 100)

実際

サブアイテムの集約して進捗を表示する

エピックとユーザーストーリー単位でテスト項目を管理する

リレーションにエピックとユーザーストーリーを追加し、エピックのページでテスト項目のDBを読み込めば、下記のようになります。

これにより、エピック単位の仕様に基づいてテスト項目の追加が可能になります。
テスト項目ごとにユーザーストーリーに紐づけているので、このユーザーストーリーが完了後にどこまでテストが可能かも把握できます。

最後に

いかがだったでしょうか?
Notionだけど、言語のように自由に扱えることがよくわかったのではないでしょうか?
このようにNotionの使い方を利用していくと、作りたいものが自由に作れるので楽しいですよ。
組織運営の改善に大きく役立つので、Notionにスクラム開発やQA管理なども移行してみてはいかがでしょうか?

今後
他にもNotion周りも発信していくので、よければフォローしてください😄
https://twitter.com/gyu_outputs

Discussion