はじめに
2024/5/31(金)に仙台市戦災復興記念館がJaSST'24 Tohokuが開催されました。
JaSST東北実行委員会は「同値分割法と境界値分析」と「クラシフィケーションツリー技法」のワークショップを実施しました。
わたしは「クラシフィケーションツリー技法」のワークチームに属して活動しました。ここでは、ワークショップで工夫した点をまとめたいと思います。
当日の資料はレポートページから参照してください。
jasst.jp
![](https://cdn-ak.f.st-hatena.com/images/fotolife/t/toshimana/20240531/20240531095048.jpg)
クラシフィケーションツリー技法の情報元
今回は国際規格「ISO/IEC/IEEE 29119-4:2021 システム及びソフトウェア工学-ソフトウェア試験-第4部:試験技法*1」でクラシフィケーションツリー技法の引用元として挙げられている論文「Classification Trees for Partition Testing*2」に基づいてワークを作成しています。
クラシフィケーションツリー技法は技法説明の資料が少なく、用語や作成手順の定義が分かりませんでした。そのため、できる限り信頼できる情報元を見つけて、それを頼りに資料を作りました。クラシフィケーションツリー技法はISO29119以外の定義(使われ方)も多いです。技法の定義にこだわるよりも、適切にテスト設計できることを優先する方が望ましいと考えます。JaSST'24 Tohokuで説明した内容とは異なるクラシフィケーションツリー技法があったとしても、柔軟に対応いただければ幸いです。
構成の工夫
クラシフィケーションツリー技法のワークショップは以下の4項目で構成しました。参加者の方々には3-4人でグループになり、ワークを実施してもらいました。普段のワークショップではあまり実施しない「作り方の説明(チュートリアル)」「練習問題2(仕様変更問題)」について詳しく説明します。
- 技法の説明
- 作り方の説明(チュートリアル)
- 練習問題1(新規開発問題)
- 練習問題2(仕様変更問題)
![](https://cdn-ak.f.st-hatena.com/images/fotolife/t/toshimana/20240608/20240608081437.png)
チュートリアル
今回はクラシフィケーション技法の使い方の説明を、簡単なワークとともに実施しました。クラシフィケーションツリー技法は理解することが多く、説明を聞いただけではクラシフィケーション技法を扱えずに練習問題をうまく解けないことが予見されました。
多くの参加者にとってクラシフィケーションツリー技法は初めて学ぶ・扱う技法です。そのため、ワークショップの練習問題を解くときに以下を行う必要があります。
- ワーク道具の使い方の把握
- 技法ルールの理解
- 技法を用いた情報の整理
これらを同時に考えるため、頭が処理しきれず混乱したり、うまくいかなかったときに何が問題なのかを理解できないことが起こります。これは練習問題の時間配分を増やしても解決しない問題だと捉えました。
学んだものを実務で使ってもらうために、ワークショップの練習問題では実務に近い思考をしてもらいたいです。そのため、練習問題の時間では「技法を用いた情報の整理」に参加者の思考を割いてほしいと考えています。
その解決策として、今回は練習問題の前にチュートリアルを行い、参加者が「ワーク道具の使い方の把握」や「技法ルールの理解」に注力できる時間を作りました。事前にチュートリアルを行うことで、練習問題では参加者は「技法を用いた情報の整理」に集中できるようにしました。
ステップと参加者に期待する思考の割合を以下の表に示します。
◎:特に注力してほしい 〇:注力してほしい △:できれば注力してほしくない
チュートリアル | 練習問題 | |
ワーク道具の使い方の把握 | ◎ | △ |
技法ルールの理解 | 〇 | 〇 |
技法を用いた情報の整理 | △ | ◎ |
仕様変更問題
練習問題を2種類用意していますが、1問目は出された仕様に基づいてクラシフィケーションツリー技法でテストケースを検討するもので、2問目は1問目の仕様に変更が入った場合のテストケースを検討するものとしています。
![](https://cdn-ak.f.st-hatena.com/images/fotolife/t/toshimana/20240608/20240608155456.png)
![](https://cdn-ak.f.st-hatena.com/images/fotolife/t/toshimana/20240608/20240608155516.png)
ワークショップで学んだ内容を参加者が自身の現場で活かすために、練習問題は現場に近い派生開発のネタを入れたい、という意見が実行委員の中*3で出ていました。多くの現場では新規開発よりも派生開発の方が多いため、練習問題も派生開発を想定したものを用意しました。
参加者の感想では、仕様変更問題のときに自分たちの経験に基づく意見交換を行った、という話*4*5もいただいています。実務に近い感覚で練習問題に取り組んでいただけたのかな、と受け取っています。
ワーク説明の工夫
クラシフィケーションツリー技法は複雑なため、限られた時間で理解してもらうための工夫をいくつか用意しました。
用語の書き方
クラシフィケーションツリー技法の重要な用語として、クラシフィケーションとクラスがあります。ワークショップではクラシフィケーションをCLN、クラスはそのままクラスという書き方で使用しました。
![](https://cdn-ak.f.st-hatena.com/images/fotolife/t/toshimana/20240608/20240608210215.png)
書き方を決めるにあたり、いくつか紆余曲折がありました。クラシフィケーションは頻繁に出てくる割に文字数が多いため、スライドの文字数が増えて見る負担が大きくなります。また、クラシフィケーションをCLN、クラスをCLSのようにアルファベット3文字の略称に置き換える案もありました。しかし、CLNとCLSはCLが共通のため、スライドに出てきたときにパッと見で区別がつきませんでした。最終的に、クラシフィケーションをCLN、クラスはそのまま使用して、文字数を減らして区別がつきやすい折衷案に落ち着きました。
クラシフィケーションの書き方 | クラスの書き方 | 説明 |
クラシフィケーション | クラス | クラシフィケーションの文字数が多すぎる |
CLN | CLS | アルファベット3文字の略称。文字数は少ないが、パッと見の区別がつきにくい |
CLN | クラス | 【採用】文字数が少なく、区別がつけやすい |
また、CLNとクラスは強調のため着色しています。ワークで用いる付箋の色と合わせています。*6
テストしたいこと
クラシフィケーションツリー技法によるテストケースの作成手順は大きく以下の3ステップになります。
- クラシフィケーションツリーを作る
- 組合せテーブルを作る
- テストデータと期待結果を定める
今回のワークショップでは、作成の前準備として「テストしたいことを決める」ステップを追加しています。
![](https://cdn-ak.f.st-hatena.com/images/fotolife/t/toshimana/20240609/20240609073039.png)
![](https://cdn-ak.f.st-hatena.com/images/fotolife/t/toshimana/20240609/20240609072853.png)
実務でクラシフィケーションツリー技法を使うにあたり、いつ、どうやって技法を適用できるかを判断するにも経験が必要になります。技法を適用する前にどのような整理をすると良いか、というのはそれだけでワークショップが組めるほど大きなテーマです。クラシフィケーションツリー技法のワークショップでは、テストで確認したいことをいくつか挙げて、「テストで確認したいことを挙げるステップが必要」であることを参加者に察してもらうようにしています。
ステップバイステップ(スライドごと)
クラシフィケーションツリー技法の作り方をスライドに記載しましたが、定義が書かれていても実際の作り方に結びつかないことが想定されました。そのため、説明の定義と例のクラシフィケーションツリーや組合せテーブルがどのように対応づいているかを、1手ずつ説明しました。定義の文章だけではイメージが湧きにくいことが軽減されることを期待しています。*7
![](https://cdn-ak.f.st-hatena.com/images/fotolife/t/toshimana/20240609/20240609083551.png)
![](https://cdn-ak.f.st-hatena.com/images/fotolife/t/toshimana/20240609/20240609083523.png)
ステップバイステップ(手順ごと)
ワークショップではクラシフィケーションツリー技法の作成手順を4ステップで説明しています。チュートリアルでは、それぞれのステップごとにワークを挟んでステップの内容を理解できるようにしました。クラシフィケーションツリー技法で用いるクラシフィケーションツリーや組合せテーブルは、初めて学ぶには複雑な作成手順になります。技法の説明はチュートリアル前に実施済みなので、チュートリアルではステップをひとつひとつ着実に学んでもらうようにしています。
![](https://cdn-ak.f.st-hatena.com/images/fotolife/t/toshimana/20240609/20240609084838.png)
今回のワークショップでは、ワーク時間で作成手順を振り返れない構成にもかかわらず、私の知る限り手順に関する確認は特に受けませんでした。グループワークの参加者内でクラシフィケーションツリー技法の手順を補完できる状態にあったのだと思います。
NGケース
作成手順の説明において、NGケースは図を付けて少し詳しく説明しました。技法の説明は汎用性を持たせるため、抽象度が高く説明されることが多いです。そのため、説明を聞いてもうまくイメージできないことがあります。対して、NGケースは具体的に示しやすいため、明瞭にイメージしやすいです。「しなければならない」はうまくいっているかの判断が難しいですが、「してはいけない」は判断しやすいです。
![](https://cdn-ak.f.st-hatena.com/images/fotolife/t/toshimana/20240609/20240609085923.png)
今回のワークショップでは、説明したNGケースを実施した人は見られませんでした。適度な量のNGケースを説明することは、技法をうまく扱うことを促進できるのだろう、と思いました。
例のトレース
チュートリアル内のワークは、事前に例を用いて説明した内容を、例を見ずになぞってもらうようにしました。これは、参加者に「ワーク道具の使い方の把握」や「技法ルールの理解」に注力してもらうことが狙いです。
![](https://cdn-ak.f.st-hatena.com/images/fotolife/t/toshimana/20240609/20240609091347.png)
![](https://cdn-ak.f.st-hatena.com/images/fotolife/t/toshimana/20240609/20240609091201.png)
チュートリアルのやり方として「完成形の写経」もしくは「あたらしい問題を解く」ことが挙がります。「完成形の写経」は正解を容易に確認できるため、書き写すだけ意識が向いてしまいます。「ワーク道具の使い方の把握」は達成できますが、「技法ルールの理解」を達成しなくても完成形が作れることが想定されます。また、「あたらしい問題を解く」は「ワーク道具の使い方の把握」や「技法ルールの理解」だけでなく「技法を用いた情報の整理」にも意識を割く必要があります。そのため、考えることが複雑になっていずれもうまく達成できないことが予見されました。
チュートリアル後の練習問題では参加者に「技法を用いた情報の整理」に十分意識を割いてもらいたいです。チュートリアルでは「技法を用いた情報の整理」はできるだけ抑えめにして「ワーク道具の使い方の把握」や「技法ルールの理解」に意識を割いてもらいたいと考えました。
ワークショップのチュートリアルでは「例のトレース」を採用しました。説明で使った例と同じ内容を、例を隠した状態で作ってもらいます。仕様は印刷した仕様書で見ることができますが、そこからクラシフィケーションツリーや組合せテーブルはグループで考えて作る必要があります。ワーク時間では完成形は見れませんが、事前の説明で完成形は見ているので、完成形のイメージを持ちつつクラシフィケーションツリーや組合せテーブルを作ってもらいました。「ワーク道具の使い方の把握」や「技法ルールの理解」を達成しつつ、「技法を用いた情報の整理」に意識が向きにくいワークにできた、と思っています。
チュートリアルのやり方と参加者が習得できる期待値を以下の表に示します。
〇:習得できる、△:すこし習得できる、×:習得が難しい
完成形の写経 | あたらしい問題を解く | 例のトレース | |
ワーク道具の使い方の把握 | 〇 | △ | 〇 |
技法ルールの理解 | × | △ | 〇 |
技法を用いた情報の整理 | × | △ | △ |
練習問題で、参加者が「ワーク道具の使い方の把握」や「技法ルールの理解」に躓くことがほとんどなく、「技法を用いた情報の整理」の議論が盛り上がっていました。チュートリアルを工夫したことが報われたのだと自分の中ではとらえています。
ワーク道具の工夫
ワークショップで使用する道具も試行錯誤しています。
マス目模造紙
格子状に薄い線が引かれている模造紙です。
組合せテーブルのワークでは格子状に線を引く機会がたくさんあります。線がまっすぐ引けなかったり線同士の間隔が合わなかったりと、ワークの内容でないところに集中力が割かれることを避けるため、ペンで直線を引く補助としてマス目模造紙を採用しました。
あるワークグループがワーク時間ギリギリのため、組合せテーブルの格子線を引かずに、マス目模造紙のマス目に合わせて組み合わせを検討していました。ワークでは組み合わせの検討に時間を割いてほしかったので、運営としてとてもありがたかったです。
ロール付箋
ロール状の紙付箋です。組合せテーブルで格子の交点に印を置くために使用しました。
格子の交点に印を置く道具の候補として、丸シールが挙げられます。しかし、丸シールは粘着力が強いため、ワークのように貼って剝がしてを繰り返す使用方法には向いていませんでした。付箋は粘着力が弱いため、ワーク用に貼って剥がしてもらう目的に適していました。今回はロール付箋を適切なサイズに手で切って使ってもらいました。紙なので、道具を使わなくても簡単に切れるのもお手軽です。
ロール付箋の使われ方としては馴染みがない方法ですが、参加者はかなり早く順応してくださったと思います。
おわりに
クラシフィケーションツリー技法は思った以上に難しく、テーマとして決めてからワークを作るまでいろいろな試行錯誤を行いました。当日のワークショップでは運営の至らぬ点もありましたが、参加者のモチベーションがとても高くて活発な意見交換も行われており、とても良い時間だったと思います。
当日はX(旧Twitter)でハッシュタグ #jassttohoku のついた投稿を表示しており、togetterにまとめています。感想ブログはまとめに追加しますので、公開いただけるとJaSST東北実行委員は大変喜びます。
謝辞
ワーク内容にご意見をいただいた 井芹久美子さん(@mejiro8000)、井芹洋輝さん(@goyoki)や、ワーク資料をレビューしてくださった秋山さん(@akiyama924)をはじめ、ワークショップのプレ会にも多くの方にご協力いただきました。ご協力いただき、大変ありがとうございます。
*1:ISO/IEC/IEEE 29119-4:2021 システム及びソフトウェア工学-ソフトウェア試験-第4部:試験技法 | 日本規格協会 JSA Group Webdesk
*2:https://onlinelibrary.wiley.com/doi/abs/10.1002/stvr.4370030203
*3:主にume2さんが強く推していました
*4: ワーク良かったなぁ。
最後はワークの答えはたぶんこれでいいけど、お仕事だったらどうする?っていう話をした。リスクも何をリスクにするかとかも。面白かった! #jassttohoku
*5:JaSST東北名物ワークショップを体験して思ったこと #jassttohoku - CAT GETTING OUT OF A BAG
*6:と思って緑付箋を発注したはずなのに、届いたのは青付箋だった。なんで…
*7:スライド数が多くなり、図の修正が必要になると時間がかかって大変でした