「DataSpiderのテスト」dstnインタビュー、アプレッソQAグループ編の第2回目です。今回はさらに「DataSpiderのテスト」ということに突っ込んで話を聞いていきます。(谷平)dstn:今回は「ソフトウェアのテスト」について掘り下げて聞いていこうと思います。一般的なイメージというと、「テスト」というと、開発と比べて単調な作業に見えると思いますが、いかがでしょうか。谷平:ネガティヴにとらえれば、延々と同じ操作を繰り返すといった誰でもできる単調な作業、というイメージがあるかもしれません。いった作業もあるにはありますが、それがメインではありません。ソフトウェアの品質を保つためには、決められた項目だけテストをすれば良いわけではないんですね。プログラムされた内容によって何をすべきか、というのを都度考えていく必要があります。何か問題を見つけた際にはロジカルに問題点と原因を調べなければなりません。それには想像力と論理的思考力が必要です。金:実装者と直接話して、修正の方向性や仕様決めをしたりもします。適切な対応を行ってもらうために、的確に、そして迅速に問題点を伝える必要があります。そこにはコミュニケーション能力も求められますね。コミュニケーション能力。いったさまざまなスキルが必要になるんですね。谷平:あとは批判的思考力も必要ですね。何が正解のテストになるか、というのは状況によって変わり得ますから、「本当にこれで正しいのか?」という自問自答を常に行っておく必要があります。金:最初に決めたことを盲信してしまったことで、リリース前に根本的な問題が発覚したりすることがあるので、その観点を持つことは非常に重要ですね。谷平:さまざまなスキルが求められますが、もちろん、これらのベースになるのは技術的なスキルです。スキルの向上のために、個人での勉強に加えてQAグループでも定期的に勉強会を実施しています。(谷平)dstn:たとえば「何とか法」、といったテスト手法の知識というのも必要ですか?金:もちろんあった方が良いと思います。テスト手法をたくさん知っていても、それを適切なところに当てはめることができないと、意味がないと思っています。谷平:そういう意味では、アプレッソのQAグループでは、「テスト手法」よりも「テスト観点」を重視しています。大切なのは手段よりも目的で、テスト観点が目的、テスト手法は手段、ということですね。テストの観点はどのように決められているのですか?金:まず、テストを行う際に、テストの作業を行う者と別に「テスト責任者」を決めます。これはテストの経験が深い人が担当することにしています。次に、実装者にヒアリングして、何が原因で問題が発生したのか、それに対してどういった修正が行われているのかを確認します。その情報を基にして、テスト責任者の人とペアになってどういった観点をもって検証を行うのかを決めて行きます。「ペアプログラミング」ならぬ「ペアプランニング」ですね(笑)dstn:アプレッソではプログラミングを2人でやる、いわゆる「ペアプログラミング」の手法を採用していますが、テストのプランニングも同様にやっているんですね。谷平:ペアプログラミングもそうですが、2人でやると、1人だと思いつかない視点が出てきます。1人でやるとどうしても観点に偏りが出たり、実装者の情報に引きずられてしまうことがあるので、テスト責任者に一歩引いた立ち位置からアドバイスしてもらうためです。過去事例などから足りない観点はないか、といったような視点でも見ています。(金)dstn:ここまでは一般的なテストの概念についてお聞きしましたが、「DataSpiderのテスト」はこんなことをやっている!ということを具体的に教えていただけますか。大きく分けると2つになります。1つは操作のテスト、もう一つは実行のテストです。テストはコストがとてもかかるので、できるだけ自動化をする方針なんですが、やはりGUIの操作は人の手を使ってやるのがメインです。実行のテストは、完全に自動化しています。金:GUIのテストはちゃんと仕様通りに動くのか、ということと、ユーザビリティに問題ないか、という2つの視点があります。前者は専用のテストツールを使った自動テストに置き換えつつあります。後者はやはり人の目で見る必要がありますね。操作のテストはテスト仕様書を事前に作成して、それに従って検証していく流れです。Servistaのスクリプトで用意していまして、それを流すだけで自動的にデータのアサートなどを行うようにしています。dstn:DataSpiderでDataSpiderのテストを行っているということですか?金:そうなんですよ。Servistaは結局のところプログラムと一緒なので、JavaプログラムのテストをJUnitなどで書くのと発想は同じですね。谷平:この2つのテストをベースにして、リリースの都度追加したり、拡張したりしています。dstn:リリースの度に追加拡張されると、どんどん巨大化していきそうですね。金:そのため、自動化したり、既存のテストと統合したりして、工数が増えないように工夫はしています。谷平:テストの管理は、テストを作るのとはまた別の難しさがあります。ルール通りに作られているかどうか、また各機能でテストの粒度や観点のばらつきがないかなど、定期的に確認する必要があります。その時間と次の新しいテストの時間をどうバランスを取るかは非常に悩ましいです。dstn:確かに、継続して使うものはメンテナンスが重要になりますね。Servistaというミドルウェア製品の特性上、接続対象が非常に多いので、どこまでテストすべきかのラインを引く判断が難しいと思いますが、この点いかがでしょうか?金:確かに組み合わせが膨大になり、すべてを網羅しようと思うと大変です。組み合わせを考えだすと、夜も眠れなくなります(笑)。あと、実際に作業していると段々感覚が麻痺してきて、歯止めがきかなくなるようなこともありますね。谷平:「どこまでテストをするべきか」というのは非常に難しい問題ですが、2つの視点から判断をしています。1つは、品質目標です。品質目標の達成が可能な範囲で検証する、ということです。1つは、コストですね。最終的にはこの2つの要素の天秤で検証範囲を決めています。冷静に分析して、やる・やらないを判断するようにしています。dstn:品質目標は数値か何かで掲げられているのですか?谷平:数値のものと、「これが満たされていなければリリースできない」という項目ベースのものがあります。数値は操作できてしまうという欠点もあり、今はそこまで重要視はしていません。dstn:数値の場合、その値の妥当性を何を持って保証するのか、というのも難しそうですね。金:今は公開されているデータや外部の勉強会などで聞いた情報を参考にしながら、アプレッソ独自のラインを定めていますね。谷平:項目ベースの方には、これまでの経験を踏まえた事象ベースの内容もありますので、かなり具体的になっています。それらの事象が発生しないようにすること、それがテストプランの根幹になります。dstn:確かに、過去発生した問題は絶対に繰り返したくないですね。(谷平)dstn:他にDataSpiderのテストで工夫している点はありますか?谷平:テストからちょっと離れますが、グループ内のコミュニケーションはかなり重視しています。メンバーの席は円を描くように配置されていて、作業に集中できるように外側に向かって座っています。号令がかかったらすぐに後ろ向いてディスカッションできるようにしているんです。金:席の配置は試行錯誤してきましたね。昔メンバーがまだ慣れていなかった頃は教室のようにリーダーとそれ以外のメンバーが向き合うように配置したり、今の逆で円の中心に向かって座るようにしたり...。谷平:心がかけているのはなるべくメンバーが孤独に陥らないことですね。1人で悩む時間には制限をかけて、それ以内に解決しなかったらすぐ相談して、というようなことを言ったりとか。金:やっぱり複数人で長きにわたってやっていく作業なので、雰囲気は大切にしていますね。谷平:明るく楽しくできるのが一番なので、そこはとても気を使っています。dstn:それはとても大切ですね。谷平:仕事は人生において大きなウェイトを占めますから、楽しめないともったいないと思っています。金:「QAの掟」というものが幾つか定められているのですが、そこには「テスト実施がつらいと感じたらすぐにリーダーに言え」というのがあります(笑)。dstn:それはどういう意図ですか?谷平:「文句を言うな、黙ってやれ」と言うのは簡単なんですが、実施がつらく感じるのは人の問題ではなく、テスト設計の問題の場合もあると思うんですよ。今はチームのメンバーも成長しているので、つらいと感じるのであればそのように感じさせるテスト設計に問題があるのかもしれない、という観点でテスト設計を見直すようにしています。テストはそのような人的な要素も含めて考えて作られているんですね。これからのアプレッソQA」に続きます。コミュニティを開くコメントログインしてコメントを残してください。