概要

ここ数年「QA(Quality Assurance)エンジニア職」という職種が重要視されてきました。品質保証です。

2000年代には、求人自体も少なかった職種でしたが、今はIndeedビズリーチ「QAエンジニア」「テストエンジニア」「品質管理エンジニア」で検索するとかなりの求人が掲載されています。

「QAエンジニア」って何をするのでしょうか?

QAエンジニアについて、下記に纏めました。


QAエンジニアとは

1.仕様に沿った動作を確認

2.不具合によるシステム障害を回避する
3.一定の品質を提供する
4.第三者からのテストというレビュー
5.独立性を保てないため

テストの範囲として「単体テスト」は基本、開発者が担保「結合テスト」以降はどうするか?

「単体テスト」は、関数やメソッドが個々の機能を正しく果たしているかどうかを検証するテストになります。

主に、「JUnit」などのXunit系のテスティングフレームワークを用います。

※会社によってはQAエンジニアが担当することもあります。

バグ修正コストを下げる目的もありますが

無題.jpg

しかし、結合テスト以降も開発者がテスト実行すると偏りが生じ、このように実装したからこの「有効レンジ」のみテスト実行でという思い込みが発生し、なかなかうまく不具合が検出できない。

本番デプロイしリリース後、処理が正常動作しない。特に課金がらみの不具合や権限周りはは厄介です。結果、損害を生み、ユーザーに返金、謝罪と本当に悪循環な流れです。

結局、何が大事か言いたかったと言うと品質が一番大事なのです。

「QAエンジニア」が必要となったのです。

コストの問題もあり自社QAを置いているのはやはり大手企業が多いですね。

「QAエンジニア」は、ソフトウェア品質のスペシャリストという立ち位置だと私は認識しております。

今まで多くの現場に行きましたが、「QAエンジニア」は現場によって異なり、「テストエンジニア」「テスト自動化エンジニア」になったり、単に「テスター」で、開発者が作成したテストケースの消化のみであったりと。また、バックエンドのテストで「Unixコマンド」「SQLコマンド」を使用し成果ログの確認や計測システムの確認をしたり。

現場によって求められるものも違います。幅広い知識が必要だと感じました。

開発者レベルの知識があれば、良いです。

また、自社サービスのQAエンジニアテストベンダーのQAエンジニアでは、多少なりとも立ち位置が違うので転職時は、ビジョンを考え進む道を決めることが賢明です。


  • QAエンジニアの会社での評価

上長が「テストサービス」の内容を理解していないと、歪んだ評価をされることも多いです。テストを知らない上長も多くいますので、ここは注意です。もしくは軽視し、「テスト」=「特に必要のない工程」だとか、テストだから高い給与を払う必要がないとか。

不具合を見つけても、見つけて当たり前、不具合をスルーしたらマイナス

プラス要素がなかなか見つからない職種でもあります。

評価についても「開発エンジニア」 > 「QAエンジニア」 のような社内評価が多いのではないかと思います。

求人給与レンジでも開発給与よりも多い、もしくは同等の企業もありますが一般的には低いイメージでは。

しかし、不具合1つで何億の損害を出すぐらいなら優秀なエンジニアにそれなりに払った方が安い気もしますが。


テスト担当でも名称がいろいろ

役割は様々です。コンサルからテスターまで、社内でどんな役割が必要か、テスターを募集したいのにQAエンジニアを採用したり、テスト計画やテスト設計者を募集したいのにテスターを採用したりとミスマッチが無いように。


  • QAコンサルタント

企業経営の品質戦略を打ち出す。各部署と連携し、現状の品質リスクをヒアリング。また、PMOとしてテストプロジェクトの立案や課題・リスクの報告、予算管理を担当する。


  • QAディレクター

企画仕様についての改善要望(UIやUX)や、作業品質、仕様バグをQA視点で共有する。

上流で指摘することにより、不具合コストの削減、手戻り防止につながる。ディレクター経験やQA経験は2年は必須。

CX観点も出来ればタスクに含めたい。


  • QAマネージャー

品質保証・テスト戦略立案を行うことや、業務フローの立案・改善、チームスケジュールの管理。外部テストベンダーとの折衝、テスト自動化の計画策定、テスト要求からテスト実施までの管理。メンバーとの1on1を実施、メンバーの評価、チームの採用計画、採用評価者を担当する。基本、テストマネージメント経験は3年以上が必須。


  • QAエンジニア

「開発チームの側面」からクライアントの視点に立って品質測定するエンジニア。テスト設計やテストケースの作成が主な仕事となります。プランニングの部署との関係が強いです。仕様の把握や、機能修正など。また仕様に対しUXやUIの改善要望も作業の1つとなります。

※テストエンジニアとは違います。


  • シニアQAエンジニア

QAエンジニアの上位と捉えることができる。最近は、この役職の募集も多い。対象サービスにもよるが、マネージャー経験がありテストに精通している人材。


  • テストセンター管理マネージャー(検証会社)

検証会社のテストセンターの管理業務

顧客との折衝や見積書や請求書の作成、自社の営業との情報共有、エンジニアやテスターの採用業務、エンジニアやテスターの教育がメインとなります。

