『テスト自動化エンジニアやそのキャリアパスってなんだろう?』参加レポート #jasst_ta

はじめに

  • テスト自動化自体にフォーカスを当てることが多いが、このセッションでは人に焦点を当てる

自己紹介

浅黄

  • 色々と経験してきて、品質って大事だなと思えるようになってきた
  • 10数年前に商用ツールを使ったのが自動化のきっかけ
  • OSSに偏ってきた(ココ数年)
  • 技術開発部に所属

後藤

  • 7年前にIT系に入って負荷分散システムを作る
  • 検証って面白いと考えるようになってベリサーブに転職
  • 実務レイヤーではなくマネージメントレイヤー

玉川

  • コンピュータサイエンスを大学で学んでいた
  • 最初の6年間は開発していた
  • 自動テストやCIの知見が溜まってきた
  • 技術開発部に所属
  • 自動化エンジニアを育てるために教育もしている

松尾

  • 院までコンピュータサイエンスを学んでいた
  • 新入社員の頃からテストに興味を持つ
  • 分散ネットワークなどを学んでいた
  • 2年前からクックパッドに転職
  • 今はモバイルアプリ中心
  • プロセス全般を見ているが、モバイルの自動化も学んでいる
  • モバイルの開発やnginxなどのサーバーサイドの開発もしている

山口(モデレータ)

Ajenda

  • テスト自動化エンジニアとは?
    • どんなことをする人ですか?
    • どんなスキルを持つ人ですか?
    • どんなマインドを持つ人ですか?
    • どういうキャリアパスで、自動化エンジニアになるのでしょうか?
    • テスト自動化エンジニアになったあとのキャリアパスってどうなるのでしょうか?
  • 会場からの疑問

テスト自動化エンジニアはどんなことをする人ですか?

浅黄

  • 時代と共に変わってきている
  • 商用ツールの頃は、商用ツールを使える人=テスト自動化エンジニアだった
  • 負荷テストやセキュリティテストのパターン網羅などをやれる人
  • 最近はテスト工程だけでなく、運用工程でも活躍する人
  • リグレッション部分を上手に自動化する
  • CI系のリリースまでの自動化する人も含めて自動化エンジニアである
  • 色々なお客さんの言う「自動化をやりたい」といっても意味がそれぞれ違う
  • ベストプラクティスをとるのか、今の最適を取るのか
  • スクリプトを書ける人
  • 手動テストを自動テストにするときに、システムを構築するうえに、自動化しやすいように変換するスキルも必要

後藤

  • 後藤さんはマネジメントの立場から、テスト自動化エンジニアはどういう人を指している?(山口)
    • 浅黄さんと同じく、ツールを使える人をそうだと思っていた
    • 自動化は手段であり、もっと包含的に品質を理解することが必要
  • 自動化というよりも課題解決?(山口)
    • 結果的に全員幸せになれるようにする

玉川

  • 玉川さんは自動化を提供している立場として、テスト自動化エンジニアはどういう人を指している?(山口)
    • 最初は自動化と受けたら、「自動化しなきゃ」にフォーカスが当たっていた。
    • 今は「テスト設計をしなきゃ」にもフォーカスが当たっている。
  • 自動化アーキテクトと自動化エンジニアと職種を分けている
    • アーキテクトは課題解決まで考えている

松尾

  • 松尾さんはサービサーの立場として、テスト自動化エンジニアはどういう人を指している?(山口)
    • 最近まで、自動化エンジニアは自分一人だけだった
    • ゴールはサービスを届けるために改善していく
    • エンジニア全員が改善していく
    • ボトルネックを改善するために何らかの部分を自動化していく
      • モバイルの場合は、GUIの確認に時間がかかっているのでリリースサイクルに合わない状態だった
    • サイクルに合わせるために自動化していく
    • 今はだんだん安定したテストを回すようにしていく
    • UNIT単位まで踏み込んでテストパターンを開発者にも伝えている
  • 自動化エンジニアがいるのではなく、もっと広い意味でのエンジニアが沢山いるということ?(山口)
    • UNITテストを書くのはそれぞれの開発者
  • 自動化に特化したエンジニアはいない
  • アーキテクチャに特化した人がテスト自動化エンジニアという肩書きになっているのかもしれない

