最近、エンジニア職種の中にSETエンジニアがあります。
SETエンジニアとは
そもそも「SETエンジニア」とは何だろうか ??
SETエンジニア(Software Engineer in Test) の略になりますが・・と言いつつ、それでもよくわからないですね。
何をするかというとテストのインフラクチャの部分の「品質向上活動」 であります。それでもわかりにくいです。そのため、下記の内容でSETエンジニア業務とは?を深めていければと。
1.自動テスト品質性を説く
2.テストフレームワークの導入(Selenium,Testcafe,MagicPod,Cypress,Autifyなど)
3.リグレッションテストの継続的インテグレーション (CI)、継続的デプロイ (CD)
4.リファクタリング活動(コード品質を高める)
5.リリース計画(どのようなフローなのか、可視化できる数値とは?)
6.非機能自動化対応(負荷・セキュリティなど)
7.QAエンジニアとの連携(品質をどう高めていくか、互いの領域はどこ?)
8.リスクマネージメントとは(自動するメリット、本当に必要があること)
9.SETエンジニアの役割を周りに周知
自動テスト品質性を説く
そもそも自動化すべきなのかも含め、自動化することで品質がどう作用されるか。マニュアルテストとの比較が必要です。
テストフレームワークの導入
昔は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エンジニアがどんなテストフローでプロダクトの品質を向上させたいか確認し、その向上部分にどう自動化フェーズが噛み合うのか。ただなんとなく自動化しても、
意味のあるもの。向上数値として測れるもの。費用対効果が見込まれるもの。
リスクマネージメントとは(自動するメリット、本当に必要があること?)
ただ自動化して動かしたところで、動く負債ようになってはいけないので、対象プロダクトに対し、自動化するメリットを定義する。
また、本当に自動化が必須なのか?
ある意味、マニュアルテストよりも時間がかかりメンテナンスコストが多くなるようなことがないように。であれば、現状のままで良いでは?となります。