QAエンジニアとは
先日自社開発企業からQAエンジニアとしての内定を頂きました。
QAって問い合わせ・・・?と思ってしまうほど無知だったので改めて調べました。
QAとは
Quality Assurance(品質保証)の略
似たような用語でQC(Quality Control/品質管理)がありますがこれとは違います。
品質保証とはユーザなどへ提供するサービスにおいて必要な品質を備えていることを保証することを指します。
QAエンジニアとは
上記の通り品質保証を行うエンジニアを指します。
単にテスターだけを指す場合がありますが、基本的にはテストを自動化(そのためのツール作成)を行ったり、Webサービス間のデータ連携テストをツールを使って行ったりなど技術力が求められます。プログラミングスキルは不要だと勘違いされてしまうこともありますが、むしろ必須です。
また製品について開発者並みに理解している必要があります。各種製品・技術に精通していないと何が問題でどうやって解決すべきか正しく理解できません。
QAエンジニアの仕事
いわゆるテスターではないQAエンジニア は以下の業務を行うことが多いと思われます。
・設計段階での機能仕様の確認・評価
→上流工程からドキュメントなどを元に適切な仕様か?テストはどうやって行うのか?評価方法はどうするのか?など検討を行います。
またこの時点で機能仕様について改善提案などを行いよりより物を目指していくことがよりグレードの高いQAエンジニアと思われます。
・テストケースの設計・実行
→実際に機能仕様に沿ったテストケース設計・実行などを行います。テストを行うための環境づくりをする、適切なテストケースを設計するなど
・テスト結果と不具合の分析
→開発者から回ってきたソースコードのレビューなどを確認、指摘などを行います。
当然プログラミングスキルが身についていなければそのようなことは行えませんし、その発生した問題に対して原因分析や再発防止などを行ったりプロダクト全体を考慮した対策が求められます。
・テスト自動化の検討
→レガシーなSIerでは今田にテストとは異なり、ユーザが同時に十数万アクセスすることを想定した自動化ツールやCI/CDなど適切なツール選定導入など行います。
ほかWebサイト系であればSeleniumなどブラウザ自動操作など
・開発プロセスの見直し・改善
→発見した問題によっては、なぜその問題が発生したのか?どうして検知できなかったのかなど開発プロセスの問題が浮き彫りになります。これらに対して根本的な問題解決を行う改善・提案などを行う場合があります。
QAの職種
QAエンジニア以外には以下の職種が挙げられます。
・QAコンサルタント
→企業経営の品質保証を行う。テスト立案、計画、チームのマネジメントやコンサルタントなど様々な工程で主導・サポートを行います。
・QAマネージャー
→QAマネージャーは品質保証に関わるマネジメント業務、テストの計画立案、品質保証の戦略、顧客との折衝など様々な業務を行います。
プロジェクトマネージャ同様QAに関してのマネージャー業務を行います。
・テストアナリスト
→テストアナリストはソフトウェア開発ライフサイクルに基づいた適切なテストの実施、リスク分析によって提供された情報に基づいたテスト活動などテスト全体を分析・改善していくことが主な業務だと思われます。
QAエンジニアの必要スキル
・プログラミングスキル
→テスト対象のソースレビュー、自動化ツール作成など必要な場面は多々あります。
これらについて開発者並みにのスキルが求められることがありますので勉強が必要です。
・製品に対する深い理解
→自身が関わるサービス、プロダクトに対して深い知識が求められます。単純なテスト指摘に留まらずプロダクトをもっと良く、改善していくためにも製品を理解しないと難しいです。
また、ユーザ視点に立って利用しやすいか?品質として問題がないか?という観点も必要です。
・コミュニケーションスキル
→プログラムバグ、改善要求などプログラマと密に連携を取る必要があります。
どのような点をどのようにして改善していくか仕様のすり合わせなどをエンジニアと協力して行っていく必要があり高いコミュニケーションスキルが要求されます。
資格では以下のスキルが求められそうです。
→テストを行うにあたっては鉄板の資格ではあります。
国内で提供されているレベルの試験はFoundationレベルとAdvancedレベルの2種類でテスト技術向上にはおすすめと思われます。
・ソフトウェア品質技術資格
JCSQEという品質に関する資格です。初級、中級の2種類あり品質を体系的に勉強するためにおすすめの資格らしいです。
・IT検証技術者認定試験
IVEC試験では実務力を問う問題が出題されます。
エントリーレベル、ミドルレベル、ハイレベルの3種類でありハイレベルはかなり高度の内容が要求されそうです。
QAエンジニアの辛いところ
品質保証という立場上、バグなどの問題を見逃してしまうと責められやすい立場になります。
基本的にバグなどは発生させないことが前提となるのでこういったときに矢面に立たせられやすいとのこと。とはいえ誰かが品質を保証しなければサービスは完成しないのでしょうがないところではあります。メンタル強くないとやっていけなさそう。。。
参考
■QAとQCの意味
■QAエンジニア:Qiita
https://qiita.com/jun2014/items/32ec77be1056f546aada
■QAエンジニアの仕事内容やキャリアパス
https://agency-star.co.jp/column/quality-assurance-engineer/