山口

  • 松尾さんの他の人は、テスト自動化エンジニアと言えるような職種の人はいますか?

浅黄

  • そんなに多くはない。品質を良くしようと言うために自動化を使う人がいる
  • 「テスター」という言葉は好きでないが、テストエンジニアとなったときに色々なところを見なくてはいけないと思う
  • オールマイティになんでも見よう

後藤

  • 明確な職種はいない
  • 意思表示をした上で、自動化に興味のある人を集めている

山口

  • 結構幅広いですね。

テスト自動化エンジニアはどんなスキルを持つ人ですか?

浅黄

  • テストは手動でやっているところにとって、自動化をやりましょうとなったときに色々なことをやる。
    • 自動化用にテストを抽出する
    • 環境の事前設定をする
    • 自動化システムを構築する
    • ツールの知識がある
    • スクリプティング技術がある
  • 観点として、常に回し続けるための仕組みは考えておかないといけない
    • CI的な観点を
  • テストというよりもエンジニアリングに近い人?(山口)
    • STARに入って思ったのが、プログラミングスキルがすごい必要だと感じている
    • 社内でも勉強会をしてスキルアップを図っている

後藤

  • 開発経験がある、開発に抵抗がない
  • テスト自動化で何を解決するのか聞き取るコミュニケーションスキル
  • 成果の可視化のスキル
  • 決まった後に、環境構築や、ツールの適切な選択ができる
  • 問題解決に方向を持っている
    • 何が嬉しかったんだっけ?と方向を考えておかないと、カオスな状況になる

玉川

  • Shiftさんは職種が2つに分かれているようですが、その中で自動化エンジニアの職種に求めるスキルは?(山口)
    • スクリプトをきちんと作れる人
    • 開発出身でなくても、開発が好きな人
    • 最初はスクリプチティングから始まって、その後にCIで
    • 自動化は知らないけど、開発はしてましたという人は自動化エンジニアになれる
  • 問題解決については自動化エンジニアには求めない?(山口)
    • テスト設計して意図した内容を回しているか重視している
    • それ以上だとアーキテクトになる

松尾

  • コーディングのスキルよりもシステム全体に俯瞰できる人
  • 自分達の管理できないところに何があるのか
  • 閉じたところでやった時にこの部分はテストできて…
  • コーディング技術はあればハッピーだが、システム全体を見れるスキルが必要
  • テストエンジニアはかなりのスキルが必要
  • 90年代のテストは開発者から上がってくる人しかいなかった
  • 何が問題なのか見つけて、設計できる人が良い
    • それは今の自分の理想でもある

浅黄

  • 松尾さんはエンジニアリングのスキルはそこまで必要じゃないと言われたが、浅黄さんはどう思いますか?(山口)
    • 納得してしまった
    • 自分はツールを使えることから始まっていたので
    • 全体像を掴むスキルが必要
    • やらなくちゃいけないところが多い中で、抽出することが大事
    • 「ここがまずいよね」と感じられるスキル
    • 全体を持っていないといけないと納得した
  • 昔は開発上がりの人が自動化エンジニアになっていた?(山口)
    • SQuBokの第1版ぐらいの時代だと、開発でしかできなかった
      • その頃は生まれていなかったので…(松尾)
  • 昔、「この人はバグを見つける→それを自動化できればなぁ…」と思っていた
  • いまだとバグを見つけるテスターがいるので、テストエンジニアにしたい

質問

  • 問題を掴む際に、対象のことやテストの観点を知らないと、掴むことができない。機能の部分は良いが、非機能の観点は自動化エンジニアのスキルとして持つべきか?

松尾

  • モバイルアプリだとパフォーマンスが悪化していることは気にしなければいけない
  • どこをどういう手段で計測し続けるかみたいな形を考えている
  • 非機能的なところについても後回しにしたことで事故になったりする
  • 自動テストの傍ら計測していくようにしている

techlife.cookpad.com

  • 外に任せられることは外で

浅黄

  • 負荷テストをいっぱいやってきていて、OSSで自動化するときの役立ったりしている
  • どこに問題が潜んでいるか観点を持っていることで、機能テスト側の技術も広がる
  • ツール主体できたので、ツールを使った結果、何を見えるのかを考えておく必要がある

テスト自動化エンジニアはどんなマインドを持つ人ですか?

  • ここまではテクニカルな話が多かったが。
  • スキルの話だけだと、「スーパーマンか」と思えるようになっているけど

