SETエンジニア(Software Engineer in Test)の現状
昨今、「QAエンジニア」 とは別に 「SETエンジニア」と呼ばれるテスト自動化アーキテクトをメインとした職種の採用が増えてきています。
しかし、まだ知名度と何をする職種かがわかりにくくエンジニア採用でも苦戦しますね。
Indeedやスタンバイで 「SETエンジニア」 「テスト自動化エンジニア」 で検索すると求人がヒット、掲載されています。
まずは、職種に 「SETエンジニア」 とあっても、何をするエンジニア?
説明するところからになります。
SETエンジニア(Software Engineer in Test)
リグレッションテストの「E2E自動化」や「CIでのビルド自動化」を主に担当します。
またその先にある、「CD(継続的デリバリー)」についても進めていく。
自動テストでの修正コストの比率が高く、コードメンテナンス工数も考えなければいけない。
要は、テスト自動化は、「リグレッションテスト」が一番向いているため。
また、非機能のテスト自動化についても取り組む。SREチームとSLAの見直しや改善、運用時基準を達成しているのか。
現時点で自動化が難しい領域に対しては(メンテナンス対応作業があまりに多い箇所にも含め)
基本「マニュアルでのQA」で行います。
※AIの力も借りたいですが、今は。
SETエンジニアの必須スキル としては
1.テスト自動化フレームワーク(SeleniumやAppium、Cypress、TestCafeなど)の知識
2.CIツール(CircleCi、Jenkins、Travis CI、Gitlab CIなど)の知識
3.Java、Ruby、Javascriptなどのプログラミング知識
4.既存処理のテスト観点を洗い出しテスト工数の削減計画
5.テストコードの管理(GitやGithub)の知識
6.常に新しいスキルを取得する(QAトレンドやイベントの参加)
7.テストコードレビュースキル(開発スキルと同様)
8.ブランチの管理計画
9.運用工程での修正方法(誰が担当するのか?どういう状態の場合に修正するのか?)
10.クラウドサービスの知識(AWSの基本サービス)
11.セキュリティの知識
その上で 「テスト自動化策定」 を作り、既存システムの自動化箇所、自動化することにより手動テストと比較しコスト増減、リリーススケジュール面で有利になるのか、対応人員は?を纏めることからはじめる。
ROI(投資収益率)Return On Investment であったり、ビジネス指標を元にそもそもテスト自動化するメリットがあるのか。
意味もない自動化の保守をし続けることにもつながりますし、自動化の観点が外れていれば
何のための自動化かわからなくなります。
要はテスト自動化自体が技術的負債となることも(例えば、SETエンジニアが退職してしまいテストコードの理解から始める、画面を操作するためのXpath取得方法が変わっていたも)
テストツール選定
プロダクトにもよるので、メリット・デメリットを考え、合うテストツールを導入する。
また有償・無償もあるので、ROI(投資収益率)やメンテナンス工数も考慮し進める。
GUIテストツール一覧の紹介ページとなります
ブラウザのプラグインで記録しながらテストコードを作成できるメリットも。初心者には、使いやすいツールでもあります。
特に新規ニュースもないので、使っていない。
最近は使うことがなくなった俗にいうSelenium1.0版
今はこちらがメインであります。
※SeleniumIDEがFirefox55以降使用できなくなるので。とアナウンスしていましたが今は問題無
続いて、自動化環境を整えていきましょう。
まずは、テストコードを 「GitLab」 で管理してみましょう。
ディレクトリの配置とファイルの管理を考える。
ECサイトの「リグレッションテスト」のテスト自動化環境構築
CI:GitLab CI
E2Eツール:Selenium WebDriver
言語:Java
開発環境:Eclipse:Pleiades All in One
通知:Slack
こちらに テスト自動化環境構築を纏めております。
テストコードの管理
コードのバージョン管理
SETエンジニアがその都度修正
エラー通知設定
エラーの通知は、「Chatwork」 か 「Slack」 通知で、Webhookにて対応
エラー通知の設定(通知用のグループを作成しておく)
SecurityGroupの設定
JenkinsサーバにJenkinsのインストール
GitHub Plugin
GitHub からの push イベントを取得するプラグインです。
必須タスクの設定
テスト実行の設定