今日はインフラエンジニアのお話です!私の担当はその名の通りインフラになりますが、IT関連の業種でインフラとは何を指すかお分かりになりますでしょうか。
そもそもインフラとはインフラストラクチャーの略で、一般的には生活に欠かせないもの、つまり電気や水道、ガス等の環境を指すことが多いです。
そこからIT関連のインフラを導き出すと、アプリを動かすためのサーバーであったり、情報を登録するためのデータベースを指しますので、インフラエンジニアは端的に言うとサーバーやデータベース、またはそれらをつなぐネットーワークを含めた環境の管理者を指します。
こんな感じでシステムエンジニアといっても業務によっていろんな種類に分けられています。しかし、専門的な用語が多くイメージしづらい、やたらアルファベットの略語を使いたがって分かりづらい、という人も少なくないと思いました。そこで、今回から数回にわたりシステムエンジニアを種類ごとに紹介しようと思います。
まず第一回目では「テストエンジニア」について紹介しようと思います。
テストエンジニアとは
テストエンジニアとは、「テスト」という文字が入っていることから分かるように、アプリやシステムのテスト、つまり動作確認を行うエンジニアを指します。
ここでいう動作確認という業務は、単にアプリの動きを確認するだけでなく、以下の段階に分けられシステマティックに行われます。
①試験項目の作成
基本的には対象となるアプリやシステムの仕様書から、すべての動作を網羅するように試験項目を作成します。
また、必要以上の負荷をかけたり、閾値を試すような試験項目も作成し、エンドユーザがどのような操作を行っても問題が無い事を確認します。
※閾値とは境界線とも言い換えられます。
例えば、100文字のメッセージを送信できる機能に対し、99文字や100文字、または101文字の場合はどうなるか等、設定された前後の値で動作確認を行います。
②動作確認の実施
①で作成した試験項目に沿って、実際に対象の動作を確認します。
確認結果は試験項目に残しますが、実施日や実施したアプリ/システムのバージョン等の情報も残します。
動作確認で不具合を発見した場合、必ず前のバージョンや過去の結果ではどうだったかを確認しますので、これらが控えられていれば、わざわざ前のバージョンに戻して再確認する等の作業を減らすことが出来ます。
③不具合の報告
②の動作確認で発見した不具合を開発側に報告します。不具合の対処自体は開発者が行うことが多いですが、テストエンジニアとしても、いつ、どのバージョンで、どのような操作を行った際、どのような動作が発生した、またその動作を不具合とする根拠等に関しても簡潔に伝える必要があります。
テストエンジニアに必要なスキル
仕様書から試験項目を起こしたり、不具合発生時の報告書を作成したりしますので、エンジニアであるものの国語力、文章力が必要になります。
書いていることがよくわからない、まわりくどい(これよく見られます^^)試験項目や不具合報告書だと、渡された方は再度確認したりと余計な手間がかかってしまうので、必要な事をシンプルに伝える力は必須です。
また対象によっては疑似的なネットワーク環境を使用するものもあります。
私は以前携帯電話のテストエンジニアだったのですが、開発中の携帯電話は一般のネットワークにつなげないものもあるので、疑似的なネットワーク環境を作成し、動作確認を行っていました。
こういった環境の構築であったり管理はある程度専門的な知識が必要かと思われます。
最後に加えるとしたら、精神的なところになってしまいますが、同じような作業を何回も繰り返すことが多いので、忍耐力だったりあきらめない心が欲しいところです。
※プログラマのスキルになりますが、弊社の運営するCreator’s fieldにも記事があるので、興味のある方は以下からどうぞ。
IT業界のプログラマーとは? | Creator’s field (webfield.biz)
テストエンジニアになるためには
専門知識が必要な部分があるものの、他のシステムエンジニアと比べるとハードルは低く感じますが、それは求められるスキルの話で、テストエンジニアの正社員募集という話はあまり聞いたことがありません。
海外では動作確認という業種で確立されていると聞きますが、日本では開発業務の一部という認識が強いため、動作確認しか出来ない人を進んで雇用しようとは思わないのです。
そのためテストエンジニアとして働きたい場合、SESとして大手プロジェクトの動作確認組織に組み込んでもらうのが、近道かもしれません。
※SESって何?という人はこちらをどうぞ。
【システムエンジニア】SEとしての働くならSESと自社開発どっちがいいの?
まとめ
今回はテストエンジニアについて書いてみました。
私は新卒の全く社会経験がない状態で初めて就いたのがSES経由のテストエンジニアでしたが、動作確認を通してアプリやシステム全体を見ることが出来る事や、仕様や開発とのコミュニケーションもあるので、システムエンジニアの基礎を固めるには良い経験であったと思います。
職種の将来性に関してはAIでの代行等も考えられますが、人間の発想や管理が必要な部分が多いことから、完全な機械化は難しいので、今後も必要とされる機会はあるものと予想します。
先述の通り求人等の流行を含めて考慮するとテストエンジニアとしてだけでやっていくのは難しいかなと思いますが、業務として無くなることはないので、他の業務と並行して動作確認も出来る人材は重宝されます。
そのため、テストエンジニアである程度経験を積んだら他の分野にも挑戦していくと、よりレベルの高いエンジニアなれるでしょう。