はじめに
ICST2017の中で、「Quality and testing in Software Engineering curriculum」(ソフトウェアエンジニアリングカリキュラムの中での品質とテストについて)というタイトルで、各国の大学教授・准教授が登壇して、パネルディスカッションを行いました。
ちなみに、聴講者も意見を出していたのですが、意見を出していた殆どが、前回の記事で書いたGoogleやAppleのエンジニアだったと記憶しています。
- ICST2017公式ページ
ICST 2017 | 10th IEEE International Conference on Software Testing, Verification and Validation
このパネルディスカッションのコンセプトについて(司会のShlomo Markより)
- 最近4年間でソフトウェアのエンジニアリングをやっている
- ここでは、ホワイトペーパーを出している。
- Test、クオリティについて産学連携には沢山の問題がある。
- それに関しても、私もできるだけ研究に移したいと思う。
- それでは、パネリストの方には自己紹介をしてもらいたいと思う。
自己紹介
- パネリストには、何を課題として考えているのか伝えてもらう。
Ina Schieferdeker
- 品質エンジニアリング、解析についてもどういう教育が大学で行われていくのか考える必要がある。
Jens Krinke
- 当初、ソフトウェアエンジニアリングのプログラミングに関しても、問題解決ベースだった
- 学生は最初からアプリケーションを作っていた。
- 学生はハッキングなども技術をやったりもしている。
- しかし本当の意味を理解していない。
- 普通のところからソフトウェア・エンジニアリングを話すことになる。
- テストもそうです。
- 5年間を考えてみると、業界が変化していくので追いつかなければならない。
- コンセプトを考えて、テストの要素をなぞらえていかなければならない
Tanja Vos
- プログラミングをしているのに対し、テストコードを書かなければならない。
- それは難しい。
- テストに関しては教えを請いたくないと言われる。
- 教えるときには、何がステートメントなどを教えて、テストの方をやらなければならない。
- しかしテストを後から教えることになっても意味がない
森崎修司
- 私はソフトウェア工学を教えている。
- 大学と大学院の両方で教えている。
- 論文のリクエストやコメントもやっている。
- その他、博士号過程などで教えている。
- このディスカッションを行っている中で色々と産業界に提起したい。
討論
Shlomo Mark
- 各国でどのようなことを行っているか。
- 例えば私の場合、学生はマシーンランニングがやりたいと言ってきたりする。
- そのときには最初から品質やテストを教える。
- 問題に直面するから。
- そしてUnitテストに入っていく
Ina Schieferdeker
- 動機づけは、ソフトウェアの作っていることの安全を考えなければならないから。
- 最近の研究ではエアバッグについて。
- 他にも医療機器とか。
- そういったところから見ると、テクニックだけではなく、例えば専門家になったときの責任も教えている。
Shlomo Mark
- 学生になぜテストを教えるのかが難しい
Ina Schieferdeker
- 皆さんの仰るところは私も思う。
- 私は何にそれを適用するのかを教える
- 研究側ではプロトタイプを使う。
- ソフトウェアの重要性がある。
- システム側の品質も必要になる
- 20年関わっているが、「なぜこれをやらなくてはいけないのか」と学生に問う。
- どの部分をやっているのかを明らかにさせる。
- 本当の意味での品質レベルを製品に落とし込まないといけない。
聴講者
- シリコンバレーの場合、どのような理由でできないかをはっきりさせる。
- テストに関してバックグラウンドがある人しか雇わなければ良い
- なので学士以上のところが必要
Jens Krinke
- このような比較ですが、例えばマシーンラーニングだけしたいと言ってくる学生がいる。
- そういう学生に対してはソフトウェアテストや品質は学ぶ必要がない。
- ただし、エンジニアではない人がやるとなると一貫性が無くなる。コンセプトがなくなってしまう。
- パッケージに関しても、最初に品質を学ばなければならない。
Tanja Vos
- 教育の最初にクオリティを学ばせないといけない
- 例えば、
- プログラムを見ていく。
- 学生に関してはプログラムで検証していく。
- デバッグをしていくときに対してUnitテストをさせたりして埋め込む必要がある
聴講者
- テスト志向というのは非常に大切。
- どれぐらい文化を変えるのに、テストを分かっていない人を変えるのがすごい大変です。というか不可能です。
- テストを学んでいない人にテストの話をすると、その瞬間に水を失った魚みたいな顔になる。
- 結果的に、そういう人を雇用できなくなる
Ina Schieferdeker
- それから教授がいかに説得させるか。
- 論文などをICSTに参加している方に向けて書いていますが、学生の教育のタスクとしても書いている。
聴講者
- 機械学習をやっていてもコードを書いている以上、それを健康的な状態に保つためにはテストが必要。
聴講者
- 5年間Masterでコンピュータ・サイエンスをしている。
- 1年目からテストケースを与えてテストコードを書いている、実際に開発者テストを書いている。
- よりテストパターンとしてできるものをやっていく。
- 上手くいっているところもあるが、Functionalテストになると、どういう風にやっているのか分からない。
- ツールも入れて、そこの部分も学生に紹介しようと思っているが、それは出来ていない。
- テストの話をすると、コードがテスト無しで正しく動いているかどうかという方向性にいってしまう。
- 文化として試行錯誤するという考え方にできていない。
- ダメならば別のコードをやればよいとなってしまう
聴講者
- テストを書くことのクールさに学生が気付いていない。
- 大学に入る前にテストを書いているという人がいない。
- なので、カリキュラムの中でも厳しくする必要がある。
- 例えば、コンテストをするとか、インタフェースを設けるとか。
聴講者
- これは学生の問題ではない
- ツールやチャンスはある。
- この命題に関しては好きな人もいるはず
Jens Krinke
- 学生がこれが好きではないという話については、学生的にはやることには問題ない。
- こちら側がカリキュラムを変えている。
- 多分、1,2年あたりで起こると思うが、4年生の方のカリキュラムを変えている。
- 同じモジュールを異なったコードにしたり。
- ソフトウェアエンジニアリングをどのように改善していくのかも大学でやっている
聴講者
- 学生への教え方が変わっていっていくことに驚いている。
- 一緒にやっていこうというアイディアですね。
聴講者
- 最も賢い1年生に対して「テストをやっていないとパスできないよ」と伝えてほしい。
- それがたとえ宝石のようなプロジェクトをやろうとしていても。
- テストを書かない人は無理です。そのような人はGoogleのインタビューでは受け入れません。
- 我々はテストを扱える人を求めている。
- マーケットも求めているし、アカデミックもそうでしょうか?
森崎修司
- 優先順位について。何がいちばん大切なのか。
- 同意です。
- グループワークをやっていて、何人かの学生はそれを学んでシェアする必要があると思っているようです。
- プログラミングの講義をやっていると、何人かの人は本人で学んでいく人もいる。
- テストは教えられるべきものなのか。
- QA活動は気付いたり、生徒自体が発見していくことが大切ではないのか?
聴講者
- quality testingについてはどう考えているか?
Ina Schieferdeker
- 大抵は比較をしている。
- テスターが沢山いるので、大学で学んでいる人もいるので、ソフトウェアエンジニアリングが厳格に勤勉に学んでいかなければならないものである。
- ソフトウェアエンジニアリングは完璧なものではない。
- 他のものも鑑みた上で、何をプログラム化すべきなのか。
- ソフトウェアエンジニアリング以外のものも含めて、より厳密に扱っていく。
- 例えば、パブリックセクターとプライベートセクターの両方で構築すべきだと思う。
Jens Krinke
- いや、そうは思わない。
- クオリティは他の人がやってくれるからと言われてしまう。
- これは何年も前のやり方で上手くいかない
- ソフトウェアエンジニアリングの経験を積んだ人が扱う。
- 大学では品質を教えることができないのだと思う。
- セルフエンジニアリングのトレーニングはできると思うが、大規模なことをやっていないので品質のトレーニングは無理です。
Tanja Vos
- 別の講義で教えるということはダメだと思う。
- 最初からテストについて教えるべき
聴講者
- 私は少しだけ同意する。
- そもそも教育時間が短い。
- きちんとしたエンジニアを育てる、ある程度の教育、プリ教育として、クオリティエンジニアに関しては1つ1つ教えるだけでなく、他のことも教えることになる。
- 他の専門性も含めて学ばなせなければならない。
- 博士号でその道のスペシャリストを育成できればと考えている
聴講者
- どなたか共創の話があった。
- ベストスキルというようなコミュニケーションが必要だと思う。
聴講者
- 私は2つのトラックに分ける必要ではないと思う。
- エンジニアである場合、もちろんソフトを書いてテストを書かねければならない。
Shlomo Mark
- テストを教えるとして品質は教える必要があるのか。
聴講者
- 産業界では別にしている。
- ただ、別々にしていると上手くいかない。
- テストも書くのが仕事ですよと。責任を持ちなさいと言っている。
聴講者
- Unitテストはプログラマ?
聴講者
- 同じ人がやっている。
- どういうレベルであっても、自分で作ったのならば自分でテストをしなさいと。
- なので、システムテストレベルについてはツールを提供したりしている。
Ina Schieferdeker
聴講者
- システムテストはガイダンスが必要だと思う
Jens Krinke
- ストリームを渡すことになる。ソフトウェアテストのJobをすると給料が低くなる。
Ina Schieferdeker
- そんなことはないです。
- テストマネージャはプロダクトマネージャよりも給料が高いです。責任が重いからです。ただし、学生は実感できませんが。
聴講者
- 学術界の把握ができて嬉しく思った。
- ただ、その中で大学を通じて色々な課題がありますが。
- 大学の中で教授で産業界の経歴がある人は?何%ぐらいがそうなのでしょう?
- 会場を見る限り半分くらいでしょうか。
- 私は学生だが、このようなコンセプトについてそのようなクラスを受けたいと思うが、実例を学びたちと思ったとき、ソフトウェアのトピックが無くては学べないと思うが。
聴講者
- ITに10年いますが、テスト駆動形のプロセスです。
- このようなことを扱えて、学んだことが扱えてよかった。
- テストでも色々な階層があるが、フォーカスしているのはどのようなテストタイプですか?ストレステストなどがあるが。
聴講者
- Microsoftの場合はそれぞれ分かれている。
- プロセスに関しても。
- Microsoftの場合、お互いに役割がある。
- ただ、Murat Ozturkさんに同意するわけでない。
- 違いがあります。
- Writerがいて、スケールがあります。
- 少し大きい場合はテストオートメータの友人を入れる。
- マシーンラーニングとかもそう。
Shlomo Mark
- 時間が来てしまいました。最後にどうぞ。
聴講者
- どのようにテストプロセスを作っているかについては、どちらの方法でも良い。
- 開発プロセスに注入していくか、うまくいっているのか、カバレッジはきちんとしているか。
- どこかに穴があってはまずい
- トータルカバレッジを考える
- プロセスの問題というよりもアプローチの問題。
- 私のチームもそう
- インフラでも楽しむことが重要。
- 使っているコードはテストを作るときにも使っている。
- テストの世界でも分かるようにする。
Shlomo Mark
- 何を教えれば良いのかはペーパーも出てきています。
感想
- 「テストを大学で学ばせる」ということ自体、日本の大学ではなかなか出来ていないことなので、世界とのギャップを感じた。
- とはいえ、世界的にも教育について悩んでいるのかなとも感じた。
- さらに「プログラミング」「テスト」を講義として分ける、テストの講義を後から実施すること自体も否定的な意見が多かったのが印象的でした。