CAT GETTING OUT OF A BAG

What the tester is thinking.

若手開発者(プログラマー)と読書会をはじめました

5月に社内の若手開発者(プログラマー)から「テスト設計技法を学びたい。できれば体系的に」と相談されたのをきっかけに、書籍『ソフトウェアテスト技法ドリル』の読書会をはじめました。この記事では読書会をはじめるときに決めたこと(伝えたこと)と、2か月やってみて思ったことをメモしておきます。あと『ソフトウェアテストの練習帳』を使ってみたのでそれの感想も!

ソフトウェアテスト技法ドリル―テスト設計の考え方と実際

ソフトウェアテスト技法ドリル―テスト設計の考え方と実際

 

読書会をはじめるときに決めたこと(伝えたこと)

本を読むことを主目的としない

単に本に書いてあることを音読し、わたしがたまに補足して、巻末の演習問題を解くのではなく、テスト設計技法を学びながら実際の開発(テストを含む)について考えたり、話し合う場にしたいと思いました。このやり方だと1冊読み終えるのに半年はかかるのと、読書会がうまくいったらどうなるか?のイメージ(=普段の開発の中で読書会で話したことを思い出し何かのヒントになる)を伝えました。

担当制にしない

章ごとに担当を決めて担当になった人が当日講師役になって進めていくスタイルは、講師になった人が事前に予習しなければならず大変なのでやめました。…というのは建前で、今回の状況だとどうみてもお前が講師だろ!て感じだったのでそれを回避しました。

宿題にはしない

宿題があると時間的にも気持ち的にも負担になりますよね。例えば、章の最後に演習問題が2問あるんですけど1問だけみんなでやって、もう1問は次回までに各自やっておきましょう、ということはしない。

無意識だったけど「しないこと」を決めていたのだなあ。

読書会を2か月やってみて

週1回開催(1時間/回)で8回実施しました。この本は第6章まであるのですが、現在第2章まで読み終えたところです。

  • そうだろうなと思っていたけど、若手開発者(以降、Aさん)も普段の開発の中でテスト技法(同値分割や境界値分析)を使っている
  • Aさんも「自分が普段やっていることに名前がついている」ことが分かってきたみたい
  • 本を読むことで「いつこの技法を使うのか」「どのように考えていくのか、またそれでよいとする理由」を自分の頭の中に取り込むことができる。これまでなんとなくやっていたことが(これでいいんだな)と思えるようになるのは、精神衛生上とても良いことだと思う
  • 区切りのいいところまで音読し、自由にディスカッションしている*1
  • 気になった文章を取り出し「これはどういうことを言っているのか」「この技法の考え方は実際の開発の中だとどこで使われているのか」そこからさらに設計、実装方法にブレークダウンしたり、過去に見た(聞いた)不具合などを話している
  • 結論を出したり章ごとにまとめるようなことはしていない(その場で話したことが全て)
  • この本は技法だけでなく「ソフトウェアテストの7原則」「248日問題」など、知っておいてもよいことがさらっと書かれている。Aさんに聞いたら「知らない」というのでその場で簡単に紹介している*2
  • Aさんとは開発してる製品が全く違うので、同じドメイン(医療機器)であっても原理的、構造的な違いから、似たような機能であっても気にするところが変わってくるのが面白い(自分の思考を広げるネタとして使えるので、こういう話を聞くのが好きです)
  • 1時間やるとかなり疲れるけど、週1回なので続けられそう

ソフトウェアテストの練習帳』の感想

ソフトウェアテストの練習帳』はソフトウェアシンポジウム 2019 東北に参加した際にお土産として頂いたものです。一般の書籍ではないので、以降の感想は練習帳を持っている方とこの練習帳の製作に尽力された方々向けになります。

ソフトウェアテスト技法ドリル』の第2章まで読み終えると、この練習帳の同値分割と境界値分析(11問)が解けるようになります。さっそくやってみました!

  • 1時間で2問解きました(1問目:40分、2問目:20分)
  • 問題を解く上で考えなくてよいこと(制約)が書かれているので、考える範囲が適度にしぼられ、その結果、対象にしている技法(今回は同値分割と境界値分析)に注目して解くことができました
  • 問題が文章だけ(構成図や画面例がない)というもの同じで、書いてないことで有効な制約になっていると思いました*3
  • あえて制約をつけないで問題を解いてみるという使い方もできそう
  • 問題を解いてるときに解答例、解説が見えない(次のページになっている)のが良いです(自分で見えないようにするのは案外ストレスがかかるものです)
  • 問題の横に書き込めるように?たっぷり余白があるのですが、何度も使いたいので練習帳には書き込まずホワイトボードを使いました
  • この問題に対する答えはこうだろうというよりは、自分ならどんなテストをしてみたいか、なぜそれをしたいのかを自分の言葉で話すようにしています
  • 自分で出した答えと解答例を比べて同じだと、やはり嬉しい気持ちになりますね
  • 1問目を解いたときに「代表値」について読書会ではそれほど触れなかったのに気づくことができました。そこで「都道府県を選ぶときの代表値」を例題にしてディスカッションしました
  • 解答例だけでなく丁寧な解説もついているので、その答えにたどり着くまでの過程を自分の思考と照らし合わせて確認することができるのがよいですね
  • 1問目と2問目は同じような解説が載っています。対象が同値分割と境界値分析なのでそうなるんですけど、やりようによってはわざと見せ方(解き方)を変えることも可能だと思ったのですが*4、おそらく同じような解説の方が読み手が混乱せず、安心して問題を解くことができるので、正しいことを同じように繰り返すのは大事なことなんだと思い直しました*5
  • 問題を解いていくことで「同値分割と境界値分析とはこういうもの」をより実感することができますね
  • Aさんは本で学んだ通りのお手本になるような解答をしたあと、さらに実装方法をホワイトボードに書きながら、自分ならこの対象としている値の元になるデータはfloat型を使うかもしれない、そうなると値を求める時に差分をとって比較するようなことをすると思う。なぜ差分をとるのかは前に値をそのまま比較して失敗した(丸め誤差と桁落ち)ことがあるので…のような話をしてくれました*6
  • このような話が出てくるきっかけになる練習帳の問題、素晴らしい!
  • 老眼の人にも優しい組版だと思いました(フォントや文字の大きさや行間など)

 

同値分割と境界値分析の問題はあと9問あるので、次回の読書会からしばらく練習帳を使うことになると思います。この練習帳を作ってくださった方々のお顔を思い浮かべ感謝するとともに、これからも楽しみながら解いていきたいと思います。ありがとうございました。*7

note.mu

*1:読書会ではなんでも話してほしいので、率先してわたしがなんでも話すようにしている。Aさんもなんでも話してくれるようになってきた。自分の仕事で解決できなくて困っていることとか。

*2:その後、Aさんは自分でボーイング787の248日問題、497日問題、36時間問題などを調べていた。

*3:うっかり画面例を書いたらいろいろ気になってしまい大変なことになった。

*4:思ったというか期待しちゃった…!JaSST Tohoku 実行委員のみなさんに対する期待値がものすごく高いんだわ。

*5:3問目以降の問題は見ないでこれを書いてます。

*6:こういう話が好きです。

*7:練習帳の表紙にもなっている仙台『蔵の庄』のごぼう天、美味しかったのでまた食べたいなあ。