いそがしい。最近,仕事が忙しい。ブログを書く暇もない。今回は,ちょっと専門的なことを,面倒なので,あまり説明せずにまくしたてます。てきとーに読み飛ばしてね。
毎日,追い立てられるように仕事させられている。居心地が悪いことはなはだしい。
昼過ぎにチーム全員参加で「スクラム」というショートミーティングをやるようになった。
仕事はタスクという細かい単位にブレークダウンされ,順番にこなしていく。
スクラムでは,昨日からどのタスクが終わり,明日までにどのタスクが終わる予定で,それに向けて障害があるならそれを,報告。と,この3点に絞って,一人1分ぐらいで報告するだけ。
これを全員で回す。5分から10分で終わる。問題があったら,リーダーがその後各メンバーを訪問し,解決策を見つけていく。
そんなわけで,このところ,仕事しながらインターネット見たり,ブログ書いちゃったりは,到底不可能な状態になった。ま,ここには働きに来ていて,それでお金もらってるんで,こうあるべきではあるかもしれない。この2週間ほどを振り返れば,確かに仕事がスピードアップして,充実していると思う。
しかし,ソフト開発というのは,工場ラインと違うのだ。そんなに単純なものではない。今の状態が,その前の状態よりいいと,本当に言い切れるか? 長い目で,品質その他,そして何より「やる気」を考慮したとき,本当に今の方がいいのか?まあ,この先どうなるか。お楽しみだ。
さて,そんな中,今日は久々に鬱憤を晴らす出来事。
もう今日は帰るかと思い始めていたところ,隣の隣にいる同僚のテスター,シルヴィー(仮名,中国系カンボジア人)が,開発リーダーのジェームズ(仮名,根っからのオジー)と話している。
どうやら,シルヴィーが,テストでトラブっているようだ。AppMonitor(仮名)という自社製品で,我々の担当製品の動作を監視してテストしている。パラメタにプログラム名を入れれば,そのプログラムのプロセスをモニターしてくれるのだが,今まで動いていたのに,現在使っているマシンに移ったら,突然動かなくなったという。エラーメッセージによると,AppMonitorが我々の被テストプログラムを見つけられないらしい。
ジェームズ:「見つからないの?うーん,見つからないって,まさか,うちのプログラムが動いてないってことはない?」
パタパタとキーをたたいて,シルヴィーが首を振る。
シルヴィー:「ううん,ちゃんと動いてるよ。なんで,このマシンだけだめなんだろう?」
ジェームズ:「さあね,俺が書いたプログラムじゃないから,わからん。テスターだろ?QAのスキルを駆使して解き明かしてよ。」
私は,そのときそこを通りかかった。
シルヴィーがコマンドをたたいている,そのスクリーンを覗いて,状況を説明してもらった。
説明を聞きながら,スクリーンにあるシルヴィーがたたいたコマンドとその出力を見ているうちに,私の頭に,ある仮説がひらめいた。
「おしりが切れてるんじゃないの?」(痔の話じゃないよ)
プログラマーはプログラムの中身を知っている。自分たちで書いたからだ。
しかし,我々テスターはちがう。プログラムは書かない。問題を見つけるのがお仕事である。
問題(バグ)を見つけて,それをバグトレースシステムに入力すれば,我々のお仕事はおしまいである。
しかし,最終目的は,製品の品質を高めることなのである。だから,さらに踏み込んで,どうしてそんな問題が起きているのか,原因は何なのか?プログラマと一緒に考えたり,状況証拠をそろえたりする。
その過程で繰り返されるのが,仮説と証明である。状況から,中で何が起きているのか,考え,あてはまる仮説を立てる。そして,それが正しいなら,ここをこうすれば,こうなるはずだという,条件と結果を予想し,実際に試してみる。結果が予想と違ったら,別の仮説を立てる。これの繰り返しで,原因を特定できることがある。逆にいえば,そういう仮説が立てられるかどうか,これがテスターの大事な資質のひとつなのだ。
ま,今回の場合,他チームの製品なので,ここで原因究明しても,あんまり役には立たないんだけど,「QAのスキルで解き明かせ」と言われたら,「やったろうじぇねーかよ」となるのが人情である。
私は上記の仮説を裏付けるテストをシルヴィーに指示した。
結果は,
予想どおりだった。一発で原因が分かった。
試したことと,結果は,次のとおりだ。
プロセス名をフルネームでパラメタに入れると見つからない。(というのが,今までやっていたこと)
しかしわざと,最後の何文字かを省略してパラメタに入れると,見つかる。
おそらくAppMonitorは内部にバッファを持っていて,プログラム名をシステムから取り出し,そのバッファに展開して,これがパラメタに指定されたモニターしたいプログラムかどうかを判定しているのだろう。
そのバッファが短かすぎ,システムから得たプログラム名が途中で切れていたのである。おそらく,プログラム名はUNIXのpsというプロセス表示コマンドを内部で発行して取り出している。そして,プログラム名がフルパスになっており,このマシンではたまたまインストールしたディレクトリの階層が深すぎて,フルパス長が長くなりすぎ,バッファをはみ出して,おしりが切れたのだろう。
さらに,発見されて,モニター結果に出てきたプロセス名。見事に最後の1文字が切れて出力された。確定である。
この快感があるから,テスターはやめられない。
最初の話につながるのだが,こういう「ひらめき」(まあ,たいしたことではないんですが)は,追い立てられている状況では生まれない。
今日は帰るか!と思って,ふっと息を抜いた瞬間だったからこその,ひらめきなのである。
人間が作り出す,ソフト開発の難しさがそこにある。
というわけで,明日のパフォーマンスに響くといけないので,もう寝よう。