浅黄

  • 諦めないこと
  • やれる手法は色々ある
  • 固執し過ぎると、テスト自動化することが目的になってしまう
  • 自動化ハイになったり、失敗するところを避けて自動化したりする人ができる
  • 探究心がある人
  • バッサリ捨てる決断がある人
  • 柔軟性のある人

後藤

  • 浅黄さんの意見とほぼおなじ
  • 物事を中長期的に粘って行うこと
  • 新しいものが好きな人

玉川

  • 共通して言えるのは、お二人と同じ
  • 第三車検証として、お客様を支える
  • コーディングスキルを持って新しい製品を作りたいというと合わない
  • 綺麗にしたい
  • 開発が変更すると、エラーとの戦い。それを楽しめる人

松尾

  • 最後だと大体言われつくされる…
  • 物事を潤滑にする人は適任かもしれない
  • プロセスを楽にできたら良いなぁと思う
  • プログラマーは怠惰であるというところに対して向かっていく

山口

  • 皆さん、粘り強さが必要と言っている
  • マインドを持っていない人に対して、育てること、ケアすることはあるのか?

後藤

  • 前を進んでいる人が良い背中を見せる
  • 辛いことが多い中で、価値を届けたことで得られることとか、頼られるように
  • 背中を見せている人がいるということですね?(山口)
    • 最近います

玉川

  • チームの定例会議で、自動化チームではアーキテクトの人に若手向けに話している
  • シニアの人がプレゼンテーションを作っているわけでなく、若手にもメリットを伝えるプレゼンをするようにしている
  • 背中を見せるというよりも指導しているということか?(山口)
    • 私が指導、太田さんが背中を見せるようにしている

どういうキャリアパスで、自動化エンジニアになるのでしょうか?

浅黄

  • あまりバリエーションは無いと思う
  • 私はプログラマから入ってきた
  • テスター、テストエンジニアから自動化エンジニアになる
  • いきなり自動化エンジニアになるようなことも取り組んでいるが、なかなか難しい
  • 自動化エンジニアとしてスクリプトを組めるとかは覚えれば良い
  • 1年も必要ない
    • 改善に向けた…とか考えると数年かかる

後藤

  • ゼロからのスタートメンバーがいるが、スクリプトを書けるのは半年ぐらいでできる
  • 手動テストから入って「自動化できたらな」と考えられると良い
  • 実装者じゃない人になるまでの期間は?(山口)
    • テストを1,2年、テスト自動化エンジニアとして2,3年ぐらいでなれる

玉川

  • スクリプト書くだけであればそんなに時間はいらない
  • 今年、新卒が2人入ってきたが、1年でテスト設計と管理とスクリプトを組むぐらいはできた
  • 指示を受けるならできる
  • アーキテクトはなかなか難しい
  • 開発は元々できていて、自動化のエッセンスを持って急成長した例もある
  • スクリプト以外のテクニカルな部分も必要

松尾

  • 自分もどうなっていくのか、自分はどうなれば良いのか?と疑問に思う
  • 大学の頃は、大学の授業とか研究だからコードを書くということはあった
  • 入社後、コードを書けるなら開発に行っていた
  • テスト系の勉強会に出て知見を蓄えた
  • 若干プログラマ、若干テスターから来ている
  • テストエンジニアの定義は今からだんだん狭義な状態になっていくはず
  • 今ならスクリプトを書いているとかいう人も含めて自動化エンジニアになっている
  • 「ちょっと書ける」というのはテストコードのこと?(山口)
    • WEBアプリだとテストコードを書けるに加えてプロダクトコードも書けるぐらい

玉川

  • 「コードを書ける」というのは松尾さんと同じぐらいのイメージ?(山口)
    • 基本的にはテストコードも書ける
    • 松尾さんが言っている「ちょっと」は私が求めている1年目のスキルではない

浅黄

  • 自動テスト=キャプチャーアンドリプレイが多い
  • これは、「ちょっと書ける」には当たらない
  • 実際にコーディングが出来る、開発の技術が少しあるぐらい
  • テスト設計も構築もスクリプトも出来るようになったばかりの人は、自動化のことしか出来ない
    • シナリオ的な書き方もしくはユーザー敵、機能網羅とか書き方が変わってくるが、それぞれに対応できていない

