ソフトウェアテストの近未来を話そう(後編)~テストプロセスには魂が必要だ JaSST'12 Tokyo
これからのソフトウェアテストの課題とは何か、どのように進化していくのか? そのために必要なこととは何でしょうか。
先週、1月25日と26日に都内で行われたソフトウェアテストに関するシンポジウム「ソフトウェアテストシンポジウム JaSST'12 Tokyo」。クロージングセッションでは、ソフトウェアテストの近未来はどうなるのか? というテーマでディスカッションが行われ、ソフトウェアテストのこれからがパネリストの意見を通して浮かび上がってきました。
(この記事は「ソフトウェアテストの近未来を話そう(前編)~テストと開発の融合が必要 JaSST'12 Tokyo」の続きです)
デベロッパーとテスターに同じ給料を払うべき
西氏 よく、日本と欧米の違いとして、欧米では仕事を細分化して職種を作り、その中でプロフェッショナリズムを高めていると聞きます。ところが今、Rollisonさんはデベロッパーとテスターの仕事はもっと融合しなければいけないんだと言いました。私がよく聞く、イマイチなものしか作れない欧米人の話とは違うことを言っていますね(笑)。
Rollison氏 欧米ではデベロッパーとテスターが分かれている、というのはある意味正しいです。けれども、多くの会社では、それはもう古い考えだとして改める動きもあります。
そのとき大事なのは経営陣の考え方で、デベロッパーとテスターに同じ給料を払わないと、結局分かれがちになってしまいます。
マイクロソフトでは開発プロセスがイテラティブで、テスターはプロセスを通じてデベロッパーに密接に関与します。グーグルにいる友人の話では、グーグルはテスターがデベロッパーより権限を持っていて、コードを書く前にユニットテストなどを指示する立場にあり、デベロッパーに関与しているそうです。
西氏 アジャイル開発を考えると、デベロッパーがテストを書きながら開発する「テスト駆動開発」(Test Driven Development, TDD)と、テスターによるテストがあります。この2つはまったく違うものだと言う人がいます。Rollisonさんはどう思いますか?
Rollison氏 テストにはレベルがあると思います。TDDやユニットテストはデベロッパーレベルだと思います。統合テストがテスターのレベルではないでしょうか。
ただ、テストのアプローチは変わってきています。例えば、グーグルは本番環境でテストをすることがますます増えてきて、利用者のフィードバックに対応するというやり方で、非常に低コストにテストをしています。一方でマイクロソフトは、製品を出荷するときにバグが見つかった場合、平均で12万5000ドルの対応コストがかかります。
西 すると品質のためには、デベロッパー、テスター、顧客の3者は協調する必要があると?
Rollison氏 そうです。
プロセスに魂を入れるとはどういうことか?
司会 日本は品質にうるさい、アメリカやインドはテストより新規開発が好き、といった国ごとの特徴があるとき、テストプロセスも国ごとに変えていくべきものなのでしょうか?
山浦氏 国ごとに変えるべきかどうか、というよりも、テストプロセスを理解してやっているところがまだあまりないと思います。CMMIのレベル5をたくさんとっているのはインドですが、インドに発注するとパッと見はいいのに中身はボロボロのものがよくあります。レベル5なのになんで、と思いますよね。
プロセスは、(どの国であっても)そこに魂(たましい)を入れないとうまくいかないと思います。
西 今の発言で、プロセスをちゃんとやる、というのは分かります。しかし研究者としてお伺いしたいのは、「魂を入れる」という、魂って何でしょうか。
Rollison氏 プロセスには魂がないといけない、ということですね? たしかに、規律の厳しいところにいると魂というものが抜けてしまうんですね。
Windows 95の開発当時のことを思い出すと、チームの誰もが製品にエキサイトしていました。もちろん守るべきプロセスやスケジュールがありましたが、そこには誰もが同じビジョンを持って高品質の製品を出そうと熱意がありました。それがスピリット、魂ではないでしょうか。
山浦 例えば「節電しよう」という目標があったとき、どんなプロセスがあるかと考えると、エスカレータに乗るより歩きましょうとか、明かりをこまめに消しましょうとか、いろいろ方法を細かく書き出すのは1つの方法です。でも細かく書きすぎると、なんだかよく分からなくなりますよね。
何のためにしているのか、細かく書かないと分からないのか、そうではなく、一を聞いて十が分かるというのがエンジニアリングの魂だと思っています。
単に言われたことをやるのではなく、その目的、心を理解していなければいけないでしょう。
西 要するに、目的意識や意味をきちんと分からなければならないと。その答えは100点満点だと思います。卒業させてあげます(笑)
テスト技術はどのように進化するのか?
司会 テスト技術、技法といったものはたくさんありますが、基本的なテクニックは山浦さんのさきほどの講演のように、根幹は変わっていないのかもしれません。今後10年を見たとき、これらはどのように進化していくとお考えでしょうか。
山浦氏 私は悲観的に考えていて、同値分割と境界値分析、エラー推測、この3つが基本として変わることはないと考えています。ただプロセスとしては少しずつ発展するし、経験値も上がって少しは改善されるとは思います。
西氏 大規模な開発だとテスト項目が1000万件とかあってもおかしくなくて、それをエクセルで管理していくのはもう無理。テストそのものを「もの作り」だと考えて、要求設計やアーキテクチャも考える。テストを作るための開発プロセスも考える。
海外の証券取引所では、DSL(Domain Specific Language、目的特化型言語)を使ってソフトウェアを自動生成するようなところもあります。テストの分野でも、ソフトウェアエンジニアリングで起きている進化がすべて起こると思っています。
「間違えないように作る」のが重要になってくると、そのときに考えなくてはいけないのは、バグのパターンを分析して、その分析を活用すること。それをさらに進めていくと、なぜ人間は間違えるんだろう、という疑問になる。そのことにソフトウェアエンジニアリングは近づいていかなくてはならなくてはならないでしょう。認知科学の分野であり、そして最初から間違えない開発をする、それが1つの解です。
そして、走りながらソフトウェアを作っていくには、テストは完全自動化していかなくてはなりません。仕様書変更があれば、そこからテストも自動的に生成されて自動実行されなければならない、と、ここまでは誰もが考えるところだと思います。
グーグルでは自動テストをすると、この辺にバグが多いとか、この辺がヤバいとか、そういうのを検出して自動的にテストの戦略を変えるそうです。自動化の仕方、モデルの作り方を毎日変えて、デベロッパーのクセとかそういうのを含めて探索テストをしていく。そこまで進んでいます。
ソーシャルネットワークや老人介護のシステムのテストを考えれば、これからは人間の感覚や価値観をテストに取り入れていく、そのために生活を豊かにする指標とは何か、といったことも考えなければいけないと思います。
ソフトウェアテストシンポジウム JaSST'12 Tokyo
- マイクロソフトの責任者が語る「われわれはどのようにソフトウェアをテストしているか?」 JaSST'12 Tokyo
- マイクロソフトでは「開発プロセスのすべてにテスターが関与している」 JaSST'12 Tokyo
- みんなはどんなテスト技法を使っているの? JaSST'12 Tokyo
- ソフトウェアテストの30年前と30年後(前編)~テストの根幹は30年前に書かれた JaSST'12 Tokyo
- ソフトウェアテストの30年前と30年後(後編)~30年後のテスト技術、期待を込めた予想 JaSST'12 Tokyo
- ソフトウェアテストの近未来を話そう(前編)~テストと開発の融合が必要 JaSST'12 Tokyo
- ソフトウェアテストの近未来を話そう(後編)~テストプロセスには魂が必要だ JaSST'12 Tokyo