楽天テックカンファ前夜祭で「誰がテスト自動化をするべきか?〜あなたのテスト自動化は大量のテストを高速実行するだけですか?〜」というLTをしました。
このエントリでは、「誰がテスト自動化をするべきか?」という質問の背景にある問題について考察した上で、それらの問題に対するエキスパート達の最近(2014年頃)の取り組みの資料を(勝手に)ご紹介。
ソフトウェア品質シンポジウム2014参加レポート④ 継続的システムテストの実現とこれから - Test Automation
「誰がテスト自動化をするべきか?」の背景
この質問、社外講演をすると必ず聞かれるんです。で、いつも答えに困って、最近では「開発者もテスターも協力してやるのがいいですよ」と曖昧に答えてます。
答えに困るのは質問がすごく曖昧だから。実際テスト自動化のどういったところに困っていて、それをどういう風に解決すればよいか?という質問なら、何か具体的な事を答えられるかもだけど、、、。
という事で、この質問の背景にある「具体的な問題」について想像してみます。
- 開発とテストが分かれていて、テスト自動化を開発やテストのプロセス改善と捉える事が出来ていない
- テストエンジニアが片手間でテスト自動化に取り組んでいてあまり効果が出ていない
- 開発エンジニアが片手までテストを行っていてあまり効果が出ていない
- 開発者やテスターのスキル不足
といった問題があるのかなーと。
これらの具体的な問題について、品質やテスト、自動化のエキスパート達が最近どのように取り組んでいるのか?というところが、上記の質問を抱いている方達へのサポートになるかと思いますのでご紹介。
エキスパート達のテストやテスト自動化への取り組み
メトリクスにもとづいたプロセス改善
「テスト自動化が流行ってるらしいからうちもやってみるか」のようなボンヤリとした目的でやってると色々つまづきます。テスト自動化はプロセス改善の一部なんだ、という事を私にはっきりと認識させてくれたのが下記の資料です。
プロセス改善は1.メトリクスを計測する 2.メトリクスに基づいて継続的に改善する ことでしか達成出来ない、という事が見てとれます。でないと、「ボトルネックが移動した」ことに気付けない!
テスト自動化の品質とかアーキテクチャ
テスト自動化の”システム”をテスターや開発者が片手間で開発している事って多くないですか? 本番稼働するシステムなら「アーキテクチャ」とか「品質モデル」とかをきちんと考えるけど、テスト自動化システムは裏側で動くだけだし、動けばいいや、と。
いやいやいや、テスト自動化も「開発プロセスを改善するためのシステム」なのだからユーザーにとって使いやすいシステムでなければならない。じゃあ、ユーザーにとって使いやすい自動テストシステムの「品質」や「アーキテクチャ」って何だろう?という問いへの取り組みです。
テストの設計やプロセスの品質
ドラクエとかFFとかのテレビゲームがあるじゃないですか。とりあえず、ストーリを楽しみながらゲームのクリアを目指す人が多いと思います。で、クリアした時アイテムコレクション率が70%とかで、「そうだ!アイテムも全部コンプリートしよう!!」とやってみて苦労した経験とかあったりしませんか?私は完全に早解き派だったのでいつでもそうでしたww
世の中には最初から全部のアイテムをコンプリートする事を考えて、そのための「設計」とか「プロセス」とかをどんどん改善して行く事がメチャクチャ得意な人達もいるんだなーと考えさせられたスライドです。
開発者が片手間でテストを書くとついついゲームクリア=デリバリーを優先してしまって、アイテムコンプリート=バグを探し尽くすが、後回しになってしまう。そんな問題を周りでみかけた事ありませんか?
魁!! 智美塾 「テストアーキテクチャ設計の 質について議論しよう」 智美塾塾長+塾生一同
テストやテスト自動化に必要なスキルセット
上記のようにテスト自動化を行うエンジニアには、従来のテストのスキルだけでなく「プロセス改善」や「テストアーキテクチャ」、「高度なテスト設計やプロセス品質改善」のスキルが必要です。
同じような議論が"テストエンジニアの品格"という事でテストエンジニアに必要なスキルセットとして下記の資料で取り上げられています。が、これ別にテストエンジニアだけに限らずテストや自動化に関わる開発者やマネージャーにも必須のスキルセットだと思われます。
結論
という事で、
- 従来のテストスキルに加えて、プロセス改善活動、品質モデルとかテストアーキテクチャについて高度なスキルを持っているエンジニアに任せる
または
- 開発者とテスター、マネージャーが協力する
が、「誰がテスト自動化をするべきか?」の私の回答です。
おぉっとっと。一番大事な選択肢が抜けていた。もう一つ、
- テスト自動化というまだまだ柔らかくてベストプラクティスが決まっていない課題に取り組んで、あなた自身が「テスト、プロセス改善、品質モデル、テストアーキテクチャ」などのスキルセットを持つテスト自動化エンジニアになる
という選択肢も!!あなたもテスト自動化のエキスパートを目指してみませんか??