マルチに輝くテストエンジニア

テストエンジニアとは

 IT業界未経験あるいは初心者の方は、「テストエンジニア」という言葉から、どういったイメージや業務を思い浮かべるでしょうか。主な業務内容としては、「仕様書通りにプログラムや製品が作られているかをデバッグしつつ、プログラム内の不具合や欠陥の修正を行うこと」です。特に近年においてはWebやゲーム、アプリケーションなどシステムの複雑化や普及が急速化する中で、テストエンジニアの需要は高まっています。テストを経験したことがある方はご存じかと思いますが、どんなにベテランのプログラマーが作成したシステムであってもバグはつきものであり、特に他人が書いたコードの中から発生原因を突き止めることは決して簡単ではありません。不具合の性質を把握し、コード上のどこで該当の動作をさせているかを絞り込み、原因の根源となっているコードを辿っていく作業は、まるでパズルを組み立てていくように地道な作業です。非常に地味なイメージが強い作業ではありますが、バグの発生箇所を特定できた際は、はまらなかった箇所のピースを見つけ出せたような達成感すらあります。先に記述したように、地道な作業のため非常にやりがいを感じられる職種ですが、その業務は単なるテスト担当者としてだけではなく、責任も伴う重要なポジションでもあります。①テスト計画の作成→②テスト設計→③テスト環境整備→④テスト実施→⑤テスト進捗管理→⑥テスト報告書の作成といった具合に、大まかに分けるだけでも複数の工程が存在します。それぞれの工程に対し緻密で綿密な計画を以ってテストを遂行する必要がありますので、それぞれの業務内容について詳しく見ていきます。

テストエンジニアの業務内容

 まず、①テスト計画の作成ですが、読んで字のごとく「テストの計画を作成する業務」です。システムのテストを大きく3つのパートに分けると「単体テスト」「結合テスト」「総合テスト」の3つに分類することが出来ますが、この際、テストエンジニアはプロジェクトの進捗やテスト難易度などに留意しながらテスト計画を作成することが重要です。次に②テスト設計とは「実施するテスト項目や、テストを行う際のチェックリストを作成する業務」のことです。この際システムエンジニアと連携を取り、どのようなテストを行うのかを考える必要があるため、仕様書を充分に理解して項目を抽出することがテストエンジニアには求められます。そして③テスト環境整備ですが、これは「テスト用の環境を作る業務」です。テスト環境と実際にエンドユーザーの使用する本番環境に相違があった場合、動作結果が同じになるとも限らず、テストの意義も半減してしまいます。したがってテストエンジニアは、限りなく本番環境に近い疑似本番環境を整備し、テスト中にファームウェアやソフトウェアのアップデートがあった際にはテスト環境にも随時反映させ、運用や保守等も行っていく必要があります。④テスト実施について、業務内容として特筆すべき点は特に無く「テストを遂行する業務」です。ただしテストエンジニアが、テスト工程全般に対して役割を果たすポジションであることを忘れてはいけません。のちほど紹介しますが、テストの進捗には特に気を配り、時にはテストのペースアップの方法を考えたり項目の見直しを行う等、広い視野も必要です。⑤テスト進捗管理について、「テスト完了までのスケジュールの調整を行う業務」です。テストの基本的なサイクルは、テストの実施→障害箇所の発見→修正→再テストの実施という具合です。この作業を丁寧に行うことで製品の精度はもちろん上がりますが、テストの進捗はその他の工程を担当するエンジニアの業務に対しても大きく影響するため、進捗管理が非常に重要となります。そして⑥テスト報告書の作成ですが、「テストの結果を文章化し、報告書を作成する業務」です。システムにバグ等の不具合が残存しておらず、仕様書通りに動作するプログラムであることをユーザーに示すための資料となるので、重要な業務です。

必要なスキル

 これまでにテストエンジニアの業務が多岐にわたり、マルチなスキルや知識が求められる職種であることをお分かりいただけたところで、具体的にどういったスキルや知識が必要なのか確認していきます。まずは「テスト技法への精通」です。テストの進捗がその他の工程にも影響を及ぼすフェーズであることは先ほど説明しましたが、テストは効率的に行うに越したことはありません。そのためテスト技法への精通が欠かせません。参考までに、覚えておくと良い、よく使われる技法を3つ紹介しておきます。一般的には「ホワイトボックステスト」「ブラックボックステスト」「負荷テスト」などが知られており、「ホワイトボックステスト」は、分岐や繰り返し処理などがフロー通りに動作するかを確認するテストのことです。「ブラックボックステスト」は、プログラム内部を一切見ずに仕様書内の機能が正常に動作するか否かに着目するテストの技法であり、想定通りの操作を行う正常系や、想定外の操作を行う異常系の確認を行うなどテストに幅を持たせる発想力も重要です。また、連続して何度も操作を繰り返すなど、システムに負荷をかけた時の処理速度やシステムダウンの有無を見る「負荷テスト」も重要な技法の一つです。また「開発スキル」も重要なスキルの1つです。前述のように、テストエンジニアは仕様書やシステムエンジニアと連携してテスト計画の作成や設計を行います。したがって、システムに対するテストケースをどのように作っていくか、バグが生じやすい箇所に対し念入りに項目を組む等といった、作り手の意向やプログラムの機能、仕組みをある程度理解できるスキルがあることで、より円滑にテストを進めていくことができます。

まとめ

 テストはシステム開発における仕上げ作業であり、システムのテストを担当するのはテストエンジニアだけではありません。テスト設計書やチェックリストに従い、テスト実施のみを専門とするテスターという担当者もいます。また、QAエンジニアと呼ばれるテストエンジニアと似たポジションもあります。QAエンジニアは「開発するシステムの品質向上のために、評価や改善を行う」ことが目的です。それほどテストとは重要な局面であり、その中でもテストエンジニアは「システムの安全性や精度を確認する」ことが目的であり、上記してきたようにテスト工程全般に関与するだけでなく、スケジュール管理や報告資料の作成までを行う重要なポジションであるため、縁の下の力持ちのようなやりがいのある職種です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です