テスト自動化エンジニアになったあとのキャリアパスってどうなるのでしょうか?

松尾

  • 未来を語るネタがない…
  • どのくらい先を考えるかによって違うが…
  • 生み出そうとしているサービスが嬉しいのかどうかを判定できるシステムをやろうと思えばできるはず
  • 非機能的な部分も評価する方面があると思う
  • 方法論とかもひっくるめて?(山口)
    • はい。ただ、何十年先でしょうか…

玉川

  • アーキテクトになった人のキャリアパスは?(山口)
    • 尖ったところを突き詰める。
      • いまだとラッパー程度だが、ツールを1から作り上げるぐらいまで
    • 領域をあえて狭くしているが、広げていってスーパーテストコンサルタントになるのも良いかも

後藤

  • テスト自動化エンジニアを経た先は、ゴールが無いところなので、退職するまでずっと勉強
  • コンサルになる道に近づける場所だと思う

浅黄

  • テストアーキテクトの道はあるようで無い
    • スペシャリストを目指す
    • もしくはゼネラリストを目指す
  • 検証分野はAIに置き換えられるのかなと思っている
  • 新しい技術を構築できるという意味のスペシャリストを
  • テストの自動化というよりは全体の自動化を
  • それはどれくらいでできるようなものか?(山口)
    • AIが人間を上回ると言われる頃には
  • 自分達で活用する。
  • テストというよりはサービスをイメージする

松尾

  • スペシャリストの方向とゼネラリストはどういう仕事に繋がる?(山口)
    • ゼネラリストはテストコンサルに繋がると思うが
    • スペシャリストとしては、A/Bテストエンジニアリングのような、領域に特化した(やることに対して)の人が出てきたりするのでは
      • ユーザー企業には必要とされている
  • なんでも相談のります、解決担当?(山口)
    • 役割が広まっているが、エンジニア全員が得意分野が一緒ではないので、それを補完するように

浅黄

  • 自動化エンジニアって、対象のソフトウェアのアプリに対して領域のスペシャリストもありと思うが、広く浅くではなく、深く狭く、深くが何本もあるように
  • テストコンサルの中で深いことを持つ人もいる?(山口)
    • コンサルタントではなく、アーキテクトとしてツールを見ていくこととか
    • 狭く深くは方向としてはあるが、仕事として見えにくいかな?と

質問

  • 構成要素のことをよくわかっていくとできる細やかなテストとブラックボックスの二つがあると思うが、セキュリティのテストとかはセキュリティを詳しいからできると思う
  • プラットフォームをよく分かっている人にストレステスト
  • 構成要素にやたら詳しい人に対してのキャリアパスはあるか?
  • こういうことができる人、というのがキャリアパスになるのか?

松尾

  • サービスとプラットフォームで分かれて開発者が分かれているので、テストエンジニアもあると思う

玉川

  • 今回は第三車検証の人が多いので話題になっている
  • 構成要素はお客さんに合わせてでは無いと思うが詳しいにこしたことはない。
  • 色んな所にいっていると、その会社でキャッチアップする必要がある
  • スペシャリティを持っていることは重要だが、そこだけだと潰しが効かない
    • ゼネラリスト的な要素を持っている上でスペシャリストとしてあると良い
  • 着眼点を持ったサービスがあれば…

浅黄

  • 昔は何かの技術に特化したイメージだと、このツールができますというアピールはあった。
  • ツール特化だと、ツールのバリエーションはあっても良いが、それを売りにしちゃうと

質問

浅黄

  • Jmaterとか、Selenium WEBDriverとか
  • QTP、Silktestのスクリプトが書ける人
  • 大体はキャプチャーアンドリプレイなので

アンケート

  • テスト自動化エンジニアですという人は?
    • 1/3から半分ぐらい

質問

  • 特化したエンジニアがあるとするならば、一人で仕事するのが普通なのか?分担してやっているか?

松尾

  • 一人で黙々とやるのは無い。話しながらする

玉川

  • 手動のテストと自動のテストは分かれて行う
  • バックグラウンドを共通の理解として持つ

質問

  • 今回、自動化エンジニアになりたいということは分かったが、なりたくなるような動機があれば?

後藤

  • エンジニアって良いなと思うことが市場価値を高めることになる