今後のQAエンジニアは?
はてなブログの更新が、数ヶ月おきになってしまい。
Qiitaやnoteにも記事を書いている経緯もありその次になっておりました。
2021年、QAエンジニアは10年前と比べても職種として理解して頂いているが、その分何をするエンジニアなのかも合わせて明確化させないといけない。
多くのスタートアップさんから下記のことを言われることが多く。
- 品質を高めるのはわかるが実際プロダクトでどのように貢献して頂けるのか。
- テストだけするのであれば、ただのテスターでいいのでは。
- アジャイル開発ではどこからQAが入り込むのですか。
- ウォーターフォール開発ではどこからQAが入り込むのですか。
- テストベンダーさんと自社QAエンジニアさんは何が違うの。
- プログラミングできるQAエンジニアってどこにいるの。
- DB周りのパフォーマンスも気にして欲しい。
- 自動化って結局なんですか。
- 非機能観点ってどんなところ。
- 品質を担保って可視化できる。
- テスト技法を使ってどこまで不具合を少なくできるの。
- テストケースを全て網羅しないと担保できないの。
- QAって何に長けているのですか。
- QAエンジニアさんってどこにいるの。
- SETエンジニアとQAエンジニアの違い。QAエンジニアが自動化したら良いのでは。
たくさん、質問がありました。
この質問を次回お話ししようと思います。
解決することにより、今後QAエンジニアがどうあるべきがが見えてくるのではと思います。
QA経験が増えること
今年でQAエンジニア経験が14年になったが、何で続けているのかも実はよくわからない。
最初はデータベースエンジニアになりたくて、大学卒業後に専門学校に入学しOracle製品の勉強をし卒業後常駐の開発エンジニアになりました。
がその後、QAの職種に。なぜなったのか?なぜ続けているのか?
単体テストをしてみてかなりの量の不具合を検出し、開発に向かないのではと
- 網羅性だとか、基本的なテストがわかっていなかった。
- 当時QA=テストのイメージを払拭したかった。
- QAのイメージを良くしたかった。
- 海外ではメジャーで高収入であるが、日本では低収入の部類
- 転職の経験職種のプルダウン欄にQAエンジニアがなくいつもその他を選択。
- プロダクト品質、プロセス品質などQAだけではなくプロダクト全員がQAを意識する。
- QAの組織立ち上げ。要は0⇨1の活動に興味があり、多くのプロダクトの立ち上げをしたいため。
いくつか書いてみましたが、今は、最後の「QAの組織立ち上げ。要は0⇨1の活動に興味があり、多くのプロダクトの立ち上げをしたいため。」だと思っています。
QA経験が増えることは、様々な知見が付き、どんな場面でも対応できるようになります。
この14年で何が身についたのか。思い出してみると。
- QA立ち上げがどのプロダクトでも最低限できるようになった。
- E2Eテストフレームワークの比較ができるようになった。
- 採用(応募、面接、FB)が
- オンボーディング手順
- QAのキャリアとはを真剣に話せるようになった。
- QAってなんですかと質問されて、なんとなく説明ができる。
- 1on1や評価が何となくできるようになった。
- 開発やインフラとの連携ができるようになった。
- テストベンダーの選定手順ができるようになった。
- テストベンダーのスキルシートってこうみるのかと理解した。
- テストベンダーの単価は、絶対なのかと思った。
- 浅く広くQAレンジを見えるようになった。
- 書籍をたくさん買った。(AWS関連もあるが)
- QAイベントに参加するようになった。
- 自社QAと検証会社のスキル比較ができるようになった。
- Macを使えるようになった。
- 常駐QAから自社QAになった。検証会社のQAもやった。
- 記事を書くようになった。良くも悪くも。
こんな感じですかね。あっという間だったけど。もう少しだけQAをやりますかね。
SETエンジニア
最近、エンジニア職種の中にSETエンジニアがあります。
SETエンジニアとは?
そもそも何だろうかと。SETエンジニア(Software Engineer in Test)
それでもよくわからないですね。
こちらにも書きましたが
何をするかというとテストのインフラクチャの部分の品質向上活動であります。
1.自動テスト品質性を説く
2.テストフレームワークの導入(Selenium,Testcafe,MagicPod,Cypress,Autify)
3.リグレッションテストの継続的インテグレーション (CI)、継続的デプロイ (CD)
4.リファクタリング活動(コード品質を高める)
5.リリース計画(どのようなフローなのか、可視化できる数値とは?)
6.非機能自動化対応(負荷、セキュリティなど)
7.QAエンジニアとの連携(品質をどう高めていくか、互いの領域はどこ?)
8.リスクマネージメントとは(自動するメリット、本当に必要があること?)
自動テスト品質性を説く
そもそも、自動化すべきなのかも含め、自動化することで品質がどう作用されるか。マニュアルテストとの比較が必要です。
テストフレームワークの導入
昔はSeleniumのイメージでしたが、昨今は多くのフレームワークが用意されていますね。MagicPodやAutifyなど非エンジニアでも使えるE2Eツール。
リグレッションテストの継続的インテグレーション (CI)、継続的デプロイ (CD)
オンプレ時代は、Jenkinsでしたが、今はCircleCIやGitLabCIあたりでしょうか。
リリース計画(どのようなフローなのか、可視化できる数値とは?)
1ヶ月後、3ヶ月後、半年後、1年後どのようなリリースになっているか?
対象プロダクトは?どのようなシナリオで、レポートにどのような数値が必要なのか。
非機能自動化対応(負荷、セキュリティなど)
非機能のテストは、どう自動化に組み込んでいくかになります。リリース後アクセス数が多くサーバーが落ちてしまう(スケールする必要があるか)
また、脆弱性の問題(クロスサイトスクリプティングやSQLインジェクションなど)は無いか。
QAエンジニアとの連携(品質をどう高めていくか、互いの領域はどこ?)
2000年代から2010年代前半は、QAエンジニアがマニュアルテストと自動化テストに取り組んでいた。当然、プログラミング知識の壁がありましたが、SelenuimIDEでFirefoxからWebサイトを自動化する(レコーディング機能を利用)。で、他のブラウザでも自動化したいのでSeleniumWebDriverを導入し、ChromeやIEなどクロスブラウザ対応していたような・・・。2000年代とは言わず、現場によっては今もそうなのかもしれません。
連携という部分では、QAエンジニアがどんなテストフローでプロダクトの品質を向上させたいか確認し、その向上部分にどう自動化フェーズが噛み合うのか。ただなんとなく自動化しても、
意味のあるもの。向上数値として測れるもの。費用対効果が見込まれるもの。
リスクマネージメントとは(自動するメリット、本当に必要があること?)
ただ自動化して動かしたところで、動く負債ようになってはいけないので、対象プロダクトに対し、自動化するメリットを定義する。
また、本当に自動化が必須なのか?
ある意味、マニュアルテストよりも時間がかかりメンテナンスコストが多くなるようなことがないように。であれば、現状のままで良いでは?となります。
またこちらではSETチーム立ち上げについて書いております。
QAエンジニアの転職
2020年となり、品質に対して拘ると言いますか、スタートアップもベンチャーも大手も品質保証に強い意識を持ち始めたと感じております。
検索サイトで「QAエンジニア」求人とか、「テストエンジニア」とかで検索すると本当に多くの企業のQA募集が引っかかります。
そこで、考えることとして。
QAエンジニアという職種に対して何をしたいのか?
他の職種でも言えることではありますが。
- あるサービスに対してのQAをやりたい
- 年収を単にあげたい
- 0→1のQA立ち上げをしたい
- テスト設計とテスト実施だけしたい
- E2E自動化も含め、品質保証の仕組みを深く考えたい
- テストセンターの管理をしたい
- 非機能のテストをメインにしたい
- 上流から入れるQAが良い
- バックエンドQAをメインにやりたい
- 外部折衝などメインのQAマネージャがやりたい
上げればがキリがないのですが、転職するときの理由というのがあると思います。
年収をあげたいのなら、当然スキルも上げないといけないなど、その実現に向けて何かを得ることが大事です。
転職が容易になったことで、転職先で、違和感を覚えることもあると思います。
私が15年ほど前にQAをやり始めたことに比べると、QAエンジニアの価値や立ち位置はだいぶ変わったなと。
自社のQAエンジニアって何をしているのかとテスト文化を根付かせるには
少々、長いタイトルになってしまいましたが「自社のQAエンジニア」って何をしているのか??
この画像は特に文章との関連はありません。
基本は、「リリースマネージャ」が居なければ、そこを巻き取るところから。
- リリースフローの策定とフローの更新
- リリース計画の作成と関連部署との調整
- 外部折衝やメンバーの管理とスケジュール管理(マネージャがいない場合)
- メンバー採用計画をする(マネージャがいない場合)
- メンバー採用の面接をする(マネージャがいない場合)
- テスト計画書を作る(一つ作ればよい)
- テスト設計書を作る
- テスト仕様書を作る
- テスト実施をする(ブラックボックスは基本テスターがやるが)バックエンドのテスト( ログ確認や、プロキシツールを使用したパラメータの書き換え、負荷テスト、簡単なセキュリティテスト、ボリュームテスト)
- テスト実施報告
- 不具合管理分析
- 不具合の傾向を分析しテスト設計に
- テストツールの選定
- 不具合管理指標を用いたリリース判定
- テスト自動化(SETエンジニアが居なければ)仮想環境を構築しCIで朝と夕に、リグレッションテストできるような仕組みをつくる
- ドキュメントの整備
- テストデータの作成
- 検証端末の管理(バージョンや機種)
テスト文化を根付かせるには
- 開発者と単体テストルール作成を行う
- 単体テストでOKになったもの以外、やり直しさせる
- 不具合管理指標を作りリリース判断の材料にする
- 直交表を用いた組み合わせテストを実施
- QA主催の勉強会を実施し、開発者の苦手な部分を一緒に考える
- 単体テストでスルーした時のコストを提示する(1件、1万ですよとか)
- 不具合が出たときの状況を共有し、損害や影響度がどうなるか想定してみる。
- テストを実施した時と、しない場合の不具合件数を調査する
いろいろあります!!
QAグループの立ち上げまで
QAグループの立ち上げは経験したことがあるのですが、改めて振り返るといろいろ考えることが。
①QAグループの存在意義を周りに伝えるには。
これは、何かしらQAの知識を伝えたり、その期間は、QAの作業と言うより、他のグループの品質改善をしつつ、QAグループの立ち上げ作業をする感じでしょうか。
グループとして立ち上がるには早くて2から3か月はかかるので。
②メンバー集め
正社員で集めるにも、昨今採用難とそもそもQAエンジニア自体の数が少ないので、、しばらくは外部ベンダーにジョインしてもらうのがよいと。
その間に、正社員を集める期間とする。
③立ち上げ確認
何を用意するか。
- スケジュールリスト
- QAグループの将来についての資料(上層部へのプレゼン)
- QAグループ担保レベル
- テストレベル(どこまでQAが作業するのか)
- テストフロー(企画、開発、運用を巻き込んだ)
- 不具合レベル指標
- テスト資料(テスト計画書、テスト設計書、テスト仕様書のテンプレ)
- 仕様の整理(画面遷移図)
- 検証環境の用意
- 検証機の選定
- 不具合管理方法
- QAメンバーの役割(マネージャー、リーダー、メンバー、テスター)
- 採用
- 育成方法
- 評価方法
まずは、こんな感じで。
QA界隈のイベント
久々に何かを、QA界隈のイベントを纏めてみました。
まだまだありますが、メジャーなイベントを取り上げております。
①Jasst (ソフトウェアテストのシンポジウム)
2003年からはじまる。現在は、東京、北海道、東北、新潟で開催されています。
②Ques
第三者検証会社からスタートアップ、ベンチャー企業が主催となっています。
③DeNA QA night
DeNA主催しているQAイベントで、DeNA社内でテスト例や講師の方を招いたりとしています。
④ヒンシツ大学
株式会社SHIFTが主催している、通常のイベントとは違いテストの観点や設計を学ぶ場となっています。
⑤SeleniumConf
毎年、開催されている「Selenium」のイベントです。
2019年はついに東京での開催です。
⑥Rakuten Commerce QA Night
楽天コマースのQAの取り組みを紹介するイベント
⑦Mercari AQA Pop Talk
メルカリのQAの取り組みについて共有するイベント