概要
この数年 「QA(Quality Assurance)エンジニア職」 という職種が重要視されております。
所謂、品質保証です。
振り返ると2000年代は、求人自体も少なかった職種ですが、昨今はIndeedやスタンバイなどの求人情報専門の検索エンジンで 「QAエンジニア」 「テストエンジニア」 「品質管理エンジニア」 で検索すると大手企業からスタートアップ企業まで多くの※掲載求人が ヒット・掲載 されています。
※QA組織の立ち上げ経験、AWSの知見、開発経験、生成AIについての知見など、テストスコープだけではなく、幅広い知識・経験も問われる
最近は、企画段階から 「QAエンジニア」 が参加し、プロダクトUI・UXの意見交換や、仕様書レビュー、テストフロー、プロダクトリリース判定基準、どのテストレベルを対象とするか策定する。
そのため、QA職種だからこの範囲(領域)だけという決まりはありません。
また、QA職種詳細については 「品質担当でも名称がいろいろ」 に記載しております。
「QAエンジニア」 って、そもそもどのような役割なのでしょうか?
下記に一般的な役割を纏めました。
※扱うプロダクトや組織・開発体制によっても異なりますが。
1.対象プロダクトの全体品質定義
2.仕様品質の担保
3.テストフローの整備
4.テスト計画・テスト設計作成
5.テスト仕様書作成・実施
6.リリース基準作成・リリース判断
7.プロダクトの不具合分析、仕様改善業務
8.手動テストと自動テストの切り分け
9.QAエンジニア採用活動、テストベンダーやテスターの業務管理、QAイベント登壇
10.他チームとのコミュニケーション(共通認識)
全体のテスト範囲として 「単体テスト」 は基本、開発エンジニアが担保するが 「結合テスト」 以降はどうするのか?
「単体テスト」 は、関数やメソッドが個々の機能を正しく果たしているかどうかを検証するテストになります。
主に、「JUnit」などのXunit系のテスティングフレームワークを用います。
※プロダクトや案件によってはQAエンジニアが担当することもあります。
バグ修正コストを下げる目的もありますが
しかし、結合テスト以降も開発者がテスト実行すると偏りが生じ、このように実装したからこの 「有効レンジ」 のみテスト実行でという思い込みが発生し、なかなかうまく不具合が検出できない。
本番デプロイしリリース後、処理が正常動作しない。
特に課金がらみの不具合や権限周りはは厄介です。結果、損害を生み、ユーザーに返金、謝罪と本当に悪循環な流れです。
この流れが払拭されないと、特にSaaSサービスでは 解約率(Churn Rate)の上昇で月3%を超 や 市場占有率(market share)の低下 が懸念される。
結局、何が大事か言いたかったと言うと品質が一番大事なのです。
そのため 「QAエンジニア」 採用が急務となったのです。
最近では大手・メガベンチャー・スタートアップベンチャー共に 「QAエンジニア」 採用をしております。
「QAエンジニア」 は、ソフトウェア品質のスペシャリストという立ち位置だと私は認識しております。
今まで多くの現場に行きましたが、「QAエンジニア」 は現場によって異なり、「テストエンジニア」 「テスト自動化エンジニア」 になったり、単に 「テスター」 で、開発者が作成したテストケースの消化のみであったりと。また、バックエンドのテストで 「Unixコマンド」 や 「SQLコマンド」 を使用し成果ログの確認や計測システムの確認をしたり。
また、扱うプロダクトによっても立ち位置が変わっております。(現場によって求められるものも違います。)
そのため、幅広い知識が必要だと感じました。
開発者レベルの知識があれば、なお良いです。
また、自社サービスのQAエンジニアとテストベンダーのQAエンジニアでは、多少なりとも立ち位置が違うので転職時は、ビジョンを考え進む道を決めることが賢明です。
- QAエンジニアの会社での評価
上長が 「テストサービス」 の内容を理解していないと、歪んだ評価をされることも多いです。
テストを知らない上長も多くいますので、ここは注意です。もしくは軽視し、 「テスト」=「特に必要のない工程」 だとか、テストだから高い給与を払う必要がない とか。
不具合を見つけても、見つけて当たり前、不具合をスルーしたらマイナス と
プラス要素がなかなか見つからない職種でもあります。
エンジニア評価についても 「開発エンジニア」 > 「QAエンジニア」 のような評価が多いのではないかと思います。
求人給与レンジでも開発エンジニアよりも多い、もしくは同等の企業もありますが一般的には低いイメージがあります。
※不具合1つで何億の損害を出すぐらいなら優秀なエンジニアにそれなりに払った方が安い気もしますが。
品質担当でも名称がいろいろ
役割は様々です。コンサルからテスターまで、社内でどんな役割が必要か、テスターを募集したいのにQAエンジニアを採用したり、テスト計画やテスト設計者を募集したいのにテスターを採用したりとミスマッチが無いように。採用選考を進めていきましょう。
- QAコンサルタント
企業経営の品質戦略を打ち出す。各部署と連携し、現状の品質リスクをヒアリング。また、PMOとしてテストプロジェクトの立案や課題・リスクの報告、予算管理を担当する。
SLA:(サービスレベルアグリーメント)プロバイダー・クライアント間契約
SLO:(サービスレベル目標)アップタイムや応答時間などの指標に関するSLA内での合意
SLI:SLO(サービスレベル目標)へのコンプライアンス測定立案
についても開発・法務を含め必要に応じ立案整備
- QAディレクター
企画仕様についての改善要望(UIやUX)や、作業品質、仕様バグをQA視点で共有する。
上流で指摘することにより、不具合コストの削減、手戻り防止につながる。ディレクター経験やQA経験は2年は必須。
CX観点も出来ればタスクに含めたい。
- QAマネージャー
品質保証・テスト戦略立案を行うことや、業務フローの立案・改善、チームスケジュールの管理。外部テストベンダーとの折衝、テスト自動化の計画策定、テスト要求からテスト実施までの管理。メンバーとの1on1を実施、メンバーの評価、チームの採用計画、採用評価者を担当する。基本、テストマネージメント経験は3年以上が必須。
- QAエンジニアリングマネージャー
QAマネージャーと異なるところは、QAエンジニアのピープルマネージメントを主に行う。
QAエンジニアの採用であったり、1on1を通じてメンバーの今後のキャリアや教育をどう計画し実現できるかをプランニングする。また、チームの予算策定、コスト管理、チーム目標の作成、メンバーの目標作成、評価も行う立ち位置である。
- QAエンジニア
「開発チームの側面」からクライアントの視点に立って品質測定するエンジニア。また、テスト設計やテストケースの作成も担当。プランニングの部署との関係が強いです。仕様の把握や、機能修正など。仕様に対しUXやUIの改善要望も作業の1つとなります。
SETエンジニアとの連携も鍵になります。
どこを自動化すべきかや、多少なりとも自動化知見は必要です。「Autify」 や 「MagicPod」 はコード必須ではないので、導入しやすいのではないでしょうか。
※テストエンジニアとは違います。
- シニアQAエンジニア
QAエンジニアの上位と捉えることができる。最近は、この役職の募集も多い。対象サービスにもよるが、マネージャー経験がありテストに精通している人材。
- テストセンター管理マネージャー(検証会社)
検証会社のテストセンターの管理業務
顧客との折衝や見積書や請求書の作成、自社の営業との情報共有、エンジニアやテスターの採用業務、エンジニアやテスターの教育がメインとなります。
※前日にテストの依頼を受けることもあるので、社内のテスター稼働調整に苦労することもあります。
- テスター
「テストケース実行担当者」もしくは、「探索的テスト担当者」
仕様書が無くても、経験ベースで不具合を見つけたりと。海外の場合、優秀なテスターは、かなりの報酬を得ています。しかし、日本ではウォーターフォールモデルの下流工程要員の扱いのように感じます。
また、QAエンジニアをテスターと認識している人もおりますが、 全く違います。 気をつけてください。
- テストエンジニア
開発部内において「テスト計画」や、「テスト設計」、「テストケース作成」、「テスト結果フィードバック分析担当」するエンジニアとなります。※QAエンジニアは、基本、開発部ではなく企画部か、QAとして独立している部に置く。
- テストアナリスト(エンジニア)
この職種は少ないのですが、案件単位の不具合分析や、現状のテストケースの改善、分析結果のフィードバックする職種。※開発者の癖だったり、どういう不具合が多いのかをキャッチできる。また、リスクレベルの策定や、「QAエンジニア」や「テストエンジニア」にテスト優先順位を提供できる。
- テスト自動化エンジニア:SET(Software Engineer in Test)
SET(Software Engineer in Test)エンジニアと呼ばれています。
「Selenium IDE」や「Selenium RC」「Selenium WebDriver」「Selenide」「Appium」などSeleniumファミリーを覚えたり、CIの「Jenkins」でテスト自動化の仕組みを作ったりなどです。
「CyPress」や「TestCafe」も有効なツールでもあります。
最近、求人では SET(Software Engineer in Test) とも呼ばれています。
- バックエンドテストエンジニア
テストツールを扱ったりDBやサーバー周りのテストをしたりです。
また、エラーログを調査したりネット広告の現場であれば、計測システムテストですね。
負荷テストで、大手であれば 「LoadRunner」 を導入していますが数百万ぐらいするので、どこでもというわけにはいきません。その代り、「JMeter」 を理解していれば問題ないです。
- セキュリティテストエンジニア
プロキシツールを使用して、脆弱性関連のテストを実施するエンジニア
テスト計画から、テスト報告まで担当します。
※「BurpSuite」経験(プロキシツール経験)が2年以上は欲しいですね。
-
AI(artificial intelligence)QAエンジニア
AIの品質とは?
何をプロダクトのリリース基準とするのか。
現時点でのゴールはどこに置くのかも含めまだまだこれからの分野・開拓することが求められるエンジニアでもあります。
まだ確立もされていないので、これからではありますが。
AI-OCRメインのプロダクト:機械学習により、レイアウト(例:100枚/200枚)、画像(例:Jpeg/png)、文字認識(手書き/手書き以外)の読み取り結果品質基準策定。
テストフロー、現バージョンの精度検証も含めての経験。
仕訳AIについての学習品質についてどうするか?
バージョンアップ検証(精度検証)の手順
また、検証時の不具合とは?線引きは?
リリース精度とはどう定義すべきか
※AI-OCR(artificial intelligence - Optical Character Recognition)は、AI技術を組み込み、紙文書を文字データに変換する技術。
役割別スキルセット
役割による、スキルも違いますので、確認する上でも。また採用時のスキルセットを確認するにも。
スキルセット
QA目標管理制度
QAのチーム目標管理もしくはエンジニア目標管理は難しいものがあり、「OKR」「MBO」「KPI」のうちどの目標管理制度を用いるべきか考察してみます。
テスト仕様書
テスト計画書やテスト設計書、テスト実施項目書が対象
テスト仕様書
SDKテスト仕様書
・テスト計画、テスト設計を行ったあとに作成する。
・最低限テストケースは用意し、レビューそのあとテストに。
・テスト経験がなく、テストケースを用意しない。そんなことがあってはいけない。
・テスト経験があり探索的テストが有効の場合は、テストケースを+ぐらいで。
バグ管理
テストツール
ソフト開発において 「テスト工程」 は全体の 50% 弱であり、ここの工程をどうするかでプロジェクトの命運がわかれる。もっとも「コスト」がかかる。
高品質で低コストでと考える工程であり、キーを握っているのが 「テストツール」 とも言われる。
メリット
1.自動化することにより、反復作業が可能であること。同じ処理の動作確認が何度もできる。
2.Cronを仕掛けることにより、指定した時間に自動で作業が可能。
人力よりも、正確で見落とすことも無い。
デメリット
1.画面レイアウト変更が入るとツールの保守やメンテが必要。
2.ツールの習得に時間がかかる。
負荷テスト
大量のデータを投入し、高い負荷をかけて 「ソフトウェアが正常に機能しているか」 確認するテストです。
高負荷が続くと 不具合 が起きてしまう可能性があるためです。
「単体テスト」や「結合テスト」だけでは見つけられない不具合がある。
また、想定のユーザー数でも耐えることができることを確認するためのテストでもあります。
ボリュームテスト
システムに大容量データを与えても仕様通り動作することを確認するテスト
どれくらいのユーザーを想定しているかも念頭におき、テストデータを作成する。
データ量によって、「500 Internal Server Error」 「503 Service Unavailable」また、Loadingでのtimeoutとならないように。Javascriptであれば何秒でtimeoutするのか。確認しておく。
セキュリティテスト
個人情報の漏えいや顧客情報流出などのニュースを耳にすることにより、セキュリティ意識の重要性が広く知られるようになった。またセキュリティ人材不足もあり、今後のセキュリティの対してのあり方も考えないといけないのが実情である。
まずは、「システム脆弱性」 への対策が直近の優先課題となリます。
継続的インテグレーション(CI)
アプリケーション作成時の品質改善や納期の短縮のための習慣
QAエンジニアに必要な知識ですね。「Jenkins」や「TravisCI」はメジャーですが、いろいろ「FinalBuilder」とか「Electric Cloud」なんてのもあるんですね。
Cypress
TestCafe
Selenium
Selenium IDE
SeleniumBuilder
Selenium RC
Selenium WebDriver
Sideex
※SeleniumIDEがFirefox55以降使用できなくなるので。現時点。
・オークションの課金周り
・オークションの出品までのフローの確認
・動画の再生チェック確認
・占いAPIのチェック確認
・負荷テストで、loopして1000テストデータを追加
・ログイン、ログアウトの確認
・アプリの動作
・路線サイトの自動化
・ウェディングページの入力画面遷移、確認画面チェック確認
・ショッピングページの入力画面遷移、確認画面チェック確認
・不動産ページの入力画面遷移、確認画面チェック確認
・アフィリエイト報酬金額確認
Appium
Appiumで実装できる箇所は自動化
できない箇所は手動での検証
検証環境の用意から始めます。(開発者が用意するか、QAチームが用意するか)
まだまだ知識が乏しいので、実装しつつ知識を深めます。。
テスト設計として押さえたい
①バイナリファイルがテスト対象のバイナリであること
正しいバージョンのバイナリファイルであること
②社内Wifiでの起動
WiFi設定が正しいこと
③アプリが起動する
通信エラーや、アプリクラッシュが起きていないこと
④ユーザーが待てるLoading時間
⑤データの引き継ぎが行えること
⑥課金が正しく行えること →機種依存も確認
Androidのバージョン、iOSバージョンによる課金エラーが無いこと
⑦ログイン、ログアウトの処理
遷移先が正しいこと。エラーが出力していないこと
⑧表示や文言に関しては許容できる範囲であること
文章に違和感、ユーザーに対して不快感が無いか。
⑨設定した期間にイベントが開催されていること
設定時間に開催、終了など
⑩ガチャの排出率確認
確率の確認。同じものが何度も出ていないか。
QAエンジニア:社内QAチームの立ち上げ
0→1で組織のビルディング。
組織計画・採用プラン・対応業務・予算・ミッション。
社内QAチームの立ち上げ
QAエンジニアのロードマップ
QAエンジニアでも、相応の知識は必要だということに。
最近は、JSTQBという資格があり、エンジニアのロードマップが確立されてきました。
JSTQB認定テスト技術者資格
テストマネージャ
テストアナリスト
テクニカルテストアナリスト
ソフトウェアテストイベント
ソフトウェア業界全体のテスト技術力の向上と普及を目的とした
ソフトウェアテストシンポジウム
があります。昨年より、東洋大学で開催されていますね。
香川県・高松市
愛知県・刈谷市
福岡県・福岡市
北海道・札幌市
兵庫県・伊丹市
宮城県・仙台市
新潟県・新潟市
東京都・文京区
社内セミナー・講演会
集合セミナー
ソフトウェア品質
Software品質保証に関わるQAエンジニアの活性化を目的としたQA専門のイベントです。
Software品質保証に関わるQAエンジニアの方が、会社間の垣根を越えて、情報交換や交流を深める
.品質イベント(TechPlay)
TechPlay品質イベント
主要なテスト検証会社(第三者検証)
QAエンジニアのリソースや採用が思うように行かない場合は、テストベンダーの選定も必要となります。
株式会社SHIFT
バルテス株式会社
株式会社ベリサーブ
ヒューマンクレストグループ
株式会社デジタルハーツ
ポールトゥウィン株式会社
株式会社ProVision
株式会社GENZ
株式会社ウェブレッジ
海外と日本のQAエンジニアの立ち位置
日本でもここ数年で、QAエンジニアの立ち位置が変わってきたのではないでしょうか。
海外と比較すると伸び代がありますが、海外のQAエンジニアの方が立ち位置が上ではあります。
組織が確立していない(スタートアップ、ベンチャーの場合)
組織が整っていない場合、QAエンジニアは仕様確認や既存機能の情報共有に四苦八苦します。
そのため、こちらに今までの経験をまとめております。「初めてのQA組織立ち上げ」
・テスト設計時のレビューを企画書作成者、開発担当者にお願いしたいが知識不足だったり、詳細部分の詰めが抜けている
→なぜか?入社が浅い、いろいろな業務を兼務している関係上、業務部分での知識限定になる
・既存仕様を誰に確認すべきかルートが決まっていない。断片的な情報しか取得できない。
→なぜか?纏めるプロジェクトマネージャーの組織依存による。スピード重視、リリース重視であるためルートを特に設けていない(聞きに歩いてまとめてが正解なのかもしれない)
・仕様書の更新がテスト仕様書中にされていて、仕様書のFIXがいつまでもできない。
→なぜか?これはルール作りが無いため、共有ルールがあれば防げるが。。
・案件単位でのフロント側とサーバーサイド側で認識が異なり、テスト仕様書の期待値を確定できない。
→なぜか?これもルール作りが無いため、共有ルールがあれば防げるが。。
・検証環境自体に不具合があり、本来の検証に時間がかかる
→なぜか?構築手順のフローがない。どこの環境をコピーするか、どのDBにつなげるかの構成があやふやである
・Yahooメッセンジャー
・Hipchat
・Skype
・Lync
・Yammar
・chatwork
・slack
QAエンジニアの採用基準
・業界や、担当案件によって変わってきますが、他の職種よりも基準が難しいのは確かです。
スマホ片手にブラックボックスのテストをやってる感じのイメージ。だったり、ブラウザ開いて、動くことを確認するといった感じ。でも中には開発経験が無いとできないテスト(バックエンドのテストやセキュリティテスト)なんかは、テスターと言えども、それなりの対価になる。
採用基準が、まちまちになる。経験によって、「正社員」、「契約社員」、「派遣社員
、「アルバイト」と雇用形態がかわる。
・下記の仕事内容だと、一般的なQAエンジニアでも開発経験が無いと厳しい。QAと言えども
甘く見てはいけない。人事部と現場との食い違いがこういうところでおきることも確かである。QAエンジニア=テスターではなく、QAエンジニア=開発経験がありテスト工程を知っているというような採用でなければ、ミスマッチがおきる。
QAエンジニア募集でも上と下では、かなり求めるスキルが違うことがわかる。
現場がどこまでのスキルを必要としてるか。QAエンジニアは、どこまでの知識を持っていればよいのか。相互の課題でもある。
あとは、どの媒体を利用するのか、「エンジニア転職市場」にまとめております。
テスト設計(テスト概要書作成、テストケース作成、自動テスト設計)
テスト実施(状況に合わせた各種テストの実施、障害管理、結果報告)
社内関連部門との各種調整
Java、SQLの知識がある方(HTML、JavaScriptの基本的知識あれば尚可)
プロジェクトのQAリーダー経験(プロジェクトの立上からリリースまで一連の経験)
広告システムのバックエンド
マネジメント経験
PC操作スキル(インターネット検索、Excel表へのテスト結果反映)
テスト経験・テスト仕様書作成経験
Excelのスキル
コミュニケーションが得意な方