※前日にテストの依頼を受けることもあるので、社内のテスター稼働調整に苦労することもあります。


  • テスター

「テストケース実行担当者」もしくは、「探索的テスト担当者」

仕様書が無くても、経験ベースで不具合を見つけたりと。海外の場合、優秀なテスターは、かなりの報酬を得ています。。しかし、日本ではウォーターフォールモデルの下流工程要員の扱いのように感じます。いるのいらないのなんでしょうか。。。

テストデータ作成から、テスト報告まで。


  • テストエンジニア

開発部内において「テスト計画」や、「テスト設計」、「テストケース作成」、「テスト結果フィードバック分析担当」するエンジニアとなります。※QAエンジニアは、基本、開発部ではなく企画部か、QAとして独立している部に置く。


  • テストアナリスト(エンジニア)

この職種は少ないのですが、案件単位の不具合分析や、現状のテストケースの改善、分析結果のフィードバックする職種。※開発者の癖だったり、どういう不具合が多いのかをキャッチできる。また、リスクレベルの策定や、「QAエンジニア」や「テストエンジニア」にテスト優先順位を提供できる。


  • テスト自動化エンジニア

SET(Software in test)と呼ばれています。

SET(Software 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)テストエンジニア

AI周りのテストをするエンジニアです。

これから重宝されるのではないでしょうか。


テスト仕様書

テスト計画書やテスト設計書、テスト実施項目書が対象

テスト仕様書

SDKテスト仕様書

・テスト計画、テスト設計を行ったあとに作成する。

・最低限テストケースは用意し、レビューそのあとテストに。

・テスト経験がなく、テストケースを用意しない。そんなことがあってはいけない。

・テスト経験があり探索的テストが有効の場合は、テストケースを+ぐらいで。


バグ管理

バグ管理ツール


テストツール

ソフト開発において「テスト工程」は全体の50%弱であり、ここの工程をどうするかでプロジェクトの命運がわかれる。もっとも「コスト」がかかる。

高品質で低コストでと考える工程であり、キーを握っているのが「テストツール」とも言われる。


メリット

1.自動化することにより、反復作業が可能であること。同じ処理の動作確認が何度もできる。

2.Cronを仕掛けることにより、指定した時間に自動で作業が可能。

人力よりも、正確で見落とすことも無い。

デメリット

1.画面レイアウト変更が入るとツールの保守やメンテが必要。

2.ツールの習得に時間がかかる。



負荷テスト

大量のデータを投入し、高い負荷をかけてソフトウェアが正常に機能しているか確認するテスト

負荷テスト


ボリュームテスト

大量のデータを内部に入れ込み、動作(サーバーエラーにならない)や表示に問題がないか確認するテスト

ボリュームテスト


セキュリティテスト

セキュリティテスト

1.SQLインジェクション

2.クロスサイトスクリプティング

3.CSRF


継続的インテグレーション(CI)

アプリケーション作成時の品質改善や納期の短縮のための習慣

QAエンジニアに必要な知識ですね。「Jenkins」や「TravisCI」はメジャーですが、いろいろ「FinalBuilder」とか「Electric Cloud」なんてのもあるんですね。

TravisCI

CI.png

Jenkins

jenkins.png


Cypress

Cypress


TestCafe

TestCafe


Selenium

Seleniumファミリー一覧

テスト.png

Selenium IDE

SeleniumBuilder

Selenium RC

Selenium WebDriver

Sideex

※SeleniumIDEがFirefox55以降使用できなくなるので。現時点。


Seleniumで実装し多くのサービスでテストを行いました。

・オークションの課金周り

・オークションの出品までのフローの確認
・動画の再生チェック確認
・占いAPIのチェック確認
・負荷テストで、loopして1000テストデータを追加
・ログイン、ログアウトの確認
・アプリの動作
・路線サイトの自動化
・ウェディングページの入力画面遷移、確認画面チェック確認
・ショッピングページの入力画面遷移、確認画面チェック確認
・不動産ページの入力画面遷移、確認画面チェック確認
・アフィリエイト報酬金額確認


Appium

Appium

app.png

Appiumで実装できる箇所は自動化

できない箇所は手動での検証


ゲームアプリの動作確認


検証環境の用意から始めます。(開発者が用意するか、QAチームが用意するか)

まだまだ知識が乏しいので、実装しつつ知識を深めます。。
テスト設計として押さえたい
①バイナリファイルがテスト対象のバイナリであること
正しいバージョンのバイナリファイルであること
②社内Wifiでの起動
WiFi設定が正しいこと
③アプリが起動する
通信エラーや、アプリクラッシュが起きていないこと
④ユーザーが待てるLoading時間
⑤データの引き継ぎが行えること
⑥課金が正しく行えること →機種依存も確認
Androidのバージョン、iOSバージョンによる課金エラーが無いこと
⑦ログイン、ログアウトの処理
遷移先が正しいこと。エラーが出力していないこと
⑧表示や文言に関しては許容できる範囲であること
文章に違和感、ユーザーに対して不快感が無いか。
⑨設定した期間にイベントが開催されていること
設定時間に開催、終了など
⑩ガチャの排出率確認
確率の確認。同じものが何度も出ていないか。



