もしもいま、ソフトウェアテストをイチから学ぶならどうしたい? 現役QAエンジニア・松本卓也さんが考える学習ロードマップ

めまぐるしく変化するテックの世界。技術を身に着けるうえで学ぶべきポイントや学習環境なども年々変わっています。

そこで「もしもいまの環境で、テックのことをイチから学び直すことになったら、自分はどんな風に勉強したいか」というIFストーリーを通じて、技術との向き合い方を考え直してみる企画「テック転生」。

今回はQAエンジニアの松本卓也さんに“自分だったらこう進めたい、ソフトウェアテストの学習ロードマップ”を伺いました。

ゼロからQAエンジニアになるためのロードマップ

スタートアップでQAエンジニアをしている松本卓也です。2024年10月の今、イチからQAエンジニアを目指すためのロードマップを考えてみました。IT業界の会社で一通りのテスト業務ができるくらいを目指します。

方針としては、まず、テスター業務を受注し、実際の業務を通じてテスト設計、自動テストのスキルを習得し、QAエンジニアのメンタルモデルを獲得するという流れです。

私はどうやってIT業界のQAエンジニアになったか

私は元々、メーカーでハードウェアや組み込みソフトウェアのQAエンジニアをしていましたが、副業に興味があり、より幅広い経験を積みたいと考えていました。そこで、クラウドワークスで案件を探し、WebやスマホアプリのPMアシスタント案件を受注したのが私の初めてのチャレンジでした。当時の報酬は時給1300円程度でしたが、新しいチャレンジを通じて、IT業界で必要なスキルを身に付けられることに大きな期待を持っていました。

Slackを使ってチームメンバーとやりとりし、Miroでアイデアを整理し、Figmaでデザインを確認するなど、これまで使ったことのないデジタルツールを使った業務の進め方に驚かされました。この経験は、デジタルツールの使い方だけでなく、リモートでのチーム連携の重要性も学ぶきっかけになりました。

ユースケースやワイヤフレームの作成を手伝いながら仕様を学び、最初はユースケースに基づいてテストを進めていきました。プロダクトはオンライン診療のアプリで、Figmaで作成された美しいデザインに触れることで、「このデザインにふさわしい最高の品質を提供したい!」という強い意欲を持つようになりました。

その後、社内のさまざまなプロジェクトにQAエンジニアとして関わる機会が増え、テスト業務を通じて着実にスキルを磨いていきました。実際のプロジェクトに関わることで、単なる作業者ではなく、プロダクトの品質向上に貢献できるQAエンジニアとして成長していったことが、私のキャリアにとって大きな意味を持つようになりました。

まずはテストの仕事で報酬を得る!

案件を受注する

「えっ!いきなりお金稼げるの??」と思うかもしれませんが、クラウドソーシングサイトでは、未経験でも受注できる手動テストの案件があります。これらの案件を受けることで、実際にテスト業務を体験しながらスキルを磨き、報酬を得ることができます。たとえば、CrowdWorksやFindy Freelanceといったサイトで検索すると、初心者でも取り組みやすい案件が見つかるでしょう。

他の仕事の経験を活かす

もし他の仕事で得た経験があれば、それはQAエンジニアとしての大きな強みになります。多くのシステム開発は、何らかの業務の効率化や自動化を目指しており、その業務に対する理解がQA業務に役立つからです。たとえば、市役所で働いていた経験があるなら、行政DXに関連するプロジェクトに参加することで、あなたの業務知識が評価されるかもしれません。業務の背景を理解することで、テストケースの優先順位付けや要件の適合性を判断しやすくなります。

ツールを使いこなして、チームで連携する

プロジェクトに参加すると、いくつかのツールを使ってチームと連携します。例えば、コミュニケーションはSlackで行い、デザインはFigmaで確認し、進捗管理やバグの管理はJiraで行うかもしれません。最初はツールに慣れるまで時間がかかるかもしれませんが、少しずつ使いこなせるようになります。

テスト設計を学ぶ

手動テストを行う際は、テスト仕様書に基づき作業することが一般的です。指定された手順でシステムが期待通りに動作するかを確認します。ただし、テストを行う際には「なぜこのテストが必要なのか?」と自問する習慣を持つことが重要です。この習慣が、より効果的で深いテストケースを作成する助けになります。なぜなら、仕様を基にテストパターンを考えることで、システムの要件や設計に応じたリスクや重要な機能を適切に評価できるからです。仕様から派生したテストパターンを作成することで、見落としがちなエッジケースや異常系の動作もカバーでき、網羅性の高いテストが実現します。

不具合は会社と自分の財産

テスト中に不具合が見つかった場合、それは会社にとってもあなた自身にとっても大切な財産です。不具合がどこで、なぜ発生したのかを追求し、対策を講じることでテストケースが改善され、次回のテストに役立ちます。不具合管理の積み重ねによって、どの部分が問題を起こしやすいのかを予測し、効率的にテストを進めることができます。

JSTQB Foundation レベルを取得する!

