先日のJaSST’16 Tokyoにて、「テスト自動化エンジニアやそのキャリアパスってなんだろう?」というセッションを聴講しました。

その中で、テスト自動化エンジニアとしてのキャリアパスの話や、どういったきっかけでテスト自動化エンジニアになるのか等の話が出てきました。

自分にとっても興味深いテーマで、これからどうなっていこうかを考えるキッカケになったわけですが、同時に「テスト自動化に片足突っ込んでる人や、つっこみそうな人の不安や苦悩」みたいなものもあるよなーと。

過去には自分も相当悩んで、wacateに行って悩みをぶちまけたりして。そこで同じような境遇を辿った人の話を聞いて、少し気が楽になった経験があります。

そこで、特にアドバイスとかは無いんですが、私が自動化エンジニアになって今までどんな感じで歩んできたかをご紹介しようと思います。

テスト自動化エンジニアになりたての人、(自身の意思とは関係なく)なろうとしている方にとっての1ケースとして参考にしてもらえると嬉しいです。

(仕事が絡むので詳しく書けない部分も多々ありますが。)

学生時代

学生時代は、テストとか自動化とかとはあまり関係ないジャンルに居ました。

大学4年間と博士課程前期2年の合計6年過ごしました。後半はコンピュータサイエンスのほうに進み、プログラミングに出会います。JavaとかCとかは教養レベルで触りましたが、主にOCamlを使って研究関連のコードを書いたり、ProjectEulerの問題を解いて遊んだりしてました。

研究は形式手法とかそっちをやっていたのですが、残念ながら全く優秀な学生ではなかったです。

検証会社に入社しテストエンジニアに

IT系を対象に広く就職活動をして何社か内定をもらいましたが、最終的に都内の第三者検証会社に入社。

学生時代に検証には触れていたものの、テストは未経験でした。理論系とはまったく逆の世界からせめてみようと思ったのが理由です。

まずは手動テスト

新入社員研修でマナーとか基本的なところをやったあとは、客先に常駐して手動のテストを始めました。

テスト手順書などのドキュメントが結構しっかりしていたので、(コレがグダグダなところも多いと聞きます)まずは手順書に沿ってテスト→分からないところは質問→不具合だったら報告、という基本的な流れを体験。

新人がいきなり見てテストできるレベルのドキュメントが良いドキュメントということで、自分たちがわからない手順等はどんどん指摘&修正していくような良い流れでした。

入社半年でテスト自動化に着手

2,3ヶ月テストやドキュメント修正をしていると、客先で「テストを自動化するぞ」という話になりました。このときはイチから始めたわけではなく、ある程度のベースというか、ツール選定や導入の計画などがほぼ固まっている状態。

既にあるテスト手順書を元に、ゴリゴリと自動化を進めていきました。

この辺はコーディング作業なので、プログラミングやったことあった自分にとっては(実装自体は)さほど苦でない作業。

ただ、別の現場で働く同期はテスト実行をどんどんやったり、人によってはテスト設計を始めたりして、この辺から「周りに取り残されてる=テストが何も身についてないのでは?」感が募っていきました。

その後1年以上テスト自動化を拡大

ゴリゴリ自動化する段階が過ぎると、みんなでコーディングする必要もなくなってきます。

既に自動化した部分を使いつつ手動テストもこなす人が出てくる一方、「プログラミング経験がある」という理由からか、私はテスト自動化を拡大する役割が与えられました。

一つのソフトやシステムに対してテストを自動化してうまくいくと、他の対象も自動化したくなるのは普通の流れですよね。

それまで使っていたツールと別のものを追加したり、日々プログラミング&設計のような作業が続きました。

この時期にはテスト自動化でありがちな苦しみ、ギア本等に書いてあるのですが例えば

  • 画像の比較うまく行かない(XPと7でウインドウデザイン違う!とか)
  • 1つのケースで失敗して後続が全滅する
  • 画面の変更に対するテストスクリプトの修正工数が大きい
  • 「実行端末を倍にすれば時間半分になるよね?」といった要求

などなどに遭遇しました。

あとはテスト対象のツールが吐くxmlの特定箇所を見てOK/NGを判定したいからxmlをパースしようとか、ログをフォルダに突っ込んで期待値フォルダと取得値フォルダまるごと比較したいとか、テストを楽に・効率よく行うためのプログラミングの細かいテクみたいなものが身につきました。

一方、このころまだ「既にあるテストケースを自動化する」ことしかしてなかったので、「テスト全然知らないな・・・」という不安感や、「そもそも自分は何者なのか」ぐらいの悩みが募っていました。プログラマでもないけどテストエンジニアでもない状態です。

wacateに行って打ちのめされる

そんな不安感をなんとかしたいと思って、若手テストエンジニアの集まるwacateに参加したのが2014年夏。

WACATE2014 夏 に(初)参加してきた

この時の参加者には、自分の悩みに共感してくれる方もいたりして少し救われた一方で、打ちのめされた感のほうが大きかったです。

自分の知らないテストの世界が沢山あって、しかもそれを学ぼうとか、もっと進んで「自分たちで作ろう」くらいの熱がある人が沢山いて、素直に「あー、自分まだまだだな」と思ったのを覚えています。

今でもまだまだです。

このときから「自分がやってきたのはほとんどテスト自動化ばかりだけど、まずはコレを武器にやるしかない。テストは自分で勉強するしかない。」と思えるようになりました。

たぶんこのときが「自分がテスト自動化エンジニアになった」タイミングなのかなと思ってます。精神論ですが、テスト自動化をタスクでなくロールとしてとらえられるようになったとき、ですね。

それまでは「テスト屋さんだけどテストの経験がそんなになくて、とりあえずWindowsを自動で動かせるようにしてる人」くらいの自認だったところを、自分が「テスト自動化エンジニア」というロールでいることを肯定できるようになったのが、wacateに行ったときでした。

テスト自動化エンジニアになった今は

ここまで、どのようにしてテスト自動化エンジニアになったかを書いて来ましたが、最初から「なろう!」と思って始めたわけではなく、成り行きで自動化業務を担当するようになって、その後しっかり身に着けようと思った、という流れです。

なので、自分はテスト自動化エンジニアだと思うようになってからも、日々勉強です。

まず基本となるテストに関する知識はアレコレ入れつつ、主に

  • GUI自動化ツール
  • 継続的インテグレーション
  • ユニットテストフレームワーク

など学びました。

特に自動化ツールは有償も無償も色々と使いました。業務で使わないものについては家で使ってみたり。

この辺は今でも続けていますし、あとは開発(iPhoneアプリとかWebアプリケーションとか)も独学でほそぼそやっています。

特に新卒で検証会社に入った身なので、プライベートの時間を使って意識的に「ものをつくる」機会を持たないと、偏ったスキルになってしまうという危機感があります。

コンピュータ・ソフトウェアについて深く知った上でテストする人になりたいと常々思っています。

テスト自動化エンジニアになるまでの経緯もあって、自分の場合は「いかに動かすか」「いかにテストを回すシステムを作るか」というほうに関心・スキル範囲が向いているのですが、コレだけだと良くない&つまらないな、という自覚もあります。

もっと自分の知識・技術・考え方を「品質」の方面に広げていきたい、と思ってアレコレ動いています。

ざっと振り返って書いちゃいましたが、こんな情報も欲しい、とかもしあれば答えられる範囲で答えますので、Twitterとかでお願いします。

あと、今現在はこっちに進んできてよかったと思ってます。

システムテスト自動化 標準ガイド (CodeZine BOOKS)