記事の目次 4項目 · 10分で読めます
- オートメーションテスターとは
- オートメーションテスターという仕事にまつわる誤解
- オートメーションテスティングはIT業界の他職種ほど魅力的ではない
- 自動テストは単純で、やることが多くない
- 自動テスト担当者はコードが書けない
- では、オートメーションテスターの仕事とは
- 自動テストエンジニアになるには
- テストの基礎知識を体に染み込ませる
- HTML、CSS、XPathを理解する
- ドメインを理解する
- テストフレームワークを使いこなす
- ソフトウェアデザインパターンを理解する
- オープンソースの使い方を学ぶ
- データベースの知識を身につける
- プログラミング言語と対応ツールを使いこなす
- コーディングの基本スキルを身につける
- 新しい技術を学び続ける
IT業界において、オートメーションテスター(自動テストエンジニア)は決して珍しい職種ではなく、ITプロダクトの開発から提供までを支える重要なポジションです。オートメーションテスターとは何か、そしてどのようなキャリアパスがあるのか、VietIS Educationと一緒に本記事で確認していきましょう。
オートメーションテスターとは
オートメーションテスターとは、自動テストを担当するテスト担当者のことです。自動化されたテストスクリプトを用いてテスト業務を行い、キャリアを通じてそれらのスクリプトの設計・実装・保守・実行を担います。目的は、不具合(バグ)を最小限に抑え、製品を予定どおりにリリースできる状態にすることです。
企業がオートメーションテスターを採用する目的は、次のとおりです。
- 顧客、プロダクトマネージャー(Product Manager)、エンジニア(Developer)、ビジネスアナリスト(Business Analyst)、IT担当者と連携しながら業務を進めること。
- 要件レビューのプロセス構築、テスト計画やドキュメントの作成、スケジュールと予算の策定を行うこと。
- 開発の早い段階から参画し、ソースコード、アーキテクチャ、コーディング規約などをより深く把握すること。
- 既存の技術基盤にテストツールを統合すること。
オートメーションテスターの具体的な職務内容や責任範囲は、業界や企業によって異なります。しかし優秀なテスターには、ソフトウェアテスト全般に対するより深い理解が欠かせません。技術とプログラミングの知識があれば、高度なテストスクリプトを開発でき、複雑なケースにも対応できるようになります。
オートメーションテスターという仕事にまつわる誤解
ソフトウェアが存在し続ける限り、それが正しく動作することを保証するためにテストは常に必要とされます。Mordor Intelligenceのレポートによると、自動テスト市場は400億USD規模に達し、2021年から2026年にかけて14.2%の成長が見込まれています。
しかし一方で、自動テストという職種には数え切れないほどの誤解があり、正当に評価されていない面もあります。ここでは、オートメーションテスティングに対する代表的な思い込みを取り上げます。
オートメーションテスティングはIT業界の他職種ほど魅力的ではない
確かに、オートメーションテスターの給与は、より複雑な業務を担うエンジニア(開発者)ほど高くはないかもしれません。しかしそれを理由に、自動テストに携わる人材の可能性や役割を低く見るのは公平な見方とは言えません。
テスト担当者がいなければ、ソフトウェアはいつ不具合を起こしてもおかしくありませんし、すぐに修正できるほど早い段階で原因を突き止められる人もいません。もしそれが生産ラインに組み込まれたソフトウェアだったとしたら、不具合がどれほど大きな損害につながるか想像してみてください。
それだけではありません。オートメーションテスターの給与も決して低くはありません。市場にある他の多くの職種と比べれば依然として魅力的なポジションであり、質の高い仕事をこなせるようになるには相応の学習と鍛錬が必要です。
自動テストは単純で、やることが多くない
テストと聞くと、単にバグを見つけるだけの簡単な仕事に思えるかもしれません。しかし、決してそうではありません。アプリケーションのコードが書き上がっていても、想定どおりに動作しない理由は数百通りも存在します。リリースの瞬間まですべてを制御下に置き続けることは、決して簡単ではないのです。
UI設計、APIの業務ロジック、データベース層が互いに噛み合っていることを確かめるため、オートメーションテスターは日々きわめて多様な技術に触れる必要があります。たとえば統合開発環境(IDE)での検証や、Jiraによるアプリケーションのリスク管理などが挙げられます。
自動テスト担当者はコードが書けない
このような誤解を持つ方は、オートメーションテスターという仕事を正しく理解していないと言えるでしょう。優秀なテスターを目指すなら、技術から逃げるわけにはいきません。今日のテスターはかつてとは異なり、自らコードを書いて調査し、バグ(不具合)に対処します。
自動テストの仕事では、Java、Perl、Rubyといった言語でスクリプトを書く専門性も求められます。テストデータの生成やデータの検証のために複雑なSQLクエリを記述したり、あるデータベースから別のデータベースへコードを移行したりすることもあります。
では、オートメーションテスターの仕事とは
簡単に言えば、オートメーションテスターは自動化ツールを用いて、繰り返し発生するテスト作業を実行します。具体的な業務内容は次のとおりです。
- アプリケーションドメイン(Appdomain)と、ソフトウェアテスト全般の概念を正しく理解する必要があります。
- 自動化フレームワークを構築し、テストスクリプトを開発するために、十分なプログラミング力と技術力が必要です。
- 目標を明確に定め、その目標を達成するためのテストケース(試験項目)を選定する必要があります。
- レポートの比較やExcelシートからのデータ抽出といった、繰り返し発生する検証作業を自動化し、テストチーム全体の工数を削減する必要があります。
- テストプロセスをさらに改善する方法について、チームのテスターと日常的に意見を交わします。
以上の業務に加え、企業ごとのビジネス特性によっては、オートメーションテスターの仕事はさらに複雑になります。ソフトウェアサービスを提供する企業は、テストのスピードを高め、運用コストを下げるために、常にオートメーションテスターを必要としています。
そのため、オートメーションテスターは非常に有望なキャリアの選択肢になり得ます。ただしそれは、適切な基礎を築くために時間を惜しまず、テストケース作成において深い専門性を身につける覚悟がある場合に限られます。
自動テストエンジニアになるには
手動テスト(マニュアルテスト)に習熟していることは、自動テストのシナリオを開発するうえで大きな強みになります。マニュアルテストから自動テストへ移行したい方は、次の10のステップを参考にしてください。
テストの基礎知識を体に染み込ませる
Test TypeとTest Design Techniqueについて、もっとも基本的な知識をひととおり身につけておく必要があります。マニュアルテスターとテストケース設計の両方を担当することになった場合でも、少なくとも過不足のない正しいケースを設計できなければならないからです。
HTML、CSS、XPathを理解する
これは、操作対象となるTest ObjectsやElementsを正しく特定し、テストスクリプトの安定性を高めるための基本条件です。これにより、プロジェクトへ自動テストをより正確に適用できるようになります。
ドメインを理解する
ドメイン(業務領域)の理解を誤ると、不具合の検出、モデルの作成、テスト範囲の設定に支障が出ます。Linux、SQL Server、各種アプリケーションのスキルがあることは望ましいものの、エンドユーザー側でますます複雑化する要求に追随できるかどうかを左右するのは、ドメインに関する深い知識です。
オートメーションテスターが企業のビジョン、ミッション、ストーリーまで理解していれば、より精度の高いテストシナリオを作成でき、その業界を知る人にしか見えない数多くの不具合を発見できます。
テストフレームワークを使いこなす
自動テストフレームワークは、利用しているテストツールのプラットフォームだけでは得られない、テストプロジェクトごとの構造を提供してくれます。構造をゼロから自分で設計して時間を費やすのではなく、既存のテストフレームワークを活用しましょう。
ソフトウェアデザインパターンを理解する
デザインパターンとは、そのままコードに落とし込める定型のひな形であり、さまざまな場面で再利用でき、開発者の時間とコストを節約し、不具合を減らしてくれます。デザインパターンを学んで使いこなせれば、フレームワークの構築が容易になり、不具合の発見と修正も速くなります。
現在、自動テストのプロジェクトでもっとも普及しているパターンはPOM(Page Object Model)です。ページやページ内の各部分を独立したオブジェクトとしてモデル化し、1つの画面に関するすべての操作と属性を1か所にまとめられます。さまざまなパターンを学ぶのもよいですが、少なくともPOMは使いこなせるようにしておきましょう。
オープンソースの使い方を学ぶ
テストケースの自動化にどのオープンソースを選ぶかは、プロジェクトの内容とご自身のやり方次第です。組織はアプリケーションの種類に応じて、さまざまなアプローチで自動化を進めています。対象となるのは次のようなものです。
- Webアプリケーション(Web app)
- Web driver APIまたはWebサービス(Web Service)
- モバイル端末向けアプリケーション
- デスクトップ向けアプリケーション
データベースの知識を身につける
ソフトウェア開発プロジェクトの大半はデータベースを必要とします。データベースを理解し、その上でデータを扱う方法を知り、クエリの知識を持ち、データを検証でき、データの制約を理解していれば、日々の業務は格段に進めやすくなります。
プログラミング言語と対応ツールを使いこなす
テスト自動化のスキルセットに、プログラミング言語を1〜2つ加えておきましょう。そうすればエンジニアが必要なときにあなたのテストコードをレビューできます。使用する言語としては、Java、JavaScript、Python、Groovy、Ruby、C#などが一般的です。
同時に、異なるプログラミング言語を使う場合には、それぞれに適したツールが助けになります。もっとも適したサポートツールを選ぶには、次のような重要な要素を検討する必要があります。
- 不具合のカテゴリ(データベース層、業務ロジック、グラフィカルインターフェースすなわちGUI)
- 誰が自動化を担当するか(エンジニアかテスターか)
- プログラミング言語と開発環境
- テストデータの準備と管理のプロセス
- バージョン管理とCIの仕組み
- サポート対象のプラットフォーム
これらを踏まえれば、現在扱っている技術とうまく統合でき、テストを加速させてくれるツールを見つけられます。たとえば次のようなものです。
- APIテストツール
- オープンソースのテストツール
- 自動テストツール
コーディングの基本スキルを身につける
自動テストエンジニアになるには、プログラミングの概念に関する確かな土台が必要です。コードの書き方、IDEの使い方、ソース管理、コンフリクトの解消、コーディング規約を理解し、コーディングの基本スキルを使いこなせるようにしておきましょう。
新しい技術を学び続ける
オートメーションテスティング領域の技術は日々アップデートされ、刷新されています。次のような新しい技術に触れながら、トレンドに追いついていきましょう。
- ビルドツール:Maven、ANT、Gradleなど
- CI/CD:CircleCI、Docker、Jenkinsなど
- クラウド:Testingbot、AWS、Browserstackなど
- BDD:Specflow、Serenity、Cucumberなど
- モバイル:Perfecto、Appiumなど
- デスクトップ:AutoIT、Appiumなど
自動テストエンジニアの多くは独学で学んでいます。この仕事では新しい知識を絶えず精査し続けることが求められるからです。自動テストを学ぶ意欲があるなら、書籍やオンライン講座、動画などにあたって、より多くの情報を自分のものにしていきましょう。
本記事では、オートメーションテスターとは何か、どのような仕事をするのか、そしてどのようなキャリアの可能性があるのかをご紹介しました。オートメーションテスターとしてIT企業に飛び込むために、今日から少しずつ力を蓄えていきましょう。