QAエンジニアの「QA」とはなにか
まず名称の概念から理解していきます。QAとは「Quality Assurance」の略であり、「品質保証」という意味を持ちます。
従って、QAエンジニアとは品質を保証を行っているエンジニアということです。
品質保証とはなにか
では、そもそも「品質保証」とはどういう意味なのでしょうか。 品質保証について調べて見ると以下のような定義が見られました。品質保証とは自社製品の品質が規定値を満たしているか確認して、納品後も買い手に安心や満足を保証する活動のこと
「品質」を「保証する」というだけあって、購買時に高品質のものを提供するだけではなく、納品後も満足してもらうために動いていくことがわかります。
品質の定義
ではこの「品質」とはどのように定義づけされているのでしょうか。品質を管理するとなると基準であったり、それを審査する機関が存在するのでは?と考えますよね。 それがJIS、PSE、ISO9000シリーズなどと言われているものとなります。
JISは日常生活の中でも見聞きしたことがあるのではないでしょうか。 その品質の基準に則って製品をつくり、提供後もサポートを行っていくことがQAエンジニアの仕事となります。
具体的なQAエンジニアの業務
開発中及び開発後もシステムのサポートをしていくという役割を担うのがQAエンジニアであることがわかりました。 では具体的にシステム開発を行う上でのQAとは何を行っているのでしょうか。ざっくり分けると業務フローは以下のように分類されるようです。
1.品質保証テストの設計・計画
2.テストの実行・検証
3.品質テストの自動化検討
4.テスト結果の分析・フィードバック
1.テストの計画・設計
QAエンジニアの業務フローにおいて上流にあたるテストの計画、設計は、具体的には以下のような作業を行います。・何が必要なテストなのかを考える。
・どのように行うかテストの実施計画を立てる。
・機器や人的リソースの手配、管理を行う。
製品やサービスへの理解がないと何が必要かわからないため、最低限その知識や理解はしておかなければなりません。
計画においても誰が、どこに、何を使って、どれだけ時間をかけるかを把握しなければならないので、テストそのものやメンバーの理解も必要になりますね。
また、QAエンジニアのテスト工程は、製品リリースが間近に迫っていることが多いという話も聞きます。
その状況下でこの工程を担うとなったら、やはり実績や業界知識、それなりのマネジメント力が問われるのではないでしょうか。
ただ、シビアではあるものの、納期までのカウントダウンに神経をすり減らしながら取り組むよりは、早い段階から介入することでそのリスクを減らせるので、QAエンジニアの価値はここにありといったところでしょうか。
2.テストの実行・検証
QA=テスターと捉えられることが多いようで、もしかしたらQAとしての業務イメージとしては、この「テスト実行・検証」が主戦場なのではないかと思われる方も多いのではないでしょうか。実はここに明確な違いがあり、テストエンジニア(テスター)の主な守備範囲がこの領域になります。
仕様どおりに動作すること、バグがないこと、性能面で問題がないことを通して、不具合がない製品/サービスを世に送り出すことを目的とした作業となります。
QAはそもそもそういった検証を行う上で何をどのように行うのかを定めるというのが役割となるため、実行する側とその実行内容を企画する側としての違いがQAとテスターの主な違いと言えるでしょう。
QAエンジニアの守備範囲の中にテスターの守備範囲があるイメージをしてもらえると理解しやすいのではないでしょうか。
QAエンジニアの未来
QAエンジニアとしての概念は比較的新しいものであるものの、需要の高さは時代の変化に裏付けられています。ソフトウェアの複雑化と規模の拡大
初期のソフトウェアは比較的小規模で単純なものでしたが、インターネットの普及やテクノロジーの進化に伴い、ソフトウェアはどんどん複雑化し、システム全体で数百万行以上のコードを扱うようになりました。また、企業の業務に不可欠なシステムやサービスがソフトウェアによって支えられるようになり、システムの規模や依存関係が増大しました。
このようにソフトウェアが大規模・複雑になる中で、バグや不具合が発生しやすくなり、それらを迅速に発見し解決する必要性が増しました。
そのため、ソフトウェアの品質を保証する専任の担当者としてQAエンジニアが求められるようになっています。
アジャイル開発とソフトウェアのリリースサイクルの短縮
従来のウォーターフォール開発(段階的な開発)から、アジャイル開発(迅速かつ反復的な開発)への移行が進んだことで、ソフトウェアはより短い期間で頻繁にリリースされるようになりました。 このような環境では、品質の確保とリスクの低減がより重要になります。そのため、QAエンジニアは開発の早い段階から関与し、リリースのたびに品質保証を行う役割が必要とされるようになりました。
リリースサイクルが短縮されたことによって、自動化されたテストや迅速なフィードバックが求められ、それを実現するためにQAエンジニアの役割が増しています。
時代の変化に伴った複雑性や規模の拡大、技術の進化などに加え、競争力の強化や効率化など様々な背景からQAエンジニアは今後も求められていくことが伺えます。