さて、いきなり仕事を始めてしまいましたが、日々の業務の中で経験不足が原因で壁にぶつかることも多いかもしれません。実際、私も最初の案件では「このテストはどうやったらいいのか?」と疑問に感じることがありました。そんな時に役立ったのが、JSTQB Foundationレベルの資格取得でした。 この資格は、ソフトウェアテストの基礎的な知識を体系的に学ぶ良い機会です。特に、以下のような分野の知識を身につけることができます。

  • テストの基礎: テストの目的や役割を理解し、なぜテストが必要なのかを明確にします。
  • ソフトウェア開発ライフサイクルにおけるテスト: 開発のどの段階でどのようなテストが必要かを学びます。
  • テストレベル: 単体テスト、結合テスト、システムテスト、受け入れテストといった、異なるレベルのテストを理解します。
  • テストタイプ: 機能テスト、パフォーマンステスト、セキュリティテストなど、異なる種類のテストの特徴を学びます。
  • テストプロセス: テスト計画の作成から、実行、モニタリング、報告までの流れを学びます。
  • テスト技法: ブラックボックステストやホワイトボックステストなど、効果的なテストケースを設計する方法を習得します。
  • テストマネジメント: テストの進捗を管理し、リスクを考慮して効率的にテストを進める方法を学びます。
  • テストツールの利用: テスト自動化ツールやテスト管理ツールの使い方を理解します。

これらの知識を身につけることで、日々の業務で迷った時に進むべき方向を見つけられるようになりますし、何よりもQAエンジニアとしての一般的な知識を持っていることを証明できます。また、この資格は、転職活動やキャリアアップにも大いに役立ち、業界標準のスキルを持っているという強力なアピールポイントになります。

テストを自動化する!

テスト業務を続けていると、「繰り返しの作業が多い」と気づくことがあるでしょう。開発を進めると、追加・修正した部分だけでなく、既存の機能にも予期しない影響を与えることがあります。リリース前に行うリグレッションテストは、重要な機能が正常に動作しているかを確認するために欠かせません。

繰り返し行うテストを自動化することで、テスト時間を大幅に削減し、空いた時間で別の重要なテストを行うことでテストカバレッジを向上させることが可能です。 自動テストを導入する際には、SeleniumCypressといったスクリプトベースのツールや、Autifyなどのローコード/ノーコードの自動テストツールを選択肢として考えます。ツール選定の際は、プロジェクトの規模や開発サイクル、チームの技術力に応じて選択する必要があります。例えば、小規模なプロジェクトでは簡易的なツールが効果的であり、大規模なプロジェクトでは複雑なシナリオや頻繁な変更に対応できる強力なツールが求められます。

自動テストは一人では続かない

「自動テストは一人で作っていけばよいのでは?」と思うかもしれません。たしかに、自動テストツールの使い方を学び、一人でも自動テストを作成することが可能です。しかし、自動テストの本当の難しさは、継続的なメンテナンスにあります。

開発中に仕様が変更されると、自動化されたテストシナリオが動かなくなることがあります。動作しなくなった原因が意図した変更によるものなのか、それとも不具合なのかを切り分けることが必要です。この作業を一人で行うのは難しく、時間がかかるため、メンテナンスをチーム全体で共有し、効率よく行う体制を整えることが不可欠です。

そこで重要になるのが、自動テストの作り方の方針を定めることです。複数のテストシナリオで使用されるステップを共通化し、チーム全体が理解しやすい構造でテストシナリオを作成することが、長期的な成功の鍵となります。また、テストシナリオはシンプルで保守しやすい形で作成し、共有ステップのメンテナンスを行うことで、開発の進行とともにスムーズに自動化を続けることができます。

事業に誇りを持つ

ソフトウェアテストは、プロダクトの成長と事業の成功を支える重要な役割を果たしています。単なるバグの発見や修正ではなく、テストを通じてプロダクトの品質を保証し、最終的には顧客に提供する価値を守ることが、QAエンジニアの使命です。

さらに、QAエンジニアは会社全体を守る役割も担っています。品質の低いプロダクトが市場に出ることで発生するリスクや、重大な不具合が原因で企業の信頼が損なわれる可能性を防ぐため、プロダクトが正しく動作し、顧客の期待に応える品質を保つことが非常に重要です。テストを通じて、会社のブランドや信頼を守るという視点を持つことで、QAエンジニアの役割はさらに大きな意味を持ちます。

効果的なテストを行うためには、プロダクトや事業の背景、ミッション、そして顧客が求めている価値を深く理解することが必要です。これにより、ただ仕様通りに動作するかどうかだけでなく、事業の成長や顧客体験の向上に貢献できるテストが実現します。

また、自分が誇りを持てる事業やビジョンを持つ会社を見つけることが、長期的なモチベーションを高める鍵となります。自身の仕事が、プロダクトや事業の成功にどう影響を与えているのかを実感することで、QAエンジニアとしてのやりがいや達成感が得られます。事業の成長に自分が関与できるという実感が、さらなる意欲を引き出し、より高いレベルの貢献が可能になるでしょう。

まとめ

QAエンジニアとしてのキャリアをゼロからスタートするためには、まず実際の業務に取り組むことが重要です。手動テストの案件を受注し、現場で学びながらテスト設計や自動テストのスキルを身に付けることが、スムーズなキャリア成長につながります。

さらに、JSTQB Foundationレベルの資格を取得することで、ソフトウェアテストの基礎知識を体系的に学び、日々の業務で直面する課題にも自信を持って取り組むことができるようになります。

自動テストを取り入れることで、効率的かつ効果的なテストプロセスを確立し、チームでメンテナンスを共有しながら長期的な成功を目指しましょう。

最後に、QAエンジニアとして大切なのは、ただテストを実行するだけではなく、事業やプロダクトに誇りを持ち、プロダクトの品質を保証するという重要な役割を担うことです。自分の仕事が事業の成長や顧客体験の向上にどう影響しているかを理解することで、さらにモチベーションを高め、プロフェッショナルとしての価値を高めていくことができます。