Dreamland-夢と想いと小さな工夫

自分の中にある想いだったり日々の工夫だったりをすこしずつ書いていこうかなぁって思ってます。

仕様記述やUIにとらわれずにテストを考えるために使っている図

この記事は、ソフトウェアテストの小ネタ Advent Calendar 2019 の参加投稿です。
https://qiita.com/advent-calendar/2019/software-testing-koneta

昨日は、全部テストをやってって言われてまともにやったら死んじゃうから早い段階でちゃんと開発者にフィードバックしながら必要なテストを考えましょうという話(と受け取りましたがそういうつもりじゃなかったらすみません;)。大事ですね。今日のこの記事は、もうすこし視野を広げて仕様にとらわれずに考えるための小さな工夫です。

(今年最初の投稿・・・やばいです。超絶やばい。来年はちゃんとアウトプットしよう。)

テストを考えるときに、たいていの人は仕様書から考えると思うんです。例えば3色ボールペンを使って読み解くところから始めるとか、そういうケースは多いんじゃないかな?最近は印刷制限がある職場も多いから、3色ボールペンが使えなくて困っている人もいるかもしれないですね。
私は普段どうしているかというと、たいてい読みながらテキストにいろいろ書いていきます。自分なりの解釈とか、気づいたこととか、感じたことととか・・・ひとりで考えるときはこれで十分だったりします。頭の中でイメージできちゃうから。
だけど誰かに見せても文章だと伝わりにくいなぁと感じています。(そもそも私は話し言葉で書くから「人様にお見せできません;」となるんですけどね・・・笑)

図にすることで、興味を持ってもらいやすくなります。状態遷移図を作成したり、ユースケース図を作成したり、シーケンス図を作成したり・・・必要だと思ったら作成しています。

だけど、慣れていない人には一般的な図はちょっとハードルが高い。うん、高いんですよ・・・図のお作法を気にしちゃうこともあって、これでいいのかな?っていう雑念が入っちゃう。考えたいのはテストなんですよ。なのに違うことが気になっちゃう。
・・・もったいなーい;もっと気軽に図を描きたい!

私はネットワークサービスのテストをしてきたので、いつも「サーバーとクライアントとネットワーク」を意識していましたし、テスト環境も自分で構築する必要があったので、通信のシーケンス図以外に環境図をつくることがありました。その結果、人に説明するときに、登場するモノを挙げて図にすることが何度かありました。このシステムってどんな環境なんだっけ?を把握するためなので、即興で描くときは登場するモノを雑に□で描いちゃう。伝わりゃいいんです伝われば。
こんな感じで図を描いて、そこに、観点を挙げていっちゃうの。これはCacooできれいに描いたけれど、考えるときはノートに描くし、みんなで考えるときはホワイトボードや模造紙に描く。実際はかなーり雑に描く!f:id:shiozi:20191215011154p:plain
イメージできることが目的なので、雑で構わないし、
いろいろメモしたり付箋を貼ったりできるようにレイアウトするのがおすすめです。

最初はクライアントとサーバーとネットワークだけのシンプルなものでしたが、そのうち、データベースも考慮したほうがよいね、クライアントもUIと内部を考慮したほうがよいね、マイクロサービスだとサーバー複数あるね、自社のサーバーだけでなく、外部とも連携するよね、デバイスもあるよね、IoT機器もあるよね・・・そして人の思考も気にしたほうがよいね・・・ということで図もだんだんと登場するモノが増えていきました。

もう一つ、こちらは入出力と処理などの仕組みを把握してテストを考えるときに使います。数年前に勉強会でファイルシステムのテストを考えたときのやつ。

f:id:shiozi:20191215012107j:plain
ちょっと進化させたテンプレート。(ね、雑でしょ。笑)

f:id:shiozi:20191215012153j:plain


私が関わってきたテスターの方々は、真っ先に仕様書とUIに目がいってしまい、システムの全体像をイメージしないでテストを考えるケースが多いんです。なので、テスト設計のサポートをする機会があると、まず全体像をイメージさせるためにこの図を使うことがあります。この図を使うと、ちゃんと振る舞いを考慮するようになって、仕様書の枠にとらわれずに必要なことが出せるんですよね・・・

ドキュメントから観点だすよりもイメージしやすいので、いいなーと思ったらぜひ試してみてください。