QAエンジニア:社内QAチームの立ち上げ

社内QAチームの立ち上げ


QAエンジニアのロードマップ

QAエンジニアでも、相応の知識は必要だということに。

最近は、JSTQBという資格があり、エンジニアのロードマップが確立されてきました。

JSTQB認定テスト技術者資格

JSTQB.png


JSTQB認定テスト技術者種類

テストマネージャ 

テストアナリスト
テクニカルテストアナリスト


ソフトウェアテストイベント

jasst_jp.png

ソフトウェア業界全体のテスト技術力の向上と普及を目的とした

ソフトウェアテストシンポジウム

があります。昨年より、東洋大学で開催されていますね。


開催場所

香川県・高松市 

愛知県・刈谷市
福岡県・福岡市
北海道・札幌市
兵庫県・伊丹市
宮城県・仙台市
新潟県・新潟市
東京都・文京区

一般財団法人 日本科学技術連盟


教育・研修・研究会

社内セミナー・講演会

集合セミナー
ソフトウェア品質

ソフトウェア品質

日本科学技術連盟.png

Ques

headerLogo1.png


教育・研修・研究会

Software品質保証に関わるQAエンジニアの活性化を目的としたQA専門のイベントです。

Software品質保証に関わるQAエンジニアの方が、会社間の垣根を越えて、情報交換や交流を深める

.品質イベント(TechPlay)

TechPlay品質イベント


主要なテスト検証会社(第三者検証)

株式会社SHIFT

ヒューマンクレストグループ

バルテス株式会社

株式会社ベリサーブ

株式会社デジタルハーツ

ポールトゥウィン株式会社


海外と日本のQAエンジニアの立ち位置


QAの立ち位置

海外では、QAエンジニアはメジャーですが日本では、ただのテスターという位置って感じです。やはり下に見られがちです。

でも、まだまだこれからです。


経歴


参考で今までいった現場

大手のポータルサイトのQA常駐(6年弱)

・オークションやアフィリエイトを主に、テスターの管理
・自動スクリプト(Seleniumの作成・保守)主に、Javascriptを使用。
・テストドキュメントの管理や、スクリプトの管理
・APIのテスト
・組み合わせテスト:HaYst法を利用したFV(機能検証表:Function Verification Table)表とFL表(因子水準表:Factor Level Tableの作成)を作成する
・動画再生テスト
・シナリオテストの自動化「QTP」を使用
ネット広告企業(3年)
・バックエンドのテスト、ログの調査やDBのテスト、配信設定や成果クリック・成果周りのテスト(CPC、CPA、CPI)
・新機能追加時のテスト
・負荷テスト(LoadRunner、Jmeter)
・セキュリティテスト(BurpSuite)
・外部委託の管理
・スケジュール管理
・テストツールの選定(不具合管理は、アトラシアンのJiraかBacklogを使用)
・Excelを使用しテスト仕様書作成
・テスト仕様書レビュー
・TestLinkでのドキュメント管理
・Amazon、Javariバナーのテスト:物理サーバー10台をデプロイし1台ずつ確認
・AndroidSDK iOSSDKのテスト


参考で今までいった現場のコミュニケーション用ツール

・Yahooメッセンジャー

・Hipchat
・Skype
・Lync
・Yammar
・chatwork


QAエンジニアの採用基準

・業界や、担当案件によって変わってきますが、他の職種よりも基準が難しいのは確かです。

スマホ片手にブラックボックスのテストをやってる感じのイメージ。だったり、ブラウザ開いて、動くことを確認するといった感じ。でも中には開発経験が無いとできないテスト(バックエンドのテストやセキュリティテスト)なんかは、テスターと言えども、それなりの対価になる。

採用基準が、まちまちになる。経験によって、「正社員」、「契約社員」、「派遣社員

、「アルバイト」と雇用形態がかわる。

・下記の仕事内容だと、一般的なQAエンジニアでも開発経験が無いと厳しい。QAと言えども

甘く見てはいけない。人事部と現場との食い違いがこういうところでおきることも確かである。QAエンジニア=テスターではなく、QAエンジニア=開発経験がありテスト工程を知っているというような採用でなければ、ミスマッチがおきる。

QAエンジニア募集でも上と下では、かなり求めるスキルが違うことがわかる。

現場がどこまでのスキルを必要としてるか。QAエンジニアは、どこまでの知識を持っていればよいのか。相互の課題でもある。


仕事内容

テスト設計(テスト概要書作成、テストケース作成、自動テスト設計)

テスト実施(状況に合わせた各種テストの実施、障害管理、結果報告)
社内関連部門との各種調整
Java、SQLの知識がある方(HTML、JavaScriptの基本的知識あれば尚可)
プロジェクトのQAリーダー経験(プロジェクトの立上からリリースまで一連の経験)
広告システムのバックエンド
マネジメント経験


仕事内容

PC操作スキル(インターネット検索、Excel表へのテスト結果反映)

テスト経験・テスト仕様書作成経験
Excelのスキル
コミュニケーションが得意な方